@matterlabs/zksync-js 0.0.18 → 0.0.19
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/adapters/ethers/index.cjs +34 -24
- package/dist/adapters/ethers/index.cjs.map +1 -1
- package/dist/adapters/ethers/index.js +1 -1
- package/dist/adapters/ethers/sdk.cjs +32 -24
- package/dist/adapters/ethers/sdk.cjs.map +1 -1
- package/dist/adapters/ethers/sdk.js +1 -1
- package/dist/adapters/viem/index.cjs +34 -23
- package/dist/adapters/viem/index.cjs.map +1 -1
- package/dist/adapters/viem/index.js +1 -1
- package/dist/adapters/viem/sdk.cjs +34 -23
- package/dist/adapters/viem/sdk.cjs.map +1 -1
- package/dist/adapters/viem/sdk.js +1 -1
- package/dist/{chunk-GBS7KQFU.js → chunk-3T5V4HKS.js} +21 -8
- package/dist/{chunk-U72MNQIY.js → chunk-5H3VTIYD.js} +18 -8
- package/package.json +2 -2
|
@@ -512,12 +512,25 @@ async function buildApprovalRequest({
|
|
|
512
512
|
// src/adapters/viem/resources/deposits/routes/erc20-nonbase.ts
|
|
513
513
|
var { wrapAs: wrapAs3 } = createErrorHandlers("deposits");
|
|
514
514
|
var ZERO_ASSET_ID = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
515
|
+
var ntvCodec = createNTVCodec({
|
|
516
|
+
encode: (types, values) => encodeAbiParameters(
|
|
517
|
+
types.map((t, i) => ({ type: t, name: `arg${i}` })),
|
|
518
|
+
values
|
|
519
|
+
),
|
|
520
|
+
keccak256
|
|
521
|
+
});
|
|
515
522
|
async function encodeSecondBridgeErc20DepositCalldata(input) {
|
|
516
523
|
if (!input.ctx.resolvedToken) {
|
|
517
524
|
return encodeSecondBridgeErc20Args(input.token, input.amount, input.receiver);
|
|
518
525
|
}
|
|
519
526
|
const l1ChainId = BigInt(await input.ctx.client.l1.getChainId());
|
|
520
|
-
const
|
|
527
|
+
const expectedL1AssetId = ntvCodec.encodeAssetId(
|
|
528
|
+
l1ChainId,
|
|
529
|
+
L2_NATIVE_TOKEN_VAULT_ADDRESS,
|
|
530
|
+
input.token
|
|
531
|
+
);
|
|
532
|
+
const assetId = input.ctx.resolvedToken.assetId.toLowerCase();
|
|
533
|
+
const isL1Origin = assetId === ZERO_ASSET_ID || assetId === expectedL1AssetId.toLowerCase();
|
|
521
534
|
if (isL1Origin) {
|
|
522
535
|
return encodeSecondBridgeErc20Args(input.token, input.amount, input.receiver);
|
|
523
536
|
}
|
|
@@ -533,8 +546,8 @@ async function getPriorityGasModel(input) {
|
|
|
533
546
|
const l1NativeTokenVault = await input.ctx.contracts.l1NativeTokenVault();
|
|
534
547
|
const l1AssetRouter = await input.ctx.contracts.l1AssetRouter();
|
|
535
548
|
const l1ChainId = BigInt(await input.ctx.client.l1.getChainId());
|
|
536
|
-
const isFirstBridge = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID
|
|
537
|
-
const erc20MetadataOriginChainId = isFirstBridge ? l1ChainId : input.ctx.resolvedToken.originChainId;
|
|
549
|
+
const isFirstBridge = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID;
|
|
550
|
+
const erc20MetadataOriginChainId = isFirstBridge ? l1ChainId : input.ctx.resolvedToken.originChainId !== 0n ? input.ctx.resolvedToken.originChainId : await l1NativeTokenVault.read.originChainId([input.ctx.resolvedToken.assetId]);
|
|
538
551
|
const erc20Metadata = await l1NativeTokenVault.read.getERC20Getters([
|
|
539
552
|
input.token,
|
|
540
553
|
erc20MetadataOriginChainId
|
|
@@ -823,19 +836,19 @@ function routeErc20NonBase() {
|
|
|
823
836
|
}
|
|
824
837
|
var { wrapAs: wrapAs4 } = createErrorHandlers("deposits");
|
|
825
838
|
var ZERO_ASSET_ID2 = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
826
|
-
var
|
|
839
|
+
var ntvCodec2 = createNTVCodec({
|
|
827
840
|
encode: (types, values) => encodeAbiParameters(
|
|
828
841
|
types.map((type, index) => ({ type, name: `arg${index}` })),
|
|
829
842
|
values
|
|
830
843
|
),
|
|
831
|
-
keccak256
|
|
844
|
+
keccak256: keccak256
|
|
832
845
|
});
|
|
833
846
|
async function getPriorityGasModel2(input) {
|
|
834
847
|
try {
|
|
835
848
|
const l1AssetRouter = await input.ctx.contracts.l1AssetRouter();
|
|
836
849
|
const l1NativeTokenVault = await input.ctx.contracts.l1NativeTokenVault();
|
|
837
850
|
const originChainId = input.ctx.resolvedToken.originChainId !== 0n ? input.ctx.resolvedToken.originChainId : BigInt(await input.ctx.client.l1.getChainId());
|
|
838
|
-
const resolvedAssetId = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID2 ?
|
|
851
|
+
const resolvedAssetId = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID2 ? ntvCodec2.encodeAssetId(originChainId, L2_NATIVE_TOKEN_VAULT_ADDRESS, ETH_ADDRESS) : input.ctx.resolvedToken.assetId;
|
|
839
852
|
const erc20Metadata = await l1NativeTokenVault.read.getERC20Getters([
|
|
840
853
|
ETH_ADDRESS,
|
|
841
854
|
originChainId
|
|
@@ -1353,7 +1366,7 @@ async function waitForL2ExecutionFromL1Tx(l1, l2, l1TxHash) {
|
|
|
1353
1366
|
return { l2Receipt, l2TxHash };
|
|
1354
1367
|
}
|
|
1355
1368
|
var { wrapAs: wrapAs6 } = createErrorHandlers("tokens");
|
|
1356
|
-
var
|
|
1369
|
+
var ntvCodec3 = createNTVCodec({
|
|
1357
1370
|
encode: (types, values) => encodeAbiParameters(
|
|
1358
1371
|
types.map((t, i) => ({ type: t, name: `arg${i}` })),
|
|
1359
1372
|
values
|
|
@@ -1467,7 +1480,7 @@ function createTokensResource(client) {
|
|
|
1467
1480
|
return wrapAs6("CONTRACT", "tokens.isChainEthBased", async () => {
|
|
1468
1481
|
const baseAssetId = await getBaseTokenAssetId();
|
|
1469
1482
|
const l1ChainId = await getL1ChainId();
|
|
1470
|
-
const ethAssetId =
|
|
1483
|
+
const ethAssetId = ntvCodec3.encodeAssetId(
|
|
1471
1484
|
l1ChainId,
|
|
1472
1485
|
L2_NATIVE_TOKEN_VAULT_ADDRESS,
|
|
1473
1486
|
ETH_ADDRESS
|
|
@@ -456,12 +456,22 @@ function routeEthDirect() {
|
|
|
456
456
|
var { wrapAs: wrapAs2 } = createErrorHandlers("deposits");
|
|
457
457
|
var ZERO_L2_TOKEN_ADDRESS2 = "0x0000000000000000000000000000000000000000";
|
|
458
458
|
var ZERO_ASSET_ID = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
459
|
+
var ntvCodec = createNTVCodec({
|
|
460
|
+
encode: (types, values) => AbiCoder.defaultAbiCoder().encode(types, values),
|
|
461
|
+
keccak256: (data) => keccak256(data)
|
|
462
|
+
});
|
|
459
463
|
async function encodeSecondBridgeErc20DepositCalldata(input) {
|
|
460
464
|
if (!input.ctx.resolvedToken) {
|
|
461
465
|
return encodeSecondBridgeErc20Args(input.token, input.amount, input.receiver);
|
|
462
466
|
}
|
|
463
|
-
const { chainId
|
|
464
|
-
const
|
|
467
|
+
const { chainId } = await input.ctx.client.l1.getNetwork();
|
|
468
|
+
const expectedL1AssetId = ntvCodec.encodeAssetId(
|
|
469
|
+
BigInt(chainId),
|
|
470
|
+
L2_NATIVE_TOKEN_VAULT_ADDRESS,
|
|
471
|
+
input.token
|
|
472
|
+
);
|
|
473
|
+
const assetId = input.ctx.resolvedToken.assetId.toLowerCase();
|
|
474
|
+
const isL1Origin = assetId === ZERO_ASSET_ID || assetId === expectedL1AssetId.toLowerCase();
|
|
465
475
|
if (isL1Origin) {
|
|
466
476
|
return encodeSecondBridgeErc20Args(input.token, input.amount, input.receiver);
|
|
467
477
|
}
|
|
@@ -477,8 +487,8 @@ async function getPriorityGasModel(input) {
|
|
|
477
487
|
const l1NativeTokenVault = await input.ctx.contracts.l1NativeTokenVault();
|
|
478
488
|
const l1AssetRouter = await input.ctx.contracts.l1AssetRouter();
|
|
479
489
|
const { chainId: l1ChainId } = await input.ctx.client.l1.getNetwork();
|
|
480
|
-
const isFirstBridge = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID
|
|
481
|
-
const erc20MetadataOriginChainId = isFirstBridge ? BigInt(l1ChainId) : input.ctx.resolvedToken.originChainId;
|
|
490
|
+
const isFirstBridge = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID;
|
|
491
|
+
const erc20MetadataOriginChainId = isFirstBridge ? BigInt(l1ChainId) : input.ctx.resolvedToken.originChainId !== 0n ? input.ctx.resolvedToken.originChainId : await l1NativeTokenVault.originChainId(input.ctx.resolvedToken.assetId);
|
|
482
492
|
const erc20Metadata = await l1NativeTokenVault.getERC20Getters(
|
|
483
493
|
input.token,
|
|
484
494
|
erc20MetadataOriginChainId
|
|
@@ -688,7 +698,7 @@ function routeErc20NonBase() {
|
|
|
688
698
|
var { wrapAs: wrapAs3 } = createErrorHandlers("deposits");
|
|
689
699
|
var ZERO_L2_TOKEN_ADDRESS3 = "0x0000000000000000000000000000000000000000";
|
|
690
700
|
var ZERO_ASSET_ID2 = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
691
|
-
var
|
|
701
|
+
var ntvCodec2 = createNTVCodec({
|
|
692
702
|
encode: (types, values) => AbiCoder.defaultAbiCoder().encode(types, values),
|
|
693
703
|
keccak256: (data) => keccak256(data)
|
|
694
704
|
});
|
|
@@ -697,7 +707,7 @@ async function getPriorityGasModel2(input) {
|
|
|
697
707
|
const l1AssetRouter = await input.ctx.contracts.l1AssetRouter();
|
|
698
708
|
const l1NativeTokenVault = await input.ctx.contracts.l1NativeTokenVault();
|
|
699
709
|
const originChainId = input.ctx.resolvedToken.originChainId !== 0n ? input.ctx.resolvedToken.originChainId : BigInt((await input.ctx.client.l1.getNetwork()).chainId);
|
|
700
|
-
const resolvedAssetId = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID2 ?
|
|
710
|
+
const resolvedAssetId = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID2 ? ntvCodec2.encodeAssetId(originChainId, L2_NATIVE_TOKEN_VAULT_ADDRESS, ETH_ADDRESS) : input.ctx.resolvedToken.assetId;
|
|
701
711
|
const erc20Metadata = await l1NativeTokenVault.getERC20Getters(
|
|
702
712
|
ETH_ADDRESS,
|
|
703
713
|
originChainId
|
|
@@ -1035,7 +1045,7 @@ function routeErc20Base() {
|
|
|
1035
1045
|
}
|
|
1036
1046
|
var { wrapAs: wrapAs5 } = createErrorHandlers("tokens");
|
|
1037
1047
|
var abi = AbiCoder.defaultAbiCoder();
|
|
1038
|
-
var
|
|
1048
|
+
var ntvCodec3 = createNTVCodec({
|
|
1039
1049
|
encode: (types, values) => abi.encode(types, values),
|
|
1040
1050
|
keccak256: (data) => ethers.keccak256(data)
|
|
1041
1051
|
});
|
|
@@ -1154,7 +1164,7 @@ function createTokensResource(client) {
|
|
|
1154
1164
|
return wrapAs5("CONTRACT", "tokens.isChainEthBased", async () => {
|
|
1155
1165
|
const baseAssetId = await getBaseTokenAssetId();
|
|
1156
1166
|
const l1ChainId = await getL1ChainId();
|
|
1157
|
-
const ethAssetId =
|
|
1167
|
+
const ethAssetId = ntvCodec3.encodeAssetId(
|
|
1158
1168
|
l1ChainId,
|
|
1159
1169
|
L2_NATIVE_TOKEN_VAULT_ADDRESS,
|
|
1160
1170
|
ETH_ADDRESS
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matterlabs/zksync-js",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"module": "./dist/index.js",
|
|
6
6
|
"devDependencies": {
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"test:watch": "bun test --watch",
|
|
149
149
|
"test:cov": "bun test --coverage",
|
|
150
150
|
"test:core": "bun test src/core",
|
|
151
|
-
"test:docs": "bun test docs/snippets --timeout
|
|
151
|
+
"test:docs": "bun test docs/snippets --timeout 200000"
|
|
152
152
|
},
|
|
153
153
|
"sideEffects": false,
|
|
154
154
|
"type": "module",
|