EIP.tools

EIP.tools

⚠️ DraftStandards Track: ERC

ERC-7752: H3-Indexed Cross-Chain Bridge Intent

An interface for intent-based cross-chain asset and data bridging with H3 geospatial routing, a 1% protocol fee, and TTL-bounded intents.

Authors
Created2026-03-28
Discussion Linkhttps://ethereum-magicians.org/t/erc-7752-h3-indexed-cross-chain-bridge-intent/23531
Requires

Markdown

https://raw.githubusercontent.com/ethereum/ERCs/e5...
Pull Request#1627PR closed (unmerged)

EIP-GPT summary

Contents
AbstractMotivationSpecificationConstantsEnumsStructsMethodssubmitIntentfulfillIntentcancelIntentsetFulfillerEventsERC-165RationaleBackwards CompatibilityReference ImplementationSecurity ConsiderationsCopyright

Abstract

ERC-7752 defines an intent-based bridging protocol optimised for 0G network data availability proofs. A submitter locks a gross payment on the source chain; 1 % is immediately collected as a protocol fee; the remaining 99 % is escrowed until a permissioned fulfiller submits a cross-chain proof. If the intent expires or is cancelled, the net amount is refunded.

Motivation

Cross-chain bridging is plagued by fragmented interfaces, inconsistent fee models, and lack of TTL semantics. ERC-7752 proposes a minimal, composable standard that:

  • Unifies intent expression – a single submitIntent covers token transfers, data payloads, and NFT bridges.
  • Integrates with 0G DA – the proofHash field anchors the 0G data-availability proof receipt on-chain.
  • Enforces fee uniformity – a hardcoded 1 % fee removes negotiation overhead and front-running surface.

Specification

Constants

NameValueDescription
BRIDGE_FEE_BPS100Protocol fee in basis points (1 %)

Note: The address that receives the protocol fee (feeRecipient) is implementation-defined. Implementations MUST make feeRecipient configurable and MUST NOT hardcode a chain-specific address.

Enums

enum IntentStatus { Pending, Fulfilled, Cancelled, Failed, Expired }
enum IntentType   { TokenTransfer, DataPayload, NFTBridge }

Structs

struct BridgeIntent {
    address     submitter;
    IntentType  intentType;
    bytes       payload;
    uint64      sourceChainId;
    uint64      destChainId;
    address     token;
    uint256     grossAmount;
    uint256     feeAmount;
    uint256     netAmount;
    bytes32     proofHash;
    IntentStatus status;
    uint64      createdAt;
    uint64      fulfilledAt;
    uint64      expiresAt;
}

Methods

submitIntent

function submitIntent(
    IntentType intentType,
    bytes calldata payload,
    uint64 destChainId,
    uint64 ttlSeconds,
    address token,
    uint256 gross
) external payable returns (bytes32 intentId);

MUST compute feeAmount = (gross * BRIDGE_FEE_BPS) / 10_000 and forward to the implementation-defined fee recipient atomically.
MUST set expiresAt = block.timestamp + ttlSeconds.
MUST emit IntentSubmitted(intentId, submitter, destChainId, feeAmount).

fulfillIntent

function fulfillIntent(bytes32 intentId, bytes32 proofHash) external;

MUST only be callable by a registered fulfiller.
MUST revert if block.timestamp > intent.expiresAt.
MUST release netAmount to fulfiller.
MUST emit IntentFulfilled(intentId, fulfiller, proofHash).

cancelIntent

function cancelIntent(bytes32 intentId) external;

MUST only be callable by intent.submitter.
MUST refund netAmount to submitter (fee is non-refundable).
MUST emit IntentCancelled(intentId, submitter).

setFulfiller

function setFulfiller(address fulfiller, bool allowed) external;

MUST only be callable by contract owner. Manages trusted fulfiller set.

Events

event IntentSubmitted(bytes32 indexed intentId, address indexed submitter, uint64 destChainId, uint256 feeAmount);
event IntentFulfilled(bytes32 indexed intentId, address indexed fulfiller, bytes32 proofHash);
event IntentCancelled(bytes32 indexed intentId, address indexed submitter);
event IntentFailed   (bytes32 indexed intentId, bytes reason);

ERC-165

Compliant contracts MUST implement IERC7752 and MUST return true from supportsInterface for type(IERC7752).interfaceId.

Rationale

  • TTL-bounded intents – prevents capital lock indefinitely; enables solver competition.
  • Permissioned fulfillers – a whitelist prevents griefing while the permissionless fulfiller model matures.
  • 0G DA anchoring – proofHash stores the DA proof CID, enabling on-chain verification of data availability.

Backwards Compatibility

No existing bridge standard (LayerZero, Hyperlane, Axelar) is modified. ERC-7752 is composable as a transport layer above existing messaging protocols.

Reference Implementation

See contracts/ERC7752ZeroGBridge.sol in the Opacus-Standart repository.

Security Considerations

  • Fulfiller trust – The whitelist is a centralisation risk; future versions should integrate decentralised solver auctions.
  • Reorg safety – Fulfillers MUST wait for sufficient source-chain confirmations before calling fulfillIntent.
  • Fee finality – Fees are forwarded immediately; a fee-on-settlement model should be considered for high-value transfers.

Copyright and related rights waived via CC0.

EIP.tools

EIP.tools

Search, read, and map Ethereum improvement proposals, ERCs, RIPs, and CAIPs from one focused interface.

Farcaster
by @apoorveth