Bridges
IBC-Eureka.
IBC-Eureka brings Cosmos to every chain by compressing each Tendermint header transition into an SP1 plonk proof. Tenzro consumes those proofs through a thin verifier that advances a stored consensus state and answers ICS-23 membership questions against the new root.
- STATUS
- Testnet
- CRATE
- tenzro-bridge::ibc_eureka
- PRECOMPILE
- 0x1020
- TYPE
- Adapter
01
Architecture
relayer -> SP1 (Tendermint header transition)
-> Tenzro IbcEurekaAdapter::update_client
-> verifier checks (chain id, height advance, frozen state)
-> Sp1Verifier::verify_plonk(public_input_commitment)
-> commit new ConsensusState (root, next_validators_hash)
-> ICS-23 membership proofs against the stored root02
Wire surface
create_client(client_id, ClientState, initial ConsensusState)
update_client(IbcEurekaProof) // SP1 plonk proof + new states
verify_membership(MembershipProof, ics23_verify)
freeze(client_id, at_height)
commit_outcome(&UpdateOutcome) -> Hash // for the 0x1020 lookup03
Public-input commitment
SHA-256("tenzro/ibc-eureka/pi" ||
client_id ||
trusted_height (LE) ||
trusted_root ||
bincode(new_client_state) ||
bincode(new_consensus_state))04
On-chain precompile
The on-EVM IBC_VERIFY precompile at 0x1020 is an O(1) lookup against the off-EVM commitment registry. Validators run the SP1 verifier themselves and record SHA-256(tenzro/ibc-eureka/proof ‖ client_id ‖ height ‖ root) before serving the precompile.
Related