pixel-chain-story

Bridge status (Gate E)

Claim unlock (lab): Universal Light Attestation verify is real on the EVM twin — ULAVerifier.IS_STUB == false. CosmWasm twin verifies the same frozen fixture. Relayer path proven on local anvil.

Custody law: foreign chain holds receipts only; Pixel holds the vault; foreign verify alone never releases master PIX. Enforced in illuminateIngress + bun run test:bridge-custody.

Forbidden claim: production bridge / mainnet value movement.


Evidence

Artifact Status
Frozen fixture fixtures/ula-evm-v1.jsonPIX-HASH-OTS-128-KECCAK
Foundry forge testULAVerifier.t.sol + ULAOffchainMldsaGate.t.sol
TS parity bun run test:ula
ML-DSA ULA path bun run test:ula-mldsa — native verify + twin projection + gate commit
CosmWasm twin contracts/cosmwasm/ula-verifiercargo test
Relayer (local) bun run test:ula-relayer — anvil LockedLockFeeder.feed → shineIn
Custody inversion bun run test:bridge-custody — ULA verify alone → Δbalance=0; vault release only via illuminateIngress

Scheme honesty

Network Lock / verify tx Notes
Ethereum Sepolia (or equiv.) pending Local anvil proof shipped; public broadcast not yet

When a public lock + verify pair exists, paste explorer URLs here. Until then do not claim “testnet bridge live.”


Relayer flow

PixelUsdcLock.lock  →  event Locked
        ↓
LockFeeder.fromLockedEvent + ethereumLogVerified
        ↓
LockFeeder.feed → illuminateIngress (shineIn) → PIX on pix1…

Shine-out (Pixel → foreign): build createEvmUlaPackage → foreign ULAVerifier.accept / CosmWasm Accept.


Commands

bun run scripts/gen-ula-evm-fixture.ts   # regenerate fixture (do not casually rewrite)
bun run test:ula
bun run test:ula-relayer
forge test
(cd contracts/cosmwasm/ula-verifier && cargo test)