Tenzro
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 root
02

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 lookup
03

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
← All docs