@snowbridge/registry 0.4.1 → 0.4.3
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 +163 -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: "0xa04460b1d8bbef33f54edb2c3115e3e4d41237a6",
|
|
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.3",
|
|
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/
|
|
28
|
-
"@snowbridge/
|
|
27
|
+
"@snowbridge/contract-types": "0.4.3",
|
|
28
|
+
"@snowbridge/api": "0.4.3"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@snowbridge/base-types": "0.4.
|
|
31
|
+
"@snowbridge/base-types": "0.4.3"
|
|
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: "0xa04460b1d8bbef33f54edb2c3115e3e4d41237a6",
|
|
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(
|
|
@@ -755,7 +886,7 @@ async function indexParachain(
|
|
|
755
886
|
const destinationXcm = xcmBuilder.buildParachainERC20ReceivedXcmOnDestination(
|
|
756
887
|
parachain.provider.registry,
|
|
757
888
|
ethChainId,
|
|
758
|
-
|
|
889
|
+
assetsV2.ETHER_TOKEN_ADDRESS,
|
|
759
890
|
340282366920938463463374607431768211455n,
|
|
760
891
|
340282366920938463463374607431768211455n,
|
|
761
892
|
info.accountType === "AccountId32"
|
|
@@ -808,7 +939,7 @@ async function indexEthChain(
|
|
|
808
939
|
metadataOverrides: ERC20MetadataOverrideMap,
|
|
809
940
|
l2Chains: { [l2ChainId: number]: L2ForwardMetadata },
|
|
810
941
|
): Promise<EthereumChain> {
|
|
811
|
-
const
|
|
942
|
+
const name = networkName !== "unknown" ? networkName : undefined
|
|
812
943
|
if (networkChainId == ethChainId) {
|
|
813
944
|
// Asset Hub and get meta data
|
|
814
945
|
const assetHub = parachains[`polkadot_${assetHubParaId}`]
|
|
@@ -866,6 +997,7 @@ async function indexEthChain(
|
|
|
866
997
|
return {
|
|
867
998
|
kind: "ethereum",
|
|
868
999
|
id: networkChainId,
|
|
1000
|
+
name,
|
|
869
1001
|
assets,
|
|
870
1002
|
key: `ethereum_${networkChainId}`,
|
|
871
1003
|
baseDeliveryGas: 120_000n,
|
|
@@ -874,23 +1006,24 @@ async function indexEthChain(
|
|
|
874
1006
|
const assets: ERC20MetadataMap = {}
|
|
875
1007
|
for (const route of l2Chains[networkChainId].swapRoutes) {
|
|
876
1008
|
let asset = await assetErc20Metadata(provider, route.inputToken)
|
|
877
|
-
assets[route.inputToken] = {
|
|
1009
|
+
assets[route.inputToken.toLowerCase()] = {
|
|
878
1010
|
...asset,
|
|
879
|
-
swapTokenAddress: route.outputToken,
|
|
1011
|
+
swapTokenAddress: route.outputToken.toLowerCase(),
|
|
880
1012
|
swapFee: route.swapFee,
|
|
881
1013
|
}
|
|
882
1014
|
}
|
|
883
|
-
assets[
|
|
884
|
-
token:
|
|
1015
|
+
assets[assetsV2.ETHER_TOKEN_ADDRESS] = {
|
|
1016
|
+
token: assetsV2.ETHER_TOKEN_ADDRESS,
|
|
885
1017
|
name: "Ether",
|
|
886
1018
|
symbol: "Ether",
|
|
887
1019
|
decimals: 18,
|
|
888
|
-
swapTokenAddress:
|
|
1020
|
+
swapTokenAddress: assetsV2.ETHER_TOKEN_ADDRESS,
|
|
889
1021
|
swapFee: 0,
|
|
890
1022
|
}
|
|
891
1023
|
return {
|
|
892
1024
|
kind: "ethereum_l2",
|
|
893
1025
|
id: networkChainId,
|
|
1026
|
+
name,
|
|
894
1027
|
assets,
|
|
895
1028
|
key: `ethereum_l2_${networkChainId}`,
|
|
896
1029
|
}
|
|
@@ -942,6 +1075,7 @@ async function indexEthChain(
|
|
|
942
1075
|
kind: "ethereum",
|
|
943
1076
|
id: networkChainId,
|
|
944
1077
|
key: `ethereum_${networkChainId}`,
|
|
1078
|
+
name,
|
|
945
1079
|
evmParachainId: evmParachainChain.id,
|
|
946
1080
|
assets,
|
|
947
1081
|
precompile,
|
|
@@ -1005,7 +1139,7 @@ async function assetErc20Metadata(
|
|
|
1005
1139
|
erc20Metadata.decimals(),
|
|
1006
1140
|
])
|
|
1007
1141
|
return {
|
|
1008
|
-
token,
|
|
1142
|
+
token: token.toLowerCase(),
|
|
1009
1143
|
name: String(name),
|
|
1010
1144
|
symbol: String(symbol),
|
|
1011
1145
|
decimals: Number(decimals),
|
|
@@ -1049,7 +1183,7 @@ async function getRegisteredPnas(
|
|
|
1049
1183
|
}
|
|
1050
1184
|
const environment = SNOWBRIDGE_ENV[env]
|
|
1051
1185
|
const registry = await buildRegistry(environment)
|
|
1052
|
-
const routes = buildTransferLocations(registry)
|
|
1186
|
+
const routes = buildTransferLocations(registry, environment)
|
|
1053
1187
|
const bridge: BridgeInfo = { environment, routes, registry }
|
|
1054
1188
|
const json = generateTsObject(bridge, 4)
|
|
1055
1189
|
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": {
|