Skip to content

Commit 5570140

Browse files
committed
Update fee table
1 parent a4b2399 commit 5570140

6 files changed

Lines changed: 93 additions & 24 deletions

File tree

src/config/data/ccip/data.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,19 +174,22 @@ export const networkFees: NetworkFees = {
174174
allLanes: { gasTokenFee: "0.05 %", linkFee: "0.045 %" },
175175
},
176176
[TokenMechanism.LockAndMint]: {
177-
fromEthereum: { gasTokenFee: "0.50 USD", linkFee: "0.45 USD" },
177+
fromEthereum: { gasTokenFee: "0.60 USD", linkFee: "0.54 USD" },
178178
toEthereum: { gasTokenFee: "1.50 USD", linkFee: "1.35 USD" },
179179
nonEthereum: { gasTokenFee: "0.25 USD", linkFee: "0.225 USD" },
180+
toSolana: { gasTokenFee: "0.35 USD", linkFee: "0.315 USD" },
180181
},
181182
[TokenMechanism.BurnAndMint]: {
182-
fromEthereum: { gasTokenFee: "0.50 USD", linkFee: "0.45 USD" },
183+
fromEthereum: { gasTokenFee: "0.60 USD", linkFee: "0.54 USD" },
183184
toEthereum: { gasTokenFee: "1.50 USD", linkFee: "1.35 USD" },
184185
nonEthereum: { gasTokenFee: "0.25 USD", linkFee: "0.225 USD" },
186+
toSolana: { gasTokenFee: "0.35 USD", linkFee: "0.315 USD" },
185187
},
186188
[TokenMechanism.BurnAndUnlock]: {
187-
fromEthereum: { gasTokenFee: "0.50 USD", linkFee: "0.45 USD" },
189+
fromEthereum: { gasTokenFee: "0.60 USD", linkFee: "0.54 USD" },
188190
toEthereum: { gasTokenFee: "1.50 USD", linkFee: "1.35 USD" },
189191
nonEthereum: { gasTokenFee: "0.25 USD", linkFee: "0.225 USD" },
192+
toSolana: { gasTokenFee: "0.35 USD", linkFee: "0.315 USD" },
190193
},
191194
[TokenMechanism.NoPoolDestinationChain]: {
192195
allLanes: { gasTokenFee: "", linkFee: "" },
@@ -198,6 +201,15 @@ export const networkFees: NetworkFees = {
198201
messaging: {
199202
fromToEthereum: { gasTokenFee: "0.50 USD", linkFee: "0.45 USD" },
200203
nonEthereum: { gasTokenFee: "0.10 USD", linkFee: "0.09 USD" },
204+
<<<<<<< HEAD
205+
<<<<<<< HEAD
206+
toSolana: { gasTokenFee: "0.10 USD", linkFee: "0.09 USD" },
207+
=======
208+
toSolana: { gasTokenFee: "0.15 USD", linkFee: "0.135 USD" },
209+
>>>>>>> 1c624de5 (fix)
210+
=======
211+
toSolana: { gasTokenFee: "0.10 USD", linkFee: "0.09 USD" },
212+
>>>>>>> 0e01147a (fix)
201213
},
202214
}
203215

src/config/data/ccip/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export type LaneSpecificFees = {
120120
fromEthereum?: NetworkFeeStructure
121121
toEthereum?: NetworkFeeStructure
122122
nonEthereum?: NetworkFeeStructure
123+
toSolana?: NetworkFeeStructure
123124
allLanes?: NetworkFeeStructure
124125
}
125126

src/config/data/ccip/utils.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,15 @@ export const calculateNetworkFeesForTokenMechanism = (
7474

7575
const isSourceEthereum = sourceTechno === "ETHEREUM"
7676
const isDestinationEthereum = destinationTechno === "ETHEREUM"
77+
const isDestinationSolana = (destinationTechno as string) === "SOLANA"
7778

7879
let laneSpecificFeeKey: LaneSpecificFeeKey
79-
if ((isSourceEthereum || isDestinationEthereum) && feesForMechanism.fromToEthereum) {
80-
laneSpecificFeeKey = "fromToEthereum"
81-
} else if (isSourceEthereum && feesForMechanism.fromEthereum) {
80+
if (isSourceEthereum && feesForMechanism.fromEthereum) {
8281
laneSpecificFeeKey = "fromEthereum"
8382
} else if (isDestinationEthereum && feesForMechanism.toEthereum) {
8483
laneSpecificFeeKey = "toEthereum"
84+
} else if (isDestinationSolana && feesForMechanism.toSolana) {
85+
laneSpecificFeeKey = "toSolana"
8586
} else {
8687
laneSpecificFeeKey = "nonEthereum"
8788
}
@@ -105,10 +106,13 @@ export const calculateMessaingNetworkFees = (sourceChain: SupportedChain, destin
105106

106107
const isSourceEthereum = sourceTechno === "ETHEREUM"
107108
const isDestinationEthereum = destinationTechno === "ETHEREUM"
109+
const isDestinationSolana = (destinationTechno as string) === "SOLANA"
108110

109111
let laneSpecificFeeKey: LaneSpecificFeeKey
110112
if (isSourceEthereum || isDestinationEthereum) {
111113
laneSpecificFeeKey = "fromToEthereum"
114+
} else if (isDestinationSolana && networkFees.messaging.toSolana) {
115+
laneSpecificFeeKey = "toSolana"
112116
} else {
113117
laneSpecificFeeKey = "nonEthereum"
114118
}

src/content/ccip/billing.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,12 @@ The table below provides an overview of the network fees charged for different u
112112

113113
<Billing />
114114

115+
> **Note:** On the source side, "Not Ethereum" includes Solana. On the destination side, "Not Ethereum" excludes Solana.
116+
>
117+
> <br></br>
118+
> When Solana is the destination for Token Transfers or Programmable Token Transfers, an additional fee of 0.10 USD
119+
> applies for [ATA](https://solana.com/docs/tokens#associated-token-account) generation.
120+
115121
<br id="network-token-calculator" />
116122

117123
You can use the calculator below to learn the network fees for a specific token. Select the environment (mainnet/testnet), the token, the source blockchain, and the destination blockchain to get the network fee:

src/content/ccip/llms-full.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,7 +1017,6 @@ This section provides an overview of the finality methods CCIP uses to determine
10171017
| Soneium | Finality tag | 27 minutes |
10181018
| Sonic | [Block depth](#block-depth) (10 blocks) | 7 seconds |
10191019
| Shibarium | Finality tag | 1 minute |
1020-
| Treasure | Finality tag | 7 hours |
10211020
| Unichain | Finality tag | 24 minutes |
10221021
| Wemix | Finality tag | \< 1 second |
10231022
| Worldchain | Finality tag | 40 minutes |
@@ -1133,7 +1132,12 @@ For messaging (only data): The network fee is a static amount, denominated in US
11331132

11341133
The table below provides an overview of the network fees charged for different use cases on different lanes. Percentage-based fees are calculated on the value transferred in a message. USD-denominated fees are applied per message.
11351134

1136-
<br id="network-token-calculator" />
1135+
> **Note:** On the source side, "Not Ethereum" includes Solana. On the destination side, "Not Ethereum" excludes Solana.
1136+
>
1137+
> <br />
1138+
>
1139+
> When Solana is the destination for Token Transfers or Programmable Token Transfers, an additional fee of 0.10 USD
1140+
> applies for [ATA](https://solana.com/docs/tokens#associated-token-account) generation.
11371141

11381142
You can use the calculator below to learn the network fees for a specific token. Select the environment (mainnet/testnet), the token, the source blockchain, and the destination blockchain to get the network fee:
11391143

src/features/ccip/components/billing/Billing.astro

Lines changed: 58 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ const lockAndUnlockAllLanes = calculateNetworkFeesForTokenMechanismDirect(TokenM
99
const restFromEthereum = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.BurnAndMint, "fromEthereum")
1010
const restToEthereum = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.BurnAndMint, "toEthereum")
1111
const restMechanismNonEthereum = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.BurnAndMint, "nonEthereum")
12+
const restToSolana = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.BurnAndMint, "toSolana")
1213
const messagingFeesFromToEthereum = calculateMessagingNetworkFeesDirect("fromToEthereum")
1314
const messagingFeesNonEthereum = calculateMessagingNetworkFeesDirect("nonEthereum")
15+
const messagingFeesToSolana = calculateMessagingNetworkFeesDirect("toSolana")
1416
---
1517

1618
<div style="overflow-x: auto;">
@@ -19,7 +21,8 @@ const messagingFeesNonEthereum = calculateMessagingNetworkFeesDirect("nonEthereu
1921
<tr>
2022
<th rowspan="2">Use case</th>
2123
<th rowspan="2">Token Pool Mechanism</th>
22-
<th rowspan="2">Lanes</th>
24+
<th rowspan="2">Source Chain</th>
25+
<th rowspan="2">Destination Chain</th>
2326
<th colspan="2">Fee Token</th>
2427
</tr>
2528
<tr>
@@ -30,46 +33,82 @@ const messagingFeesNonEthereum = calculateMessagingNetworkFeesDirect("nonEthereu
3033
<tbody>
3134
<!-- Token Transfers with/without messaging -->
3235
<tr>
33-
<td rowspan="4">
36+
<td rowspan="6">
3437
<ul style="list-style-type:none; margin:0; padding:0;">
3538
<li>Token Transfers</li>
3639
<li>Programmable Token Transfers</li>
3740
</ul>
3841
</td>
3942
<td>Lock and Unlock</td>
40-
<td>All Lanes</td>
43+
<td>All Chains</td>
44+
<td>All Chains</td>
4145
<td>{lockAndUnlockAllLanes.linkFee}</td>
4246
<td>{lockAndUnlockAllLanes.gasTokenFee}</td>
4347
</tr>
44-
<tr>
45-
<td rowspan="3">Lock and Mint<br />Burn and Mint<br />Burn and Unlock</td>
46-
<td>Non-Ethereum</td>
47-
<td>{restMechanismNonEthereum.linkFee}</td>
48-
<td>{restMechanismNonEthereum.gasTokenFee}</td>
48+
<tr class="section-divider">
49+
<td rowspan="5">Lock and Mint<br />Burn and Mint<br />Burn and Unlock</td>
50+
<td>Ethereum</td>
51+
<td>Not Ethereum</td>
52+
<td>{restFromEthereum.linkFee}</td>
53+
<td>{restFromEthereum.gasTokenFee}</td>
4954
</tr>
5055
<tr>
51-
<td>From: Ethereum</td>
56+
<td>Ethereum</td>
57+
<td>Solana</td>
5258
<td>{restFromEthereum.linkFee}</td>
5359
<td>{restFromEthereum.gasTokenFee}</td>
5460
</tr>
5561
<tr>
56-
<td>To: Ethereum</td>
62+
<td>Not Ethereum</td>
63+
<td>Solana</td>
64+
<td>{restToSolana.linkFee}</td>
65+
<td>{restToSolana.gasTokenFee}</td>
66+
</tr>
67+
<tr>
68+
<td>Not Ethereum</td>
69+
<td>Ethereum</td>
5770
<td>{restToEthereum.linkFee}</td>
5871
<td>{restToEthereum.gasTokenFee}</td>
5972
</tr>
73+
<tr>
74+
<td>Not Ethereum</td>
75+
<td>Not Ethereum</td>
76+
<td>{restMechanismNonEthereum.linkFee}</td>
77+
<td>{restMechanismNonEthereum.gasTokenFee}</td>
78+
</tr>
6079
<!-- Messaging -->
80+
<tr class="section-divider">
81+
<td rowspan="5">Messaging</td>
82+
<td rowspan="5">N/A</td>
83+
<td>Ethereum</td>
84+
<td>Not Ethereum</td>
85+
<td>{messagingFeesFromToEthereum.linkFee}</td>
86+
<td>{messagingFeesFromToEthereum.gasTokenFee}</td>
87+
</tr>
6188
<tr>
62-
<td rowspan="2">Messaging</td>
63-
<td rowspan="2">N/A</td>
64-
<td>Non-Ethereum</td>
65-
<td>{messagingFeesNonEthereum.linkFee}</td>
66-
<td>{messagingFeesNonEthereum.gasTokenFee}</td>
89+
<td>Ethereum</td>
90+
<td>Solana</td>
91+
<td>{messagingFeesFromToEthereum.linkFee}</td>
92+
<td>{messagingFeesFromToEthereum.gasTokenFee}</td>
93+
</tr>
94+
<tr>
95+
<td>Not Ethereum</td>
96+
<td>Solana</td>
97+
<td>{messagingFeesToSolana.linkFee}</td>
98+
<td>{messagingFeesToSolana.gasTokenFee}</td>
6799
</tr>
68100
<tr>
69-
<td>From/To: Ethereum</td>
101+
<td>Not Ethereum</td>
102+
<td>Ethereum</td>
70103
<td>{messagingFeesFromToEthereum.linkFee}</td>
71104
<td>{messagingFeesFromToEthereum.gasTokenFee}</td>
72105
</tr>
106+
<tr>
107+
<td>Not Ethereum</td>
108+
<td>Not Ethereum</td>
109+
<td>{messagingFeesNonEthereum.linkFee}</td>
110+
<td>{messagingFeesNonEthereum.gasTokenFee}</td>
111+
</tr>
73112
</tbody>
74113
</table>
75114
</div>
@@ -86,4 +125,7 @@ const messagingFeesNonEthereum = calculateMessagingNetworkFeesDirect("nonEthereu
86125
padding: 1em;
87126
white-space: nowrap;
88127
}
128+
tr.section-divider td {
129+
border-top: 3px solid #bbb;
130+
}
89131
</style>

0 commit comments

Comments
 (0)