mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
cmd/dexseed seeds REAL markets onto the live in-luxd native D-Chain CLOB ingestion seam (POST /ext/bc/D/dex/clob_* with FROZEN zapwire frames), using consensus-native asset identities for every market side. Identity rule (the property that makes this seeder SAFE against a shared cluster, unlike the loopback-gated cmd/clobverify): every asset handle is the dexcore canonical AssetID = DeriveAssetID(networkID, C-chainID, kind, canonicalRef) — the SAME id the chain's resolver derives — NEVER an ascii-of-symbol id (the synthetic form, e.g. 0x4c5558 'LUX', that bricked the chain). A synthetic/malformed ref is refused at frame-build time, before a single frame is sent; the chain's permissionless resolver then proves each side is backed by live on-chain code (EXTCODESIZE) before binding the market. End-to-end smoke path for one real LUX/<ERC20> market: clob_open_market (bind real base+quote ids) -> clob_deposit (fund maker base) -> clob_place (rest maker ask) -> clob_get_markets + clob_get_book (read back & confirm). Pure, testable core (seed.go): assetSpec.resolveID, poolIDFor (canonical domain-separated SHA-256 over the derived ids, NON-ascii), depositRefFor, realMarketFrames. Tests (main_test.go): golden AssetID vectors, OpenMarket 96B + slot equality, synthetic/malformed-ref rejection, deterministic non-ascii poolID, frozen-frame field round-trips. CGO_ENABLED=0, pure-Go, luxfi packages only.