v3.0: JWT auth, korechain.korenet.cloud routing, LICK module, feed poller v3

This commit is contained in:
VZ Build
2026-07-14 16:30:06 +00:00
parent ca3783f348
commit 64b969f4b2
4 changed files with 591 additions and 370 deletions

View File

@@ -1,13 +1,82 @@
version: '3.8'
# Vector Zulu — KoreID Translation Layer
# Converts Ethereum events to KoreID format and posts back to KoreChain.
# Vector Zulu — KoreID Adapter Stack v3.0
# Runs on Charlie (63.245.138.38) alongside charlie-vault-cache.
# Shares the same Redis and Postgres instances.
# Shares Redis and Postgres with vault cache stack.
# Auth: JWT Bearer only — no client cert required (ssl_verify_client optional).
# Primary API: korechain.korenet.cloud | Fallback: fnb.korenet.cloud
x-common-env: &common-env
REDIS_HOST: ${REDIS_HOST:-localhost}
POSTGRES_HOST: ${POSTGRES_HOST:-localhost}
POSTGRES_DB: ${POSTGRES_DB:-vz_oracle}
POSTGRES_USER: ${POSTGRES_USER:-vz_oracle}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-}
KORENET_API_URL: ${KORENET_API_URL:-https://korechain.korenet.cloud}
KORENET_API_FALLBACK: ${KORENET_API_FALLBACK:-https://fnb.korenet.cloud}
VECTOR_ZULU_RAILS_URL: ${VECTOR_ZULU_RAILS_URL:-https://vector.korenet.cloud}
x-common-volumes: &common-volumes
- /home/constellationnode/.korenet/vector-zulu/.secrets:/app/.secrets:ro
- /home/constellationnode/.korenet/vector-zulu/environment.env:/app/environment.env:ro
x-common-logging: &common-logging
driver: json-file
options:
max-size: "100m"
max-file: "3"
services:
eth-listener:
# ── Portal Feed Poller ─────────────────────────────────────────────────────
# Polls KoreNet payment feeds and executes mirror lifecycle
vz-feed-poller:
image: python:3.12-slim
container_name: vz-feed-poller
restart: always
volumes:
- ./portal_feed_poller.py:/app/portal_feed_poller.py
- ./koreid.py:/app/koreid.py
- ./lick.py:/app/lick.py
- ./eventbus.py:/app/eventbus.py
<<: *common-volumes
working_dir: /app
command: >
sh -c "pip install requests redis psycopg2-binary azure-servicebus -q &&
python portal_feed_poller.py"
environment:
<<: *common-env
POLL_INTERVAL: "${POLL_INTERVAL:-30}"
AZURE_SERVICEBUS_CONNECTION_STRING: "${AZURE_SERVICEBUS_CONNECTION_STRING:-}"
logging: *common-logging
network_mode: host
# ── KoreChain Poster ──────────────────────────────────────────────────────
# Reads Redis queue and posts KoreID confirmations to KoreChain
vz-korechain-poster:
image: python:3.12-slim
container_name: vz-korechain-poster
restart: always
volumes:
- ./korechain_poster.py:/app/korechain_poster.py
- ./koreid.py:/app/koreid.py
- ./lick.py:/app/lick.py
<<: *common-volumes
working_dir: /app
command: >
sh -c "pip install requests redis psycopg2-binary -q &&
python korechain_poster.py"
environment:
<<: *common-env
MAX_RETRIES: "${MAX_RETRIES:-3}"
RETRY_DELAY: "${RETRY_DELAY:-30}"
POLL_INTERVAL: "${KORECHAIN_POLL_INTERVAL:-5}"
logging: *common-logging
network_mode: host
# ── Ethereum Event Listener ───────────────────────────────────────────────
# Watches SV token contracts for Mint/Burn/Transfer events
vz-eth-listener:
image: python:3.12-slim
container_name: vz-eth-listener
restart: always
@@ -16,43 +85,18 @@ services:
- ./koreid.py:/app/koreid.py
working_dir: /app
command: >
sh -c "pip install web3 redis psycopg2-binary -q && python eth_listener.py"
sh -c "pip install web3 requests redis psycopg2-binary -q &&
python eth_listener.py"
environment:
ETH_RPC: ${ETH_RPC:-https://eth-mainnet.g.alchemy.com/v2/nRVT_IneMUDF3Pokubawx}
REDIS_HOST: ${REDIS_HOST:-vz-redis}
POSTGRES_HOST: ${POSTGRES_HOST:-vz-postgres}
POSTGRES_DB: ${POSTGRES_DB:-vz_oracle}
POSTGRES_USER: ${POSTGRES_USER:-vz_oracle}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-}
POLL_INTERVAL: "60"
<<: *common-env
ETH_RPC: "${ETH_RPC:-https://eth-mainnet.g.alchemy.com/v2/nRVT_IneMUDF3Pokubawx}"
POLL_INTERVAL: "${ETH_POLL_INTERVAL:-60}"
logging: *common-logging
network_mode: host
korechain-poster:
image: python:3.12-slim
container_name: vz-korechain-poster
restart: always
volumes:
- ./korechain_poster.py:/app/korechain_poster.py
- ./koreid.py:/app/koreid.py
- /home/constellationnode/.korenet/vector-zulu/certificates:/certs:ro
- /home/constellationnode/.korenet/vector-zulu/.secrets:/app/.secrets:ro
working_dir: /app
command: >
sh -c "pip install requests redis psycopg2-binary -q && python korechain_poster.py"
environment:
REDIS_HOST: ${REDIS_HOST:-vz-redis}
POSTGRES_HOST: ${POSTGRES_HOST:-vz-postgres}
POSTGRES_DB: ${POSTGRES_DB:-vz_oracle}
POSTGRES_USER: ${POSTGRES_USER:-vz_oracle}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-}
CERT_PATH: /certs/vector-zulu-client.fullchain.pem
KEY_PATH: /certs/vector-zulu-client.key
MAX_RETRIES: "3"
RETRY_DELAY: "30"
POLL_INTERVAL: "5"
network_mode: host
adapter-api:
# ── Adapter API ───────────────────────────────────────────────────────────
# Status, queue monitoring, manual injection — port 8766
vz-adapter-api:
image: python:3.12-slim
container_name: vz-adapter-api
restart: always
@@ -61,13 +105,13 @@ services:
volumes:
- ./adapter_api.py:/app/adapter_api.py
- ./koreid.py:/app/koreid.py
- ./lick.py:/app/lick.py
<<: *common-volumes
working_dir: /app
command: >
sh -c "pip install flask redis psycopg2-binary -q && python adapter_api.py"
sh -c "pip install flask requests redis psycopg2-binary -q &&
python adapter_api.py"
environment:
REDIS_HOST: ${REDIS_HOST:-vz-redis}
POSTGRES_HOST: ${POSTGRES_HOST:-vz-postgres}
POSTGRES_DB: ${POSTGRES_DB:-vz_oracle}
POSTGRES_USER: ${POSTGRES_USER:-vz_oracle}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-}
<<: *common-env
logging: *common-logging
network_mode: host