Add README.md
This commit is contained in:
90
README.md
90
README.md
@@ -1,3 +1,91 @@
|
||||
# vz-kore-adapter
|
||||
|
||||
Vector Zulu KoreID translation layer — converts Ethereum events to KoreID format and posts back to KoreChain
|
||||
Vector Zulu KoreID Translation Layer
|
||||
|
||||
Converts Ethereum events (Mint, Burn, Transfer on SV tokens) into KoreID-formatted payloads and posts them back to KoreChain via KoreOracle API.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Ethereum mainnet
|
||||
↓ (Transfer/Mint/Burn events)
|
||||
eth_listener.py
|
||||
↓ (KoreID payload)
|
||||
Redis queue (korechain:outbound_queue)
|
||||
↓
|
||||
korechain_poster.py
|
||||
↓ (mTLS + JWT)
|
||||
KoreOracle API → KoreChain
|
||||
```
|
||||
|
||||
## Services
|
||||
|
||||
| Service | Port | Purpose |
|
||||
|---|---|---|
|
||||
| vz-eth-listener | — | Watches SV token events on Ethereum |
|
||||
| vz-korechain-poster | — | Posts KoreID payloads to KoreChain |
|
||||
| vz-adapter-api | 8766 | Status, monitoring, manual injection |
|
||||
|
||||
## KoreID Format
|
||||
|
||||
```
|
||||
<S1>/<S2>-<S3>-<S4>-<S5>-<S6>
|
||||
|
||||
S1 (8) = DDMMYY + CT (ID type)
|
||||
S2 (8) = PT (parent type) + T (parent treasury) + PNNNNN (parent network)
|
||||
S3 (4) = CCC (currency) + CK (checksum)
|
||||
S4 (4) = First 4 hex of current network
|
||||
S5 (4) = Last 4 hex of current network
|
||||
S6 (12) = PPPP (parent seq) + T (treasury) + CCCC (current seq) + RRR (nonce)
|
||||
```
|
||||
|
||||
## ⚠️ TODO — Awaiting Bryan's spec
|
||||
|
||||
The lookup tables in `koreid.py` and `init.sql` use placeholder codes.
|
||||
Once Bryan provides the full KoreID spec with:
|
||||
- `kore_id_type` codes
|
||||
- `kore_treasury` codes
|
||||
- `kore_network` codes
|
||||
- `kore_network_current` codes
|
||||
- `kore_currency` codes
|
||||
|
||||
Update the `DICT` constants in `koreid.py` and the seed data in `init.sql`.
|
||||
|
||||
Also awaiting:
|
||||
- KoreOracle API endpoint for external event posting (`/api/external/event` is a placeholder)
|
||||
- KoreID format for the `linked_koreid` field (to link VZ events to originating KoreNet transactions)
|
||||
|
||||
## Deployment
|
||||
|
||||
Runs on Charlie (63.245.138.38) alongside `charlie-vault-cache`.
|
||||
Shares the same Redis and Postgres instances.
|
||||
|
||||
```bash
|
||||
cd ~/vz-kore-adapter
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
```
|
||||
GET /health — service status, queue depth
|
||||
GET /queue — current queue contents
|
||||
GET /events — recent posted events
|
||||
GET /dead-letter — failed events
|
||||
POST /dead-letter/retry — requeue failed events
|
||||
POST /generate — generate a test KoreID
|
||||
POST /inject — manually inject an event
|
||||
```
|
||||
|
||||
## Traceability
|
||||
|
||||
Every KoreID payload preserves:
|
||||
- `koreid` — the KoreID display number
|
||||
- `guid` — UUIDv4 for internal tracking
|
||||
- `proof.hash` — Ethereum TX hash
|
||||
- `proof.block_number` — block number for verification
|
||||
- `proof.chain_reference` — KoreID back-reference
|
||||
- `source.tx_hash` — original Ethereum transaction
|
||||
|
||||
Per Bryan's spec: Vector Zulu never strips identity, never generates fake IDs,
|
||||
never bypasses KoreOracle, never rewrites chain history.
|
||||
|
||||
Reference in New Issue
Block a user