You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/ccip/api-reference/aptos/v1.6.0/receiver.mdx
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,6 @@ public fun ccip_receive<T: key>(
49
49
1.**Module Registration**: Your module must be registered as a valid receiver by calling `receiver_registry::register_receiver`. This is typically done once during your module's initialization and requires defining a unique, empty `ProofType` struct.
50
50
51
51
2.**Account Type**:
52
-
53
52
- If your module will handle tokens, it **must** be deployed to a **Resource Account**.
54
53
- If your module is data-only, it can be deployed to a regular user account or a code object account.
-**Reason**: The recipient is a simple user account that does not have executable code. While a data payload can be sent in the CCIP message, the recipient account has no way to act upon or process that data.
-**Reason**: The receiving module is designed with a `ccip_receive` function that can be programmed to handle incoming tokens, process arbitrary data, or both simultaneously according to your application's logic.
37
35
38
36
-**Module / Smart Contract / Program → User Account / EOA / Wallet**
-**Reason**: Similar to the first case, the destination is a simple user account that cannot execute logic to process an incoming data payload.
42
39
@@ -78,21 +75,17 @@ The `ccip_onramp::onramp` module is an internal CCIP module that handles the cor
78
75
When the Router forwards a `ccip_send` request, the OnRamp performs the following actions:
79
76
80
77
-**Validations**
81
-
82
78
- Ensures that the destination chain is not cursed.
83
79
- Verifies that the sender is on the allowlist if one is enabled for the destination lane.
84
80
85
81
-**Fee Collection**
86
-
87
82
- Withdraws the pre-calculated fee amount from the sender's specified `fee_token_store`, defaulting to the user's primary store if `0x0` is provided.
88
83
89
84
-**Token Handling**
90
-
91
85
- If the message involves token transfers, it initiates a secure callback pattern by calling the `Token Admin Dispatcher`.
92
86
- The dispatcher uses the `Token Admin Registry` to store the message context (sender, receiver, etc.) before invoking the correct `Token Pool` to `lock_or_burn` the assets.
93
87
94
88
-**Nonce Management**
95
-
96
89
- For ordered messages, it calls the `Nonce Manager` to retrieve and increment the sender's nonce for that destination.
97
90
98
91
-**Event Emission**
@@ -116,7 +109,6 @@ During the **Commit Phase**, the following steps occur:
116
109
The Committing DON calls the `commit` function on the `OffRamp` with a report that includes Merkle roots and price updates.
Copy file name to clipboardExpand all lines: src/content/ccip/concepts/architecture/onchain/aptos/overview.mdx
-9Lines changed: 0 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,9 +66,7 @@ On the Aptos destination blockchain, an onchain module called the `OffRamp` rece
66
66
This outlines the process when initiating a CCIP transaction from the Aptos blockchain.
67
67
68
68
1.**Preparation**
69
-
70
69
- The Sender (a user's wallet or another module) prepares the information for a CCIP Message, including:
71
-
72
70
-**Receiver**: A byte array representing the destination address (e.g., a 20-byte EVM address).
73
71
-**Data payload**: Arbitrary bytes to be delivered to the receiver.
74
72
-**Tokens and amounts** (if applicable).
@@ -80,13 +78,10 @@ This outlines the process when initiating a CCIP transaction from the Aptos bloc
80
78
- The Sender prepares to call the `ccip_router::router::ccip_send` entry function. Unlike EVM and SVM chains, a separate token approve transaction is not required. The user's signature on the `ccip_send` transaction itself authorizes the CCIP modules to withdraw the necessary tokens and fees from the sender's account.
81
79
82
80
1.**Sending**
83
-
84
81
- When the `ccip_send` transaction is executed:
85
-
86
82
- The `Router` module, as the entry point, performs initial validations and forwards the call to the appropriate `OnRamp` module.
87
83
88
84
- The `OnRamp` module executes the core logic:
89
-
90
85
- Verifications: It ensures that the destination chain is not cursed by checking with the `RMN Remote` module.
91
86
- Fee Collection: It withdraws the required fee from the sender's fungible asset store. If the fee_token_store address is specified as 0x0, the module automatically resolves to the primary_fungible_store corresponding to the sender's account and the chosen fee_token.
92
87
- Sequence Management: It increments the sequence number for the given destination chain. If required, it also interacts with the `Nonce Manager` to handle ordered message nonces.
@@ -98,27 +93,23 @@ This outlines the process when initiating a CCIP transaction from the Aptos bloc
98
93
- Event Emission: A unique messageId is generated, and the `OnRamp` emits a `CCIPMessageSent` event containing the full, sequenced message details.
99
94
100
95
1.**Initial Offchain Processing**
101
-
102
96
- The CCIP Committing DON monitors the Aptos blockchain for the `CCIPMessageSent` event and begins processing the message offchain to prepare it for commitment on the destination chain.
103
97
104
98
### Destination Blockchain (Aptos)
105
99
106
100
This outlines the process when Aptos is the receiving chain for a CCIP message.
107
101
108
102
1.**Commit Phase**
109
-
110
103
- The final OCR report from the Committing DON, containing Merkle roots of batched messages and any price updates, is submitted to the `OffRamp` module's `commit` function.
111
104
- The `OffRamp` verifies the DON's signatures.
112
105
- If the report includes blessed Merkle roots, the `OffRamp` verifies the RMN signatures.
113
106
- If the report contains price updates, the `OffRamp` calls the `Fee Quoter` module to update its onchain token and gas price data.
114
107
- The `OffRamp` stores the verified Merkle root and emits a `CommitReportAccepted` event, confirming the messages are ready for execution.
115
108
116
109
1.**Secondary Offchain Processing**
117
-
118
110
- The CCIP Executing DON monitors for the `CommitReportAccepted` event. For each message in the committed batch, the DON computes its specific Merkle proof. Each message is then submitted in a separate transaction to the Aptos blockchain.
119
111
120
112
1.**Execution Phase**
121
-
122
113
- When the Executing DON calls the `OffRamp` module's `execute` function, the `OffRamp` first verifies the message's Merkle proof against a stored Merkle root. It performs several validations, including checking the `RMN Remote` module and ensuring the message has not already been executed.
123
114
- If the message includes tokens, the `OffRamp` calls the `Token Admin Dispatcher`. This dispatcher follows a secure callback pattern using the `Token Admin Registry`: it initiates a `release_or_mint` operation, which invokes the correct Token Pool. The pool then calls the registry to get its input data, mints or releases the tokens, and sets the output. The released tokens are then deposited into the receiver's primary fungible store.
124
115
- If the message contains arbitrary data, the `OffRamp` calls the `Receiver Dispatcher`. The dispatcher does not pass the message data directly. Instead, it securely stores the payload in the `Receiver Registry` and then triggers the `ccip_receive` entry function of the registered receiver module. The receiver module, in turn, must call receiver_registry::`get_receiver_input` within its own execution to securely fetch the message payload it is meant to process.
Copy file name to clipboardExpand all lines: src/content/ccip/concepts/architecture/onchain/aptos/upgradability.mdx
-2Lines changed: 0 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,6 @@ On the Aptos blockchain, upgradability primarily happens in two ways:
23
23
Many CCIP modules (like `onramp`, `offramp`, `fee_quoter`) expose public entry functions that allow authorized accounts to adjust operational parameters. These functions modify onchain data stored in resources without requiring a new deployment.
24
24
25
25
Examples include:
26
-
27
26
- Enabling support for a new destination chain.
28
27
- Updating fee parameters.
29
28
@@ -34,7 +33,6 @@ On the Aptos blockchain, upgradability primarily happens in two ways:
34
33
Aptos allows for module code to be upgraded in-place. This means a code upgrade for the CCIP protocol involves publishing the new, updated module bytecode to the existing Object address.
35
34
36
35
Because the Object address remains unchanged:
37
-
38
36
- External modules and off-chain clients that interact with CCIP do not need to update their stored addresses.
39
37
- They seamlessly begin interacting with the new code after the upgrade is published.
Copy file name to clipboardExpand all lines: src/content/ccip/tutorials/aptos/destination/prerequisites.mdx
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -102,7 +102,6 @@ By defining these addresses in the `Move.toml` file, the example modules can int
102
102
## Wallets
103
103
104
104
-**EVM Wallet and Private Key**: To send transactions from an EVM chain (like Ethereum Sepolia), you need a wallet and its private key.
105
-
106
105
- Set up a wallet like [MetaMask](https://metamask.io/).
107
106
- You will need to export the private key for the account you intend to send _from_. Follow the [official MetaMask guide](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) to obtain your private key and add it to the `.env` file as shown below.
Copy file name to clipboardExpand all lines: src/content/ccip/tutorials/aptos/destination/programmatic-token-transfers.mdx
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -185,7 +185,6 @@ Execution state for CCIP message <YOUR_CCIP_MESSAGE_ID> is SUCCESS
185
185
Once execution is successful, you need to verify that your module correctly forwarded the tokens.
186
186
187
187
-**Check the Event**: You can manually verify that your module emitted the correct `ForwardedTokens` event by using the [Aptos Explorer](https://explorer.aptoslabs.com/?network=testnet).
188
-
189
188
1. Search for your receiver module's address (the one you provided with `--aptosReceiver`).
190
189
1. In the `Transactions` tab, find the latest transaction that calls the `offramp::execute` function.
191
190
1. Click on the transaction and navigate to the `Events` tab.
0 commit comments