Private Intents
The private intent mechanism is designed to enable users to perform cross-chain intent actions without disclosing the recipient address on Aztec (or the sender address on Aztec if the intent is initiated from Aztec). To achieve this, a secure and privacy-preserving communication channel between the User and Filler is required.
From a OP stack chain to Aztec

Off-chain, the user generates a cryptographic secret and computes its hash:
secretHash = hash(secret)The user submits an intent on the ERC-7683 contract on the OP stack chain, using
secretHashas the recipient address. This ensures that only the holder of the original secret can later claim these funds.The filler locks the specified funds into the ERC-7683 contract on Aztec, linking them to
secretHash. This ensures that only the user who knows the secret can claim the funds. If the user does not claim the funds within the predefined period, the filler can reclaim them.The user submits a private transaction to the ERC-7683 contract on Aztec, revealing the secret. The contract verifies
hash(secret) == secretHash. If successful, the user receives the funds. Within the same transaction, the ERC-7683 contract on Aztec sends an L2_aztec-to-L1 message to the Forwarder contract on Ethereum containing a commitment associated with the intent. The Forwarder contract stores this commitment, containingsecretHashand the filler’s Ethereum address (filler_L2_address). Since the OP stack chain contracts can read Ethereum block headers, this message serves as a verifiable signal that the user has successfully claimed the funds.Because on the OP stack chain it’s possible to read Ethereum block headers, the filler can verify this recorded commitment on the OP stack chain using a storage proof against an Ethereum block header.
From Aztec to a OP stack chain

A user creates an intent in the ERC-7683 contract on Aztec, specifying a destination address on the OP stack chain. In the same transaction, the user privately transfers tokens to the ERC-7683 contract. The ERC-7683 contract then stores a commitment containing the
destination_L2_address,amount, andnonce. This ensures the filler can later claim the locked funds once the order is settled.On the OP stack chain, the filler sends the specified amount to the user’s destination address via the ERC-7683 contract. Within the same transaction, the ERC-7683 contract stores a commitment. The filler address on Aztec is used for the reimbursement.
The Forwarder contract on Ethereum verifies that the filler fulfilled the order by reading the commitment from the OP stack chain state root taken from the L2 bridge contract via a storage proof. If the commitment is valid, the Forwarder sends an L1-to-L2_aztec message.
Upon receiving the L1-to-L2_aztec message, the ERC-7683 contract on Aztec sends the funds to the filler.
If Aztec would gain direct access to Ethereum blocks, then this verification could be performed on Aztec rather than on L1, thereby reducing both gas costs and overall complexity.
Last updated