Cross-chain
ERC-7683 intents.
Native support for ERC-7683 cross-chain orders — user-signed open orders, resolved settlement intent, and chain-discriminated outputs. Persisted in
CF_SETTLEMENTS on both origin and fill sides with deterministic IDs.- STATUS
- Types shipped, on-chain envelope live
- CRATE
- tenzro-types
- CAIP-2 (mainnet)
- 0x10ED20
- CAIP-2 (testnet)
- 0x10ED21
01
The type surface
The intent_7683 module in tenzro-types defines the full type surface:
CrossChainOrder/GaslessCrossChainOrder— user-signed open ordersResolvedCrossChainOrder— theIOriginSettler.resolvereturn shapeOutput/TargetOutput— chain-discriminated 32-byte recipient + uint256 amountFillInstruction— destination-chain execution payloadTenzroOrderData— Tenzro-native opaque payloadTokenAmountProofRoute— LayerZero / Wormhole / DeBridge / HyperlaneOrderState— Open → AwaitingProof → Settled / Refunded / ForceRefundEligibleTenzro7683Order— the on-chain envelope
02
Order IDs are deterministic
compute_order_id is byte-stable:
order_id = SHA-256(
"tenzro/7683/order"
|| swapper
|| nonce_le
|| origin_chain_id_le
|| fill_deadline_le
|| order_data_type
|| order_data
)The same hash works on the origin side (7683_origin: prefix) and on the fill side (7683_dest: prefix), so cross-chain idempotency is just a key lookup.
03
uint256 boundary
u128_to_uint256_be and uint256_be_to_u128 are the only sanctioned conversion helpers. uint256_be_to_u128 rejects non-zero high 128 bits to guard against silent truncation when fill-side EVM contracts send amounts larger than our internal u128 ledger can express.
04
Chain IDs
CAIP-2 chain IDs: Tenzro mainnet is 0x10ED20, Tenzro testnet is 0x10ED21. Use these when constructing FillInstruction.destinationChainId or matching CrossChainOrder.originChainId.
Related