From 1e3c4627ed5f79ee892233e50d58ed53fee4e45b Mon Sep 17 00:00:00 2001 From: Jmunoz Date: Thu, 25 Jan 2024 17:25:21 -0300 Subject: [PATCH 01/24] change contracts submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 79f4c20c2c58..42a6f2658fda 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 79f4c20c2c58c2134823e15a9dda38137af0d03d +Subproject commit 42a6f2658fda9feef14e41e3db578f2c9c2f746e From a499871aac1747e5b998f05bf815bfb4618807ea Mon Sep 17 00:00:00 2001 From: Jmunoz Date: Thu, 25 Jan 2024 17:25:39 -0300 Subject: [PATCH 02/24] remove test context restrictions --- .../tests/ts-integration/src/context-owner.ts | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/core/tests/ts-integration/src/context-owner.ts b/core/tests/ts-integration/src/context-owner.ts index ac9a6a9e4741..b7dec6238f4f 100644 --- a/core/tests/ts-integration/src/context-owner.ts +++ b/core/tests/ts-integration/src/context-owner.ts @@ -241,7 +241,7 @@ export class TestContextOwner { const gasPrice = await scaledGasPrice(this.mainEthersWallet); // Deposit L2 tokens (if needed). Depositing ETH with current native implementation is not supported. - if (!l2ETHAmountToDeposit.isZero() && !this.env.nativeErc20Testing) { + if (!l2ETHAmountToDeposit.isZero()) { // Given that we've already sent a number of transactions, // we have to correctly send nonce. const depositHandle = this.mainSyncWallet @@ -341,23 +341,17 @@ export class TestContextOwner { this.reporter.startAction(`Distributing tokens on L2`); let l2startNonce = await this.mainSyncWallet.getTransactionCount(); - // All the promises we send in this function. - const l2TxPromises: Promise[] = []; - // ETH transfers. - if (!this.env.nativeErc20Testing) { - const ethPromises = await sendTransfers( - zksync.utils.ETH_ADDRESS, - this.mainSyncWallet, - wallets, - L2_ETH_PER_ACCOUNT, - l2startNonce, - undefined, - this.reporter - ); - l2startNonce += l2TxPromises.length; - l2TxPromises.push(...ethPromises); - } + const l2TxPromises = await sendTransfers( + zksync.utils.ETH_ADDRESS, + this.mainSyncWallet, + wallets, + L2_ETH_PER_ACCOUNT, + l2startNonce, + undefined, + this.reporter + ); + l2startNonce += l2TxPromises.length; // ERC20 transfers. const l2TokenAddress = await this.mainSyncWallet.l2TokenAddress(this.env.erc20Token.l1Address); From 879c7998c45a5a3f83b6f2f22a3f005e93dfb2dc Mon Sep 17 00:00:00 2001 From: Jmunoz Date: Fri, 26 Jan 2024 16:37:23 -0300 Subject: [PATCH 03/24] deposit eth in context owner --- core/tests/ts-integration/src/context-owner.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/tests/ts-integration/src/context-owner.ts b/core/tests/ts-integration/src/context-owner.ts index b7dec6238f4f..93d94f9e56af 100644 --- a/core/tests/ts-integration/src/context-owner.ts +++ b/core/tests/ts-integration/src/context-owner.ts @@ -246,11 +246,12 @@ export class TestContextOwner { // we have to correctly send nonce. const depositHandle = this.mainSyncWallet .deposit({ - to: this.mainEthersWallet.address, - approveERC20: true, - token: this.env.erc20Token.l1Address, + token: zksync.utils.ETH_ADDRESS, amount: l2ETHAmountToDeposit, - refundRecipient: this.mainEthersWallet.address + overrides: { + nonce: nonce++, + gasPrice + } }) .then((tx) => { const amount = ethers.utils.formatEther(l2ETHAmountToDeposit); From 69813294ebeab12523f918e1db3579034adb73df Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Mon, 29 Jan 2024 11:10:10 +0100 Subject: [PATCH 04/24] add non native token integration test --- .../tests/non-native-erc20-deposit.test.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts new file mode 100644 index 000000000000..187211721cfd --- /dev/null +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -0,0 +1,56 @@ +/** + * This suite contains tests checking default ERC-20 contract behavior. + */ + +import { TestMaster } from '../src/index'; +import { Token } from '../src/types'; +import { shouldChangeTokenBalances, shouldOnlyTakeFee } from '../src/modifiers/balance-checker'; + +import * as zksync from 'zksync-web3'; +import { BigNumber, utils as etherUtils } from 'ethers'; +import * as ethers from 'ethers'; +import { scaledGasPrice, waitUntilBlockFinalized } from '../src/helpers'; +import { L2_ETH_PER_ACCOUNT } from '../src/context-owner'; + +describe('ERC20 contract checks', () => { + let testMaster: TestMaster; + let alice: zksync.Wallet; + let bob: zksync.Wallet; + let tokenDetails: Token; + let aliceErc20: zksync.Contract; + + beforeAll(async () => { + testMaster = TestMaster.getInstance(__filename); + alice = testMaster.mainAccount(); + bob = testMaster.newEmptyAccount(); + + tokenDetails = testMaster.environment().erc20Token; + aliceErc20 = new zksync.Contract(tokenDetails.l2Address, zksync.utils.IERC20, alice); + }); + + + test('Can perform a deposit', async () => { + const amount = 1; + const gasPrice = scaledGasPrice(alice); + + const initialTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); + await alice.deposit({ + token: tokenDetails.l1Address, + amount, + approveERC20: true, + approveOverrides: { + gasPrice + }, + overrides: { + gasPrice + } + }); + + const finalTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); + expect(finalTokenBalance.sub(initialTokenBalance)).toEqual(amount); + }); + + afterAll(async () => { + await testMaster.deinitialize(); + }); +}); From 6420aa7483ccaac08c2bcd1b0219248d21fc0df7 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Mon, 29 Jan 2024 11:12:38 +0100 Subject: [PATCH 05/24] apply fmt --- .../tests/non-native-erc20-deposit.test.ts | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index 187211721cfd..28d4e535c0ce 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -28,23 +28,22 @@ describe('ERC20 contract checks', () => { aliceErc20 = new zksync.Contract(tokenDetails.l2Address, zksync.utils.IERC20, alice); }); - test('Can perform a deposit', async () => { const amount = 1; const gasPrice = scaledGasPrice(alice); const initialTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); await alice.deposit({ - token: tokenDetails.l1Address, - amount, - approveERC20: true, - approveOverrides: { - gasPrice - }, - overrides: { - gasPrice - } - }); + token: tokenDetails.l1Address, + amount, + approveERC20: true, + approveOverrides: { + gasPrice + }, + overrides: { + gasPrice + } + }); const finalTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); expect(finalTokenBalance.sub(initialTokenBalance)).toEqual(amount); From 6dfd3fa6f7ace448013c527184ca9afa345f61be Mon Sep 17 00:00:00 2001 From: jmunoz Date: Tue, 30 Jan 2024 16:30:02 -0300 Subject: [PATCH 06/24] update contracts submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 42a6f2658fda..1a2b17712a6e 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 42a6f2658fda9feef14e41e3db578f2c9c2f746e +Subproject commit 1a2b17712a6ee57a22f5de5c517db28f5ceea447 From dcb066894f48922fd06e56d78a0442846617a957 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Wed, 31 Jan 2024 14:07:21 +0100 Subject: [PATCH 07/24] wip in tests --- .../tests/non-native-erc20-deposit.test.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index 28d4e535c0ce..e4cf5312ecbb 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -33,19 +33,26 @@ describe('ERC20 contract checks', () => { const gasPrice = scaledGasPrice(alice); const initialTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); - await alice.deposit({ + const deposit = await alice.deposit({ + l2GasLimit: 500_000, token: tokenDetails.l1Address, amount, approveERC20: true, approveOverrides: { - gasPrice + gasPrice, + gasLimit: 5_000_000, }, overrides: { - gasPrice + gasPrice, + gasLimit: 5_000_000, } }); + await deposit.waitFinalize(); + const finalTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); + console.log('initialTokenBalance', initialTokenBalance.toString()); + console.log('finalTokenBalance', finalTokenBalance.toString()); expect(finalTokenBalance.sub(initialTokenBalance)).toEqual(amount); }); From 052a9d3a128d31dd2d860a3348d6fe899ccbfa35 Mon Sep 17 00:00:00 2001 From: jmunoz Date: Thu, 1 Feb 2024 11:05:22 -0300 Subject: [PATCH 08/24] update contracts submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 1a2b17712a6e..199aa6594ef8 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 1a2b17712a6ee57a22f5de5c517db28f5ceea447 +Subproject commit 199aa6594ef88e79af03789ad0464143c92de8b8 From d565b30f988da776d8197dd879c55339fc429a2c Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Thu, 1 Feb 2024 15:59:41 +0100 Subject: [PATCH 09/24] try different l2 addresses --- .../tests/non-native-erc20-deposit.test.ts | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index e4cf5312ecbb..92e53b2d91ae 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -29,9 +29,11 @@ describe('ERC20 contract checks', () => { }); test('Can perform a deposit', async () => { - const amount = 1; + const amount = 555; const gasPrice = scaledGasPrice(alice); + // L1 Deposit + const initialTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); const deposit = await alice.deposit({ l2GasLimit: 500_000, @@ -53,7 +55,35 @@ describe('ERC20 contract checks', () => { const finalTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); console.log('initialTokenBalance', initialTokenBalance.toString()); console.log('finalTokenBalance', finalTokenBalance.toString()); - expect(finalTokenBalance.sub(initialTokenBalance)).toEqual(amount); + + // L2 Deposit Finalize + const l2ERC20Bridge = (await alice.getL2BridgeContracts()).erc20; + const finalizeDeposit = await l2ERC20Bridge['finalizeDeposit(address,address,address,uint256,bytes)'](alice.address, alice.address, tokenDetails.l1Address, amount, '0x') + console.log('wait finalize', await finalizeDeposit.wait()); + + + // L2 balance with address trough l1 address + const l2TokenAddress = await (await alice.getL1BridgeContracts()).erc20['l2TokenAddress(address)'](tokenDetails.l1Address); + const l2BalanceThroughL1Bridge = await alice.getBalance(l2TokenAddress); + console.log('address: l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); + console.log('l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); + + // L2 balance with l1 address + const l2Balance = await alice.getBalance(tokenDetails.l1Address); + console.log('[ADDRESS] l2Balance with l1 address', tokenDetails.l1Address.toString()); + console.log('l2Balance with l1 address', l2Balance.toString()); + + // L2 balance with l2 address + const l2Balance2 = await alice.getBalance(tokenDetails.l2Address); + console.log('[ADDRESS] l2Balance with l2 address', tokenDetails.l2Address.toString()); + console.log('l2Balance with l2 address', l2Balance2.toString()); + + // L2 balance with l2 address + const aliceL2Balance = await alice.getBalance(aliceErc20.address); + console.log('[ADDRESS] alice l2Balance with l2 address', aliceErc20.address.toString()); + console.log('alice l2Balance with l2 address', aliceL2Balance.toString()); + + expect(initialTokenBalance.sub(finalTokenBalance)).toEqual(BigNumber.from(amount)); }); afterAll(async () => { From 0df8bb6a6ad2a29cfc9f26f745ae38d71186be84 Mon Sep 17 00:00:00 2001 From: jmunoz Date: Thu, 1 Feb 2024 14:06:50 -0300 Subject: [PATCH 10/24] fix deployL2 --- infrastructure/zk/src/contract.ts | 10 +++++----- infrastructure/zk/src/init.ts | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/infrastructure/zk/src/contract.ts b/infrastructure/zk/src/contract.ts index 0c3f03e9d453..1f4c3e3c380d 100644 --- a/infrastructure/zk/src/contract.ts +++ b/infrastructure/zk/src/contract.ts @@ -62,7 +62,7 @@ export async function initializeWethToken(args: any[] = []) { ); } -export async function deployL2(args: any[] = [], includePaymaster?: boolean, includeWETH?: boolean) { +export async function deployL2(args: any[] = [], includePaymaster?: boolean, includeWETH?: boolean, nativeToken?: boolean) { await utils.confirmAction(); const isLocalSetup = process.env.ZKSYNC_LOCAL_SETUP; @@ -75,10 +75,10 @@ export async function deployL2(args: any[] = [], includePaymaster?: boolean, inc // Skip compilation for local setup, since we already copied artifacts into the container. await utils.spawn(`${baseCommandL2} build`); - await utils.spawn(`${baseCommandL1} initialize-bridges ${args.join(' ')} | tee deployL2.log`); + await utils.spawn(`${baseCommandL1} initialize-bridges ${nativeToken ? ' --native-erc20' : ''} ${args.join(' ')} | tee deployL2.log`); - if (includePaymaster) { - await utils.spawn(`${baseCommandL2} deploy-testnet-paymaster ${args.join(' ')} | tee -a deployL2.log`); + if (includePaymaster) { + await utils.spawn(`${baseCommandL2} deploy-testnet-paymaster ${nativeToken ? ' --native-erc20' : ''} ${args.join(' ')} | tee -a deployL2.log`); } if (includeWETH) { @@ -98,7 +98,7 @@ export async function deployL2(args: any[] = [], includePaymaster?: boolean, inc updateContractsEnv(l2DeployLog, l2DeploymentEnvVars); if (includeWETH) { - await utils.spawn(`${baseCommandL1} initialize-weth-bridges ${args.join(' ')} | tee -a deployL1.log`); + await utils.spawn(`${baseCommandL1} initialize-weth-bridges ${nativeToken ? ' --native-erc20' : ''} ${args.join(' ')} | tee -a deployL1.log`); } const l1DeployLog = fs.readFileSync('deployL1.log').toString(); diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index e9e70929c475..e44c853c008d 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -71,7 +71,8 @@ export async function init(initArgs: InitArgs = DEFAULT_ARGS) { contract.deployL2( deployerL2ContractInput.args, deployerL2ContractInput.includePaymaster, - deployerL2ContractInput.includeL2WETH + deployerL2ContractInput.includeL2WETH, + nativeERC20 ) ); From 0fe9e7ad344a6850b41089c6b5efe17201b0ee16 Mon Sep 17 00:00:00 2001 From: jmunoz Date: Thu, 1 Feb 2024 14:17:46 -0300 Subject: [PATCH 11/24] update contracts submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 199aa6594ef8..3faa7ae69008 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 199aa6594ef88e79af03789ad0464143c92de8b8 +Subproject commit 3faa7ae69008bb2c938165b2856f757129321a70 From 40711ae68447cfeb1a6ef3bb3b7ce6ead70be58a Mon Sep 17 00:00:00 2001 From: jmunoz Date: Thu, 1 Feb 2024 15:08:33 -0300 Subject: [PATCH 12/24] fix l2 weth token init --- core/tests/ts-integration/src/context-owner.ts | 5 +++-- core/tests/ts-integration/src/env.ts | 3 ++- infrastructure/zk/src/contract.ts | 4 ++-- infrastructure/zk/src/init.ts | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/tests/ts-integration/src/context-owner.ts b/core/tests/ts-integration/src/context-owner.ts index 93d94f9e56af..d29a84fe3a9d 100644 --- a/core/tests/ts-integration/src/context-owner.ts +++ b/core/tests/ts-integration/src/context-owner.ts @@ -96,9 +96,10 @@ export class TestContextOwner { async setupContext(): Promise { try { if (this.env.nativeErc20Testing) { - this.reporter.message('Using native ERC20 implementation'); + this.reporter.startAction('Setting up the context for NATIVE TOKEN IMPLEMENTATION'); + } else { + this.reporter.startAction('Setting up the context'); } - this.reporter.startAction('Setting up the context'); await this.cancelPendingTxs(); this.wallets = await this.prepareWallets(); this.reporter.finishAction(); diff --git a/core/tests/ts-integration/src/env.ts b/core/tests/ts-integration/src/env.ts index 8857f40d4bb7..ab01cdbbc690 100644 --- a/core/tests/ts-integration/src/env.ts +++ b/core/tests/ts-integration/src/env.ts @@ -48,7 +48,8 @@ export async function waitForServer() { */ export async function loadTestEnvironment(): Promise { const network = process.env.CHAIN_ETH_NETWORK || 'localhost'; - const nativeErc20Testing = process.env.CONTRACTS_L1_NATIVE_ERC20_TOKEN_ADDR ? true : false; // if set, we assume user wants to test native erc20 tokens + // const nativeErc20Testing = process.env.CONTRACTS_L1_NATIVE_ERC20_TOKEN_ADDR ? true : false; // if set, we assume user wants to test native erc20 tokens + const nativeErc20Testing = false; // if set, we assume user wants to test native erc20 tokens let mainWalletPK; if (nativeErc20Testing) { diff --git a/infrastructure/zk/src/contract.ts b/infrastructure/zk/src/contract.ts index 1f4c3e3c380d..048f048b7467 100644 --- a/infrastructure/zk/src/contract.ts +++ b/infrastructure/zk/src/contract.ts @@ -51,14 +51,14 @@ export async function initializeGovernance(args: any[] = []) { await utils.spawn(`${baseCommandL1} initialize-governance ${args.join(' ')} | tee initializeGovernance.log`); } -export async function initializeWethToken(args: any[] = []) { +export async function initializeWethToken(args: any[] = [], nativeToken?: boolean) { await utils.confirmAction(); const isLocalSetup = process.env.ZKSYNC_LOCAL_SETUP; const baseCommandL1 = isLocalSetup ? `yarn --cwd /contracts/l1-contracts` : `yarn l1-contracts`; await utils.spawn( - `${baseCommandL1} initialize-l2-weth-token instant-call ${args.join(' ')} | tee initializeWeth.log` + `${baseCommandL1} initialize-l2-weth-token ${nativeToken ? ' --native-erc20' : ''} instant-call ${args.join(' ')} | tee initializeWeth.log` ); } diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index e44c853c008d..bfb71a7d5603 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -77,7 +77,7 @@ export async function init(initArgs: InitArgs = DEFAULT_ARGS) { ); if (deployerL2ContractInput.includeL2WETH) { - await announced('Initializing L2 WETH token', contract.initializeWethToken(governorPrivateKeyArgs)); + await announced('Initializing L2 WETH token', contract.initializeWethToken(governorPrivateKeyArgs, nativeERC20)); } await announced('Initializing governance', contract.initializeGovernance(governorPrivateKeyArgs)); } From c5953d82e08069796d5e4416def3643b07a6d808 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Thu, 1 Feb 2024 19:52:10 +0100 Subject: [PATCH 13/24] try different l2 addresses --- .../tests/non-native-erc20-deposit.test.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index 92e53b2d91ae..1314a61cf0c1 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -42,11 +42,11 @@ describe('ERC20 contract checks', () => { approveERC20: true, approveOverrides: { gasPrice, - gasLimit: 5_000_000, + gasLimit: 5_000_000 }, overrides: { gasPrice, - gasLimit: 5_000_000, + gasLimit: 5_000_000 } }); @@ -58,12 +58,19 @@ describe('ERC20 contract checks', () => { // L2 Deposit Finalize const l2ERC20Bridge = (await alice.getL2BridgeContracts()).erc20; - const finalizeDeposit = await l2ERC20Bridge['finalizeDeposit(address,address,address,uint256,bytes)'](alice.address, alice.address, tokenDetails.l1Address, amount, '0x') + const finalizeDeposit = await l2ERC20Bridge['finalizeDeposit(address,address,address,uint256,bytes)']( + alice.address, + alice.address, + tokenDetails.l1Address, + amount, + '0x' + ); console.log('wait finalize', await finalizeDeposit.wait()); - // L2 balance with address trough l1 address - const l2TokenAddress = await (await alice.getL1BridgeContracts()).erc20['l2TokenAddress(address)'](tokenDetails.l1Address); + const l2TokenAddress = await ( + await alice.getL1BridgeContracts() + ).erc20['l2TokenAddress(address)'](tokenDetails.l1Address); const l2BalanceThroughL1Bridge = await alice.getBalance(l2TokenAddress); console.log('address: l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); console.log('l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); From 1dd94b9ecfca710567675331ef5191c31d01ea33 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Fri, 2 Feb 2024 14:38:31 +0100 Subject: [PATCH 14/24] add l2bridge query --- .../ts-integration/tests/non-native-erc20-deposit.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index 1314a61cf0c1..19dc1d0de8d0 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -67,6 +67,14 @@ describe('ERC20 contract checks', () => { ); console.log('wait finalize', await finalizeDeposit.wait()); + const l2Bridge = (await alice.getL2BridgeContracts()).erc20; + console.log('l2Bridge', l2Bridge); + // L2 balance with address trough l2 bridge address + const l2TokenAddressWithL2Bridge = await l2Bridge['l2TokenAddress(address)'](tokenDetails.l1Address); + const l2BalanceThroughL2Bridge = await alice.getBalance(l2TokenAddressWithL2Bridge); + console.log('[ADDRESS] l2TokenAddressWithL2Bridge: ', l2TokenAddressWithL2Bridge); + console.log('l2BalanceThroughL2Bridge with l2 bridge address', l2BalanceThroughL2Bridge.toString()); + // L2 balance with address trough l1 address const l2TokenAddress = await ( await alice.getL1BridgeContracts() From 382195ceadc123a2168f336d475fb4d964897aea Mon Sep 17 00:00:00 2001 From: Jmunoz Date: Fri, 2 Feb 2024 15:01:35 -0300 Subject: [PATCH 15/24] update contracts submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 3faa7ae69008..37d8b56b5220 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 3faa7ae69008bb2c938165b2856f757129321a70 +Subproject commit 37d8b56b5220ebf9d845ed3bd63bfba76f8cf2ed From 99d6cef0a73ea78b8eb3878b682a424d0144e8dc Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Fri, 2 Feb 2024 19:12:46 +0100 Subject: [PATCH 16/24] wip --- .../tests/non-native-erc20-deposit.test.ts | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index 19dc1d0de8d0..a97ee459aa8a 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -29,7 +29,7 @@ describe('ERC20 contract checks', () => { }); test('Can perform a deposit', async () => { - const amount = 555; + const amount = BigNumber.from(555); const gasPrice = scaledGasPrice(alice); // L1 Deposit @@ -50,7 +50,7 @@ describe('ERC20 contract checks', () => { } }); - await deposit.waitFinalize(); + await deposit.waitL1Commit(); const finalTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); console.log('initialTokenBalance', initialTokenBalance.toString()); @@ -67,36 +67,34 @@ describe('ERC20 contract checks', () => { ); console.log('wait finalize', await finalizeDeposit.wait()); - const l2Bridge = (await alice.getL2BridgeContracts()).erc20; - console.log('l2Bridge', l2Bridge); // L2 balance with address trough l2 bridge address - const l2TokenAddressWithL2Bridge = await l2Bridge['l2TokenAddress(address)'](tokenDetails.l1Address); + const l2TokenAddressWithL2Bridge = await l2ERC20Bridge.l2TokenAddress(tokenDetails.l1Address, {}); const l2BalanceThroughL2Bridge = await alice.getBalance(l2TokenAddressWithL2Bridge); console.log('[ADDRESS] l2TokenAddressWithL2Bridge: ', l2TokenAddressWithL2Bridge); - console.log('l2BalanceThroughL2Bridge with l2 bridge address', l2BalanceThroughL2Bridge.toString()); + console.log('[BALANCE] l2BalanceThroughL2Bridge with l2 bridge address', l2BalanceThroughL2Bridge.toString()); // L2 balance with address trough l1 address const l2TokenAddress = await ( await alice.getL1BridgeContracts() ).erc20['l2TokenAddress(address)'](tokenDetails.l1Address); const l2BalanceThroughL1Bridge = await alice.getBalance(l2TokenAddress); - console.log('address: l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); - console.log('l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); + console.log('[ADDRESS] l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); + console.log('[BALANCE] l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); // L2 balance with l1 address const l2Balance = await alice.getBalance(tokenDetails.l1Address); console.log('[ADDRESS] l2Balance with l1 address', tokenDetails.l1Address.toString()); - console.log('l2Balance with l1 address', l2Balance.toString()); + console.log('[BALANCE] l2Balance with l1 address', l2Balance.toString()); // L2 balance with l2 address const l2Balance2 = await alice.getBalance(tokenDetails.l2Address); console.log('[ADDRESS] l2Balance with l2 address', tokenDetails.l2Address.toString()); - console.log('l2Balance with l2 address', l2Balance2.toString()); + console.log('[BALANCE] l2Balance with l2 address', l2Balance2.toString()); // L2 balance with l2 address const aliceL2Balance = await alice.getBalance(aliceErc20.address); console.log('[ADDRESS] alice l2Balance with l2 address', aliceErc20.address.toString()); - console.log('alice l2Balance with l2 address', aliceL2Balance.toString()); + console.log('[BALANCE] alice l2Balance with l2 address', aliceL2Balance.toString()); expect(initialTokenBalance.sub(finalTokenBalance)).toEqual(BigNumber.from(amount)); }); From 38c095004ffeb5a58b1887f4a6ea954e4a1f6f1e Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Mon, 5 Feb 2024 16:44:43 +0100 Subject: [PATCH 17/24] clean up --- .../tests/non-native-erc20-deposit.test.ts | 65 +++++++++++-------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index a97ee459aa8a..053a3702a266 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -29,16 +29,17 @@ describe('ERC20 contract checks', () => { }); test('Can perform a deposit', async () => { + const tokenAddress = '0xF12131d79e026D9882d22e4556706496Bdc287E8'; const amount = BigNumber.from(555); const gasPrice = scaledGasPrice(alice); // L1 Deposit - - const initialTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); + const initialTokenBalance = await alice.getBalanceL1(tokenAddress); const deposit = await alice.deposit({ l2GasLimit: 500_000, - token: tokenDetails.l1Address, + token: tokenAddress, amount, + to: alice.address, approveERC20: true, approveOverrides: { gasPrice, @@ -52,7 +53,7 @@ describe('ERC20 contract checks', () => { await deposit.waitL1Commit(); - const finalTokenBalance = await alice.getBalanceL1(tokenDetails.l1Address); + const finalTokenBalance = await alice.getBalanceL1(tokenAddress); console.log('initialTokenBalance', initialTokenBalance.toString()); console.log('finalTokenBalance', finalTokenBalance.toString()); @@ -61,41 +62,53 @@ describe('ERC20 contract checks', () => { const finalizeDeposit = await l2ERC20Bridge['finalizeDeposit(address,address,address,uint256,bytes)']( alice.address, alice.address, - tokenDetails.l1Address, + tokenAddress, amount, '0x' ); - console.log('wait finalize', await finalizeDeposit.wait()); - // L2 balance with address trough l2 bridge address - const l2TokenAddressWithL2Bridge = await l2ERC20Bridge.l2TokenAddress(tokenDetails.l1Address, {}); - const l2BalanceThroughL2Bridge = await alice.getBalance(l2TokenAddressWithL2Bridge); - console.log('[ADDRESS] l2TokenAddressWithL2Bridge: ', l2TokenAddressWithL2Bridge); - console.log('[BALANCE] l2BalanceThroughL2Bridge with l2 bridge address', l2BalanceThroughL2Bridge.toString()); + const finalizeDepositWait = await finalizeDeposit.wait(); + console.log('finalizeDepositWait', finalizeDepositWait); + + // Token amount should be deposited to the account in the L2 side. + + /// Try through alice.l2TokenAddress + const aliceL2TokenAddress = await alice.l2TokenAddress(tokenAddress); + console.log('[ADDRESS] aliceL2TokenAddress', aliceL2TokenAddress); + const aliceBalanceThroughAliceL2TokenAddress = await alice.getBalance(aliceL2TokenAddress); + console.log( + '[BALANCE] aliceBalanceThroughAliceL2TokenAddress', + aliceBalanceThroughAliceL2TokenAddress.toString() + ); - // L2 balance with address trough l1 address + /// Try through l2ERC20Bridge.l2TokenAddress call opt 1 + // const l2TokenAddressL2Bridge = await ( + // await alice.getL2BridgeContracts() + // ).erc20['l2TokenAddress(address)'](tokenAddress); + // const l2BalanceThroughL2Bridge = await alice.getBalance(l2TokenAddressL2Bridge); + // console.log('[ADDRESS] l2BalanceThroughL2Bridge with l1 address', l2BalanceThroughL2Bridge.toString()); + // console.log('[BALANCE] l2BalanceThroughL2Bridge with l1 address', l2BalanceThroughL2Bridge.toString()); + + /// Try through l2ERC20Bridge.l2TokenAddress call opt 2 + // // L2 balance with address trough l2 bridge address + // const l2TokenAddressWithL2Bridge = await l2ERC20Bridge.l2TokenAddress(tokenAddress, {}); + // const l2BalanceThroughL2Bridge = await alice.getBalance(l2TokenAddressWithL2Bridge); + // console.log('[ADDRESS] l2TokenAddressWithL2Bridge: ', l2TokenAddressWithL2Bridge); + // console.log('[BALANCE] l2BalanceThroughL2Bridge with l2 bridge address', l2BalanceThroughL2Bridge.toString()); + + /// Try through l1ERC20Bridge.l2TokenAddress call const l2TokenAddress = await ( await alice.getL1BridgeContracts() - ).erc20['l2TokenAddress(address)'](tokenDetails.l1Address); + ).erc20['l2TokenAddress(address)'](tokenAddress); const l2BalanceThroughL1Bridge = await alice.getBalance(l2TokenAddress); console.log('[ADDRESS] l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); console.log('[BALANCE] l2BalanceThroughL1Bridge with l1 address', l2BalanceThroughL1Bridge.toString()); - // L2 balance with l1 address - const l2Balance = await alice.getBalance(tokenDetails.l1Address); - console.log('[ADDRESS] l2Balance with l1 address', tokenDetails.l1Address.toString()); + /// Try through same address than L1 call + const l2Balance = await alice.getBalance(tokenAddress); + console.log('[ADDRESS] l2Balance with l1 address', tokenAddress.toString()); console.log('[BALANCE] l2Balance with l1 address', l2Balance.toString()); - // L2 balance with l2 address - const l2Balance2 = await alice.getBalance(tokenDetails.l2Address); - console.log('[ADDRESS] l2Balance with l2 address', tokenDetails.l2Address.toString()); - console.log('[BALANCE] l2Balance with l2 address', l2Balance2.toString()); - - // L2 balance with l2 address - const aliceL2Balance = await alice.getBalance(aliceErc20.address); - console.log('[ADDRESS] alice l2Balance with l2 address', aliceErc20.address.toString()); - console.log('[BALANCE] alice l2Balance with l2 address', aliceL2Balance.toString()); - expect(initialTokenBalance.sub(finalTokenBalance)).toEqual(BigNumber.from(amount)); }); From 6f73c4b9692368aa64bff8449e0254b13db9e1f3 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Mon, 5 Feb 2024 17:53:12 +0100 Subject: [PATCH 18/24] add nonNative tokens for testing, remove l2gasLimit from test --- core/tests/ts-integration/src/env.ts | 14 +++++++++++ core/tests/ts-integration/src/types.ts | 4 ++++ .../tests/non-native-erc20-deposit.test.ts | 24 ++++++++++++------- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/core/tests/ts-integration/src/env.ts b/core/tests/ts-integration/src/env.ts index 8857f40d4bb7..46aaffc0e940 100644 --- a/core/tests/ts-integration/src/env.ts +++ b/core/tests/ts-integration/src/env.ts @@ -103,6 +103,13 @@ export async function loadTestEnvironment(): Promise { ethers.getDefaultProvider(l1NodeUrl) ).l2TokenAddress(weth.address); + const nonNativeToken = tokens.find((token: { symbol: string }) => token.symbol == 'MLTT')!; + const nonNativeTokenL2Address = await new zksync.Wallet( + mainWalletPK, + new zksync.Provider(l2NodeUrl), + ethers.getDefaultProvider(l1NodeUrl) + ).l2TokenAddress(nonNativeToken.address); + return { network, mainWalletPK, @@ -124,6 +131,13 @@ export async function loadTestEnvironment(): Promise { l1Address: weth.address, l2Address: l2WethAddress }, + nonNativeToken: { + name: nonNativeToken.name, + symbol: nonNativeToken.symbol, + decimals: nonNativeToken.decimals, + l1Address: nonNativeToken.address, + l2Address: nonNativeTokenL2Address + }, nativeErc20Testing }; } diff --git a/core/tests/ts-integration/src/types.ts b/core/tests/ts-integration/src/types.ts index cde7bf09eded..be24ada40182 100644 --- a/core/tests/ts-integration/src/types.ts +++ b/core/tests/ts-integration/src/types.ts @@ -53,6 +53,10 @@ export interface TestEnvironment { * Flag indicating whether the tests are being run against the native ERC20 implementation. */ nativeErc20Testing: boolean; + /** + * Non native ERC20 token. + */ + nonNativeToken: Token; } /** diff --git a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts index 053a3702a266..17d2cd97dde4 100644 --- a/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts +++ b/core/tests/ts-integration/tests/non-native-erc20-deposit.test.ts @@ -17,6 +17,7 @@ describe('ERC20 contract checks', () => { let alice: zksync.Wallet; let bob: zksync.Wallet; let tokenDetails: Token; + let nonNativeToken: Token; let aliceErc20: zksync.Contract; beforeAll(async () => { @@ -25,33 +26,37 @@ describe('ERC20 contract checks', () => { bob = testMaster.newEmptyAccount(); tokenDetails = testMaster.environment().erc20Token; + nonNativeToken = testMaster.environment().nonNativeToken; aliceErc20 = new zksync.Contract(tokenDetails.l2Address, zksync.utils.IERC20, alice); }); test('Can perform a deposit', async () => { - const tokenAddress = '0xF12131d79e026D9882d22e4556706496Bdc287E8'; + const tokenAddress = nonNativeToken.l1Address; + // const tokenAddress = tokenDetails.l1Address; const amount = BigNumber.from(555); const gasPrice = scaledGasPrice(alice); + const nativeToken = '0xD47a77a7A93c099a451a2c269ea5fB35238dC52c' + + // The non native token address should be different than the native token address. + expect(tokenAddress != tokenDetails.l1Address); // L1 Deposit const initialTokenBalance = await alice.getBalanceL1(tokenAddress); const deposit = await alice.deposit({ - l2GasLimit: 500_000, token: tokenAddress, amount, to: alice.address, approveERC20: true, approveOverrides: { - gasPrice, - gasLimit: 5_000_000 + gasPrice }, overrides: { - gasPrice, - gasLimit: 5_000_000 + gasPrice } - }); + }, + nativeToken); - await deposit.waitL1Commit(); + await deposit.waitFinalize(); const finalTokenBalance = await alice.getBalanceL1(tokenAddress); console.log('initialTokenBalance', initialTokenBalance.toString()); @@ -71,7 +76,8 @@ describe('ERC20 contract checks', () => { console.log('finalizeDepositWait', finalizeDepositWait); // Token amount should be deposited to the account in the L2 side. - + console.log('l2BridgeAddress', l2ERC20Bridge.address); + /// Try through alice.l2TokenAddress const aliceL2TokenAddress = await alice.l2TokenAddress(tokenAddress); console.log('[ADDRESS] aliceL2TokenAddress', aliceL2TokenAddress); From b66b540880621791d65a33ded4638da38757c1fe Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Mon, 5 Feb 2024 16:28:34 -0300 Subject: [PATCH 19/24] Pass native erc20 flag to preprocessor --- contracts | 2 +- infrastructure/zk/src/init.ts | 6 + yarn.lock | 523 +++++++++++++++++++--------------- 3 files changed, 300 insertions(+), 231 deletions(-) diff --git a/contracts b/contracts index 37d8b56b5220..c1fac02bcbb0 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 37d8b56b5220ebf9d845ed3bd63bfba76f8cf2ed +Subproject commit c1fac02bcbb0f8d777169ca0dfd8c198b7b2fc95 diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index bfb71a7d5603..a66ea7f9ef6b 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -27,6 +27,12 @@ export async function init(initArgs: InitArgs = DEFAULT_ARGS) { nativeERC20 } = initArgs; + if (nativeERC20) { + process.env.NATIVE_ERC20 = "true"; + } else { + process.env.NATIVE_ERC20 = "false"; + } + if (!process.env.CI && !skipEnvSetup) { await announced('Pulling images', docker.pull()); await announced('Checking environment', checkEnv()); diff --git a/yarn.lock b/yarn.lock index 7a04c869710d..53d451592174 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,7 +22,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -36,20 +36,20 @@ integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== "@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" - integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.7" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -149,14 +149,14 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/helpers@^7.23.7": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" - integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" "@babel/highlight@^7.10.4", "@babel/highlight@^7.23.4": version "7.23.4" @@ -167,10 +167,10 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6", "@babel/parser@^7.7.0": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.7.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -270,19 +270,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/template@^7.22.15", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" -"@babel/traverse@^7.23.7", "@babel/traverse@^7.7.0": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" - integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== +"@babel/traverse@^7.23.9", "@babel/traverse@^7.7.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== dependencies: "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" @@ -290,15 +290,15 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.3.3", "@babel/types@^7.7.0": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3", "@babel/types@^7.7.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" @@ -472,9 +472,9 @@ integrity sha512-hKVpV/lcGKP4/DpEPS8P4osPvFH/YVLJaDn9cBIOH6/HSmL5LbFgJNKpMGaYRbhm2FEX56MKE3yn/MNeNYuesQ== "@cspell/dict-cpp@^5.0.10": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-5.1.1.tgz#f3628a10355e217dc5ba1f5a26e6d9e1f177e6ea" - integrity sha512-Qy9fNsR/5RcQ6G85gDKFjvzh0AdgAilLQeSXPtqY21Fx1kCjUqdVVJYMmHUREgcxH6ptAxtn5knTWU4PIhQtOw== + version "5.1.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-5.1.3.tgz#c0c34ccdecc3ff954877a56dbbf07a7bf53b218e" + integrity sha512-sqnriXRAInZH9W75C+APBh6dtben9filPqVbIsiRMUXGg+s02ekz0z6LbS7kXeJ5mD2qXoMLBrv13qH2eIwutQ== "@cspell/dict-cryptocurrencies@^5.0.0": version "5.0.0" @@ -532,9 +532,9 @@ integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== "@cspell/dict-en_us@^4.3.13": - version "4.3.14" - resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.14.tgz#c05357087e9bf26a4c8263ab0c8f4ca17f51a184" - integrity sha512-Od7vPVNN4td0Fild5BcCPikx+lBJ2L809zWeO3lThYHqtZXqsbaBNzfv9qlB1bXW199Ru461vu02CrklU1oD+Q== + version "4.3.15" + resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.15.tgz#d84e5ffa1887b208fba0ac207032444c8ae00fdf" + integrity sha512-h1kwvU2w/e4ngXAbesU3z3GnK9kAUJVGRUcQJiBHGg4cY7+hsAD506JezoBD+kus2+cuYVkoeSKdi0FyqS7xyg== "@cspell/dict-filetypes@^3.0.3": version "3.0.3" @@ -669,9 +669,9 @@ integrity sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ== "@cspell/dict-software-terms@^3.3.15": - version "3.3.16" - resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-3.3.16.tgz#c088501687e6a19625800cc612dae8aebaf0f086" - integrity sha512-ixorEP80LGxAU+ODVSn/CYIDjV0XAlZ2VrBu7CT+PwUFJ7h8o3JX1ywKB4qnt0hHru3JjWFtBoBThmZdrXnREQ== + version "3.3.17" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-3.3.17.tgz#c84f74ae817c018db8d96b400e3566ba1c94345e" + integrity sha512-IspxnhSbriGNME+jE/vveC0lK/0K/a0JSLa6ANvE+W1SuBwYPJqAChWjTgvWWYWC1ZEmnXdwfaNzB6fJNkc85w== "@cspell/dict-sql@^2.1.3": version "2.1.3" @@ -2014,9 +2014,9 @@ dockerode "^3.3.4" "@matterlabs/hardhat-zksync-solc@^1.0.5": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-1.1.1.tgz#d4a71495a2321baa6ab7536b04dbfe2935f7ad31" - integrity sha512-1g7sHp1uUr6quzCK6PWLd0vAvugrXH8ePeUeAyUAjcRAXeDHTKacNHJ1wMLYTfuuXZZ3+jwltwvfuiohRjukzw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-1.1.2.tgz#d5c371acb8b745f018f0559403fe590e8c1dd8b4" + integrity sha512-4qyt9T3OevP+IGJqGd6cS/BKwJnne6XfYCq4gES2nnXoyIWOihmuaL9+KDsbvwVI4mBfB4bz84+SP68W5Bxuig== dependencies: "@nomiclabs/hardhat-docker" "^2.0.0" chai "^4.3.6" @@ -2042,9 +2042,9 @@ dockerode "^3.3.4" "@matterlabs/hardhat-zksync-vyper@^1.0.0": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-vyper/-/hardhat-zksync-vyper-1.0.6.tgz#c674a5a446dd7298814d5d78f40dfe5808bd09b1" - integrity sha512-OBStKayxJo9zKqZz0lRhKbv/33/IJO9suU4FSysYvdOcx6PJDHqO30+4TL+G2kE9o8j8Y8X7Ev2nJ6pCUcelrQ== + version "1.0.7" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-vyper/-/hardhat-zksync-vyper-1.0.7.tgz#58603c8f41ae1e473011f37d314b054e859b24ea" + integrity sha512-s15DxL6S0LyAH88u8B+E9aLMa9pCwPhbSOpqXqm2tQkbqaNcGOR02s7OAzw8/fKo4Wf01vFp4w/RNW4Nr02Wpw== dependencies: "@nomiclabs/hardhat-docker" "^2.0.0" chai "^4.3.6" @@ -2843,6 +2843,11 @@ resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.17.0.tgz#52a2fcc97ff609f72011014e4c5b485ec52243ef" integrity sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw== +"@solidity-parser/parser@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.18.0.tgz#8e77a02a09ecce957255a2f48c9a7178ec191908" + integrity sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA== + "@trufflesuite/bigint-buffer@1.1.10": version "1.1.10" resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" @@ -3025,9 +3030,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@^29.0.3": - version "29.5.11" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" - integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== + version "29.5.12" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -3104,9 +3109,9 @@ form-data "^4.0.0" "@types/node@*", "@types/node@>=13.7.0": - version "20.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.6.tgz#6adf4241460e28be53836529c033a41985f85b6e" - integrity sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q== + version "20.11.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.16.tgz#4411f79411514eb8e2926f036c86c9f0e4ec6708" + integrity sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ== dependencies: undici-types "~5.26.4" @@ -3218,15 +3223,15 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^6.7.4": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz#bb0676af940bc23bf299ca58dbdc6589c2548c2e" - integrity sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg== + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/type-utils" "6.19.1" - "@typescript-eslint/utils" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -3245,14 +3250,14 @@ debug "^4.3.1" "@typescript-eslint/parser@^6.7.4": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.19.1.tgz#68a87bb21afaf0b1689e9cdce0e6e75bc91ada78" - integrity sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ== - dependencies: - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" "@typescript-eslint/scope-manager@4.33.0": @@ -3263,21 +3268,21 @@ "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" -"@typescript-eslint/scope-manager@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz#2f527ee30703a6169a52b31d42a1103d80acd51b" - integrity sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/type-utils@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz#6a130e3afe605a4898e043fa9f72e96309b54935" - integrity sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg== +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== dependencies: - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/utils" "6.19.1" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -3286,10 +3291,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/types@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.19.1.tgz#2d4c9d492a63ede15e7ba7d129bdf7714b77f771" - integrity sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg== +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" @@ -3304,13 +3309,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz#796d88d88882f12e85bb33d6d82d39e1aea54ed1" - integrity sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA== +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -3318,17 +3323,17 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.19.1.tgz#df93497f9cfddde2bcc2a591da80536e68acd151" - integrity sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w== +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" "@typescript-eslint/visitor-keys@4.33.0": @@ -3339,12 +3344,12 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz#2164073ed4fc34a5ff3b5e25bb5a442100454c4c" - integrity sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ== +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== dependencies: - "@typescript-eslint/types" "6.19.1" + "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" "@ungap/promise-all-settled@1.1.2": @@ -3382,7 +3387,7 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3, abstract-level@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== @@ -3504,6 +3509,13 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -3639,13 +3651,13 @@ array-back@^4.0.1, array-back@^4.0.2: resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" + call-bind "^1.0.5" + is-array-buffer "^3.0.4" array-includes@^3.1.7: version "3.1.7" @@ -3673,6 +3685,17 @@ array-uniq@1.0.3: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== +array.prototype.filter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" + integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + array.prototype.findlastindex@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" @@ -3705,16 +3728,17 @@ array.prototype.flatmap@^1.3.2: es-shim-unscopables "^1.0.0" arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" asap@~2.0.6: @@ -3778,10 +3802,10 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" + integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== aws-sign2@~0.7.0: version "0.7.0" @@ -3801,9 +3825,9 @@ axios@^0.21.1: follow-redirects "^1.14.0" axios@^1.4.0, axios@^1.5.1: - version "1.6.6" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.6.tgz#878db45401d91fe9e53aed8ac962ed93bde8dd1c" - integrity sha512-XZLZDFfXKM9U/Y/B4nNynfCRUqNyVZ4sBC/n9GDRCkq9vd2mIvKjKKsbIh1WPmHmNbg6ND7cTBY3Y2+u1G3/2Q== + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== dependencies: follow-redirects "^1.15.4" form-data "^4.0.0" @@ -3993,6 +4017,20 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -4048,12 +4086,12 @@ browserify-aes@^1.2.0: safe-buffer "^5.0.1" browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -4170,7 +4208,7 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== @@ -4194,10 +4232,10 @@ camelcase@^6.0.0, camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001565: - version "1.0.30001580" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e" - integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA== +caniuse-lite@^1.0.30001580: + version "1.0.30001584" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz#5e3ea0625d048d5467670051687655b1f7bf7dfd" + integrity sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ== case@^1.6.3: version "1.6.3" @@ -4384,6 +4422,11 @@ clear-module@^4.1.2: parent-module "^2.0.0" resolve-from "^5.0.0" +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -5174,10 +5217,10 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -electron-to-chromium@^1.4.601: - version "1.4.645" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.645.tgz#117f964252eb2f0ff00fc7360cb3080e2cf66e3c" - integrity sha512-EeS1oQDCmnYsRDRy2zTeC336a/4LZ6WKqvSaM1jLocEk5ZuyszkQtCpsqvuvaIXGOUjwtvF6LTcS8WueibXvSw== +electron-to-chromium@^1.4.648: + version "1.4.656" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz#b374fb7cab9b782a5bc967c0ce0e19826186b9c9" + integrity sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q== elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" @@ -5284,7 +5327,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1: +es-abstract@^1.22.1, es-abstract@^1.22.3: version "1.22.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== @@ -5329,6 +5372,16 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.13" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-errors@^1.0.0, es-errors@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-set-tostringtag@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" @@ -5360,9 +5413,9 @@ es6-promisify@^6.0.0: integrity sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg== escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" @@ -6060,9 +6113,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -6359,11 +6412,12 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.3.tgz#9d2d284a238e62672f556361e7d4e1a4686ae50e" + integrity sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ== dependencies: + es-errors "^1.0.0" function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" @@ -6653,9 +6707,9 @@ hardhat-contract-sizer@^2.0.2: strip-ansi "^6.0.0" hardhat-gas-reporter@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz#9a2afb354bc3b6346aab55b1c02ca556d0e16450" - integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz#ebe5bda5334b5def312747580cd923c2b09aef1b" + integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== dependencies: array-uniq "1.0.3" eth-gas-reporter "^0.2.25" @@ -6722,9 +6776,9 @@ hardhat@=2.16.0: ws "^7.4.6" hardhat@^2.18.3: - version "2.19.4" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.19.4.tgz#5112c30295d8be2e18e55d847373c50483ed1902" - integrity sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ== + version "2.19.5" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.19.5.tgz#6017c35ae2844b669e9bcc84c3d05346d4ef031c" + integrity sha512-vx8R7zWCYVgM56vA6o0Wqx2bIIptkN4TMs9QwDqZVNGRhMzBfzqUeEYbp+69gxWp1neg2V2nYQUaaUv7aom1kw== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" @@ -6745,6 +6799,7 @@ hardhat@^2.18.3: adm-zip "^0.4.16" aggregate-error "^3.0.0" ansi-escapes "^4.3.0" + boxen "^5.1.2" chalk "^2.4.2" chokidar "^3.4.0" ci-info "^2.0.0" @@ -6817,12 +6872,12 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" hash-base@^3.0.0: version "3.1.0" @@ -6969,9 +7024,9 @@ ignore@^4.0.6: integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== ignore@~5.1.4: version "5.1.9" @@ -6994,9 +7049,9 @@ immediate@~3.2.3: integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== immutable@^4.0.0-rc.12: - version "4.3.4" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" - integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" @@ -7107,14 +7162,13 @@ is-absolute-url@^4.0.1: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-4.0.1.tgz#16e4d487d4fded05cfe0685e53ec86804a5e94dc" integrity sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A== -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-arrayish@^0.2.1: version "0.2.1" @@ -7278,11 +7332,11 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: has-symbols "^1.0.2" is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - which-typed-array "^1.1.11" + which-typed-array "^1.1.14" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -8114,10 +8168,11 @@ level-ws@^2.0.0: xtend "^4.0.1" level@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" - integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== + version "8.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== dependencies: + abstract-level "^1.0.4" browser-level "^1.0.1" classic-level "^1.2.0" @@ -8343,9 +8398,9 @@ lru-cache@^6.0.0: yallist "^4.0.0" "lru-cache@^9.1.1 || ^10.0.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== lru_map@^0.3.3: version "0.3.3" @@ -8708,7 +8763,7 @@ mocha-steps@^1.3.0: resolved "https://registry.yarnpkg.com/mocha-steps/-/mocha-steps-1.3.0.tgz#2449231ec45ec56810f65502cb22e2571862957f" integrity sha512-KZvpMJTqzLZw3mOb+EEuYi4YZS41C9iTnb7skVFRxHjUd1OYbl64tCMSmpdIRM9LnwIrSOaRfPtNpF5msgv6Eg== -mocha@10.2.0, mocha@^10.0.0, mocha@^10.2.0: +mocha@^10.0.0, mocha@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== @@ -8874,9 +8929,9 @@ nise@^4.0.4: path-to-regexp "^1.7.0" nise@^5.1.4: - version "5.1.7" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.7.tgz#03ca96539efb306612eb60a8c5d6beeb208e27e5" - integrity sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ== + version "5.1.9" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.9.tgz#0cb73b5e4499d738231a473cd89bd8afbb618139" + integrity sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww== dependencies: "@sinonjs/commons" "^3.0.0" "@sinonjs/fake-timers" "^11.2.2" @@ -9032,14 +9087,15 @@ object.fromentries@^2.0.7: es-abstract "^1.22.1" object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" + integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + array.prototype.filter "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" object.values@^1.1.7: version "1.1.7" @@ -9502,9 +9558,9 @@ postgres-interval@^3.0.0: integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== postgres-range@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" - integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" + integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== prelude-ls@^1.2.1: version "1.2.1" @@ -9557,9 +9613,9 @@ prettier@^2.1.2, prettier@^2.3.1, prettier@^2.3.2, prettier@^2.8.3: integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== prettier@^3.0.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" - integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" @@ -10143,9 +10199,9 @@ semver@^6.3.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.1, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" @@ -10389,12 +10445,12 @@ solidity-comments-extractor@^0.0.8: integrity sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g== solidity-coverage@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.5.tgz#64071c3a0c06a0cecf9a7776c35f49edc961e875" - integrity sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ== + version "0.8.6" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.6.tgz#c7b18dc9edfeba11064726c37d96265f689c9478" + integrity sha512-vV03mA/0nNMskOdVwNarUcqk0N/aYdelxAbf6RZ5l84FcYHbqDTr2JXyeYMp4bT48qHtAQjnKrygW1FrECyWNw== dependencies: "@ethersproject/abi" "^5.0.9" - "@solidity-parser/parser" "^0.16.0" + "@solidity-parser/parser" "^0.18.0" chalk "^2.4.2" death "^1.1.0" detect-port "^1.3.0" @@ -10405,7 +10461,7 @@ solidity-coverage@^0.8.5: globby "^10.0.1" jsonschema "^1.2.4" lodash "^4.17.15" - mocha "10.2.0" + mocha "^10.2.0" node-emoji "^1.10.0" pify "^4.0.1" recursive-readdir "^2.2.2" @@ -10565,7 +10621,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10978,9 +11034,9 @@ treeify@^1.1.0: integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.0.tgz#48c31073e7ae7868d27ffabef993a2de8c2b006f" + integrity sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw== ts-command-line-args@^2.2.0: version "2.5.1" @@ -11282,9 +11338,9 @@ undici-types@~5.26.4: integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== undici@^5.14.0: - version "5.28.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" - integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== + version "5.28.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" + integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== dependencies: "@fastify/busboy" "^2.0.0" @@ -11431,9 +11487,9 @@ weak-map@~1.0.x: integrity sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw== web3-utils@^1.3.4, web3-utils@^1.3.6: - version "1.10.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" - integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== + version "1.10.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== dependencies: "@ethereumjs/util" "^8.1.0" bn.js "^5.2.1" @@ -11468,16 +11524,16 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.11, which-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== +which-typed-array@^1.1.13, which-typed-array@^1.1.14: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.1" which@2.0.2, which@^2.0.1: version "2.0.2" @@ -11493,6 +11549,13 @@ which@^1.1.1, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + word-wrap@~1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" From a1ca56a35481af463444e4c0e283f5616693ca1a Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Mon, 5 Feb 2024 16:29:19 -0300 Subject: [PATCH 20/24] zk fmt --- infrastructure/zk/src/contract.ts | 31 +++++++++++++++++++++++++------ infrastructure/zk/src/init.ts | 9 ++++++--- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/infrastructure/zk/src/contract.ts b/infrastructure/zk/src/contract.ts index 048f048b7467..6203778a1dfd 100644 --- a/infrastructure/zk/src/contract.ts +++ b/infrastructure/zk/src/contract.ts @@ -58,11 +58,18 @@ export async function initializeWethToken(args: any[] = [], nativeToken?: boolea const baseCommandL1 = isLocalSetup ? `yarn --cwd /contracts/l1-contracts` : `yarn l1-contracts`; await utils.spawn( - `${baseCommandL1} initialize-l2-weth-token ${nativeToken ? ' --native-erc20' : ''} instant-call ${args.join(' ')} | tee initializeWeth.log` + `${baseCommandL1} initialize-l2-weth-token ${nativeToken ? ' --native-erc20' : ''} instant-call ${args.join( + ' ' + )} | tee initializeWeth.log` ); } -export async function deployL2(args: any[] = [], includePaymaster?: boolean, includeWETH?: boolean, nativeToken?: boolean) { +export async function deployL2( + args: any[] = [], + includePaymaster?: boolean, + includeWETH?: boolean, + nativeToken?: boolean +) { await utils.confirmAction(); const isLocalSetup = process.env.ZKSYNC_LOCAL_SETUP; @@ -75,10 +82,18 @@ export async function deployL2(args: any[] = [], includePaymaster?: boolean, inc // Skip compilation for local setup, since we already copied artifacts into the container. await utils.spawn(`${baseCommandL2} build`); - await utils.spawn(`${baseCommandL1} initialize-bridges ${nativeToken ? ' --native-erc20' : ''} ${args.join(' ')} | tee deployL2.log`); + await utils.spawn( + `${baseCommandL1} initialize-bridges ${nativeToken ? ' --native-erc20' : ''} ${args.join( + ' ' + )} | tee deployL2.log` + ); - if (includePaymaster) { - await utils.spawn(`${baseCommandL2} deploy-testnet-paymaster ${nativeToken ? ' --native-erc20' : ''} ${args.join(' ')} | tee -a deployL2.log`); + if (includePaymaster) { + await utils.spawn( + `${baseCommandL2} deploy-testnet-paymaster ${nativeToken ? ' --native-erc20' : ''} ${args.join( + ' ' + )} | tee -a deployL2.log` + ); } if (includeWETH) { @@ -98,7 +113,11 @@ export async function deployL2(args: any[] = [], includePaymaster?: boolean, inc updateContractsEnv(l2DeployLog, l2DeploymentEnvVars); if (includeWETH) { - await utils.spawn(`${baseCommandL1} initialize-weth-bridges ${nativeToken ? ' --native-erc20' : ''} ${args.join(' ')} | tee -a deployL1.log`); + await utils.spawn( + `${baseCommandL1} initialize-weth-bridges ${nativeToken ? ' --native-erc20' : ''} ${args.join( + ' ' + )} | tee -a deployL1.log` + ); } const l1DeployLog = fs.readFileSync('deployL1.log').toString(); diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index a66ea7f9ef6b..1eeec27faeed 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -28,9 +28,9 @@ export async function init(initArgs: InitArgs = DEFAULT_ARGS) { } = initArgs; if (nativeERC20) { - process.env.NATIVE_ERC20 = "true"; + process.env.NATIVE_ERC20 = 'true'; } else { - process.env.NATIVE_ERC20 = "false"; + process.env.NATIVE_ERC20 = 'false'; } if (!process.env.CI && !skipEnvSetup) { @@ -83,7 +83,10 @@ export async function init(initArgs: InitArgs = DEFAULT_ARGS) { ); if (deployerL2ContractInput.includeL2WETH) { - await announced('Initializing L2 WETH token', contract.initializeWethToken(governorPrivateKeyArgs, nativeERC20)); + await announced( + 'Initializing L2 WETH token', + contract.initializeWethToken(governorPrivateKeyArgs, nativeERC20) + ); } await announced('Initializing governance', contract.initializeGovernance(governorPrivateKeyArgs)); } From 0017e9c3666317cd8c631ec70f4398305fe1ba9e Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Thu, 8 Feb 2024 12:26:25 +0100 Subject: [PATCH 21/24] fix missing msg.value to amount --- infrastructure/local-setup-preparation/src/index.ts | 2 +- sdk/zksync-rs/src/ethereum/mod.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infrastructure/local-setup-preparation/src/index.ts b/infrastructure/local-setup-preparation/src/index.ts index a8f7bbb56f07..4d09742f16f8 100644 --- a/infrastructure/local-setup-preparation/src/index.ts +++ b/infrastructure/local-setup-preparation/src/index.ts @@ -44,8 +44,8 @@ async function depositWithRichAccounts() { // deposit method from wallet requires a running server contract.requestL2Transaction( wallet.address, - 0, AMOUNT_TO_DEPOSIT, + overrides.value, '0x', DEPOSIT_L2_GAS_LIMIT, utils.REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_LIMIT, diff --git a/sdk/zksync-rs/src/ethereum/mod.rs b/sdk/zksync-rs/src/ethereum/mod.rs index 29ebf48218d3..473112acb4d9 100644 --- a/sdk/zksync-rs/src/ethereum/mod.rs +++ b/sdk/zksync-rs/src/ethereum/mod.rs @@ -403,7 +403,7 @@ impl EthereumProvider { ( contract_address, l2_value, - 0, + value, calldata, gas_limit, L1_TO_L2_GAS_PER_PUBDATA, From f3384a0f45aaa3aed78883add56e857edb72ef53 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Thu, 8 Feb 2024 14:44:02 +0100 Subject: [PATCH 22/24] update submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 42a6f2658fda..474df7f5aac3 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 42a6f2658fda9feef14e41e3db578f2c9c2f746e +Subproject commit 474df7f5aac3206f46d54d23d1d89849d7ca0137 From 3c01c7c2d4c0d0d6bd35ac43ffd3f81123cdc9f0 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Thu, 8 Feb 2024 16:50:31 +0100 Subject: [PATCH 23/24] update submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 474df7f5aac3..3b2b9650b96e 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 474df7f5aac3206f46d54d23d1d89849d7ca0137 +Subproject commit 3b2b9650b96ed7d72452ab7e38def434e2b3f1e2 From b30dd42d922abeae34624800c1fad15c178cdf81 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Wed, 14 Feb 2024 15:22:40 -0300 Subject: [PATCH 24/24] Update submodule --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index c1fac02bcbb0..f4f28c88ca9a 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit c1fac02bcbb0f8d777169ca0dfd8c198b7b2fc95 +Subproject commit f4f28c88ca9a4ece3011a0535d652d30b39e2f12