@snowbridge/registry 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/paseo_sepolia_bridge_info.g.d.ts +8 -7
- package/dist/paseo_sepolia_bridge_info.g.d.ts.map +1 -1
- package/dist/paseo_sepolia_bridge_info.g.js +8 -7
- package/dist/polkadot_mainnet_bridge_info.g.d.ts +172 -18
- package/dist/polkadot_mainnet_bridge_info.g.d.ts.map +1 -1
- package/dist/polkadot_mainnet_bridge_info.g.js +208 -18
- package/dist/transfers.d.ts.map +1 -1
- package/dist/transfers.js +57 -38
- package/dist/westend_sepolia_bridge_info.g.d.ts +99 -11
- package/dist/westend_sepolia_bridge_info.g.d.ts.map +1 -1
- package/dist/westend_sepolia_bridge_info.g.js +122 -11
- package/package.json +4 -4
- package/scripts/buildRegistry.ts +164 -29
- package/src/paseo_sepolia_bridge_info.g.ts +8 -7
- package/src/polkadot_mainnet_bridge_info.g.ts +208 -18
- package/src/transfers.ts +50 -35
- package/src/westend_sepolia_bridge_info.g.ts +122 -11
|
@@ -7,6 +7,7 @@ const registry = {
|
|
|
7
7
|
beaconApiUrl: "https://lodestar-sepolia.chainsafe.io",
|
|
8
8
|
ethereumChains: {
|
|
9
9
|
"84532": "https://base-sepolia-rpc.publicnode.com",
|
|
10
|
+
"421614": "https://arbitrum-sepolia-rpc.publicnode.com",
|
|
10
11
|
"11155111": "https://ethereum-sepolia-rpc.publicnode.com",
|
|
11
12
|
},
|
|
12
13
|
relaychainUrl: "wss://westend-rpc.n.dwellir.com",
|
|
@@ -15,21 +16,21 @@ const registry = {
|
|
|
15
16
|
"1002": "wss://bridge-hub-westend-rpc.n.dwellir.com",
|
|
16
17
|
},
|
|
17
18
|
gatewayContract: "0x9ed8b47bc3417e3bd0507adc06e56e2fa360a4e9",
|
|
18
|
-
beefyContract: "
|
|
19
|
+
beefyContract: "0x2bc7ec7fe8ec8bdde511003f4fe82bc86b69894a",
|
|
19
20
|
assetHubParaId: 1000,
|
|
20
21
|
bridgeHubParaId: 1002,
|
|
21
22
|
v2_parachains: [1000],
|
|
22
23
|
indexerGraphQlUrl: "https://snowbridge.squids.live/snowbridge-subsquid-westend@v1/api/graphql",
|
|
23
24
|
l2Bridge: {
|
|
24
25
|
acrossAPIUrl: "https://testnet.across.to/api",
|
|
25
|
-
l1AdapterAddress: "
|
|
26
|
-
l1HandlerAddress: "
|
|
27
|
-
l1FeeTokenAddress: "
|
|
28
|
-
l1SwapRouterAddress: "
|
|
29
|
-
l1SwapQuoterAddress: "
|
|
26
|
+
l1AdapterAddress: "0xcda9bff39cdf39e95f4b699422e422195091126d",
|
|
27
|
+
l1HandlerAddress: "0x924a9f036260ddd5808007e1aa95f08ed08aa569",
|
|
28
|
+
l1FeeTokenAddress: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
29
|
+
l1SwapRouterAddress: "0x3bfa4769fb09eefc5a80d6e87c3b9c650f7ae48e",
|
|
30
|
+
l1SwapQuoterAddress: "0xed1f6473345f45b75f8179591dd5ba1888cf2fb3",
|
|
30
31
|
l2Chains: {
|
|
31
32
|
"84532": {
|
|
32
|
-
adapterAddress: "
|
|
33
|
+
adapterAddress: "0xf06939613a3838af11104c898758220db9093679",
|
|
33
34
|
feeTokenAddress: "0x4200000000000000000000000000000000000006",
|
|
34
35
|
swapRoutes: [
|
|
35
36
|
{
|
|
@@ -44,6 +45,22 @@ const registry = {
|
|
|
44
45
|
},
|
|
45
46
|
],
|
|
46
47
|
},
|
|
48
|
+
"421614": {
|
|
49
|
+
adapterAddress: "0xcb3d8043bdbfb0d9b30de279a09132073d1de561",
|
|
50
|
+
feeTokenAddress: "0x980b62da83eff3d4576c647993b0c1d7faf17c73",
|
|
51
|
+
swapRoutes: [
|
|
52
|
+
{
|
|
53
|
+
inputToken: "0x980b62da83eff3d4576c647993b0c1d7faf17c73",
|
|
54
|
+
outputToken: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
55
|
+
swapFee: 0,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
inputToken: "0x75faf114eafb1bdbe2f0316df893fd58ce46aa4d",
|
|
59
|
+
outputToken: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
|
|
60
|
+
swapFee: 500,
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
},
|
|
47
64
|
},
|
|
48
65
|
},
|
|
49
66
|
},
|
|
@@ -84,9 +101,69 @@ const registry = {
|
|
|
84
101
|
"0xf50fb50d65c8c1f6c72e4d8397c984933afc8f7e",
|
|
85
102
|
],
|
|
86
103
|
},
|
|
104
|
+
{
|
|
105
|
+
from: {
|
|
106
|
+
kind: "polkadot",
|
|
107
|
+
id: 1000,
|
|
108
|
+
},
|
|
109
|
+
to: {
|
|
110
|
+
kind: "ethereum_l2",
|
|
111
|
+
id: 84532,
|
|
112
|
+
},
|
|
113
|
+
assets: [
|
|
114
|
+
"0x0000000000000000000000000000000000000000",
|
|
115
|
+
"0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
|
|
116
|
+
"0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
from: {
|
|
121
|
+
kind: "ethereum_l2",
|
|
122
|
+
id: 84532,
|
|
123
|
+
},
|
|
124
|
+
to: {
|
|
125
|
+
kind: "polkadot",
|
|
126
|
+
id: 1000,
|
|
127
|
+
},
|
|
128
|
+
assets: [
|
|
129
|
+
"0x0000000000000000000000000000000000000000",
|
|
130
|
+
"0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
|
|
131
|
+
"0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
from: {
|
|
136
|
+
kind: "polkadot",
|
|
137
|
+
id: 1000,
|
|
138
|
+
},
|
|
139
|
+
to: {
|
|
140
|
+
kind: "ethereum_l2",
|
|
141
|
+
id: 421614,
|
|
142
|
+
},
|
|
143
|
+
assets: [
|
|
144
|
+
"0x0000000000000000000000000000000000000000",
|
|
145
|
+
"0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
|
|
146
|
+
"0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
from: {
|
|
151
|
+
kind: "ethereum_l2",
|
|
152
|
+
id: 421614,
|
|
153
|
+
},
|
|
154
|
+
to: {
|
|
155
|
+
kind: "polkadot",
|
|
156
|
+
id: 1000,
|
|
157
|
+
},
|
|
158
|
+
assets: [
|
|
159
|
+
"0x0000000000000000000000000000000000000000",
|
|
160
|
+
"0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
|
|
161
|
+
"0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
162
|
+
],
|
|
163
|
+
},
|
|
87
164
|
],
|
|
88
165
|
registry: {
|
|
89
|
-
timestamp: "2026-
|
|
166
|
+
timestamp: "2026-02-16T10:24:33.190Z",
|
|
90
167
|
environment: "westend_sepolia",
|
|
91
168
|
ethChainId: 11155111,
|
|
92
169
|
gatewayAddress: "0x9ed8b47bc3417e3bd0507adc06e56e2fa360a4e9",
|
|
@@ -100,7 +177,7 @@ const registry = {
|
|
|
100
177
|
accountType: "AccountId32",
|
|
101
178
|
name: "Westend",
|
|
102
179
|
specName: "westend",
|
|
103
|
-
specVersion:
|
|
180
|
+
specVersion: 1021002,
|
|
104
181
|
},
|
|
105
182
|
bridgeHub: {
|
|
106
183
|
tokenSymbols: "WND",
|
|
@@ -110,12 +187,13 @@ const registry = {
|
|
|
110
187
|
accountType: "AccountId32",
|
|
111
188
|
name: "Westend BridgeHub",
|
|
112
189
|
specName: "bridge-hub-westend",
|
|
113
|
-
specVersion:
|
|
190
|
+
specVersion: 1021001,
|
|
114
191
|
},
|
|
115
192
|
ethereumChains: {
|
|
116
193
|
ethereum_l2_84532: {
|
|
117
194
|
kind: "ethereum_l2",
|
|
118
195
|
id: 84532,
|
|
196
|
+
name: "base-sepolia",
|
|
119
197
|
assets: {
|
|
120
198
|
"0x4200000000000000000000000000000000000006": {
|
|
121
199
|
token: "0x4200000000000000000000000000000000000006",
|
|
@@ -144,9 +222,42 @@ const registry = {
|
|
|
144
222
|
},
|
|
145
223
|
key: "ethereum_l2_84532",
|
|
146
224
|
},
|
|
225
|
+
ethereum_l2_421614: {
|
|
226
|
+
kind: "ethereum_l2",
|
|
227
|
+
id: 421614,
|
|
228
|
+
name: "arbitrum-sepolia",
|
|
229
|
+
assets: {
|
|
230
|
+
"0x980b62da83eff3d4576c647993b0c1d7faf17c73": {
|
|
231
|
+
token: "0x980b62da83eff3d4576c647993b0c1d7faf17c73",
|
|
232
|
+
name: "WETH",
|
|
233
|
+
symbol: "WETH",
|
|
234
|
+
decimals: 18,
|
|
235
|
+
swapTokenAddress: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
236
|
+
swapFee: 0,
|
|
237
|
+
},
|
|
238
|
+
"0x75faf114eafb1bdbe2f0316df893fd58ce46aa4d": {
|
|
239
|
+
token: "0x75faf114eafb1bdbe2f0316df893fd58ce46aa4d",
|
|
240
|
+
name: "USD Coin",
|
|
241
|
+
symbol: "USDC",
|
|
242
|
+
decimals: 6,
|
|
243
|
+
swapTokenAddress: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
|
|
244
|
+
swapFee: 500,
|
|
245
|
+
},
|
|
246
|
+
"0x0000000000000000000000000000000000000000": {
|
|
247
|
+
token: "0x0000000000000000000000000000000000000000",
|
|
248
|
+
name: "Ether",
|
|
249
|
+
symbol: "Ether",
|
|
250
|
+
decimals: 18,
|
|
251
|
+
swapTokenAddress: "0x0000000000000000000000000000000000000000",
|
|
252
|
+
swapFee: 0,
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
key: "ethereum_l2_421614",
|
|
256
|
+
},
|
|
147
257
|
ethereum_11155111: {
|
|
148
258
|
kind: "ethereum",
|
|
149
259
|
id: 11155111,
|
|
260
|
+
name: "sepolia",
|
|
150
261
|
assets: {
|
|
151
262
|
"0x0000000000000000000000000000000000000000": {
|
|
152
263
|
token: "0x0000000000000000000000000000000000000000",
|
|
@@ -229,7 +340,7 @@ const registry = {
|
|
|
229
340
|
accountType: "AccountId32",
|
|
230
341
|
name: "Westend Asset Hub",
|
|
231
342
|
specName: "westmint",
|
|
232
|
-
specVersion:
|
|
343
|
+
specVersion: 1021003,
|
|
233
344
|
},
|
|
234
345
|
assets: {
|
|
235
346
|
"0x0000000000000000000000000000000000000000": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snowbridge/registry",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "Snowbridge Asset Registry",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"ts-node": "10.9.2",
|
|
25
25
|
"tsconfig-paths": "4.2.0",
|
|
26
26
|
"typescript": "5.9.3",
|
|
27
|
-
"@snowbridge/api": "0.4.
|
|
28
|
-
"@snowbridge/contract-types": "0.4.
|
|
27
|
+
"@snowbridge/api": "0.4.4",
|
|
28
|
+
"@snowbridge/contract-types": "0.4.4"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@snowbridge/base-types": "0.4.
|
|
31
|
+
"@snowbridge/base-types": "0.4.4"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc --build --force && tsc -p tsconfig.scripts.json",
|
package/scripts/buildRegistry.ts
CHANGED
|
@@ -70,8 +70,8 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
70
70
|
"3369": "wss://paseo-muse-rpc.polkadot.io",
|
|
71
71
|
"2043": `wss://parachain-testnet-rpc.origin-trail.network`,
|
|
72
72
|
},
|
|
73
|
-
gatewayContract: "
|
|
74
|
-
beefyContract: "
|
|
73
|
+
gatewayContract: "0x1607c1368bc943130258318c91bbd8cff3d063e6",
|
|
74
|
+
beefyContract: "0x2c780945beb1241fe9c645800110cb9c4bbbb639",
|
|
75
75
|
assetHubParaId: 1000,
|
|
76
76
|
bridgeHubParaId: 1002,
|
|
77
77
|
v2_parachains: [1000],
|
|
@@ -93,6 +93,8 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
93
93
|
"1": "https://ethereum-rpc.publicnode.com",
|
|
94
94
|
"1284": "https://rpc.api.moonbeam.network",
|
|
95
95
|
"8453": "https://base-rpc.publicnode.com",
|
|
96
|
+
"42161": "https://arbitrum-one-rpc.publicnode.com",
|
|
97
|
+
"10": "https://optimism-rpc.publicnode.com",
|
|
96
98
|
},
|
|
97
99
|
relaychainUrl: "https://polkadot-rpc.n.dwellir.com",
|
|
98
100
|
parachains: {
|
|
@@ -108,7 +110,7 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
108
110
|
//"3397": "wss://rpc.jamton.network",
|
|
109
111
|
},
|
|
110
112
|
gatewayContract: "0x27ca963c279c93801941e1eb8799c23f407d68e7",
|
|
111
|
-
beefyContract: "
|
|
113
|
+
beefyContract: "0x1817874feab3ce053d0f40abc23870db35c2affc",
|
|
112
114
|
assetHubParaId: 1000,
|
|
113
115
|
bridgeHubParaId: 1002,
|
|
114
116
|
v2_parachains: [1000],
|
|
@@ -134,14 +136,14 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
134
136
|
},
|
|
135
137
|
l2Bridge: {
|
|
136
138
|
acrossAPIUrl: "https://app.across.to/api",
|
|
137
|
-
l1AdapterAddress: "
|
|
138
|
-
l1HandlerAddress: "
|
|
139
|
+
l1AdapterAddress: "0xd3b11c36404b092645522b682832fcdee07d2668",
|
|
140
|
+
l1HandlerAddress: "0x924a9f036260ddd5808007e1aa95f08ed08aa569",
|
|
139
141
|
l1FeeTokenAddress: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
|
|
140
|
-
l1SwapQuoterAddress: "
|
|
141
|
-
l1SwapRouterAddress: "
|
|
142
|
+
l1SwapQuoterAddress: "0x61ffe014ba17989e743c5f6cb21bf9697530b21e",
|
|
143
|
+
l1SwapRouterAddress: "0xe592427a0aece92de3edee1f18e0157c05861564",
|
|
142
144
|
l2Chains: {
|
|
143
145
|
"8453": {
|
|
144
|
-
adapterAddress: "
|
|
146
|
+
adapterAddress: "0x07fe4E7340976FC873B74bAfe3C3e5b0e01f3665".toLowerCase(),
|
|
145
147
|
feeTokenAddress: "0x4200000000000000000000000000000000000006",
|
|
146
148
|
swapRoutes: [
|
|
147
149
|
// WETH
|
|
@@ -152,8 +154,44 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
152
154
|
},
|
|
153
155
|
// USDC
|
|
154
156
|
{
|
|
155
|
-
inputToken: "
|
|
156
|
-
outputToken: "
|
|
157
|
+
inputToken: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
|
|
158
|
+
outputToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
|
|
159
|
+
swapFee: 500,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
"42161": {
|
|
164
|
+
adapterAddress: "0x836895Ad176235Dfe9C59b3df56C7579d90ea338".toLowerCase(),
|
|
165
|
+
feeTokenAddress: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1".toLowerCase(),
|
|
166
|
+
swapRoutes: [
|
|
167
|
+
// WETH
|
|
168
|
+
{
|
|
169
|
+
inputToken: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1".toLowerCase(),
|
|
170
|
+
outputToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
|
|
171
|
+
swapFee: 0,
|
|
172
|
+
},
|
|
173
|
+
// USDC
|
|
174
|
+
{
|
|
175
|
+
inputToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase(),
|
|
176
|
+
outputToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
|
|
177
|
+
swapFee: 500,
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
},
|
|
181
|
+
"10": {
|
|
182
|
+
adapterAddress: "0x836895Ad176235Dfe9C59b3df56C7579d90ea338".toLowerCase(),
|
|
183
|
+
feeTokenAddress: "0x4200000000000000000000000000000000000006".toLowerCase(),
|
|
184
|
+
swapRoutes: [
|
|
185
|
+
// WETH
|
|
186
|
+
{
|
|
187
|
+
inputToken: "0x4200000000000000000000000000000000000006".toLowerCase(),
|
|
188
|
+
outputToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
|
|
189
|
+
swapFee: 0,
|
|
190
|
+
},
|
|
191
|
+
// USDC
|
|
192
|
+
{
|
|
193
|
+
inputToken: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85".toLowerCase(),
|
|
194
|
+
outputToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
|
|
157
195
|
swapFee: 500,
|
|
158
196
|
},
|
|
159
197
|
],
|
|
@@ -168,6 +206,7 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
168
206
|
ethereumChains: {
|
|
169
207
|
"11155111": "https://ethereum-sepolia-rpc.publicnode.com",
|
|
170
208
|
"84532": "https://base-sepolia-rpc.publicnode.com",
|
|
209
|
+
"421614": "https://arbitrum-sepolia-rpc.publicnode.com",
|
|
171
210
|
},
|
|
172
211
|
relaychainUrl: "wss://westend-rpc.n.dwellir.com",
|
|
173
212
|
parachains: {
|
|
@@ -175,7 +214,7 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
175
214
|
"1002": "wss://bridge-hub-westend-rpc.n.dwellir.com",
|
|
176
215
|
},
|
|
177
216
|
gatewayContract: "0x9ed8b47bc3417e3bd0507adc06e56e2fa360a4e9",
|
|
178
|
-
beefyContract: "
|
|
217
|
+
beefyContract: "0x2bc7ec7fe8ec8bdde511003f4fe82bc86b69894a",
|
|
179
218
|
assetHubParaId: 1000,
|
|
180
219
|
bridgeHubParaId: 1002,
|
|
181
220
|
v2_parachains: [1000],
|
|
@@ -183,14 +222,14 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
183
222
|
"https://snowbridge.squids.live/snowbridge-subsquid-westend@v1/api/graphql",
|
|
184
223
|
l2Bridge: {
|
|
185
224
|
acrossAPIUrl: "https://testnet.across.to/api",
|
|
186
|
-
l1AdapterAddress: "
|
|
187
|
-
l1HandlerAddress: "
|
|
188
|
-
l1FeeTokenAddress: "
|
|
189
|
-
l1SwapRouterAddress: "
|
|
190
|
-
l1SwapQuoterAddress: "
|
|
225
|
+
l1AdapterAddress: "0xCDa9bFf39cdF39E95F4B699422E422195091126d".toLowerCase(),
|
|
226
|
+
l1HandlerAddress: "0x924a9f036260ddd5808007e1aa95f08ed08aa569",
|
|
227
|
+
l1FeeTokenAddress: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
|
|
228
|
+
l1SwapRouterAddress: "0x3bfa4769fb09eefc5a80d6e87c3b9c650f7ae48e",
|
|
229
|
+
l1SwapQuoterAddress: "0xed1f6473345f45b75f8179591dd5ba1888cf2fb3",
|
|
191
230
|
l2Chains: {
|
|
192
231
|
"84532": {
|
|
193
|
-
adapterAddress: "
|
|
232
|
+
adapterAddress: "0xf06939613a3838af11104c898758220db9093679",
|
|
194
233
|
feeTokenAddress: "0x4200000000000000000000000000000000000006",
|
|
195
234
|
swapRoutes: [
|
|
196
235
|
// WETH
|
|
@@ -207,6 +246,24 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
|
|
|
207
246
|
},
|
|
208
247
|
],
|
|
209
248
|
},
|
|
249
|
+
"421614": {
|
|
250
|
+
adapterAddress: "0xcB3d8043bDbfB0D9b30de279A09132073d1dE561".toLowerCase(),
|
|
251
|
+
feeTokenAddress: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73".toLowerCase(),
|
|
252
|
+
swapRoutes: [
|
|
253
|
+
// WETH
|
|
254
|
+
{
|
|
255
|
+
inputToken: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73".toLowerCase(),
|
|
256
|
+
outputToken: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14".toLowerCase(),
|
|
257
|
+
swapFee: 0,
|
|
258
|
+
},
|
|
259
|
+
// USDC
|
|
260
|
+
{
|
|
261
|
+
inputToken: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d".toLowerCase(),
|
|
262
|
+
outputToken: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238".toLowerCase(),
|
|
263
|
+
swapFee: 500,
|
|
264
|
+
},
|
|
265
|
+
],
|
|
266
|
+
},
|
|
210
267
|
},
|
|
211
268
|
},
|
|
212
269
|
},
|
|
@@ -232,7 +289,9 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
|
|
|
232
289
|
// Disallow MUSE to any location but 3369
|
|
233
290
|
if (
|
|
234
291
|
path.asset === "0xb34a6924a02100ba6ef12af1c798285e8f7a16ee" &&
|
|
235
|
-
((path.destination.
|
|
292
|
+
((path.destination.kind === "polkadot" &&
|
|
293
|
+
path.destination.id !== 3369 &&
|
|
294
|
+
path.source.kind === "ethereum") ||
|
|
236
295
|
(path.source.id !== 3369 && path.source.kind === "polkadot"))
|
|
237
296
|
) {
|
|
238
297
|
return false
|
|
@@ -248,7 +307,9 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
|
|
|
248
307
|
// Disallow MYTH to any location but 3369
|
|
249
308
|
if (
|
|
250
309
|
path.asset === "0xba41ddf06b7ffd89d1267b5a93bfef2424eb2003" &&
|
|
251
|
-
((path.destination.
|
|
310
|
+
((path.destination.kind === "polkadot" &&
|
|
311
|
+
path.destination.id !== 3369 &&
|
|
312
|
+
path.source.kind === "ethereum") ||
|
|
252
313
|
(path.source.id !== 3369 && path.source.kind === "polkadot"))
|
|
253
314
|
) {
|
|
254
315
|
return false
|
|
@@ -257,7 +318,8 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
|
|
|
257
318
|
// Allow TRAC to go to Hydration (2034) and Neuroweb (2043) only
|
|
258
319
|
if (
|
|
259
320
|
path.asset === "0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f" &&
|
|
260
|
-
((path.destination.
|
|
321
|
+
((path.destination.kind === "polkadot" &&
|
|
322
|
+
path.destination.id !== 2034 &&
|
|
261
323
|
path.destination.id !== 2043 &&
|
|
262
324
|
path.source.kind === "ethereum") ||
|
|
263
325
|
(path.source.id !== 2034 &&
|
|
@@ -272,6 +334,7 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
|
|
|
272
334
|
(path.asset === "0x9d39a5de30e57443bff2a8307a4256c8797a3497" || // Staked USDe
|
|
273
335
|
path.asset === "0xa3931d71877c0e7a3148cb7eb4463524fec27fbd" || // Savings USD
|
|
274
336
|
path.asset === "0x6b175474e89094c44da98b954eedeac495271d0f") && // DAI
|
|
337
|
+
path.destination.kind === "polkadot" &&
|
|
275
338
|
path.destination.id === 2034 // Hydration
|
|
276
339
|
) {
|
|
277
340
|
return false
|
|
@@ -297,6 +360,7 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
|
|
|
297
360
|
|
|
298
361
|
function buildTransferLocations(
|
|
299
362
|
registry: AssetRegistry,
|
|
363
|
+
environment: Environment,
|
|
300
364
|
filter?: (path: Path) => boolean,
|
|
301
365
|
): TransferRoute[] {
|
|
302
366
|
const ethChain = registry.ethereumChains[`ethereum_${registry.ethChainId}`]
|
|
@@ -386,6 +450,73 @@ function buildTransferLocations(
|
|
|
386
450
|
}
|
|
387
451
|
}
|
|
388
452
|
|
|
453
|
+
// L2 paths
|
|
454
|
+
if (environment.l2Bridge) {
|
|
455
|
+
// Do asset hub only, in future we can loop through all v2 enabled parachains.
|
|
456
|
+
for (const l2ChainKey of Object.keys(environment.l2Bridge.l2Chains)) {
|
|
457
|
+
const l2ChainId = Number(l2ChainKey)
|
|
458
|
+
const l2Chain = environment.l2Bridge.l2Chains[l2ChainId]
|
|
459
|
+
const ethChain = registry.ethereumChains[`ethereum_l2_${l2ChainId}`]
|
|
460
|
+
if (!ethChain || !l2Chain) {
|
|
461
|
+
console.warn(`Could not find ethereum l2 chain ${l2ChainId}. Skipping...`)
|
|
462
|
+
continue
|
|
463
|
+
}
|
|
464
|
+
const assetHubAssets = Object.keys(assetHub.assets)
|
|
465
|
+
const destinationAssets = Object.values(ethChain.assets)
|
|
466
|
+
.map((a) => a.swapTokenAddress?.toLowerCase())
|
|
467
|
+
.filter((a) => a !== undefined)
|
|
468
|
+
|
|
469
|
+
// The asset exists on ethereum, parachain and asset hub
|
|
470
|
+
const commonAssets = new Set(
|
|
471
|
+
ethAssets.filter(
|
|
472
|
+
(sa) =>
|
|
473
|
+
assetHubAssets.find((da) => da === sa) &&
|
|
474
|
+
destinationAssets.find((da) => da === sa),
|
|
475
|
+
),
|
|
476
|
+
)
|
|
477
|
+
for (const asset of commonAssets) {
|
|
478
|
+
const p1: Path = {
|
|
479
|
+
source: { kind: assetHub.kind, id: assetHub.id },
|
|
480
|
+
destination: { kind: ethChain.kind, id: ethChain.id },
|
|
481
|
+
asset,
|
|
482
|
+
}
|
|
483
|
+
if (pathFilter(p1)) {
|
|
484
|
+
locations.push(p1)
|
|
485
|
+
}
|
|
486
|
+
const p2: Path = {
|
|
487
|
+
source: p1.destination, // L2 Chain
|
|
488
|
+
destination: p1.source, // Asset Hub
|
|
489
|
+
asset,
|
|
490
|
+
}
|
|
491
|
+
if (pathFilter(p2)) {
|
|
492
|
+
locations.push(p2)
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
const results: TransferRoute[] = []
|
|
498
|
+
for (const location of locations) {
|
|
499
|
+
let source = results.find(
|
|
500
|
+
(s) =>
|
|
501
|
+
s.from.kind === location.source.kind &&
|
|
502
|
+
s.from.id === location.source.id &&
|
|
503
|
+
s.to.kind === location.destination.kind &&
|
|
504
|
+
s.to.id === location.destination.id,
|
|
505
|
+
)
|
|
506
|
+
|
|
507
|
+
if (!source) {
|
|
508
|
+
source = {
|
|
509
|
+
from: location.source,
|
|
510
|
+
to: location.destination,
|
|
511
|
+
assets: [],
|
|
512
|
+
}
|
|
513
|
+
results.push(source)
|
|
514
|
+
}
|
|
515
|
+
source.assets = source.assets.concat(location.asset)
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
// Combine all paths into routes
|
|
389
520
|
const results: TransferRoute[] = []
|
|
390
521
|
for (const location of locations) {
|
|
391
522
|
let source = results.find(
|
|
@@ -747,6 +878,7 @@ async function indexParachain(
|
|
|
747
878
|
info.accountType === "AccountId32"
|
|
748
879
|
? "0x0000000000000000000000000000000000000000000000000000000000000000"
|
|
749
880
|
: "0x0000000000000000000000000000000000000000",
|
|
881
|
+
false,
|
|
750
882
|
)
|
|
751
883
|
|
|
752
884
|
let estimatedExecutionFeeDOT = 0n
|
|
@@ -755,7 +887,7 @@ async function indexParachain(
|
|
|
755
887
|
const destinationXcm = xcmBuilder.buildParachainERC20ReceivedXcmOnDestination(
|
|
756
888
|
parachain.provider.registry,
|
|
757
889
|
ethChainId,
|
|
758
|
-
|
|
890
|
+
assetsV2.ETHER_TOKEN_ADDRESS,
|
|
759
891
|
340282366920938463463374607431768211455n,
|
|
760
892
|
340282366920938463463374607431768211455n,
|
|
761
893
|
info.accountType === "AccountId32"
|
|
@@ -808,7 +940,7 @@ async function indexEthChain(
|
|
|
808
940
|
metadataOverrides: ERC20MetadataOverrideMap,
|
|
809
941
|
l2Chains: { [l2ChainId: number]: L2ForwardMetadata },
|
|
810
942
|
): Promise<EthereumChain> {
|
|
811
|
-
const
|
|
943
|
+
const name = networkName !== "unknown" ? networkName : undefined
|
|
812
944
|
if (networkChainId == ethChainId) {
|
|
813
945
|
// Asset Hub and get meta data
|
|
814
946
|
const assetHub = parachains[`polkadot_${assetHubParaId}`]
|
|
@@ -866,6 +998,7 @@ async function indexEthChain(
|
|
|
866
998
|
return {
|
|
867
999
|
kind: "ethereum",
|
|
868
1000
|
id: networkChainId,
|
|
1001
|
+
name,
|
|
869
1002
|
assets,
|
|
870
1003
|
key: `ethereum_${networkChainId}`,
|
|
871
1004
|
baseDeliveryGas: 120_000n,
|
|
@@ -874,23 +1007,24 @@ async function indexEthChain(
|
|
|
874
1007
|
const assets: ERC20MetadataMap = {}
|
|
875
1008
|
for (const route of l2Chains[networkChainId].swapRoutes) {
|
|
876
1009
|
let asset = await assetErc20Metadata(provider, route.inputToken)
|
|
877
|
-
assets[route.inputToken] = {
|
|
1010
|
+
assets[route.inputToken.toLowerCase()] = {
|
|
878
1011
|
...asset,
|
|
879
|
-
swapTokenAddress: route.outputToken,
|
|
1012
|
+
swapTokenAddress: route.outputToken.toLowerCase(),
|
|
880
1013
|
swapFee: route.swapFee,
|
|
881
1014
|
}
|
|
882
1015
|
}
|
|
883
|
-
assets[
|
|
884
|
-
token:
|
|
1016
|
+
assets[assetsV2.ETHER_TOKEN_ADDRESS] = {
|
|
1017
|
+
token: assetsV2.ETHER_TOKEN_ADDRESS,
|
|
885
1018
|
name: "Ether",
|
|
886
1019
|
symbol: "Ether",
|
|
887
1020
|
decimals: 18,
|
|
888
|
-
swapTokenAddress:
|
|
1021
|
+
swapTokenAddress: assetsV2.ETHER_TOKEN_ADDRESS,
|
|
889
1022
|
swapFee: 0,
|
|
890
1023
|
}
|
|
891
1024
|
return {
|
|
892
1025
|
kind: "ethereum_l2",
|
|
893
1026
|
id: networkChainId,
|
|
1027
|
+
name,
|
|
894
1028
|
assets,
|
|
895
1029
|
key: `ethereum_l2_${networkChainId}`,
|
|
896
1030
|
}
|
|
@@ -942,6 +1076,7 @@ async function indexEthChain(
|
|
|
942
1076
|
kind: "ethereum",
|
|
943
1077
|
id: networkChainId,
|
|
944
1078
|
key: `ethereum_${networkChainId}`,
|
|
1079
|
+
name,
|
|
945
1080
|
evmParachainId: evmParachainChain.id,
|
|
946
1081
|
assets,
|
|
947
1082
|
precompile,
|
|
@@ -1005,7 +1140,7 @@ async function assetErc20Metadata(
|
|
|
1005
1140
|
erc20Metadata.decimals(),
|
|
1006
1141
|
])
|
|
1007
1142
|
return {
|
|
1008
|
-
token,
|
|
1143
|
+
token: token.toLowerCase(),
|
|
1009
1144
|
name: String(name),
|
|
1010
1145
|
symbol: String(symbol),
|
|
1011
1146
|
decimals: Number(decimals),
|
|
@@ -1049,7 +1184,7 @@ async function getRegisteredPnas(
|
|
|
1049
1184
|
}
|
|
1050
1185
|
const environment = SNOWBRIDGE_ENV[env]
|
|
1051
1186
|
const registry = await buildRegistry(environment)
|
|
1052
|
-
const routes = buildTransferLocations(registry)
|
|
1187
|
+
const routes = buildTransferLocations(registry, environment)
|
|
1053
1188
|
const bridge: BridgeInfo = { environment, routes, registry }
|
|
1054
1189
|
const json = generateTsObject(bridge, 4)
|
|
1055
1190
|
const fileContents = `const registry = ${json} as const\nexport default registry\n`
|
|
@@ -13,8 +13,8 @@ const registry = {
|
|
|
13
13
|
"2043": "wss://parachain-testnet-rpc.origin-trail.network",
|
|
14
14
|
"3369": "wss://paseo-muse-rpc.polkadot.io",
|
|
15
15
|
},
|
|
16
|
-
gatewayContract: "
|
|
17
|
-
beefyContract: "
|
|
16
|
+
gatewayContract: "0x1607c1368bc943130258318c91bbd8cff3d063e6",
|
|
17
|
+
beefyContract: "0x2c780945beb1241fe9c645800110cb9c4bbbb639",
|
|
18
18
|
assetHubParaId: 1000,
|
|
19
19
|
bridgeHubParaId: 1002,
|
|
20
20
|
v2_parachains: [1000],
|
|
@@ -108,10 +108,10 @@ const registry = {
|
|
|
108
108
|
},
|
|
109
109
|
],
|
|
110
110
|
registry: {
|
|
111
|
-
timestamp: "2026-
|
|
111
|
+
timestamp: "2026-02-16T10:23:33.158Z",
|
|
112
112
|
environment: "paseo_sepolia",
|
|
113
113
|
ethChainId: 11155111,
|
|
114
|
-
gatewayAddress: "
|
|
114
|
+
gatewayAddress: "0x1607c1368bc943130258318c91bbd8cff3d063e6",
|
|
115
115
|
assetHubParaId: 1000,
|
|
116
116
|
bridgeHubParaId: 1002,
|
|
117
117
|
relaychain: {
|
|
@@ -122,7 +122,7 @@ const registry = {
|
|
|
122
122
|
accountType: "AccountId32",
|
|
123
123
|
name: "Paseo Testnet",
|
|
124
124
|
specName: "paseo",
|
|
125
|
-
specVersion:
|
|
125
|
+
specVersion: 2000006,
|
|
126
126
|
},
|
|
127
127
|
bridgeHub: {
|
|
128
128
|
tokenSymbols: "PAS",
|
|
@@ -132,12 +132,13 @@ const registry = {
|
|
|
132
132
|
accountType: "AccountId32",
|
|
133
133
|
name: "Paseo Bridge Hub",
|
|
134
134
|
specName: "bridge-hub-paseo",
|
|
135
|
-
specVersion:
|
|
135
|
+
specVersion: 2000006,
|
|
136
136
|
},
|
|
137
137
|
ethereumChains: {
|
|
138
138
|
ethereum_11155111: {
|
|
139
139
|
kind: "ethereum",
|
|
140
140
|
id: 11155111,
|
|
141
|
+
name: "sepolia",
|
|
141
142
|
assets: {
|
|
142
143
|
"0x0000000000000000000000000000000000000000": {
|
|
143
144
|
token: "0x0000000000000000000000000000000000000000",
|
|
@@ -210,7 +211,7 @@ const registry = {
|
|
|
210
211
|
accountType: "AccountId32",
|
|
211
212
|
name: "Paseo Asset Hub",
|
|
212
213
|
specName: "asset-hub-paseo",
|
|
213
|
-
specVersion:
|
|
214
|
+
specVersion: 2000006,
|
|
214
215
|
},
|
|
215
216
|
assets: {
|
|
216
217
|
"0x0000000000000000000000000000000000000000": {
|