From 74d16f2204f1f7ce001ff11927b682af46d61dec Mon Sep 17 00:00:00 2001 From: salman01zp Date: Fri, 6 Jan 2023 23:38:59 +0530 Subject: [PATCH 01/17] generate relayer config --- package.json | 6 +- packages/anchors/src/VAnchorForest.ts | 4 +- .../test/vbridge/signatureVBridgeSide.test.ts | 5 +- scripts/evm/deployments/VBridge8Side.ts | 94 ++++++-- scripts/evm/deployments/endPoints.ts | 37 +++ .../deployments/relayer-config/mumbai.toml | 40 ++++ scripts/evm/deployments/utils.ts | 175 ++++++++++++++ scripts/evm/ethersGovernorWallets.ts | 27 ++- yarn.lock | 214 +++++++++++++++++- 9 files changed, 561 insertions(+), 41 deletions(-) create mode 100644 scripts/evm/deployments/endPoints.ts create mode 100644 scripts/evm/deployments/relayer-config/mumbai.toml create mode 100644 scripts/evm/deployments/utils.ts diff --git a/package.json b/package.json index 5bb3c4533..868268fdb 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,8 @@ "@webb-tools/vbridge": "^0.5.0", "eth-proof": "~2.1.6", "ethers": "5.7.0", + "itertools": "^1.7.1", + "tomlify-j0.4":"^3.0.0", "ffjavascript": "^0.2.38", "hardhat": "^2.6.8", "hardhat-gas-reporter": "^1.0.8", @@ -68,12 +70,12 @@ "@typechain/hardhat": "^2.3.0", "@types/chai": "^4.3.0", "@types/mocha": "^9.0.0", - "@webb-tools/sdk-core": "0.1.4-113", + "@webb-tools/sdk-core": "0.1.4-119", "@webb-tools/semaphore": "0.0.1-5", "@webb-tools/semaphore-group": "0.0.1-4", "@webb-tools/semaphore-identity": "0.0.1-3", "@webb-tools/semaphore-proof": "0.0.1-5", - "@webb-tools/test-utils": "0.1.4-113", + "@webb-tools/test-utils": "0.1.4-119", "babel-plugin-styled-components": "^2.0.7", "bn.js": "4.11.6", "chai": "^4.3.5", diff --git a/packages/anchors/src/VAnchorForest.ts b/packages/anchors/src/VAnchorForest.ts index 69fe45082..80cb1ef5b 100644 --- a/packages/anchors/src/VAnchorForest.ts +++ b/packages/anchors/src/VAnchorForest.ts @@ -671,7 +671,7 @@ export class VAnchorForest extends WebbBridge { ); let options = await this.getWrapUnwrapOptions(extAmount, wrapUnwrapToken); - options["gasLimit"] = '0x5B8D80'; + options['gasLimit'] = '0x5B8D80'; let tx = await this.contract.registerAndTransact( { owner, keyData: keyData }, @@ -738,7 +738,7 @@ export class VAnchorForest extends WebbBridge { ); let options = await this.getWrapUnwrapOptions(extAmount, wrapUnwrapToken); - options["gasLimit"] = '0x5B8D80'; + options['gasLimit'] = '0x5B8D80'; const tx = await this.contract.transact( publicInputs.proof, ZERO_BYTES32, diff --git a/packages/contracts/test/vbridge/signatureVBridgeSide.test.ts b/packages/contracts/test/vbridge/signatureVBridgeSide.test.ts index 974351389..3fd17d8b2 100644 --- a/packages/contracts/test/vbridge/signatureVBridgeSide.test.ts +++ b/packages/contracts/test/vbridge/signatureVBridgeSide.test.ts @@ -616,9 +616,7 @@ describe('Rescue Tokens Tests for ERC20 Tokens', () => { ); await fungibleToken.grantMinterRole(srcAnchor.contract.address); - let amountToWrap = await fungibleToken.contract.getAmountToWrap( - BigNumber.from(1e7) - ); + let amountToWrap = await fungibleToken.contract.getAmountToWrap(BigNumber.from(1e7)); await erc20TokenInstance.approveSpending(fungibleToken.contract.address, amountToWrap); bridgeSide.setAnchorHandler(anchorHandler); const res = await bridgeSide.connectAnchorWithSignature(srcAnchor); @@ -658,7 +656,6 @@ describe('Rescue Tokens Tests for ERC20 Tokens', () => { // Change Fee Recipient to treasury Address await bridgeSide.executeFeeRecipientProposalWithSig(fungibleToken, treasury.contract.address); - // For ERC20 Tests await srcAnchor.transact( [], diff --git a/scripts/evm/deployments/VBridge8Side.ts b/scripts/evm/deployments/VBridge8Side.ts index b8971bdac..0004055fb 100644 --- a/scripts/evm/deployments/VBridge8Side.ts +++ b/scripts/evm/deployments/VBridge8Side.ts @@ -1,6 +1,6 @@ import { VBridge } from "@webb-tools/vbridge"; import { FungibleTokenWrapper } from "@webb-tools/tokens"; -import { fetchComponentsFromFilePaths } from "@webb-tools/utils"; +import { fetchComponentsFromFilePaths, getChainIdType } from "@webb-tools/utils"; import { DeployerConfig } from "@webb-tools/interfaces"; import path from "path"; import { ethers } from "ethers"; @@ -23,7 +23,15 @@ import { walletDemeter, chainIdTypeSepolia, walletSepolia, + chainIdTypeBinance, + chainIdTypeAurora, } from "../ethersGovernorWallets"; +import { LinkableAnchor } from "typechain"; +import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; +import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from "./utils"; +import { zip } from 'itertools'; +import fs from 'fs'; +import { EndPointConfig, goerliEndPoints, moonbaseEndPoints, optimismEndPoints, polygonEndPoints, sepoliaEndPoints } from "./endPoints"; async function deploySignatureVBridge( tokens: Record, @@ -96,45 +104,87 @@ async function deploySignatureVBridge( async function run() { const deployers: DeployerConfig = { - [chainIdTypeGoerli]: walletGoerli, - [chainIdTypeSepolia]: walletSepolia, - [chainIdTypeOptimism]: walletOptimism, + // [chainIdTypeGoerli]: walletGoerli, + // [chainIdTypeSepolia]: walletSepolia, + // [chainIdTypeOptimism]: walletOptimism, [chainIdTypePolygon]: walletPolygon, [chainIdTypeMoonbase]: walletMoonbase, - [chainIdTypeArbitrum]: walletArbitrum, - // [chainIdTypeHermes]: walletHermes, - // [chainIdTypeAthena]: walletAthena, - // [chainIdTypeDemeter]: walletDemeter }; const tokens: Record = { - [chainIdTypeGoerli]: ["0", "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6"], - [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], - [chainIdTypeOptimism]: ["0", "0x4200000000000000000000000000000000000006"], + // [chainIdTypeGoerli]: ["0", ""], + // [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], + // [chainIdTypeOptimism]: ["0", "0x4200000000000000000000000000000000000006"], [chainIdTypePolygon]: ["0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889"], [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], - [chainIdTypeArbitrum]: ["0", "0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3"], - // [chainIdTypeHermes]: ['0'], - // [chainIdTypeAthena]: ['0'], - // [chainIdTypeDemeter]: ['0'] }; + + const endPoints: Record = { + // [chainIdTypeGoerli]: goerliEndPoints, + // [chainIdTypeSepolia]: sepoliaEndPoints, + // [chainIdTypeOptimism]: optimismEndPoints, + [chainIdTypePolygon]: polygonEndPoints, + [chainIdTypeMoonbase]: moonbaseEndPoints, + } const vbridge = await deploySignatureVBridge(tokens, deployers); // print out all the info for the addresses const bridgeConfig = await vbridge.exportConfig(); - for (const anchor of Array.from(bridgeConfig.vAnchors.values())) { + const anchorIterable = bridgeConfig.vAnchors.values(); + const bridgeSideIterable = bridgeConfig.vBridgeSides.values(); + + + for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)){ const chainId = await anchor.signer.getChainId(); - console.log( - `Anchor ${anchor.contract.address.toLowerCase()} for chain ${chainId}` + const anchorContractConfig: ContractConfig = { + address: anchor.contract.address.toLowerCase(), + deployedAt: anchor.contract.deployTransaction.blockNumber + }; + const bridgeContractConfig: ContractConfig = { + address: bridgeSide.contract.address.toLowerCase(), + deployedAt: bridgeSide.contract.deployTransaction.blockNumber + } + const proposalSigningBackend : ProposalSigningBackend = { type: "DKGNode", node: "tangle" } + const linkedAnchors: EvmLinkedAnchor[] = []; + const typedChainId = getChainIdType(chainId); + const beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b"; // relayer wallet address + + // Add all other anchors to the list of linked anchors + for (const otherAnchor of Array.from(bridgeConfig.vAnchors.values())) { + if (otherAnchor !== anchor) { + linkedAnchors.push({ + chainId: chainId.toString(), + address: otherAnchor.contract.address.toLowerCase(), + type: "Evm" + }); + } + } + + // construct chain configuration + const chainConfig = getEvmChainConfig( + chainId, + anchorContractConfig, + bridgeContractConfig, + deployers[typedChainId], + linkedAnchors, + proposalSigningBackend, + endPoints[typedChainId], + beneficiary ); - } + + // convert config to kebab case and write to json file + const dirPath = `${__dirname}/relayer-config`; + writeEvmChainConfig(`${dirPath}/mumbai.toml`, chainConfig + ) - for (const bridgeSide of Array.from(bridgeConfig.vBridgeSides.values())) { - const chainId = await bridgeSide.admin.getChainId(); console.log( - `BridgeSide ${bridgeSide.contract.address.toLowerCase()} for chain ${chainId}` + `Anchor ${anchorContractConfig.address} deployed at: ${anchorContractConfig.deployedAt} for chainId ${chainId}` + ); + + console.log( + `BridgeSide ${bridgeContractConfig.address} deployed at: ${bridgeContractConfig.deployedAt} for chain ${chainId}` ); } diff --git a/scripts/evm/deployments/endPoints.ts b/scripts/evm/deployments/endPoints.ts new file mode 100644 index 000000000..ac676b805 --- /dev/null +++ b/scripts/evm/deployments/endPoints.ts @@ -0,0 +1,37 @@ +export type EndPointConfig = { + httpEndpoint: string, + wsEndpoint: string, + name: string + } + +export const polygonEndPoints: EndPointConfig = { + httpEndpoint: process.env.MUMBAI_TESTNET_HTTPS_URL!, + wsEndpoint: process.env.MUMBAI_TESTNET_WSS_URL!, + name: "mumbai" +}; + +export const sepoliaEndPoints: EndPointConfig = { + httpEndpoint: process.env.SEPOLIA_HTTPS_URL!, + wsEndpoint: process.env.SEPOLIA_WSS_URL!, + name: "sepolia" +}; + +export const optimismEndPoints: EndPointConfig = { + httpEndpoint: process.env.OPTIMISM_TESTNET_HTTPS_URL!, + wsEndpoint: process.env.OPTIMISM_TESTNET_WSS_URL!, + name: "optimism" +}; + +export const moonbaseEndPoints: EndPointConfig = { + httpEndpoint: process.env.MOONBASE_HTTPS_URL!, + wsEndpoint: process.env.MOONBASE_WSS_URL!, + name: "moonbase" +}; + +export const goerliEndPoints: EndPointConfig = { + httpEndpoint: process.env.GOERLI_HTTPS_URL!, + wsEndpoint: process.env.GOERLI_WSS_URL!, + name: "goerli" +}; + + diff --git a/scripts/evm/deployments/relayer-config/mumbai.toml b/scripts/evm/deployments/relayer-config/mumbai.toml new file mode 100644 index 000000000..81c397d9d --- /dev/null +++ b/scripts/evm/deployments/relayer-config/mumbai.toml @@ -0,0 +1,40 @@ +[evm] + +[evm.moonbase] +beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b" +block-confirmations = 0.0 +chain-id = 1287.0 +enabled = true +name = "moonbase" +private-key = "0xc086596a698603ae7428a61ced569cbc5fdc24ae91c341d692aad590febc4429" + +[[evm.moonbase.contracts]] +address = "0x4164de999b272edb36ef23dc2dbb59015cfce632" +contract = "VAnchor" + +[evm.moonbase.contracts.events-watcher] +enabled = true +polling-interval = 1000.0 +print-progress-interval = 7000.0 + +[[evm.moonbase.contracts.linked-anchors]] +address = "0xa6ba48634e8a85d70f139e7dda332e0565eb638b" +chain-id = "1287" +type = "Evm" + +[evm.moonbase.contracts.proposal-signing-backend] +node = "tangle" +type = "DKGNode" + +[evm.moonbase.contracts.withdraw-config] +withdraw-fee-percentage = 0.0 +withdraw-gaslimit = "0x5B8D80" + +[[evm.moonbase.contracts]] +address = "0xe9bc69534ae5066e444d74984829b6a799316894" +contract = "SignatureBridge" + +[evm.moonbase.contracts.events-watcher] +enabled = true +polling-interval = 1000.0 +print-progress-interval = 7000.0 \ No newline at end of file diff --git a/scripts/evm/deployments/utils.ts b/scripts/evm/deployments/utils.ts new file mode 100644 index 000000000..9be60e0d3 --- /dev/null +++ b/scripts/evm/deployments/utils.ts @@ -0,0 +1,175 @@ +import fs from 'fs'; +import { Contract, ConvertToKebabCase, EventsWatcher, FullChainInfo, LinkedAnchor, ProposalSigningBackend, WithdrawConfig } from "@webb-tools/test-utils"; +import { EndPointConfig } from "./endPoints"; +import { Wallet } from 'ethers'; +import { toToml } from 'tomlify-j0.4'; + +// Default WithdrawlConfig for the contracts. +const defaultWithdrawConfigValue: WithdrawConfig = { + withdrawGaslimit: '0x5B8D80', + withdrawFeePercentage: 0, +}; + +// Default Event watcher config. +const defaultEventWatcherConfigValue: EventsWatcher = { + enabled: true, + pollingInterval: 1000, + printProgressInterval: 7000, +}; + +export type ContractConfig = { + address: string, + deployedAt: number, +}; + +export function getEvmChainConfig( + chainId: number, + anchor: ContractConfig, + bridge: ContractConfig, + deployerWallet: Wallet, + linkedAnchors: LinkedAnchor[], + proposalSigningBackend: ProposalSigningBackend, + endpoint: EndPointConfig, + beneficiary?: string + ): FullChainInfo{ + + const contracts: Contract[] = [ + // first the local Anchor + { + contract: 'VAnchor', + address: anchor.address, + deployedAt: anchor.deployedAt, + size: 1, // Ethers + proposalSigningBackend: proposalSigningBackend, + withdrawConfig: defaultWithdrawConfigValue, + eventsWatcher: defaultEventWatcherConfigValue, + linkedAnchors: linkedAnchors, + }, + { + contract: 'SignatureBridge', + address: bridge.address, + deployedAt: bridge.deployedAt, + eventsWatcher: defaultEventWatcherConfigValue + }, + ]; + const chainInfo: FullChainInfo = { + name: endpoint.name, + enabled: true, + httpEndpoint: endpoint.httpEndpoint, + wsEndpoint: endpoint.wsEndpoint, + blockConfirmations: 0, + chainId: chainId, + beneficiary: beneficiary ?? '', + privateKey: deployerWallet.privateKey, + contracts: contracts, + }; + return chainInfo; +} + + +export function writeEvmChainConfig ( + path: string, + config: FullChainInfo +) { + type ConvertedLinkedAnchor = ConvertToKebabCase; + type ConvertedContract = Omit< + ConvertToKebabCase, + | 'events-watcher' + | 'proposal-signing-backend' + | 'withdraw-config' + | 'linked-anchors' + | 'deployed-at' + > & { + 'events-watcher': ConvertToKebabCase; + 'proposal-signing-backend'?: ConvertToKebabCase; + 'withdraw-config'?: ConvertToKebabCase; + 'linked-anchors'?: ConvertedLinkedAnchor[]; + 'deployed-at': number; + }; + type ConvertedConfig = Omit< + ConvertToKebabCase, + 'contracts' + > & { + contracts: ConvertedContract[]; + }; + type FullConfigFile = { + evm: { + // chainId as the chain identifier + [key: number]: ConvertedConfig; + }; + }; + + const convertedConfig: ConvertedConfig = { + beneficiary: config.beneficiary, + 'block-confirmations': config.blockConfirmations, + 'chain-id': config.chainId, + contracts: config.contracts.map((contract) => ({ + address: contract.address, + contract: contract.contract, + 'deployed-at': contract.deployedAt, + 'events-watcher': { + enabled: contract.eventsWatcher.enabled, + 'polling-interval': contract.eventsWatcher.pollingInterval, + 'print-progress-interval': + contract.eventsWatcher.printProgressInterval + }, + 'linked-anchors': contract?.linkedAnchors?.map((anchor: LinkedAnchor) => + anchor.type === 'Evm' + ? { + address: anchor.address, + 'chain-id': anchor.chainId, + type: 'Evm' + } + : anchor.type === 'Substrate' + ? { + 'chain-id': anchor.chainId, + pallet: anchor.pallet, + 'tree-id': anchor.treeId, + type: 'Substrate' + + } + : { + 'resource-id': anchor.resourceId, + type: 'Raw' + } + ), + 'proposal-signing-backend': + contract.proposalSigningBackend?.type === 'Mocked' + ? { + 'private-key': contract.proposalSigningBackend?.privateKey, + type: 'Mocked' + } + : contract.proposalSigningBackend?.type === 'DKGNode' + ? { + node: contract.proposalSigningBackend?.node, + type: 'DKGNode' + } + : undefined, + 'withdraw-config': contract.withdrawConfig + ? { + 'withdraw-fee-percentage': + contract.withdrawConfig?.withdrawFeePercentage, + 'withdraw-gaslimit': contract.withdrawConfig?.withdrawGaslimit + } + : undefined + })), + enabled: config.enabled, + 'http-endpoint': config.httpEndpoint, + name: config.name, + 'private-key': config.privateKey, + 'ws-endpoint': config.wsEndpoint + }; + const fullConfigFile: FullConfigFile = { + evm: { + [config.name]: convertedConfig + } + }; + + const toml = toToml(fullConfigFile, { spaces: 4 }); + + // Write the TOML string to a file + fs.writeFileSync(path, toml); + +} + + diff --git a/scripts/evm/ethersGovernorWallets.ts b/scripts/evm/ethersGovernorWallets.ts index 2c312e9b6..843cbd2bc 100644 --- a/scripts/evm/ethersGovernorWallets.ts +++ b/scripts/evm/ethersGovernorWallets.ts @@ -3,7 +3,7 @@ import { getChainIdType } from "@webb-tools/utils"; import { ethers } from "ethers"; export const providerPolygon = new ethers.providers.JsonRpcProvider( - process.env.POLYGON_KEY! + process.env.POLYGON_RPC! ); export const walletPolygon = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -12,7 +12,7 @@ export const walletPolygon = new ethers.Wallet( export const chainIdTypePolygon = getChainIdType(80001); export const providerGoerli = new ethers.providers.JsonRpcProvider( - `https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161` + process.env.GOERLI_RPC ); export const walletGoerli = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -21,7 +21,7 @@ export const walletGoerli = new ethers.Wallet( export const chainIdTypeGoerli = getChainIdType(5); export const providerSepolia = new ethers.providers.JsonRpcProvider( - `https://rpc.sepolia.org` + process.env.SEPOLIA_RPC ); export const walletSepolia = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -30,7 +30,7 @@ export const walletSepolia = new ethers.Wallet( export const chainIdTypeSepolia = getChainIdType(11155111); export const providerOptimism = new ethers.providers.JsonRpcProvider( - process.env.OPTIMISM_KEY! + process.env.OPTIMISM_RPC! ); export const walletOptimism = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -39,7 +39,7 @@ export const walletOptimism = new ethers.Wallet( export const chainIdTypeOptimism = getChainIdType(420); export const providerArbitrum = new ethers.providers.JsonRpcProvider( - process.env.ARBITRUM_KEY! + process.env.ARBITRUM_RPC! ); export const walletArbitrum = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -48,7 +48,7 @@ export const walletArbitrum = new ethers.Wallet( export const chainIdTypeArbitrum = getChainIdType(421613); export const providerMoonbase = new ethers.providers.JsonRpcProvider( - "https://moonbeam-alpha.api.onfinality.io/public" + process.env.MOONBEAM_RPC ); export const walletMoonbase = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -57,7 +57,7 @@ export const walletMoonbase = new ethers.Wallet( export const chainIdTypeMoonbase = getChainIdType(1287); export const providerAvalanche = new ethers.providers.JsonRpcProvider( - process.env.AVALANCHE_KEY! + process.env.AVALANCHE_RPC! ); export const walletAvalanche = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -66,7 +66,7 @@ export const walletAvalanche = new ethers.Wallet( export const chainIdTypeAvalanche = getChainIdType(43113); export const providerAurora = new ethers.providers.JsonRpcProvider( - process.env.AURORA_KEY! + process.env.AURORA_RPC! ); export const walletAurora = new ethers.Wallet( process.env.PRIVATE_KEY!, @@ -75,12 +75,21 @@ export const walletAurora = new ethers.Wallet( export const chainIdTypeAurora = getChainIdType(1313161555); export const providerHarmony = new ethers.providers.JsonRpcProvider( - process.env.HARMONY_KEY! + process.env.HARMONY_RPC! ); export const walletHarmony = new ethers.Wallet( process.env.PRIVATE_KEY!, providerHarmony ); + +export const chainIdTypeBinance = getChainIdType(97); +export const providerBinance = new ethers.providers.JsonRpcProvider( + process.env.BINANCE_RPC! +); +export const walletBinance = new ethers.Wallet( + process.env.PRIVATE_KEY!, + providerBinance +); export const chainIdTypeHarmony = getChainIdType(1666700000); export const providerAthena = new ethers.providers.JsonRpcProvider( diff --git a/yarn.lock b/yarn.lock index 4e5bfa3d5..7a307ccbf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -989,6 +989,13 @@ pirates "^4.0.5" source-map-support "^0.5.16" +"@babel/runtime@^7.15.4": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" + integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": version "7.20.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" @@ -4502,6 +4509,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.17.tgz#5c009e1d9c38f4a2a9d45c0b0c493fe6cdb4bcb5" integrity sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng== +"@types/node@16.11.7": + version "16.11.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42" + integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw== + "@types/node@^10.0.3": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -4946,6 +4958,18 @@ "@webb-tools/utils" "^0.2.9" ethers "5.7.0" +"@webb-tools/anchors@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/anchors/-/anchors-0.4.2.tgz#3c7fafeb76a9ae622e73c5c520c51466080e9a21" + integrity sha512-BlNPNE+/gp/uf7zhhpAlGZTJM7dGTrCZsRyiBSqpUym8ZuG2DwVdvm3+/9TcqUNGycWXFwsAm0OkRLdrUvCmLA== + dependencies: + "@webb-tools/contracts" "^0.4.2" + "@webb-tools/interfaces" "^0.4.2" + "@webb-tools/sdk-core" "0.1.4-113" + "@webb-tools/semaphore" "0.0.1-1" + "@webb-tools/utils" "^0.4.2" + ethers "5.7.0" + "@webb-tools/api-derive@0.1.4-106": version "0.1.4-106" resolved "https://registry.yarnpkg.com/@webb-tools/api-derive/-/api-derive-0.1.4-106.tgz#f878934f2b4f32f29734bb1601ab1080f5163cc7" @@ -4973,6 +4997,15 @@ "@polkadot/rpc-core" "9.2.4" "@webb-tools/protocol-substrate-types" "^0.0.2" +"@webb-tools/api-derive@0.1.4-119": + version "0.1.4-119" + resolved "https://registry.yarnpkg.com/@webb-tools/api-derive/-/api-derive-0.1.4-119.tgz#9705b5696819a1c9bcb6ccca92c2920789cf1aa4" + integrity sha512-sTfu//CXAsCGWStDPTTmKG0YzbtYPfFPa18PZlB9BKnWt2s/cUkGefoeBbj63kPuyOn8QvW1X0uHRe3CL4pg/Q== + dependencies: + "@polkadot/api" "9.2.4" + "@polkadot/rpc-core" "9.2.4" + "@webb-tools/protocol-substrate-types" "^0.0.2" + "@webb-tools/api@0.1.4-106": version "0.1.4-106" resolved "https://registry.yarnpkg.com/@webb-tools/api/-/api-0.1.4-106.tgz#3eeb67bf8b3d1b416ed0a5b98781e59e87322e3a" @@ -4997,6 +5030,15 @@ "@polkadot/api" "9.2.4" "@webb-tools/api-derive" "0.1.4-113" +"@webb-tools/api@0.1.4-119": + version "0.1.4-119" + resolved "https://registry.yarnpkg.com/@webb-tools/api/-/api-0.1.4-119.tgz#6ef554d0f1a23b010a38ac90d0ce145de3a87f78" + integrity sha512-JC7T+7kk8f5c49CyV6JVBEqk3jmlF38MrIRz1JBRdQ9TQ4+lD5IYKkUH5duM/kGmMllmHuyZkI2y33GZ3d8rhA== + dependencies: + "@polkadot/api" "9.2.4" + "@webb-tools/api-derive" "0.1.4-119" + "@webb-tools/protocol-substrate-types" "0.0.3" + "@webb-tools/bridges@^0.2.6", "@webb-tools/bridges@^0.2.7", "@webb-tools/bridges@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/bridges/-/bridges-0.2.9.tgz#ffa92ebbc87967637cd55aa0b99cbb97af39fc09" @@ -5010,6 +5052,19 @@ "@webb-tools/utils" "^0.2.9" ethers "5.7.0" +"@webb-tools/bridges@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/bridges/-/bridges-0.4.2.tgz#734191e76917269ae0a569b956b8c962a51f9c12" + integrity sha512-CirSyK9s03a2EQyzlfcYi7xPMNwiR8OOhqPzfl3Vb6Ou39sh+7MdieuOMKsLG7VTXWiNPowKpQ3QRSZlhd0I2Q== + dependencies: + "@webb-tools/anchors" "^0.4.2" + "@webb-tools/contracts" "^0.4.2" + "@webb-tools/interfaces" "^0.4.2" + "@webb-tools/sdk-core" "0.1.4-113" + "@webb-tools/tokens" "^0.4.2" + "@webb-tools/utils" "^0.4.2" + ethers "5.7.0" + "@webb-tools/contracts@^0.2.6", "@webb-tools/contracts@^0.2.7", "@webb-tools/contracts@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/contracts/-/contracts-0.2.9.tgz#e3b1d1cd2f2bbf2d46ee2f19beb4c899c22d1b10" @@ -5017,6 +5072,25 @@ dependencies: ethers "5.7.0" +"@webb-tools/contracts@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/contracts/-/contracts-0.4.2.tgz#09478a26115516a1f29daaf438b038506a518482" + integrity sha512-PWRpGFi2niBLBLYL+K+Bi4yPfoLUnxOby4gj/mwj64io/E6EWd6gQeCzRmKTO0Wgn7keu4/8FwECun7OjRoSPQ== + dependencies: + ethers "5.7.0" + +"@webb-tools/dkg-substrate-types@0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@webb-tools/dkg-substrate-types/-/dkg-substrate-types-0.0.1.tgz#a374cea87002b26bb567c5ab3df14f878c9647c8" + integrity sha512-B7vk+1PRF7BdT9URJF+U1+JsBPmhvMkzldVyEE+tQaKYsyyaZPmb+Bye7DkMZCSDqJKgyfIBaN3zcKxKqqjTAA== + dependencies: + "@babel/runtime" "^7.19.0" + "@open-web3/orml-types" "^1.1.3" + "@polkadot/api-derive" "9.2.4" + "@polkadot/dev" "^0.67.86" + "@polkadot/typegen" "9.2.4" + "@polkadot/types" "9.2.4" + "@webb-tools/interfaces@^0.2.6", "@webb-tools/interfaces@^0.2.7", "@webb-tools/interfaces@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/interfaces/-/interfaces-0.2.9.tgz#81b5f39b34cd427dbd4b6a57fd0a3441f2db6e88" @@ -5025,6 +5099,14 @@ "@webb-tools/contracts" "^0.2.9" "@webb-tools/sdk-core" "0.1.4-105" +"@webb-tools/interfaces@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/interfaces/-/interfaces-0.4.2.tgz#fd18146e5284225730cff2272059a6a0b01734a4" + integrity sha512-HD3W+cgLXBr0jO6F/Llu82w0y7jMyi4WOQC/8Co0OmUNGbZH+YAVVi0InBj1kPlXwkTSCxbay2ialZV6ees/cA== + dependencies: + "@webb-tools/contracts" "^0.4.2" + "@webb-tools/sdk-core" "0.1.4-113" + "@webb-tools/protocol-solidity@0.2.6": version "0.2.6" resolved "https://registry.yarnpkg.com/@webb-tools/protocol-solidity/-/protocol-solidity-0.2.6.tgz#975ca62c7c31c1920b3f1ffbbf61eb0da82096e8" @@ -5051,6 +5133,19 @@ "@webb-tools/utils" "^0.2.7" "@webb-tools/vbridge" "^0.2.7" +"@webb-tools/protocol-solidity@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/protocol-solidity/-/protocol-solidity-0.4.2.tgz#32ed1ccdc226880d372ab7760301f5a1b0dbfdbc" + integrity sha512-mjaJMDfoR3v7GdtrzSXQXkabHe+ecWw/0/LwM4DtxcNcx1iYJL0gtCFI4EBPeGirhBXCd1oYWnkLBE4etCCInw== + dependencies: + "@webb-tools/anchors" "^0.4.2" + "@webb-tools/bridges" "^0.4.2" + "@webb-tools/contracts" "^0.4.2" + "@webb-tools/interfaces" "^0.4.2" + "@webb-tools/tokens" "^0.4.2" + "@webb-tools/utils" "^0.4.2" + "@webb-tools/vbridge" "^0.4.2" + "@webb-tools/protocol-substrate-types@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@webb-tools/protocol-substrate-types/-/protocol-substrate-types-0.0.1.tgz#69e082bd34a638350c1a43e43d0837507133f225" @@ -5063,6 +5158,18 @@ "@polkadot/typegen" "9.2.4" "@polkadot/types" "9.2.4" +"@webb-tools/protocol-substrate-types@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@webb-tools/protocol-substrate-types/-/protocol-substrate-types-0.0.3.tgz#38b35fe6bc13dc9c7219b5ffab78894fc7b500f8" + integrity sha512-DKeyu94Yetsk3weJOiPa2Rwtlr47f/+zVg+v5eld0ET/KtosH1hKrRIIXJdJ1sAMet2SqRC0jxxDRh1OhDcZRw== + dependencies: + "@babel/runtime" "^7.19.0" + "@open-web3/orml-types" "^1.1.3" + "@polkadot/api-derive" "9.2.4" + "@polkadot/dev" "^0.67.86" + "@polkadot/typegen" "9.2.4" + "@polkadot/types" "9.2.4" + "@webb-tools/protocol-substrate-types@^0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@webb-tools/protocol-substrate-types/-/protocol-substrate-types-0.0.2.tgz#27953ee61a248430cee3fc2bbfc6b2260ecc8b16" @@ -5150,6 +5257,21 @@ ffjavascript "0.2.55" snarkjs "0.4.22" +"@webb-tools/sdk-core@0.1.4-119": + version "0.1.4-119" + resolved "https://registry.yarnpkg.com/@webb-tools/sdk-core/-/sdk-core-0.1.4-119.tgz#b242465329bd9fa86cfda8521e0587a81d237ddd" + integrity sha512-VyUWwRrhujfz+UP6Khy0TRBZQQsgxhqq9RYN7QDvLeinJFtMsXJ4RDT2DRWP4z3HuRXpMP9DUv6dIhorS34bAw== + dependencies: + "@polkadot/util" "10.1.7" + "@webb-tools/wasm-utils" "0.1.4-119" + bignumber.js "^9.0.0" + circomlibjs "0.0.8" + elliptic "6.5.4" + eth-sig-util "^3.0.1" + ethers "5.7.0" + ffjavascript "0.2.55" + snarkjs "0.4.22" + "@webb-tools/semaphore-group@0.0.1-1": version "0.0.1-1" resolved "https://registry.yarnpkg.com/@webb-tools/semaphore-group/-/semaphore-group-0.0.1-1.tgz#969475fa015287d95505310a4cae4b1f769dd016" @@ -5335,6 +5457,30 @@ prettier "^2.2.1" tiny-secp256k1 "^2.2.1" +"@webb-tools/test-utils@0.1.4-119": + version "0.1.4-119" + resolved "https://registry.yarnpkg.com/@webb-tools/test-utils/-/test-utils-0.1.4-119.tgz#e5654b645f6edc01a5b6a7490827527d67de39ab" + integrity sha512-RVwidzGSIP9XNVsmYbHiIl+XEptHbpPgu/GBqYSM0UF4jIn83X/Dkc9kyKHzkyqTq1QcYya7k11gljs4FZFhow== + dependencies: + "@polkadot/api" "9.2.4" + "@polkadot/keyring" "10.1.7" + "@types/node" "16.11.7" + "@webb-tools/api" "0.1.4-119" + "@webb-tools/dkg-substrate-types" "0.0.1" + "@webb-tools/protocol-solidity" "0.4.2" + "@webb-tools/protocol-substrate-types" "0.0.3" + "@webb-tools/sdk-core" "0.1.4-119" + "@webb-tools/tokens" "0.4.2" + "@webb-tools/utils" "0.4.2" + "@webb-tools/vbridge" "0.4.2" + ecpair "^2.0.1" + ethers "5.7.0" + ganache "7.5.0" + get-port "6.1.2" + is-ci "^3.0.1" + prettier "^2.2.1" + tiny-secp256k1 "^2.2.1" + "@webb-tools/tokens@0.2.6": version "0.2.6" resolved "https://registry.yarnpkg.com/@webb-tools/tokens/-/tokens-0.2.6.tgz#33c84b5e27c565dab4a0f4f7bec08bdeffabd46e" @@ -5355,6 +5501,16 @@ "@webb-tools/utils" "^0.2.7" ethers "5.7.0" +"@webb-tools/tokens@0.4.2", "@webb-tools/tokens@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/tokens/-/tokens-0.4.2.tgz#1be5e16b48298eb451d18297a6d3af099f718236" + integrity sha512-zVYmBJRc8RWCuigUT7giczISsSaQLShDGpTwbra57NhIhnvhaSwUQlhj/UOU4XxFQJQk1MBk3x67cy+eBZvBHg== + dependencies: + "@webb-tools/contracts" "^0.4.2" + "@webb-tools/sdk-core" "0.1.4-113" + "@webb-tools/utils" "^0.4.2" + ethers "5.7.0" + "@webb-tools/tokens@^0.2.6", "@webb-tools/tokens@^0.2.7", "@webb-tools/tokens@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/tokens/-/tokens-0.2.9.tgz#00de63cb9f2e613a30779d6657d27227eb18d6d9" @@ -5381,6 +5537,14 @@ "@webb-tools/sdk-core" "0.1.4-105" ethers "5.7.0" +"@webb-tools/utils@0.4.2", "@webb-tools/utils@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/utils/-/utils-0.4.2.tgz#5507c274474adddd460299405428116377f6ab8f" + integrity sha512-PKgHBOoqeZlxNBZsDabUGYs8T/KDFk+70842fFqa5qNtbwdZfoxkGddGdWlxm9DeKGz853f+rCW1zlJVBeBQ1w== + dependencies: + "@webb-tools/sdk-core" "0.1.4-113" + ethers "5.7.0" + "@webb-tools/utils@^0.2.6", "@webb-tools/utils@^0.2.7", "@webb-tools/utils@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/utils/-/utils-0.2.9.tgz#21a997d60f3bfe7e895441deb61184dceb1c7793" @@ -5413,6 +5577,18 @@ "@webb-tools/utils" "^0.2.7" ethers "5.7.0" +"@webb-tools/vbridge@0.4.2", "@webb-tools/vbridge@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@webb-tools/vbridge/-/vbridge-0.4.2.tgz#b48311d32f28b540c4020f594406eed74174ead4" + integrity sha512-Hcetp82/roljFSR0ON8dPQsFUXVXZnkfJ0HY/PDZXcQrcVILhrBtb9UKK82K1qMGy4iv5WG5Yn4Be2MujeHjxg== + dependencies: + "@webb-tools/bridges" "^0.4.2" + "@webb-tools/contracts" "^0.4.2" + "@webb-tools/sdk-core" "0.1.4-113" + "@webb-tools/tokens" "^0.4.2" + "@webb-tools/utils" "^0.4.2" + ethers "5.7.0" + "@webb-tools/vbridge@^0.2.6", "@webb-tools/vbridge@^0.2.7": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/vbridge/-/vbridge-0.2.9.tgz#6780f6f2a68939f887358cfddf49030e6bad7f1c" @@ -5450,6 +5626,11 @@ resolved "https://registry.yarnpkg.com/@webb-tools/wasm-utils/-/wasm-utils-0.1.4-113.tgz#742fb5d1bd22acbc80c4b5bf8a116f622ebd5b38" integrity sha512-8MLiGFyGxnDS+iV6wZdtdBHDKFnySmTUD81SlvqJcCGQ+6VoHDP9Y1iYTm5cEW0fvpuwPtyJnDm6du/wcn3GKw== +"@webb-tools/wasm-utils@0.1.4-119": + version "0.1.4-119" + resolved "https://registry.yarnpkg.com/@webb-tools/wasm-utils/-/wasm-utils-0.1.4-119.tgz#9519618bc72d034ccf27b4d08b0ade66b863ebdc" + integrity sha512-0/ilc7CJS7NJJwSbWPIWcr0WG7hlJks1NhHw2Rg1d9qlKikX4p5UOW3jQg3MbaiTB6J82CX/j8E9+kVWWQ6QoQ== + "@webpack-cli/configtest@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" @@ -10877,6 +11058,23 @@ ganache@7.4.1: bufferutil "4.0.5" utf-8-validate "5.0.7" +ganache@7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.5.0.tgz#f7a36050b6ff85e5557d6511ddca470a0a40f37c" + integrity sha512-afNTJYBEaFrLPRrn7eUxH39TgnrffvHn/4T6THzQrc3rpfe4DOxw2nY2XEQxfsq1t4OqKSXtxomzyo26RZiOzw== + dependencies: + "@trufflesuite/bigint-buffer" "1.1.10" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "5.1.1" + "@types/seedrandom" "3.0.1" + emittery "0.10.0" + keccak "3.0.2" + leveldown "6.1.0" + secp256k1 "4.0.3" + optionalDependencies: + bufferutil "4.0.5" + utf-8-validate "5.0.7" + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -12572,6 +12770,13 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +itertools@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/itertools/-/itertools-1.7.1.tgz#39fb110782b7f57b9c14782c25fe35bd3997d4fc" + integrity sha512-0sC8t0HYOH0wb/mU5eLmp2g19yfhqho12Q6kCX6MGkNEEJQz97LIXzZ2bbIDyzBnQGcMixmcAtByzKjiaFkw8Q== + dependencies: + "@babel/runtime" "^7.15.4" + jake@^10.8.5: version "10.8.5" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" @@ -13247,7 +13452,7 @@ keccak@3.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -keccak@^3.0.0, keccak@^3.0.2: +keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== @@ -17059,7 +17264,7 @@ secp256k1@4.0.2: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -secp256k1@^4.0.1: +secp256k1@4.0.3, secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== @@ -18337,6 +18542,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tomlify-j0.4@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz#99414d45268c3a3b8bf38be82145b7bba34b7473" + integrity sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ== + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" From 5c163ad838e33058b2fcdf398c9aaa8dbffa0d3d Mon Sep 17 00:00:00 2001 From: salman01zp Date: Mon, 9 Jan 2023 20:00:10 +0530 Subject: [PATCH 02/17] create2 deployment script and typechain fixes --- package.json | 2 +- packages/anchors/src/AnchorHandler.ts | 24 ++ packages/anchors/tsconfig.build.json | 2 +- packages/bridges/src/SignatureBridgeSide.ts | 20 +- packages/contracts/package.json | 9 +- packages/tokens/package.json | 1 + packages/tokens/src/FungibleTokenWrapper.ts | 32 ++ packages/tokens/src/TokenWrapperHandler.ts | 23 ++ packages/tokens/src/Treasury.ts | 22 ++ packages/tokens/src/TreasuryHandler.ts | 23 ++ scripts/evm/deployments/VBridge8Side.ts | 7 +- .../evm/deployments/create2/create2Bridge.ts | 356 ++++++++++++++++++ .../deployments/create2/deploymentScript.ts | 200 ++++++++++ .../deployments/relayer-config/moonbase.toml | 40 ++ .../deployments/relayer-config/mumbai.toml | 26 +- scripts/evm/deployments/utils.ts | 1 - 16 files changed, 762 insertions(+), 26 deletions(-) create mode 100644 scripts/evm/deployments/create2/create2Bridge.ts create mode 100644 scripts/evm/deployments/create2/deploymentScript.ts create mode 100644 scripts/evm/deployments/relayer-config/moonbase.toml diff --git a/package.json b/package.json index 868268fdb..04eda508b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "packages/*" ], "scripts": { - "compile": "lerna run compile", + "compile": "lerna run compile --scope=@webb-tools/contracts", "build": "yarn compile && yarn build:packages", "setup": "yarn compile && yarn build:circuits && yarn build:ptau", "test": "yarn workspace @webb-tools/contracts run test", diff --git a/packages/anchors/src/AnchorHandler.ts b/packages/anchors/src/AnchorHandler.ts index be81fc9d5..2a0a84577 100644 --- a/packages/anchors/src/AnchorHandler.ts +++ b/packages/anchors/src/AnchorHandler.ts @@ -3,6 +3,7 @@ import { AnchorHandler as AnchorHandlerContract, AnchorHandler__factory, } from '@webb-tools/contracts'; +import { Deployer } from './Deployer'; export class AnchorHandler { contract: AnchorHandlerContract; @@ -25,6 +26,29 @@ export class AnchorHandler { return handler; } + public static async create2AnchorHandler( + bridgeAddress: string, + initResourceIds: string[], + initContractAddresses: string[], + deployer: Deployer, + saltHex: string, + signer: ethers.Signer + ) { + const argTypes = ['address', 'bytes32[]', 'address[]']; + const args = [bridgeAddress, initResourceIds, initContractAddresses]; + const { contract: contract } = await deployer.deploy( + AnchorHandler__factory, + saltHex, + signer, + undefined, + argTypes, + args + ); + + const handler = new AnchorHandler(contract); + return handler; + } + public static async connect(handlerAddress: string, signer: ethers.Signer) { const handlerContract = AnchorHandler__factory.connect(handlerAddress, signer); const handler = new AnchorHandler(handlerContract); diff --git a/packages/anchors/tsconfig.build.json b/packages/anchors/tsconfig.build.json index b3ebe74b3..b051ff381 100644 --- a/packages/anchors/tsconfig.build.json +++ b/packages/anchors/tsconfig.build.json @@ -5,6 +5,6 @@ "exclude": [], "extends": "../../tsconfig.build.json", "include": [ - "./src/**/*.ts", + "./src/*.ts", ] } diff --git a/packages/bridges/src/SignatureBridgeSide.ts b/packages/bridges/src/SignatureBridgeSide.ts index 840b1d13d..8dc13436b 100644 --- a/packages/bridges/src/SignatureBridgeSide.ts +++ b/packages/bridges/src/SignatureBridgeSide.ts @@ -2,7 +2,7 @@ import { BigNumber, ethers } from 'ethers'; import { SignatureBridge, SignatureBridge__factory } from '@webb-tools/contracts'; import { FungibleTokenWrapper, Treasury } from '@webb-tools/tokens'; import { TokenWrapperHandler } from '@webb-tools/tokens'; -import { AnchorHandler } from '@webb-tools/anchors'; +import { AnchorHandler, Deployer } from '@webb-tools/anchors'; import { IVAnchor, IBridgeSide, Proposal } from '@webb-tools/interfaces'; import { TreasuryHandler } from '@webb-tools/tokens'; import { getChainIdType } from '@webb-tools/utils'; @@ -52,6 +52,24 @@ export class SignatureBridgeSide implements IBridgeSide { return bridgeSide; } + public static async create2BridgeSide( + deployer: Deployer, + saltHex: string, + admin: ethers.Wallet + ): Promise { + const { contract: deployedBridge } = await deployer.deploy( + SignatureBridge__factory, + saltHex, + admin + ); + const bridgeSide = new SignatureBridgeSide(deployedBridge, (data: any) => { + return Promise.resolve(signMessage(admin, data)); + }); + bridgeSide.admin = admin; + bridgeSide.governor = admin; + return bridgeSide; + } + /** * When an existing SignatureBridge is connected, the governor must be configured. * In the case of connectMocked, a wallet address is passed which will act as the governor. diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 039b55f70..b5658fdba 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,17 +1,14 @@ { "name": "@webb-tools/contracts", - "main": "./lib/index.js", + "main": "./typechain/index.ts", "license": "GPL-3.0-or-later", "author": "Webb Developers ", "scripts": { - "compile": "yarn compile:private && yarn build:library && yarn copy:declarations", - "compile:private": "yarn run clean && yarn run build:contracts", - "build": "exit 0", + "compile": "yarn run clean && yarn run build:contracts", + "build": "yarn run build:library", "clean": "rimraf -rf ./lib && rimraf -rf ./typechain && rimraf -rf ./cache && rimraf -rf ./artifacts", "build:library": "tsc -p tsconfig.build.json", "test": "npx hardhat test", - "test:parallel": "npx hardhat test --parallel", - "copy:declarations": "copyfiles -f ./typechain/*.d.ts ./lib", "build:contracts": "npx hardhat compile", "test:gas-reporter": "REPORT_GAS=true npx hardhat test --parallel" }, diff --git a/packages/tokens/package.json b/packages/tokens/package.json index 807f11279..b81501a15 100644 --- a/packages/tokens/package.json +++ b/packages/tokens/package.json @@ -9,6 +9,7 @@ "compile": "tsc -p tsconfig.build.json" }, "dependencies": { + "@webb-tools/anchors": "^0.5.3", "@webb-tools/contracts": "^0.5.3", "@webb-tools/sdk-core": "0.1.4-113", "@webb-tools/utils": "^0.5.1", diff --git a/packages/tokens/src/FungibleTokenWrapper.ts b/packages/tokens/src/FungibleTokenWrapper.ts index dfe14ca7f..b71bd7ebd 100644 --- a/packages/tokens/src/FungibleTokenWrapper.ts +++ b/packages/tokens/src/FungibleTokenWrapper.ts @@ -6,6 +6,7 @@ import { FungibleTokenWrapper__factory, } from '@webb-tools/contracts'; import { assert } from 'chai'; +import { Deployer } from '@webb-tools/anchors'; export class FungibleTokenWrapper { contract: FungibleTokenWrapperContract; @@ -42,6 +43,37 @@ export class FungibleTokenWrapper { return tokenWrapper; } + public static async create2FungibleTokenWrapper( + name: string, + symbol: string, + feePercentage: number, + feeRecipient: string, + handler: string, + limit: string, + isNativeAllowed: boolean, + deployer: Deployer, + saltHex: string, + signer: ethers.Signer + ) { + assert(feePercentage <= 10_000, 'feePercentage should be less than 10_000'); + + const argTypes = ['string', 'string']; + const args = [name, symbol]; + const { contract: contract } = await deployer.deploy( + FungibleTokenWrapper__factory, + saltHex, + signer, + undefined, + argTypes, + args + ); + + // Initialize immediately after deployment as we use an intializer now + await contract.initialize(feePercentage, feeRecipient, handler, limit, isNativeAllowed); + const tokenWrapper = new FungibleTokenWrapper(contract, signer); + return tokenWrapper; + } + public static connect(address: string, signer: ethers.Signer) { const contract = FungibleTokenWrapper__factory.connect(address, signer); const tokenWrapper = new FungibleTokenWrapper(contract, signer); diff --git a/packages/tokens/src/TokenWrapperHandler.ts b/packages/tokens/src/TokenWrapperHandler.ts index 93e506431..8782bf950 100644 --- a/packages/tokens/src/TokenWrapperHandler.ts +++ b/packages/tokens/src/TokenWrapperHandler.ts @@ -3,6 +3,7 @@ import { TokenWrapperHandler as TokenWrapperHandlerContract, TokenWrapperHandler__factory, } from '@webb-tools/contracts'; +import { Deployer } from '@webb-tools/anchors'; export class TokenWrapperHandler { contract: TokenWrapperHandlerContract; @@ -25,6 +26,28 @@ export class TokenWrapperHandler { return handler; } + public static async create2TokenWrapperHandler( + bridgeAddress: string, + initResourceIds: string[], + initContractAddresses: string[], + deployer: Deployer, + saltHex: string, + signer: ethers.Signer + ) { + const argTypes = ['address', 'bytes32[]', 'address[]']; + const args = [bridgeAddress, initResourceIds, initContractAddresses]; + const { contract: contract } = await deployer.deploy( + TokenWrapperHandler__factory, + saltHex, + signer, + undefined, + argTypes, + args + ); + const handler = new TokenWrapperHandler(contract); + return handler; + } + public static async connect(handlerAddress: string, signer: ethers.Signer) { const handlerContract = TokenWrapperHandler__factory.connect(handlerAddress, signer); const handler = new TokenWrapperHandler(handlerContract); diff --git a/packages/tokens/src/Treasury.ts b/packages/tokens/src/Treasury.ts index 34a9d1bff..7a460c514 100644 --- a/packages/tokens/src/Treasury.ts +++ b/packages/tokens/src/Treasury.ts @@ -2,6 +2,7 @@ import { BigNumber, ethers } from 'ethers'; import { getChainIdType } from '@webb-tools/utils'; import { toHex, generateFunctionSigHash, toFixedHex } from '@webb-tools/sdk-core'; import { Treasury as TreasuryContract, Treasury__factory } from '@webb-tools/contracts'; +import { Deployer } from '@webb-tools/anchors'; export class Treasury { contract: TreasuryContract; @@ -24,6 +25,27 @@ export class Treasury { return handler; } + public static async create2Treasury( + treasuryHandler: string, + deployer: Deployer, + saltHex: string, + sender: ethers.Signer + ) { + const argTypes = ['string']; + const args = [treasuryHandler]; + const { contract: contract } = await deployer.deploy( + Treasury__factory, + saltHex, + sender, + undefined, + argTypes, + args + ); + + const handler = new Treasury(contract, deployer.signer); + return handler; + } + public static connect(address: string, signer: ethers.Signer) { const contract = Treasury__factory.connect(address, signer); const treasury = new Treasury(contract, signer); diff --git a/packages/tokens/src/TreasuryHandler.ts b/packages/tokens/src/TreasuryHandler.ts index c15760f34..5adb82fc3 100644 --- a/packages/tokens/src/TreasuryHandler.ts +++ b/packages/tokens/src/TreasuryHandler.ts @@ -3,6 +3,7 @@ import { TreasuryHandler as TreasuryHandlerContract, TreasuryHandler__factory, } from '@webb-tools/contracts'; +import { Deployer } from '@webb-tools/anchors'; export class TreasuryHandler { contract: TreasuryHandlerContract; @@ -25,6 +26,28 @@ export class TreasuryHandler { return handler; } + public static async create2TreasuryHandler( + bridgeAddress: string, + initResourceIds: string[], + initContractAddresses: string[], + deployer: Deployer, + saltHex: string, + sender: ethers.Signer + ) { + const argTypes = ['address', 'bytes32[]', 'address[]']; + const args = [bridgeAddress, initResourceIds, initContractAddresses]; + const { contract: contract } = await deployer.deploy( + TreasuryHandler__factory, + saltHex, + sender, + undefined, + argTypes, + args + ); + const handler = new TreasuryHandler(contract); + return handler; + } + public static async connect(handlerAddress: string, signer: ethers.Signer) { const handlerContract = TreasuryHandler__factory.connect(handlerAddress, signer); const handler = new TreasuryHandler(handlerContract); diff --git a/scripts/evm/deployments/VBridge8Side.ts b/scripts/evm/deployments/VBridge8Side.ts index 0004055fb..d1ff1701f 100644 --- a/scripts/evm/deployments/VBridge8Side.ts +++ b/scripts/evm/deployments/VBridge8Side.ts @@ -155,13 +155,14 @@ async function run() { for (const otherAnchor of Array.from(bridgeConfig.vAnchors.values())) { if (otherAnchor !== anchor) { linkedAnchors.push({ - chainId: chainId.toString(), + chainId: (await otherAnchor.contract.getChainId()).toString(), address: otherAnchor.contract.address.toLowerCase(), type: "Evm" }); } } + const endPointConfig = endPoints[typedChainId]; // construct chain configuration const chainConfig = getEvmChainConfig( chainId, @@ -170,13 +171,13 @@ async function run() { deployers[typedChainId], linkedAnchors, proposalSigningBackend, - endPoints[typedChainId], + endPointConfig, beneficiary ); // convert config to kebab case and write to json file const dirPath = `${__dirname}/relayer-config`; - writeEvmChainConfig(`${dirPath}/mumbai.toml`, chainConfig + writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig ) console.log( diff --git a/scripts/evm/deployments/create2/create2Bridge.ts b/scripts/evm/deployments/create2/create2Bridge.ts new file mode 100644 index 000000000..c499b99c6 --- /dev/null +++ b/scripts/evm/deployments/create2/create2Bridge.ts @@ -0,0 +1,356 @@ +import { ethers, BigNumber } from 'ethers'; +import { SignatureBridgeSide } from '@webb-tools/bridges'; +import { + FungibleTokenWrapper, + TreasuryHandler, + Treasury, + TokenWrapperHandler, +} from '@webb-tools/tokens'; +import { AnchorIdentifier, GovernorConfig, DeployerConfig } from '@webb-tools/interfaces'; +import { AnchorHandler, Deployer, PoseidonHasher, VAnchor } from '@webb-tools/anchors'; +import { getChainIdType, ZkComponents } from '@webb-tools/utils'; +import { Verifier } from '@webb-tools/vbridge'; +import { DeterministicDeployFactory__factory } from '@webb-tools/contracts'; + +export type ExistingAssetInput = { + // A record of chainId => address of wrappable tokens to be supported in the webbToken. + asset: Record; +}; + +// Users define an input for a completely new bridge +export type VBridgeInput = { + // The tokens which should be supported after deploying from this bridge input + vAnchorInputs: ExistingAssetInput; + + // The IDs of the chains to deploy to + chainIDs: number[]; + + // The number of max edges for vanchors, if not provided, maxEdges is derived from passed chainIDs. + maxEdges?: number; + + // Existing webb tokens can be connected + webbTokens: Map; +}; + +export type BridgeConfig = { + // The addresses of tokens available to be transferred over this bridge config + // chainId => FungibleTokenWrapperAddress + webbTokenAddresses: Map; + + // The addresses of the anchors for the FungibleTokenWrapper + // {anchorIdentifier} => anchorAddress + vAnchors: Map; + + // The addresses of the Bridge contracts (bridgeSides) to interact with + vBridgeSides: Map; +}; + +const zeroAddress = '0x0000000000000000000000000000000000000000'; + +function checkNativeAddress(tokenAddress: string): boolean { + if (tokenAddress === zeroAddress || tokenAddress === '0') { + return true; + } + return false; +} + +// A bridge is +export class Create2VBridge { + private constructor( + // Mapping of chainId => vBridgeSide + public vBridgeSides: Map, + + // chainID => FungibleTokenWrapper (webbToken) address + public webbTokenAddresses: Map, + + // Mapping of resourceID => linkedVAnchor[]; so we know which + // vanchors need updating when the anchor for resourceID changes state. + public linkedVAnchors: Map, + + // Mapping of anchorIdString => Anchor for easy anchor access + public vAnchors: Map + ) {} + + //might need some editing depending on whether anchor identifier structure changes + public static createVAnchorIdString(vAnchorIdentifier: AnchorIdentifier): string { + return `${vAnchorIdentifier.chainId.toString()}`; + } + + public static createVAnchorIdentifier(vAnchorString: string): AnchorIdentifier | null { + return { + chainId: Number(vAnchorString), + }; + } + + // Takes as input a 2D array [[anchors to link together], [...]] + // And returns a map of resourceID => linkedAnchor[] + public static async createLinkedVAnchorMap( + createdVAnchors: VAnchor[][] + ): Promise> { + let linkedVAnchorMap = new Map(); + for (let groupedVAnchors of createdVAnchors) { + for (let i = 0; i < groupedVAnchors.length; i++) { + // create the resourceID of this anchor + let resourceID = await groupedVAnchors[i].createResourceId(); + let linkedVAnchors = []; + for (let j = 0; j < groupedVAnchors.length; j++) { + if (i != j) { + linkedVAnchors.push(groupedVAnchors[j]); + } + } + // insert the linked anchors into the linked map + linkedVAnchorMap.set(resourceID, linkedVAnchors); + } + } + return linkedVAnchorMap; + } + + // Deployments of all contracts for the bridge will be done with the DeployerConfig. + // After deployments, the wallet in the DeployerConfig will transfer ownership + // to the initialGovernor + public static async deployVariableAnchorBridge( + vBridgeInput: VBridgeInput, + deployers: DeployerConfig, + initialGovernors: GovernorConfig, + smallCircuitZkComponents: ZkComponents, + largeCircuitZkComponents: ZkComponents + ): Promise { + const salt = '42'; + const saltHex = ethers.utils.id(salt); + let webbTokenAddresses: Map = new Map(); + let vBridgeSides: Map = new Map(); + let vAnchors: Map = new Map(); + // createdAnchors have the form of [[Anchors created on chainID], [...]] + // and anchors in the subArrays of thhe same index should be linked together + let createdVAnchors: VAnchor[][] = []; + + // Determine the maxEdges for the anchors on this VBridge deployment + let maxEdges = vBridgeInput.maxEdges ?? vBridgeInput.chainIDs.length > 2 ? 7 : 1; + + for (let chainID of vBridgeInput.chainIDs) { + const initialGovernor = initialGovernors[chainID]; + // Create the bridgeSide + let deployer: Deployer; + const Deployer1 = new DeterministicDeployFactory__factory(deployers[chainID]); + let deployer1Contract = await Deployer1.deploy(); + await deployer1Contract.deployed(); + deployer = new Deployer(deployer1Contract); + + let vBridgeInstance = await SignatureBridgeSide.create2BridgeSide(deployer, saltHex, deployers[chainID] ); + + const handler = await AnchorHandler.create2AnchorHandler( + vBridgeInstance.contract.address, + [], + [], + deployer, + saltHex, + deployers[chainID] + ); + vBridgeInstance.setAnchorHandler(handler); + + // Create Treasury and TreasuryHandler + const treasuryHandler = await TreasuryHandler.create2TreasuryHandler( + vBridgeInstance.contract.address, + [], + [], + deployer, + saltHex, + vBridgeInstance.admin + ); + const treasury = await Treasury.create2Treasury( + treasuryHandler.contract.address, + deployer, + saltHex, + vBridgeInstance.admin + ); + + await vBridgeInstance.setTreasuryHandler(treasuryHandler); + await vBridgeInstance.setTreasuryResourceWithSignature(treasury); + + // Create the Hasher and Verifier for the chain + const hasherInstance = await PoseidonHasher.create2PoseidonHasher(deployer, saltHex, deployers[chainID]); + + const verifier = await Verifier.create2Verifier(deployer, saltHex, deployers[chainID]); + let verifierInstance = verifier.contract; + + // Check the addresses of the asset. If it is zero, deploy a native token wrapper + let allowedNative: boolean = false; + for (const tokenToBeWrapped of vBridgeInput.vAnchorInputs.asset[chainID]!) { + // If passed '0' or zero address, token to be wrapped should support native. + if (checkNativeAddress(tokenToBeWrapped)) { + allowedNative = true; + } + } + + // Deploy TokenWrapperHandler + const tokenWrapperHandler = await TokenWrapperHandler.create2TokenWrapperHandler( + vBridgeInstance.contract.address, + [], + [], + deployer, + saltHex, + vBridgeInstance.admin + ); + + let tokenInstance: FungibleTokenWrapper; + if (!vBridgeInput.webbTokens.get(chainID)) { + tokenInstance = await FungibleTokenWrapper.create2FungibleTokenWrapper( + `webbWETH`, + `webbWETH`, + 0, + treasury.contract.address, + tokenWrapperHandler.contract.address, + '10000000000000000000000000', + allowedNative, + deployer, + saltHex, + deployers[chainID] + ); + } else { + tokenInstance = vBridgeInput.webbTokens.get(chainID)!; + } + + await vBridgeInstance.setTokenWrapperHandler(tokenWrapperHandler); + await vBridgeInstance.setFungibleTokenResourceWithSignature(tokenInstance); + + // Add all token addresses to the governed token instance. + for (const tokenToBeWrapped of vBridgeInput.vAnchorInputs.asset[chainID]!) { + // if the address is not '0', then add it + if (!checkNativeAddress(tokenToBeWrapped)) { + await vBridgeInstance.executeAddTokenProposalWithSig(tokenInstance, tokenToBeWrapped); + } + } + + // append each token + webbTokenAddresses.set(chainID, tokenInstance.contract.address); + + let chainGroupedVAnchors: VAnchor[] = []; + + // loop through all the anchor sizes on the token + const vAnchorInstance = await VAnchor.create2VAnchor( + deployer, + saltHex, + verifierInstance.address, + 30, + hasherInstance.contract.address, + handler.contract.address, + tokenInstance.contract.address, + maxEdges, + smallCircuitZkComponents, + largeCircuitZkComponents, + deployers[chainID] + ); + + // grant minting rights to the anchor + await tokenInstance.grantMinterRole(vAnchorInstance.contract.address); + + chainGroupedVAnchors.push(vAnchorInstance); + vAnchors.set(Create2VBridge.createVAnchorIdString({ chainId: chainID }), vAnchorInstance); + + await Create2VBridge.setPermissions(vBridgeInstance, chainGroupedVAnchors); + createdVAnchors.push(chainGroupedVAnchors); + + // Transfer ownership of the bridge to the initialGovernor + const tx = await vBridgeInstance.transferOwnership(initialGovernor, 0); + await tx.wait(); + vBridgeSides.set(chainID, vBridgeInstance); + } + + // All anchors created, massage data to group anchors which should be linked together + let groupLinkedVAnchors: VAnchor[][] = []; + + // all subarrays will have the same number of elements + for (let i = 0; i < createdVAnchors[0].length; i++) { + let linkedAnchors: VAnchor[] = []; + for (let j = 0; j < createdVAnchors.length; j++) { + linkedAnchors.push(createdVAnchors[j][i]); + } + groupLinkedVAnchors.push(linkedAnchors); + } + + // link the anchors + const linkedVAnchorMap = await Create2VBridge.createLinkedVAnchorMap(groupLinkedVAnchors); + + return new Create2VBridge(vBridgeSides, webbTokenAddresses, linkedVAnchorMap, vAnchors); + } + + // The setPermissions method accepts initialized bridgeSide and anchors. + // it creates the anchor handler and sets the appropriate permissions + // for the bridgeSide/anchorHandler/anchor + public static async setPermissions( + vBridgeSide: SignatureBridgeSide, + vAnchors: VAnchor[] + ): Promise { + let tokenDenomination = '1000000000000000000'; // 1 ether + for (let vAnchor of vAnchors) { + await vBridgeSide.connectAnchorWithSignature(vAnchor); + await vBridgeSide.executeMinWithdrawalLimitProposalWithSig( + vAnchor, + BigNumber.from(0).toString() + ); + await vBridgeSide.executeMaxDepositLimitProposalWithSig( + vAnchor, + BigNumber.from(tokenDenomination).mul(1_000_000).toString() + ); + } + } + + /** + * Updates the state of the BridgeSides and Anchors with + * the new state of the @param srcAnchor. + * @param srcAnchor The anchor that has updated. + * @returns + */ + public async updateLinkedVAnchors(srcAnchor: VAnchor) { + // Find the bridge sides that are connected to this Anchor + const linkedResourceID = await srcAnchor.createResourceId(); + const vAnchorsToUpdate = this.linkedVAnchors.get(linkedResourceID); + if (!vAnchorsToUpdate) { + return; + } + + // update the sides + for (let vAnchor of vAnchorsToUpdate) { + // get the bridge side which corresponds to this anchor + const chainId = getChainIdType(await vAnchor.signer.getChainId()); + const resourceID = await vAnchor.createResourceId(); + const vBridgeSide = this.vBridgeSides.get(chainId); + await vBridgeSide!.executeAnchorProposalWithSig(srcAnchor, resourceID); + } + } + + public async update(chainId: number) { + const vAnchor = this.getVAnchor(chainId); + if (!vAnchor) { + return; + } + await this.updateLinkedVAnchors(vAnchor); + } + + public getVBridgeSide(chainId: number) { + return this.vBridgeSides.get(chainId); + } + + public getVAnchor(chainId: number) { + let intendedAnchor: VAnchor = undefined; + intendedAnchor = this.vAnchors.get(Create2VBridge.createVAnchorIdString({ chainId })); + return intendedAnchor; + } + + // Returns the address of the webbToken which wraps the given token name. + public getWebbTokenAddress(chainId: number): string | undefined { + return this.webbTokenAddresses.get(chainId); + } + + public exportConfig(): BridgeConfig { + return { + webbTokenAddresses: this.webbTokenAddresses, + vAnchors: this.vAnchors, + vBridgeSides: this.vBridgeSides, + }; + } + + +} + +export default Create2VBridge; diff --git a/scripts/evm/deployments/create2/deploymentScript.ts b/scripts/evm/deployments/create2/deploymentScript.ts new file mode 100644 index 000000000..8460dc19d --- /dev/null +++ b/scripts/evm/deployments/create2/deploymentScript.ts @@ -0,0 +1,200 @@ +import { FungibleTokenWrapper } from "@webb-tools/tokens"; +import { fetchComponentsFromFilePaths, getChainIdType } from "@webb-tools/utils"; +import { DeployerConfig } from "@webb-tools/interfaces"; +import path from "path"; +import { ethers } from "ethers"; +import { + chainIdTypeGoerli, + chainIdTypeOptimism, + chainIdTypeArbitrum, + chainIdTypePolygon, + chainIdTypeMoonbase, + walletGoerli, + walletOptimism, + walletArbitrum, + walletPolygon, + walletMoonbase, + chainIdTypeHermes, + chainIdTypeAthena, + chainIdTypeDemeter, + walletHermes, + walletAthena, + walletDemeter, + chainIdTypeSepolia, + walletSepolia, + chainIdTypeBinance, + chainIdTypeAurora, +} from "../../ethersGovernorWallets"; +import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; +import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from "../utils"; +import { zip } from 'itertools'; +import { EndPointConfig, moonbaseEndPoints, polygonEndPoints } from "../endPoints"; +import Create2VBridge from "./create2Bridge"; + + +async function deploySignatureVBridge( + tokens: Record, + deployers: DeployerConfig +): Promise { + let assetRecord: Record = {}; + let chainIdsArray: number[] = []; + let existingWebbTokens = new Map(); + let governorConfig: Record = {}; + + for (const chainIdType of Object.keys(deployers)) { + assetRecord[chainIdType] = tokens[chainIdType]; + chainIdsArray.push(Number(chainIdType)); + governorConfig[Number(chainIdType)] = await deployers[ + chainIdType + ].getAddress(); + existingWebbTokens[chainIdType] = null; + console.log(tokens[chainIdType]); + } + + const bridgeInput = { + vAnchorInputs: { + asset: assetRecord, + }, + chainIDs: chainIdsArray, + webbTokens: existingWebbTokens, + }; + + console.log(bridgeInput); + + const zkComponentsSmall = await fetchComponentsFromFilePaths( + path.resolve( + __dirname, + `../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/poseidon_vanchor_2_8.wasm` + ), + path.resolve( + __dirname, + `../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/witness_calculator.cjs` + ), + path.resolve( + __dirname, + `../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/circuit_final.zkey` + ) + ); + const zkComponentsLarge = await fetchComponentsFromFilePaths( + path.resolve( + __dirname, + `../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/poseidon_vanchor_16_8.wasm` + ), + path.resolve( + __dirname, + `../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/witness_calculator.cjs` + ), + path.resolve( + __dirname, + `../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/circuit_final.zkey` + ) + ); + + console.log(governorConfig); + + return Create2VBridge.deployVariableAnchorBridge( + bridgeInput, + deployers, + governorConfig, + zkComponentsSmall, + zkComponentsLarge + ); +} + +async function run() { + const deployers: DeployerConfig = { + // [chainIdTypeGoerli]: walletGoerli, + // [chainIdTypeSepolia]: walletSepolia, + // [chainIdTypeOptimism]: walletOptimism, + // [chainIdTypePolygon]: walletPolygon, + [chainIdTypeMoonbase]: walletMoonbase, + }; + + const tokens: Record = { + // [chainIdTypeGoerli]: ["0", ""], + // [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], + // [chainIdTypeOptimism]: ["0", "0x4200000000000000000000000000000000000006"], + // [chainIdTypePolygon]: ["0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889"], + [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], + }; + + const endPoints: Record = { + // [chainIdTypeGoerli]: goerliEndPoints, + // [chainIdTypeSepolia]: sepoliaEndPoints, + // [chainIdTypeOptimism]: optimismEndPoints, + // [chainIdTypePolygon]: polygonEndPoints, + [chainIdTypeMoonbase]: moonbaseEndPoints, + } + + const vbridge = await deploySignatureVBridge(tokens, deployers); + + // print out all the info for the addresses + const bridgeConfig = await vbridge.exportConfig(); + + const anchorIterable = bridgeConfig.vAnchors.values(); + const bridgeSideIterable = bridgeConfig.vBridgeSides.values(); + + + for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)){ + const chainId = await anchor.signer.getChainId(); + const anchorContractConfig: ContractConfig = { + address: anchor.contract.address.toLowerCase(), + deployedAt: anchor.contract.deployTransaction.blockNumber + }; + const bridgeContractConfig: ContractConfig = { + address: bridgeSide.contract.address.toLowerCase(), + deployedAt: bridgeSide.contract.deployTransaction.blockNumber + } + const proposalSigningBackend : ProposalSigningBackend = { type: "DKGNode", node: "tangle" } + const linkedAnchors: EvmLinkedAnchor[] = []; + const typedChainId = getChainIdType(chainId); + const beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b"; // relayer wallet address + + // Add all other anchors to the list of linked anchors + for (const otherAnchor of Array.from(bridgeConfig.vAnchors.values())) { + if (otherAnchor !== anchor) { + linkedAnchors.push({ + chainId: (await otherAnchor.contract.getChainId()).toString(), + address: otherAnchor.contract.address.toLowerCase(), + type: "Evm" + }); + } + } + + const endPointConfig = endPoints[typedChainId]; + // construct chain configuration + const chainConfig = getEvmChainConfig( + chainId, + anchorContractConfig, + bridgeContractConfig, + deployers[typedChainId], + linkedAnchors, + proposalSigningBackend, + endPointConfig, + beneficiary + ); + + // convert config to kebab case and write to json file + const dirPath = `${__dirname}/relayer-config`; + writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig + ) + + console.log( + `Anchor ${anchorContractConfig.address} deployed at: ${anchorContractConfig.deployedAt} for chainId ${chainId}` + ); + + console.log( + `BridgeSide ${bridgeContractConfig.address} deployed at: ${bridgeContractConfig.deployedAt} for chain ${chainId}` + ); + } + + for (const webbToken of Array.from( + bridgeConfig.webbTokenAddresses.entries() + )) { + console.log( + `webbToken entry: ${webbToken[0]} + ${webbToken[1].toLowerCase()}` + ); + } +} + +run(); diff --git a/scripts/evm/deployments/relayer-config/moonbase.toml b/scripts/evm/deployments/relayer-config/moonbase.toml new file mode 100644 index 000000000..cb2c9865d --- /dev/null +++ b/scripts/evm/deployments/relayer-config/moonbase.toml @@ -0,0 +1,40 @@ +[evm] + +[evm.moonbase] +beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b" +block-confirmations = 0.0 +chain-id = 1287.0 +enabled = true +name = "moonbase" +private-key = "0xc086596a698603ae7428a61ced569cbc5fdc24ae91c341d692aad590febc4429" + +[[evm.moonbase.contracts]] +address = "0x57f608d6561f0e354026f17f492c57311fd8080f" +contract = "VAnchor" + +[evm.moonbase.contracts.events-watcher] +enabled = true +polling-interval = 1000.0 +print-progress-interval = 7000.0 + +[[evm.moonbase.contracts.linked-anchors]] +address = "0x2552f59ff85602bff8043ca6ef94b1cbb14dc2c6" +chain-id = "80001" +type = "Evm" + +[evm.moonbase.contracts.proposal-signing-backend] +node = "tangle" +type = "DKGNode" + +[evm.moonbase.contracts.withdraw-config] +withdraw-fee-percentage = 0.0 +withdraw-gaslimit = "0x5B8D80" + +[[evm.moonbase.contracts]] +address = "0x12cec77a5ac7108ae453a7aeb6a31afc2b6f0bd8" +contract = "SignatureBridge" + +[evm.moonbase.contracts.events-watcher] +enabled = true +polling-interval = 1000.0 +print-progress-interval = 7000.0 \ No newline at end of file diff --git a/scripts/evm/deployments/relayer-config/mumbai.toml b/scripts/evm/deployments/relayer-config/mumbai.toml index 81c397d9d..59bfd75ff 100644 --- a/scripts/evm/deployments/relayer-config/mumbai.toml +++ b/scripts/evm/deployments/relayer-config/mumbai.toml @@ -1,40 +1,40 @@ [evm] -[evm.moonbase] +[evm.mumbai] beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b" block-confirmations = 0.0 -chain-id = 1287.0 +chain-id = 80001.0 enabled = true -name = "moonbase" +name = "mumbai" private-key = "0xc086596a698603ae7428a61ced569cbc5fdc24ae91c341d692aad590febc4429" -[[evm.moonbase.contracts]] -address = "0x4164de999b272edb36ef23dc2dbb59015cfce632" +[[evm.mumbai.contracts]] +address = "0x2552f59ff85602bff8043ca6ef94b1cbb14dc2c6" contract = "VAnchor" -[evm.moonbase.contracts.events-watcher] +[evm.mumbai.contracts.events-watcher] enabled = true polling-interval = 1000.0 print-progress-interval = 7000.0 -[[evm.moonbase.contracts.linked-anchors]] -address = "0xa6ba48634e8a85d70f139e7dda332e0565eb638b" +[[evm.mumbai.contracts.linked-anchors]] +address = "0x57f608d6561f0e354026f17f492c57311fd8080f" chain-id = "1287" type = "Evm" -[evm.moonbase.contracts.proposal-signing-backend] +[evm.mumbai.contracts.proposal-signing-backend] node = "tangle" type = "DKGNode" -[evm.moonbase.contracts.withdraw-config] +[evm.mumbai.contracts.withdraw-config] withdraw-fee-percentage = 0.0 withdraw-gaslimit = "0x5B8D80" -[[evm.moonbase.contracts]] -address = "0xe9bc69534ae5066e444d74984829b6a799316894" +[[evm.mumbai.contracts]] +address = "0xca216c5dee21f69ff8ebaa32b26b0165bcd7d9c0" contract = "SignatureBridge" -[evm.moonbase.contracts.events-watcher] +[evm.mumbai.contracts.events-watcher] enabled = true polling-interval = 1000.0 print-progress-interval = 7000.0 \ No newline at end of file diff --git a/scripts/evm/deployments/utils.ts b/scripts/evm/deployments/utils.ts index 9be60e0d3..a4cbe7b54 100644 --- a/scripts/evm/deployments/utils.ts +++ b/scripts/evm/deployments/utils.ts @@ -84,7 +84,6 @@ export function writeEvmChainConfig ( 'proposal-signing-backend'?: ConvertToKebabCase; 'withdraw-config'?: ConvertToKebabCase; 'linked-anchors'?: ConvertedLinkedAnchor[]; - 'deployed-at': number; }; type ConvertedConfig = Omit< ConvertToKebabCase, From 68b0a5a3a29fbcc42056e331fdc9638c65188bfd Mon Sep 17 00:00:00 2001 From: salman01zp Date: Mon, 9 Jan 2023 20:06:51 +0530 Subject: [PATCH 03/17] typechain fixes --- packages/contracts/test/token/AaveTokenWrapper.test.ts | 6 +++--- packages/contracts/test/trees/MerkleForest.test.ts | 2 +- tsconfig.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/contracts/test/token/AaveTokenWrapper.test.ts b/packages/contracts/test/token/AaveTokenWrapper.test.ts index f708191cc..a8451381c 100644 --- a/packages/contracts/test/token/AaveTokenWrapper.test.ts +++ b/packages/contracts/test/token/AaveTokenWrapper.test.ts @@ -11,9 +11,9 @@ const bne = (x, e) => BigNumber.from(x + '0'.repeat(parseInt(e))); // Convenience wrapper classes for contract classes import { ERC20 as ERC20Class } from '@webb-tools/tokens'; -import { IERC20 } from '../../lib/IERC20'; -import { AaveTokenWrapper } from '../../lib/AaveTokenWrapper'; -import { AaveTokenWrapper__factory } from '../../lib/factories/AaveTokenWrapper__factory'; +import { IERC20 } from '../../typechain/IERC20'; +import { AaveTokenWrapper } from '../../typechain/AaveTokenWrapper'; +import { AaveTokenWrapper__factory } from '../../typechain/factories/AaveTokenWrapper__factory'; import { expect } from 'chai'; describe('AaveTokenWrapper', () => { diff --git a/packages/contracts/test/trees/MerkleForest.test.ts b/packages/contracts/test/trees/MerkleForest.test.ts index fb5f24e53..800f95750 100644 --- a/packages/contracts/test/trees/MerkleForest.test.ts +++ b/packages/contracts/test/trees/MerkleForest.test.ts @@ -13,7 +13,7 @@ import { MerkleForestMock as MerkleForestMockContract, LinkableIncrementalBinaryTree as LinkableIncrementalBinaryTreeContract, LinkableIncrementalBinaryTree__factory, -} from '../../lib'; +} from '../../typechain'; const TruffleAssert = require('truffle-assertions'); const assert = require('assert'); diff --git a/tsconfig.json b/tsconfig.json index d3d9fa883..202b1b6d7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,10 +22,10 @@ "packages/merkle-tree/src/*" ], "@webb-tools/contracts": [ - "packages/contracts/typechain" + "packages/contracts/src" ], "@webb-tools/contracts/*": [ - "packages/contracts/typechain/*" + "packages/contracts/src/*" ], "@webb-tools/bridges": [ "packages/bridges/src" From 48c2b419631a8a6c8b4c85afb5da8049c25008f8 Mon Sep 17 00:00:00 2001 From: salman01zp Date: Wed, 11 Jan 2023 21:45:11 +0530 Subject: [PATCH 04/17] update deployment script and add logs --- package.json | 6 - packages/bridges/src/SignatureBridgeSide.ts | 9 +- packages/tokens/src/FungibleTokenWrapper.ts | 3 + packages/tokens/src/Treasury.ts | 6 +- .../evm/deployments/create2/create2Bridge.ts | 38 +- yarn.lock | 1416 +++++++---------- 6 files changed, 653 insertions(+), 825 deletions(-) diff --git a/package.json b/package.json index 04eda508b..7fd5e30c5 100644 --- a/package.json +++ b/package.json @@ -40,12 +40,6 @@ "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-truffle5": "^2.0.0", "@nomiclabs/hardhat-web3": "^2.0.0", - "@webb-tools/anchors": "^0.5.0", - "@webb-tools/bridges": "^0.5.0", - "@webb-tools/interfaces": "^0.5.0", - "@webb-tools/tokens": "^0.5.0", - "@webb-tools/utils": "^0.5.0", - "@webb-tools/vbridge": "^0.5.0", "eth-proof": "~2.1.6", "ethers": "5.7.0", "itertools": "^1.7.1", diff --git a/packages/bridges/src/SignatureBridgeSide.ts b/packages/bridges/src/SignatureBridgeSide.ts index 8dc13436b..ff0893c40 100644 --- a/packages/bridges/src/SignatureBridgeSide.ts +++ b/packages/bridges/src/SignatureBridgeSide.ts @@ -57,10 +57,15 @@ export class SignatureBridgeSide implements IBridgeSide { saltHex: string, admin: ethers.Wallet ): Promise { + const argTypes = ['address', 'uint32']; + const args = [admin.address, 0]; const { contract: deployedBridge } = await deployer.deploy( SignatureBridge__factory, saltHex, - admin + admin, + undefined, + argTypes, + args ); const bridgeSide = new SignatureBridgeSide(deployedBridge, (data: any) => { return Promise.resolve(signMessage(admin, data)); @@ -349,7 +354,9 @@ export class SignatureBridgeSide implements IBridgeSide { tokenAddress: string ) { if (!this.tokenHandler) throw this.TOKEN_HANDLER_MISSING_ERROR; + console.log("executeAddTokenProposalWithSig") const proposalData = await this.createAddTokenUpdateProposalData(fungibleToken, tokenAddress); + console.log("execute"); return this.execute(proposalData); } diff --git a/packages/tokens/src/FungibleTokenWrapper.ts b/packages/tokens/src/FungibleTokenWrapper.ts index b71bd7ebd..51fb22b24 100644 --- a/packages/tokens/src/FungibleTokenWrapper.ts +++ b/packages/tokens/src/FungibleTokenWrapper.ts @@ -81,9 +81,12 @@ export class FungibleTokenWrapper { } public async grantMinterRole(address: string) { + console.log("Grant minting role"); const MINTER_ROLE = ethers.utils.keccak256(ethers.utils.toUtf8Bytes('MINTER_ROLE')); + console.log(MINTER_ROLE); const tx = await this.contract.grantRole(MINTER_ROLE, address); await tx.wait(); + console.log(tx); return; } diff --git a/packages/tokens/src/Treasury.ts b/packages/tokens/src/Treasury.ts index 7a460c514..b3df257aa 100644 --- a/packages/tokens/src/Treasury.ts +++ b/packages/tokens/src/Treasury.ts @@ -29,20 +29,20 @@ export class Treasury { treasuryHandler: string, deployer: Deployer, saltHex: string, - sender: ethers.Signer + signer: ethers.Signer ) { const argTypes = ['string']; const args = [treasuryHandler]; const { contract: contract } = await deployer.deploy( Treasury__factory, saltHex, - sender, + signer, undefined, argTypes, args ); - const handler = new Treasury(contract, deployer.signer); + const handler = new Treasury(contract, signer); return handler; } diff --git a/scripts/evm/deployments/create2/create2Bridge.ts b/scripts/evm/deployments/create2/create2Bridge.ts index c499b99c6..825922a07 100644 --- a/scripts/evm/deployments/create2/create2Bridge.ts +++ b/scripts/evm/deployments/create2/create2Bridge.ts @@ -115,7 +115,7 @@ export class Create2VBridge { smallCircuitZkComponents: ZkComponents, largeCircuitZkComponents: ZkComponents ): Promise { - const salt = '42'; + const salt = '66756'; const saltHex = ethers.utils.id(salt); let webbTokenAddresses: Map = new Map(); let vBridgeSides: Map = new Map(); @@ -130,14 +130,16 @@ export class Create2VBridge { for (let chainID of vBridgeInput.chainIDs) { const initialGovernor = initialGovernors[chainID]; // Create the bridgeSide + console.log("Create Deployer"); let deployer: Deployer; const Deployer1 = new DeterministicDeployFactory__factory(deployers[chainID]); let deployer1Contract = await Deployer1.deploy(); await deployer1Contract.deployed(); + console.log("Deployer deployed"); deployer = new Deployer(deployer1Contract); - + console.log("create2Brdige side called"); let vBridgeInstance = await SignatureBridgeSide.create2BridgeSide(deployer, saltHex, deployers[chainID] ); - + console.log("create2BridgeSide"); const handler = await AnchorHandler.create2AnchorHandler( vBridgeInstance.contract.address, [], @@ -146,8 +148,9 @@ export class Create2VBridge { saltHex, deployers[chainID] ); + console.log("create2AnchorHandler"); vBridgeInstance.setAnchorHandler(handler); - + console.log("setAnchorHandler"); // Create Treasury and TreasuryHandler const treasuryHandler = await TreasuryHandler.create2TreasuryHandler( vBridgeInstance.contract.address, @@ -157,22 +160,23 @@ export class Create2VBridge { saltHex, vBridgeInstance.admin ); + console.log("create2TreasuryHandler"); const treasury = await Treasury.create2Treasury( treasuryHandler.contract.address, deployer, saltHex, vBridgeInstance.admin ); - + console.log("create2TreasuryHandler"); await vBridgeInstance.setTreasuryHandler(treasuryHandler); await vBridgeInstance.setTreasuryResourceWithSignature(treasury); - + console.log("setTreasuryResourceWithSignature"); // Create the Hasher and Verifier for the chain const hasherInstance = await PoseidonHasher.create2PoseidonHasher(deployer, saltHex, deployers[chainID]); - + console.log("create2PoseidonHasher"); const verifier = await Verifier.create2Verifier(deployer, saltHex, deployers[chainID]); let verifierInstance = verifier.contract; - + console.log("create2Verifier"); // Check the addresses of the asset. If it is zero, deploy a native token wrapper let allowedNative: boolean = false; for (const tokenToBeWrapped of vBridgeInput.vAnchorInputs.asset[chainID]!) { @@ -191,7 +195,7 @@ export class Create2VBridge { saltHex, vBridgeInstance.admin ); - + console.log("create2TokenWrapperHandler"); let tokenInstance: FungibleTokenWrapper; if (!vBridgeInput.webbTokens.get(chainID)) { tokenInstance = await FungibleTokenWrapper.create2FungibleTokenWrapper( @@ -206,13 +210,14 @@ export class Create2VBridge { saltHex, deployers[chainID] ); + console.log("create2FungibleTokenWrapper no webbtoken"); } else { tokenInstance = vBridgeInput.webbTokens.get(chainID)!; } - + console.log("create2FungibleTokenWrapper"); await vBridgeInstance.setTokenWrapperHandler(tokenWrapperHandler); await vBridgeInstance.setFungibleTokenResourceWithSignature(tokenInstance); - + console.log("setFungibleTokenResourceWithSignature"); // Add all token addresses to the governed token instance. for (const tokenToBeWrapped of vBridgeInput.vAnchorInputs.asset[chainID]!) { // if the address is not '0', then add it @@ -220,7 +225,7 @@ export class Create2VBridge { await vBridgeInstance.executeAddTokenProposalWithSig(tokenInstance, tokenToBeWrapped); } } - + console.log("passed"); // append each token webbTokenAddresses.set(chainID, tokenInstance.contract.address); @@ -240,19 +245,20 @@ export class Create2VBridge { largeCircuitZkComponents, deployers[chainID] ); - + console.log("create2VAnchor"); // grant minting rights to the anchor await tokenInstance.grantMinterRole(vAnchorInstance.contract.address); - + console.log("grantMinterRole"); chainGroupedVAnchors.push(vAnchorInstance); vAnchors.set(Create2VBridge.createVAnchorIdString({ chainId: chainID }), vAnchorInstance); - + console.log("createVAnchorIdString"); await Create2VBridge.setPermissions(vBridgeInstance, chainGroupedVAnchors); createdVAnchors.push(chainGroupedVAnchors); - + console.log("setPermissions"); // Transfer ownership of the bridge to the initialGovernor const tx = await vBridgeInstance.transferOwnership(initialGovernor, 0); await tx.wait(); + console.log("transferOwnership"); vBridgeSides.set(chainID, vBridgeInstance); } diff --git a/yarn.lock b/yarn.lock index 7a307ccbf..b5f72ccce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,10 +10,10 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/cli@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.19.3.tgz#55914ed388e658e0b924b3a95da1296267e278e2" - integrity sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg== +"@babel/cli@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.20.7.tgz#8fc12e85c744a1a617680eacb488fab1fcd35b7c" + integrity sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ== dependencies: "@jridgewell/trace-mapping" "^0.3.8" commander "^4.0.1" @@ -33,38 +33,38 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" - integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.20.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" + integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.13", "@babel/core@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" - integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.13", "@babel/core@^7.20.12": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" + integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.5" - "@babel/parser" "^7.20.5" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" + "@babel/generator" "^7.20.7" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helpers" "^7.20.7" + "@babel/parser" "^7.20.7" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.12" + "@babel/types" "^7.20.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.1" + json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.20.5", "@babel/generator@^7.7.2": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" - integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA== +"@babel/generator@^7.20.7", "@babel/generator@^7.7.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" + integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== dependencies: - "@babel/types" "^7.20.5" + "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -83,27 +83,29 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== dependencies: - "@babel/compat-data" "^7.20.0" + "@babel/compat-data" "^7.20.5" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.21.3" + lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz#327154eedfb12e977baa4ecc72e5806720a85a06" - integrity sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": @@ -153,12 +155,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== +"@babel/helper-member-expression-to-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.20.7" "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.18.6": version "7.18.6" @@ -167,19 +169,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" "@babel/helper-simple-access" "^7.20.2" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -193,7 +195,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": +"@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== @@ -203,25 +205,26 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" - integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" -"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": +"@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== @@ -260,14 +263,14 @@ "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" -"@babel/helpers@^7.20.5": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" - integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w== +"@babel/helpers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce" + integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA== dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" "@babel/highlight@^7.18.6": version "7.18.6" @@ -278,10 +281,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" - integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -291,21 +294,21 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" "@babel/plugin-proposal-async-generator-functions@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" - integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -318,12 +321,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7" + integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.18.6": @@ -351,11 +354,11 @@ "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": @@ -375,15 +378,15 @@ "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" - integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-parameters" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" @@ -393,13 +396,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== +"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.18.6": @@ -562,20 +565,20 @@ "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" @@ -585,38 +588,39 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz#401215f9dc13dc5262940e2e527c9536b3d7f237" - integrity sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA== + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a" + integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" - integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073" + integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-compilation-targets" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" "@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" - integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -674,30 +678,30 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" - integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-modules-commonjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" - integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" "@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" - integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": @@ -731,10 +735,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.20.1": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e" - integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ== +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -760,15 +764,15 @@ "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz#025d85a1935fd7e19dfdcb1b1d4df34d4da484f7" + integrity sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" + "@babel/types" "^7.20.7" "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" @@ -813,12 +817,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" @@ -842,11 +846,11 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f" - integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.7.tgz#673f49499cd810ae32a1ea5f3f8fab370987e055" + integrity sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.2" + "@babel/helper-create-class-features-plugin" "^7.20.7" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" @@ -989,49 +993,42 @@ pirates "^4.0.5" source-map-support "^0.5.16" -"@babel/runtime@^7.15.4": +"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" - integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.18.10", "@babel/template@^7.3.3": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== +"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" -"@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" - integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== +"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.2": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" + integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.5" + "@babel/generator" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.5" - "@babel/types" "^7.20.5" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" - integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" @@ -1097,10 +1094,10 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@eslint/eslintrc@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.0.tgz#8ec64e0df3e7a1971ee1ff5158da87389f167a63" - integrity sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A== +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1173,7 +1170,7 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.1" -"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": +"@ethereumjs/common@^2.5.0": version "2.6.5" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== @@ -1189,14 +1186,6 @@ "@ethereumjs/common" "^2.5.0" ethereumjs-util "^7.1.2" -"@ethereumjs/tx@^3.3.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== - dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" - "@ethersproject/abi@5.0.0-beta.153": version "5.0.0-beta.153" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" @@ -2619,12 +2608,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== -"@noble/hashes@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111" - integrity sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A== - -"@noble/hashes@~1.1.1": +"@noble/hashes@1.1.5", "@noble/hashes@~1.1.1": version "1.1.5" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== @@ -3046,17 +3030,17 @@ dependencies: nx "14.8.6" -"@nrwl/cli@15.3.3": - version "15.3.3" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.3.3.tgz#9d7f09e336c39ecc54155f21f394b0fc740054eb" - integrity sha512-ZWTmVP9H3ukppWWGaS/s3Nym2nOYgnt6eHtuUFNsroz8LesG5oFAJviOz9jDEM/b+pLIrvYfU5aAGZqrtM3Z2A== +"@nrwl/cli@15.4.5": + version "15.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.4.5.tgz#2a8f663e5265379812ba83c0577abdc94dcdba8f" + integrity sha512-f13s0/hzS9jsV1+QPr1Lp3Um+3dOHD8gEP2h7uw17rEPrtJ5ggRKMj/HcZ9dkT9zDM9EmPtVTb6k38ON+NWcUw== dependencies: - nx "15.3.3" + nx "15.4.5" "@nrwl/devkit@>=14.8.1 < 16": - version "15.3.3" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.3.3.tgz#8a038334cf5b563befdad4b201e0b146dfd2969a" - integrity sha512-48R9HAp6r6umWNXTlVTMsH94YYjU/XUPLDTtXBgKESMVbdq8Fk+HDHuN0thXG5dL6DFkXgD0MICLm3jSQU6xMw== + version "15.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.4.5.tgz#22b7aa16bc14c171f061f770060d9af480d5f1cb" + integrity sha512-oag+wJgusKz+rwvgcVy9i8bNtTo7ikbjVVtSOmyVBE0ZrgN1CMFjugBj4FEjKGtd73djjpvW9Mm36uJRujrc2w== dependencies: "@phenomnomnominal/tsquery" "4.1.1" ejs "^3.1.7" @@ -3071,12 +3055,12 @@ dependencies: nx "14.8.6" -"@nrwl/tao@15.3.3": - version "15.3.3" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.3.3.tgz#b54a4f28833d11f96f69796b6d2c1624123734e5" - integrity sha512-f9+VwhlJ/7TWpjHSgoUOAA067uP9DmzABMY9HC5OREEDaCx+rzYEvbLAPv6cXzWw+6IYM6cyKw0zWSQrdEVrWg== +"@nrwl/tao@15.4.5": + version "15.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.4.5.tgz#d07f6d06cecb6acb84259e0654cfc59fcc5edd53" + integrity sha512-UMtxXxTWqbyZOdyD9Zt2IsDY/JVXIFZtY6pO4jPha7+UIHWf2Zi8Dszs6UoUTS4mqpNMIkKymwpZGtkDTfiAJA== dependencies: - nx "15.3.3" + nx "15.4.5" "@octokit/auth-token@^3.0.0": version "3.0.2" @@ -3287,15 +3271,15 @@ rxjs "^7.5.6" "@polkadot/dev@^0.67.86": - version "0.67.173" - resolved "https://registry.yarnpkg.com/@polkadot/dev/-/dev-0.67.173.tgz#647b929eadb25e58ffcceccc87477795cf6a65c7" - integrity sha512-9cPWztjhC36N1qp/VHG7jNLfGw8R8+uVdfua/endr8HQIYBhE2lgcQh/DRSkxUI+MNi/DMV4m2Fuc2YIpgSASw== + version "0.67.177" + resolved "https://registry.yarnpkg.com/@polkadot/dev/-/dev-0.67.177.tgz#fc58acf86785fe60548e8a23b2a8ebda19af7508" + integrity sha512-gh8JYnDldTHfudXaw7BLQyCOF4ywxYbszKYqHU9qINt6vpt6yoARpZLd8HwJyRoAU0Hr04S5DKifIKmrPJr9EA== dependencies: - "@babel/cli" "^7.19.3" - "@babel/core" "^7.20.5" + "@babel/cli" "^7.20.7" + "@babel/core" "^7.20.12" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" "@babel/plugin-syntax-bigint" "^7.8.3" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-import-assertions" "^7.20.0" @@ -3307,24 +3291,24 @@ "@babel/preset-react" "^7.18.6" "@babel/preset-typescript" "^7.18.6" "@babel/register" "^7.18.9" - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.20.7" "@rollup/plugin-alias" "^4.0.2" - "@rollup/plugin-commonjs" "^23.0.4" - "@rollup/plugin-dynamic-import-vars" "^2.0.1" - "@rollup/plugin-inject" "^5.0.2" - "@rollup/plugin-json" "^5.0.2" + "@rollup/plugin-commonjs" "^24.0.0" + "@rollup/plugin-dynamic-import-vars" "^2.0.2" + "@rollup/plugin-inject" "^5.0.3" + "@rollup/plugin-json" "^6.0.0" "@rollup/plugin-node-resolve" "^15.0.1" "@rushstack/eslint-patch" "^1.2.0" - "@typescript-eslint/eslint-plugin" "^5.46.1" - "@typescript-eslint/parser" "^5.46.1" + "@typescript-eslint/eslint-plugin" "^5.48.0" + "@typescript-eslint/parser" "^5.48.0" "@vue/component-compiler-utils" "^3.3.0" babel-jest "^29.3.1" - babel-plugin-module-extension-resolver "^1.0.0-rc.2" + babel-plugin-module-extension-resolver "^1.0.0" babel-plugin-module-resolver "^4.1.0" babel-plugin-styled-components "^2.0.7" browserslist "^4.21.4" coveralls "^3.1.1" - eslint "^8.29.0" + eslint "^8.31.0" eslint-config-standard "^17.0.0" eslint-import-resolver-node "^0.3.6" eslint-plugin-deprecation "^1.3.3" @@ -3339,7 +3323,7 @@ eslint-plugin-sort-destructure-keys "^1.4.0" fs-extra "^11.1.0" gh-pages "^4.0.0" - gh-release "^7.0.0" + gh-release "^7.0.1" glob "^8.0.3" glob2base "^0.0.12" jest "^29.3.1" @@ -3349,11 +3333,11 @@ jest-haste-map "^29.3.1" jest-resolve "^29.3.1" madge "^5.0.1" - minimatch "^5.1.1" + minimatch "^5.1.2" mkdirp "^1.0.4" prettier "^2.8.1" rimraf "^3.0.2" - rollup "^3.7.4" + rollup "^3.9.1" rollup-plugin-cleanup "^3.2.1" typescript "^4.9.4" webpack "^5.75.0" @@ -3373,13 +3357,13 @@ "@polkadot/util-crypto" "10.1.7" "@polkadot/keyring@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-10.2.1.tgz#692d4e24dcbbe294b6945640802fc924ea20348e" - integrity sha512-84/zzxDZANQ4AfsCT1vrjX3I23/mj9WUWl1F7q9ruK6UBFyGsl46Y3ABOopFHij9UXhppndhB65IeDnqoOKqxQ== + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-10.2.3.tgz#cf33f599e7018398e0eca119207514eef4106e7a" + integrity sha512-OCOfkhqXu9j0g1T6u1bg1Qo/JJS8ng1M1Qv+rfpxDFYGz26T81SOT0caxsOvF6MzBBYm0l0d9sAYB62mQYuWCA== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/util" "10.2.1" - "@polkadot/util-crypto" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/util" "10.2.3" + "@polkadot/util-crypto" "10.2.3" "@polkadot/networks@10.1.7": version "10.1.7" @@ -3390,14 +3374,14 @@ "@polkadot/util" "10.1.7" "@substrate/ss58-registry" "^1.28.0" -"@polkadot/networks@10.2.1", "@polkadot/networks@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.2.1.tgz#5095011795afa20291ef3e34a2ad38ed2c63fe09" - integrity sha512-cDZIY4jBo2tlDdSXNbECpuWer0NWlPcJNhHHveTiu2idje2QyIBNxBlAPViNGpz+ScAR0EknEzmQKuHOcSKxzg== +"@polkadot/networks@10.2.3", "@polkadot/networks@^10.1.6": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.2.3.tgz#89940078f9c4967bf5edbc66dd22207bdebc3a73" + integrity sha512-YE2/UzrYrf8IZpZ4jfK7rWJdXjW10ISqlePzDx02BCkEB7GZj9al9c3m+lJPaqmpwcGPZpn0UVw6UtBSIt4pNA== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/util" "10.2.1" - "@substrate/ss58-registry" "^1.35.0" + "@babel/runtime" "^7.20.7" + "@polkadot/util" "10.2.3" + "@substrate/ss58-registry" "^1.37.0" "@polkadot/rpc-augment@9.2.4": version "9.2.4" @@ -3544,19 +3528,19 @@ ed2curve "^0.3.0" tweetnacl "^1.0.3" -"@polkadot/util-crypto@10.2.1", "@polkadot/util-crypto@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.2.1.tgz#f6ce1c81496336ca50c2ca84975bcde79aa16634" - integrity sha512-UH1J4oD92gkLXMfVTLee3Y2vYadNyp1lmS4P2nZwQ0SOzGZ4rN7khD2CrB1cXS9WPq196Zb5oZdGLnPYnXHtjw== +"@polkadot/util-crypto@10.2.3", "@polkadot/util-crypto@^10.1.6": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.2.3.tgz#ad5d365005d91b8642041b08c3065464692963df" + integrity sha512-B4bl5OxZKiJfYerCcD9Ys9/zNYFLAdCM077BT9SkY6T1aJ4Lar1TW7+PekmBRQ9r/rB7hbDMG9pJIy97PVM99g== dependencies: - "@babel/runtime" "^7.20.6" - "@noble/hashes" "1.1.3" + "@babel/runtime" "^7.20.7" + "@noble/hashes" "1.1.5" "@noble/secp256k1" "1.7.0" - "@polkadot/networks" "10.2.1" - "@polkadot/util" "10.2.1" + "@polkadot/networks" "10.2.3" + "@polkadot/util" "10.2.3" "@polkadot/wasm-crypto" "^6.4.1" - "@polkadot/x-bigint" "10.2.1" - "@polkadot/x-randomvalues" "10.2.1" + "@polkadot/x-bigint" "10.2.3" + "@polkadot/x-randomvalues" "10.2.3" "@scure/base" "1.1.1" ed2curve "^0.3.0" tweetnacl "^1.0.3" @@ -3587,16 +3571,16 @@ "@types/bn.js" "^5.1.1" bn.js "^5.2.1" -"@polkadot/util@10.2.1", "@polkadot/util@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.2.1.tgz#a8c3a4fe87091197448bec70f7ea079b60d5abf6" - integrity sha512-ewGKSOp+VXKEeCvpCCP2Qqi/FVkewBF9vb/N8pRwuNQ2XE9k1lnsOZZeQemVBDhKsZz+h3IeNcWejaF6K3vYHQ== +"@polkadot/util@10.2.3", "@polkadot/util@^10.1.6": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.2.3.tgz#05a18641c639838370af332dd2e9077253a5df23" + integrity sha512-Zs+G2iFmdG2jUXyiuBF6HMGHdpHX+58yrKPgt1S7kBBh1Odfw3GTX9vljwJ25mznkLhGBjERAmt6wNWuvPmpJA== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-bigint" "10.2.1" - "@polkadot/x-global" "10.2.1" - "@polkadot/x-textdecoder" "10.2.1" - "@polkadot/x-textencoder" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-bigint" "10.2.3" + "@polkadot/x-global" "10.2.3" + "@polkadot/x-textdecoder" "10.2.3" + "@polkadot/x-textencoder" "10.2.3" "@types/bn.js" "^5.1.1" bn.js "^5.2.1" @@ -3667,21 +3651,21 @@ "@babel/runtime" "^7.18.9" "@polkadot/x-global" "10.1.7" -"@polkadot/x-bigint@10.2.1", "@polkadot/x-bigint@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.2.1.tgz#aa2d4384bb4ae6b5a3f333aa25bf6fd64d9006c5" - integrity sha512-asFroI2skC4gYv0oIqqb84DqCCxhNUTSCKobEg57WdXoT4TKrN9Uetg2AMSIHRiX/9lP3EPMhUjM1VVGobTQRQ== +"@polkadot/x-bigint@10.2.3", "@polkadot/x-bigint@^10.1.6": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.2.3.tgz#6dceb291892491384de567aa3f9f31a6472c23de" + integrity sha512-xPblZVmIpXV7rMzwArOA3BfiDjBZ296jfkpMRaa90sSUEAxFTu8f0SEAxNkUIXrpyyzNiwqL5DhCp1pRuqg36w== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-global" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-global" "10.2.3" "@polkadot/x-fetch@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-10.2.1.tgz#cb5b33da1d91787eb2e5207ef62806a75ef3c62f" - integrity sha512-6ASJUZIrbLaKW+AOW7E5CuktwJwa2LHhxxRyJe398HxZUjJRjO2VJPdqoSwwCYvfFa1TcIr3FDWS63ooDfvGMA== + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-10.2.3.tgz#be33d1ad3170c2f7d5c9fb91349d45c4780197e9" + integrity sha512-2i15Y8pMXUb7kjUSJrJzS4lrgbOhMWlIHNUFT0AUkR4P7RsBKHGfXvTGF720qT7KIZaOmrPkmlqDqafIbIs/8g== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-global" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-global" "10.2.3" "@types/node-fetch" "^2.6.2" node-fetch "^3.3.0" @@ -3699,12 +3683,12 @@ dependencies: "@babel/runtime" "^7.18.9" -"@polkadot/x-global@10.2.1", "@polkadot/x-global@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.2.1.tgz#6fbaab05653e680adc8c69c07947eee49afc1238" - integrity sha512-kWmPku2lCcoYKU16+lWGOb95+6Lu9zo1trvzTWmAt7z0DXw2GlD9+qmDTt5iYGtguJsGXoRZDGilDTo3MeFrkA== +"@polkadot/x-global@10.2.3", "@polkadot/x-global@^10.1.6": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.2.3.tgz#7d8ab3750f078c963759a498a65152d809c67eea" + integrity sha512-lloJGTilvEi9gnviHacnRphv2zMhOxgXf4Ajn+dSF8zR7UzyCL9Gphg3G/nagebBtGAq1BSOS6QWOiRcuAeZrA== dependencies: - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.20.7" "@polkadot/x-randomvalues@10.1.7": version "10.1.7" @@ -3714,13 +3698,13 @@ "@babel/runtime" "^7.18.9" "@polkadot/x-global" "10.1.7" -"@polkadot/x-randomvalues@10.2.1": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.2.1.tgz#1c463625c0b7cf775e94594f522eb21a5229b42e" - integrity sha512-bEwG6j/+HMZ5LIkyzRbTB0N1Wz2lHyxP25pPFgHFqGqon/KZoRN5kxOwEJ1DpPJIv+9PVn5tt7bc4R3qsaZ93g== +"@polkadot/x-randomvalues@10.2.3": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.2.3.tgz#2ed39a6c7806aa17c5816b69cd143a98bd284ca2" + integrity sha512-i5WIzYi/zGfnKF5TWcnpjP2Pu2rpJH1TE89F/h9i+LliIhQ1GqHBPj1EXyhNI9BfA28EQhjpFZhLUxCCuAL09w== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-global" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-global" "10.2.3" "@polkadot/x-textdecoder@10.1.6": version "10.1.6" @@ -3738,13 +3722,13 @@ "@babel/runtime" "^7.18.9" "@polkadot/x-global" "10.1.7" -"@polkadot/x-textdecoder@10.2.1": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.2.1.tgz#c1778ef35e2aa8db8f11bbe31a5bbf5e46017d7d" - integrity sha512-hpFmrdv/rrSM4UNaV8TJBgMtwXsYlNgBTSUmnKWwJIN3PhOUeYxl1qIbPchxGbJBc35WviJCZe7rlLja9JvFcw== +"@polkadot/x-textdecoder@10.2.3": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.2.3.tgz#a713c8fba81985c93e4dab95724df1875e64704f" + integrity sha512-E+z6GSgrrSWJm227LjJqKzmK4vF0FGpaX+WvHSlQVX/+Q0x2qF+/L7lXk5FUQHtoPgKL3ydBLZaylEkA2Zl5kQ== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-global" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-global" "10.2.3" "@polkadot/x-textencoder@10.1.6": version "10.1.6" @@ -3762,21 +3746,21 @@ "@babel/runtime" "^7.18.9" "@polkadot/x-global" "10.1.7" -"@polkadot/x-textencoder@10.2.1": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.2.1.tgz#c09562c73a44659243075d43b007b5c1b39c57a8" - integrity sha512-4gMyY6DCH34KA++bawu/zlUJ0/8+aZJsurwjRBbkdfOS2uLo0K+vJ5GBevAhl0VSznM36ptfh/MpkIBKK/6R0g== +"@polkadot/x-textencoder@10.2.3": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.2.3.tgz#d8f2554264a1540b9daec4e43675950f6fafa7b5" + integrity sha512-UuzPELhQljyyzwpCnv/GF9ZWpF3Pc29g4+YZWPg9hC3kwv4DRLFcFxdouWo/ic1luXwL4THcdWGIiF4VNUKlCg== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-global" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-global" "10.2.3" "@polkadot/x-ws@^10.1.6": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-10.2.1.tgz#ec119c22a8cb7b9cde00e9909e37b6ba2845efd1" - integrity sha512-oS/WEHc1JSJ+xMArzFXbg1yEeaRrp6GsJLBvObj4DgTyqoWTR5fYkq1G1nHbyqdR729yAnR6755PdaWecIg98g== + version "10.2.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-10.2.3.tgz#4f3bc1b47f6dfa4110208b222d404e2ae84ba2c5" + integrity sha512-ELXZHyn4YnttCb0PGDsSK4sEBKOMYceH3gPPrCBOeZl5btI2OfezrL9MoIgthxlqJ6EDbBymYVyNDv2RqJQrxQ== dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/x-global" "10.2.1" + "@babel/runtime" "^7.20.7" + "@polkadot/x-global" "10.2.3" "@types/websocket" "^1.0.5" websocket "^1.0.34" @@ -3831,10 +3815,10 @@ dependencies: slash "^4.0.0" -"@rollup/plugin-commonjs@^23.0.4": - version "23.0.7" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.7.tgz#7d26d879caa54283086de1974b66f512ef60abdc" - integrity sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q== +"@rollup/plugin-commonjs@^24.0.0": + version "24.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c" + integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" @@ -3843,7 +3827,7 @@ is-reference "1.2.1" magic-string "^0.27.0" -"@rollup/plugin-dynamic-import-vars@^2.0.1": +"@rollup/plugin-dynamic-import-vars@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-dynamic-import-vars/-/plugin-dynamic-import-vars-2.0.2.tgz#33a780a5f7ebd955357682583aef7e0346025069" integrity sha512-aycot2FUPPVb3uDswXsmUdgu8Z8T82uQGBGXZm/uf9XNsp1QoFDBhPrLiwNDJB8BUIiaRjvmaVsAPAQrbVTBVA== @@ -3853,7 +3837,7 @@ fast-glob "^3.2.12" magic-string "^0.27.0" -"@rollup/plugin-inject@^5.0.2": +"@rollup/plugin-inject@^5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz#0783711efd93a9547d52971db73b2fb6140a67b1" integrity sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA== @@ -3862,10 +3846,10 @@ estree-walker "^2.0.2" magic-string "^0.27.0" -"@rollup/plugin-json@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.2.tgz#d7dbbac62ff74064876b3e5d0d863cb3ad1e7cdb" - integrity sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA== +"@rollup/plugin-json@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" + integrity sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -4051,10 +4035,10 @@ pako "^2.0.4" ws "^8.8.1" -"@substrate/ss58-registry@^1.28.0", "@substrate/ss58-registry@^1.35.0": - version "1.36.0" - resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.36.0.tgz#22b59fa85cacc0bdf40aa5d8131a377c1b5a8dd8" - integrity sha512-YfQIpe2bIvGg/XWNByycznbOiAknMvpYaUpQJ2sLmNT/OwPx7XjEXk7dLShccuiQDoOQt3trTtF3Frz/Tjv6Fg== +"@substrate/ss58-registry@^1.28.0", "@substrate/ss58-registry@^1.37.0": + version "1.37.0" + resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.37.0.tgz#78f2a6f59f8c712cfe3ea747c52dcdfded3ec517" + integrity sha512-8R/4aQdZlKEPNrp2HSoPNxlDPPOyJe20qFk2w1hT0lXVbY4ZALrsO5Z4NrObAM2D9wTSpcxNKMFVQ2hIsqEHdw== "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -4082,27 +4066,27 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@truffle/abi-utils@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.5.tgz#0b5afb2cbfd492bee156d253d264923f52ac119e" - integrity sha512-nGIMNDjl1NhTxI5lSecOWoLFH8A+aDRPrMejke6Cb2ok8FWyTPCaHmlC8S0Kdi/Egp9m3CNI1TYsy9w9Y3E3jA== +"@truffle/abi-utils@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.6.tgz#ab35bc437e4c059a5c9a0595cd6df367199493a9" + integrity sha512-61aTH2QmwVA1INaPMufRHTsS6jsEhS+GCkuCDdvBDmwctSnCKGDOr185BGt65QrpMRxYmIoH6WFBSNMYxW9GRw== dependencies: change-case "3.0.2" fast-check "3.1.1" - web3-utils "1.7.4" + web3-utils "1.8.1" "@truffle/blockchain-utils@^0.1.3", "@truffle/blockchain-utils@^0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.6.tgz#7ea0a16b8135e5aeb688bf3bd014fa8f6ba45adb" integrity sha512-SldoNRIFSm3+HMBnSc2jFsu5TWDkCN4X6vL3wrd0t6DIeF7nD6EoPPjxwbFSoqCnkkRxMuZeL6sUx7UMJS/wSA== -"@truffle/codec@^0.14.10": - version "0.14.10" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.10.tgz#6d793f32e1816086e9ce0ea00f6291cca7815597" - integrity sha512-+uPnImtjNUzRhWOp5GG9AeSEuG1o9iVRpCsodQ04podKqYagtjNOKSe7jqNLJCbZ1Vpbvztmb9KzbwOJTLZS9A== +"@truffle/codec@^0.14.12": + version "0.14.12" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.12.tgz#5808ff289e3070b753de04992bfea824d8ab8ac7" + integrity sha512-0RIUoZQiGqNNp0zogeoCLoFoKSY65ih129rjrDqyv7Yy+IIpKgdOk8zZqg2sWIt7ukQFjZmAOwPznhYNGg/eKA== dependencies: - "@truffle/abi-utils" "^0.3.5" - "@truffle/compile-common" "^0.9.1" + "@truffle/abi-utils" "^0.3.6" + "@truffle/compile-common" "^0.9.2" big.js "^6.0.3" bn.js "^5.1.3" cbor "^5.2.0" @@ -4110,14 +4094,14 @@ lodash "^4.17.21" semver "7.3.7" utf8 "^3.0.0" - web3-utils "1.7.4" + web3-utils "1.8.1" -"@truffle/compile-common@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.1.tgz#4b36ac57d3e7dfbde0697621c8e6dc613820ef1a" - integrity sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw== +"@truffle/compile-common@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.2.tgz#da8aed5c9c8da119cb4b7ee5a425d2559a99bfb7" + integrity sha512-n7MF/4/dntccj44RGe3PRMD8Vk46PU8dJtzd1VLAfgokK2Y2N+SjAzDskBnmAydZVWAM315nZIUQsgnY8xoATw== dependencies: - "@truffle/error" "^0.1.1" + "@truffle/error" "^0.2.0" colors "1.4.0" "@truffle/contract-schema@^3.0.14", "@truffle/contract-schema@^3.4.11", "@truffle/contract-schema@^3.4.7": @@ -4129,50 +4113,55 @@ debug "^4.3.1" "@truffle/contract@^4.3.24": - version "4.6.9" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.9.tgz#79864deb1efac58210fcf317bd733e8aa5253ecb" - integrity sha512-clQPA+Or6MQtaw1DVEdN/dKb5KXF2iDzBaK4KqwYdGSt5CXFfltBXHKloWTNeY4fHSiCU1X3EIMxGsH++Zy+Sg== + version "4.6.11" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.11.tgz#7e426d2507a065a5ca01f653d81e9676be747f64" + integrity sha512-0YUS+4D4M+tLFx9JSxFgr7zfYBnHytmLDBjQKemhH/19NbSfos3bajdB08nKAphVM7IisoKnaCd5HOsEWusJJw== dependencies: "@ensdomains/ensjs" "^2.1.0" "@truffle/blockchain-utils" "^0.1.6" "@truffle/contract-schema" "^3.4.11" - "@truffle/debug-utils" "^6.0.41" - "@truffle/error" "^0.1.1" - "@truffle/interface-adapter" "^0.5.25" + "@truffle/debug-utils" "^6.0.43" + "@truffle/error" "^0.2.0" + "@truffle/interface-adapter" "^0.5.26" bignumber.js "^7.2.1" debug "^4.3.1" ethers "^4.0.32" - web3 "1.7.4" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-eth-abi "1.7.4" - web3-utils "1.7.4" - -"@truffle/debug-utils@^6.0.22", "@truffle/debug-utils@^6.0.41": - version "6.0.41" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.41.tgz#c6d0a59d044d4c0862fc4b4c931a1db6d88fe40c" - integrity sha512-8sk0fmcN3s11cvAJyODoDPWK9W730c6UAreyeHNj03PWg04D+YUqHpRlV2evdqAx2om1p+Xp03eQag15mg//jQ== - dependencies: - "@truffle/codec" "^0.14.10" + web3 "1.8.1" + web3-core-helpers "1.8.1" + web3-core-promievent "1.8.1" + web3-eth-abi "1.8.1" + web3-utils "1.8.1" + +"@truffle/debug-utils@^6.0.22", "@truffle/debug-utils@^6.0.43": + version "6.0.43" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.43.tgz#e86c614b9dfba4fb304560490d8f4d4f5f7d9df7" + integrity sha512-vJQmfSyrEgLjn7tp7K6WlZAkjISb5MFlN8mAjGnMz30Ja6/cTMQ0l6NLZGPYgZYk5uB4KrqcmNC+PqXrgXWt2Q== + dependencies: + "@truffle/codec" "^0.14.12" "@trufflesuite/chromafi" "^3.0.0" bn.js "^5.1.3" chalk "^2.4.2" debug "^4.3.1" highlightjs-solidity "^2.0.5" -"@truffle/error@^0.1.0", "@truffle/error@^0.1.1": +"@truffle/error@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== -"@truffle/interface-adapter@^0.5.16", "@truffle/interface-adapter@^0.5.25": - version "0.5.25" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.25.tgz#8a62740a48de1a5fa6ecf354b5b7fc73179cce30" - integrity sha512-7EpA9Tyq9It2z7GaLPHljEdmCtVFAkYko6vxXbN+H5PdL6zjEOw66bzMbKisKkh3px5dUd1OlRwPljjs34dpAQ== +"@truffle/error@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.2.0.tgz#65de6f03f5c041f883cc87677eecf8231428f1ab" + integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== + +"@truffle/interface-adapter@^0.5.16", "@truffle/interface-adapter@^0.5.26": + version "0.5.26" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.26.tgz#0eb9db6355e81ca9c44b341fe13a7190041f186a" + integrity sha512-fBhoqtT+CT4XKXcOijvw0RIMgyUi3FJg+n5i5PyGBsoRzqbLZd9cZq+oMNjOZPdf3GH68hsOFOaQO5tZH7oZow== dependencies: bn.js "^5.1.3" ethers "^4.0.32" - web3 "1.7.4" + web3 "1.8.1" "@trufflesuite/bigint-buffer@1.1.10": version "1.1.10" @@ -4375,9 +4364,9 @@ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.31": - version "4.17.31" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" - integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== + version "4.17.32" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz#93dda387f5516af616d8d3f05f2c4c79d81e1b82" + integrity sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -4401,9 +4390,9 @@ "@types/node" "*" "@types/graceful-fs@^4.1.3": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== dependencies: "@types/node" "*" @@ -4505,9 +4494,9 @@ form-data "^3.0.0" "@types/node@*": - version "18.11.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.17.tgz#5c009e1d9c38f4a2a9d45c0b0c493fe6cdb4bcb5" - integrity sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng== + version "18.11.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" + integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== "@types/node@16.11.7": version "16.11.7" @@ -4675,9 +4664,9 @@ "@types/node" "*" "@types/ws@^8.5.1": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== dependencies: "@types/node" "*" @@ -4687,20 +4676,20 @@ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^17.0.8": - version "17.0.17" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.17.tgz#5672e5621f8e0fca13f433a8017aae4b7a2a03e7" - integrity sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g== + version "17.0.19" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.19.tgz#8dbecdc9ab48bee0cb74f6e3327de3fa0d0c98ae" + integrity sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.46.1": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz#dadb79df3b0499699b155839fd6792f16897d910" - integrity sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ== +"@typescript-eslint/eslint-plugin@^5.48.0": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz#deee67e399f2cb6b4608c935777110e509d8018c" + integrity sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ== dependencies: - "@typescript-eslint/scope-manager" "5.47.0" - "@typescript-eslint/type-utils" "5.47.0" - "@typescript-eslint/utils" "5.47.0" + "@typescript-eslint/scope-manager" "5.48.1" + "@typescript-eslint/type-utils" "5.48.1" + "@typescript-eslint/utils" "5.48.1" debug "^4.3.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" @@ -4709,37 +4698,37 @@ tsutils "^3.21.0" "@typescript-eslint/experimental-utils@^5.0.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.47.0.tgz#60f26e62d948f9977488825730007ec350bc1e44" - integrity sha512-DAP8xOaTAJLxouU0QrATiw8o/OHxxbUBXtkf9v+bCCU6tbJUn24xwB1dHFw3b5wYq4XvC1z5lYEN0g/Rx1sjzA== + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.48.1.tgz#5951c0b7ef4b0838ea95f25d53385de0e366e0b8" + integrity sha512-8OoIZZuOeqsm5cxn2f01qHWtVC3M4iixSsfZXPiQUg4Sl4LiU+b5epcJFwxNfqeoLl+SGncELyi3x99zI6C0ng== dependencies: - "@typescript-eslint/utils" "5.47.0" + "@typescript-eslint/utils" "5.48.1" -"@typescript-eslint/parser@^5.46.1": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.0.tgz#62e83de93499bf4b500528f74bf2e0554e3a6c8d" - integrity sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw== +"@typescript-eslint/parser@^5.48.0": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.48.1.tgz#d0125792dab7e232035434ab8ef0658154db2f10" + integrity sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA== dependencies: - "@typescript-eslint/scope-manager" "5.47.0" - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/typescript-estree" "5.47.0" + "@typescript-eslint/scope-manager" "5.48.1" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/typescript-estree" "5.48.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz#f58144a6b0ff58b996f92172c488813aee9b09df" - integrity sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw== +"@typescript-eslint/scope-manager@5.48.1": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz#39c71e4de639f5fe08b988005beaaf6d79f9d64d" + integrity sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ== dependencies: - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/visitor-keys" "5.47.0" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/visitor-keys" "5.48.1" -"@typescript-eslint/type-utils@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz#2b440979c574e317d3473225ae781f292c99e55d" - integrity sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg== +"@typescript-eslint/type-utils@5.48.1": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz#5d94ac0c269a81a91ad77c03407cea2caf481412" + integrity sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ== dependencies: - "@typescript-eslint/typescript-estree" "5.47.0" - "@typescript-eslint/utils" "5.47.0" + "@typescript-eslint/typescript-estree" "5.48.1" + "@typescript-eslint/utils" "5.48.1" debug "^4.3.4" tsutils "^3.21.0" @@ -4748,18 +4737,18 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/types@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.47.0.tgz#67490def406eaa023dbbd8da42ee0d0c9b5229d3" - integrity sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg== +"@typescript-eslint/types@5.48.1": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.1.tgz#efd1913a9aaf67caf8a6e6779fd53e14e8587e14" + integrity sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg== -"@typescript-eslint/typescript-estree@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz#ed971a11c5c928646d6ba7fc9dfdd6e997649aca" - integrity sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q== +"@typescript-eslint/typescript-estree@5.48.1": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz#9efa8ee2aa471c6ab62e649f6e64d8d121bc2056" + integrity sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA== dependencies: - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/visitor-keys" "5.47.0" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/visitor-keys" "5.48.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -4779,16 +4768,16 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.47.0.tgz#b5005f7d2696769a1fdc1e00897005a25b3a0ec7" - integrity sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw== +"@typescript-eslint/utils@5.48.1": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.1.tgz#20f2f4e88e9e2a0961cbebcb47a1f0f7da7ba7f9" + integrity sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.47.0" - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/typescript-estree" "5.47.0" + "@typescript-eslint/scope-manager" "5.48.1" + "@typescript-eslint/types" "5.48.1" + "@typescript-eslint/typescript-estree" "5.48.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" @@ -4801,12 +4790,12 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz#4aca4efbdf6209c154df1f7599852d571b80bb45" - integrity sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg== +"@typescript-eslint/visitor-keys@5.48.1": + version "5.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz#79fd4fb9996023ef86849bf6f904f33eb6c8fccb" + integrity sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA== dependencies: - "@typescript-eslint/types" "5.47.0" + "@typescript-eslint/types" "5.48.1" eslint-visitor-keys "^3.3.0" "@vue/component-compiler-utils@^3.3.0": @@ -5671,9 +5660,9 @@ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== "@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.0-rc.34" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.34.tgz#db1d16e082e167db6dbc67f1c264639e0b4c5e1a" - integrity sha512-NhEA0BusInyk7EiJ7i7qF1Mkrb6gGjZcQQ/W1xxGazxapubEmGO7v5WSll6hWxFXE2ngtLj8lflq1Ff5VtqEww== + version "3.0.0-rc.35" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.35.tgz#5a22f2c4e9341ca991e4331de0f0c286a0fcefab" + integrity sha512-J6ySgEdQUqAmlttvZOoXOEsrDTAnHyR/MtEvuAG5a+gwKY/2Cc7xn4CWcpgfuwkp+0a4vXmt2BDwzacDoGDN1g== dependencies: js-yaml "^3.10.0" tslib "^2.4.0" @@ -5883,9 +5872,9 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.8.0: - version "8.11.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" - integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -6275,14 +6264,14 @@ aws-sign2@~0.7.0: integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axios@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.1.tgz#44cf04a3c9f0c2252ebd85975361c026cb9f864a" - integrity sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A== + version "1.2.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1" + integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -6502,10 +6491,10 @@ babel-plugin-jest-hoist@^29.2.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-module-extension-resolver@^1.0.0-rc.2: - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/babel-plugin-module-extension-resolver/-/babel-plugin-module-extension-resolver-1.0.0-rc.2.tgz#c12a5bc29c478cc87cdf9359188bf500db53eae9" - integrity sha512-nSvCi7Eq079snAYgWbq+VM8eci7OER9MAhDchuxpdimuyJr06x/Stsmc2b6zP5CDv4XR54Etkpf7jOo5NfzgVg== +babel-plugin-module-extension-resolver@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-extension-resolver/-/babel-plugin-module-extension-resolver-1.0.0.tgz#063f5a7518d11b9d8a58c382f00f21f0100f380f" + integrity sha512-TIwNuS8jfdmoyn+tKMM9T6fczI5y6hHbicbCTIF+RyPSNSnQMlZNnCs/pQceOEZ/0qFNbaj5p0LCLG2VS1EF7g== babel-plugin-module-resolver@^4.1.0: version "4.1.0" @@ -7561,9 +7550,9 @@ camelcase@^6.0.0, camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001400: - version "1.0.30001439" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz#ab7371faeb4adff4b74dad1718a6fd122e45d9cb" - integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A== + version "1.0.30001442" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz#40337f1cf3be7c637b061e2f78582dc1daec0614" + integrity sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow== caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" @@ -7664,13 +7653,13 @@ change-case@3.0.2: upper-case "^1.1.1" upper-case-first "^1.1.0" -changelog-parser@^2.0.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/changelog-parser/-/changelog-parser-2.8.1.tgz#1428998c275e4f7c0a855026dc60c66cde36bb87" - integrity sha512-tNUYFRCEeWTXmwLqoNtOEzx9wcytg72MmGQqsEs14ClYwIDln7sbQw7FJj/dulXgSlsxkemc9gpPQhZYZx1TPw== +changelog-parser@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/changelog-parser/-/changelog-parser-3.0.1.tgz#c8c693c78756e5b93fbf09760b65ca95b05cef68" + integrity sha512-1AEVJgnFEO4v5ukfEH/j9cr2Z39Y/GCieNi605azhufAolXF4vQAwZBY8BrUVRkvlI3gwe3i621/PIAW0zmmEQ== dependencies: line-reader "^0.2.4" - remove-markdown "^0.2.2" + remove-markdown "^0.5.0" char-regex@^1.0.2: version "1.0.2" @@ -7780,9 +7769,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef" - integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog== + version "3.7.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f" + integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== cids@^0.7.1: version "0.7.5" @@ -8092,9 +8081,9 @@ commander@^7.2.0: integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^9.4.1: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== common-ancestor-path@^1.0.1: version "1.0.1" @@ -8361,16 +8350,16 @@ copyfiles@^2.4.1: yargs "^16.1.0" core-js-compat@^3.25.1: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df" - integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== + version "3.27.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.27.1.tgz#b5695eb25c602d72b1d30cbfba3cb7e5e4cf0a67" + integrity sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA== dependencies: browserslist "^4.21.4" core-js-pure@^3.0.1: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33" - integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== + version "3.27.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.27.1.tgz#ede4a6b8440585c7190062757069c01d37a19dca" + integrity sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -9207,11 +9196,6 @@ emittery@^0.13.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -emoji-regex@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" - integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -9302,26 +9286,32 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.20.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.5.tgz#e6dc99177be37cacda5988e692c3fa8b218e95d2" - integrity sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ== + version "1.21.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== dependencies: + available-typed-arrays "^1.0.5" call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function-bind "^1.1.1" function.prototype.name "^1.1.5" get-intrinsic "^1.1.3" get-symbol-description "^1.0.0" + globalthis "^1.0.3" gopd "^1.0.1" has "^1.0.3" has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" + is-typed-array "^1.1.10" is-weakref "^1.0.2" object-inspect "^1.12.2" object-keys "^1.1.1" @@ -9330,7 +9320,9 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: safe-regex-test "^1.0.0" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -9342,6 +9334,15 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -9599,12 +9600,12 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.29.0: - version "8.30.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.30.0.tgz#83a506125d089eef7c5b5910eeea824273a33f50" - integrity sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ== +eslint@^8.31.0: + version "8.31.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" + integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== dependencies: - "@eslint/eslintrc" "^1.4.0" + "@eslint/eslintrc" "^1.4.1" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -10498,9 +10499,9 @@ fastfile@0.0.20: integrity sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA== fastq@^1.6.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.14.0.tgz#107f69d7295b11e0fccc264e1fc6389f623731ce" - integrity sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" @@ -10930,7 +10931,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: +fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -11239,13 +11240,13 @@ gh-release-assets@^2.0.0: simple-get "^4.0.0" util-extend "^1.0.1" -gh-release@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/gh-release/-/gh-release-7.0.0.tgz#6779ed6edf1cddd1f6689a8ea6ec02c7925eb5d4" - integrity sha512-Ugl1kHbyTe/KCPl8dmN9UGDNUw2K6Fh5owOvyllMsYGMyw4nklNBkgCad0a19xu3xR+/9iIV/5+wRIbo0S20Gg== +gh-release@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/gh-release/-/gh-release-7.0.1.tgz#9a6a8d8118352bcbff9b52bf78f514ecf5c8e0e7" + integrity sha512-yWtXXBCn9V3v4r+cT1LOfBlkkGj7RnsqbwiXj7GSwqqTkxXFiQIEA2WDfQG14Nu/Y3dEklUncZ2W8MUu41Zong== dependencies: "@octokit/rest" "^19.0.5" - changelog-parser "^2.0.0" + changelog-parser "^3.0.0" deep-extend "^0.6.0" gauge "^v5.0.0" gh-release-assets "^2.0.0" @@ -11439,6 +11440,13 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^11.0.2, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -11601,9 +11609,9 @@ hardhat-gas-reporter@^1.0.8: sha1 "^1.1.1" hardhat@^2.6.8: - version "2.12.4" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.4.tgz#e539ba58bee9ba1a1ced823bfdcec0b3c5a3e70f" - integrity sha512-rc9S2U/4M+77LxW1Kg7oqMMmjl81tzn5rNFARhbXKUA1am/nhfMJEujOjuKvt+ZGMiZ11PYSe8gyIpB/aRNDgw== + version "2.12.5" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.5.tgz#e3cd4d6dae35cb9505055967bd7e15e6adf3aa03" + integrity sha512-f/t7+hLlhsnQZ6LDXyV+8rHGRZFZY1sgFvgrwr9fBjMdGp1Bu6hHq1KXS4/VFZfZcVdL1DAWWEkryinZhqce+A== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" @@ -11685,6 +11693,11 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -12069,9 +12082,9 @@ immediate@~3.2.3: integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== immutable@^4.0.0-rc.12: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + version "4.2.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16" + integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -12176,7 +12189,7 @@ inquirer@^8.0.0, inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^7.0.0" -internal-slot@^1.0.3: +internal-slot@^1.0.3, internal-slot@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== @@ -12251,6 +12264,15 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" + integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -12614,7 +12636,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.3: +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.10" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== @@ -13367,18 +13389,18 @@ json5@^0.5.1: integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" - integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@3.2.0, jsonc-parser@^3.0.0: +jsonc-parser@3.2.0, jsonc-parser@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== @@ -13452,7 +13474,7 @@ keccak@3.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.2: +keccak@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== @@ -13461,6 +13483,15 @@ keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -14149,10 +14180,10 @@ markdown-table@^1.1.3: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== -marked@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.4.tgz#5a4ce6c7a1ae0c952601fce46376ee4cf1797e1c" - integrity sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA== +marked@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.5.tgz#979813dfc1252cc123a79b71b095759a32f42a5d" + integrity sha512-jPueVhumq7idETHkb203WDD4fMA3yV9emQ5vLwop58lu8bTclMghBWcYAavlDqIEMaisADinV1TooIFCfqOsYQ== mcl-wasm@^0.7.1: version "0.7.9" @@ -14198,9 +14229,9 @@ memdown@~3.0.0: safe-buffer "~5.1.1" memfs@^3.4.3: - version "3.4.12" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.12.tgz#d00f8ad8dab132dc277c659dc85bfd14b07d03bd" - integrity sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw== + version "3.4.13" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.13.tgz#248a8bd239b3c240175cd5ec548de5227fc4f345" + integrity sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg== dependencies: fs-monkey "^1.0.3" @@ -14423,7 +14454,7 @@ minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.1: +minimatch@^5.0.1, minimatch@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff" integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== @@ -14920,9 +14951,9 @@ node-gyp-build@4.4.0: integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== node-gyp-build@^4.2.0, node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== node-gyp@^9.0.0: version "9.3.1" @@ -15195,13 +15226,13 @@ nx@14.8.6, nx@^14.5.10: yargs "^17.4.0" yargs-parser "21.0.1" -nx@15.3.3, "nx@>=14.8.1 < 16": - version "15.3.3" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.3.3.tgz#4ad357310112bad1c4fbfded965bbbe00a2a906f" - integrity sha512-yR102AlVW5Sb7X1e9cyR+0h44RD6c3eLJbAZ0yVFKPCKw+zQTdGvAqITtB6ZeFnPkg6Qq6f1oWu6G0n6f2cTpw== +nx@15.4.5, "nx@>=14.8.1 < 16": + version "15.4.5" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.4.5.tgz#12daa740256fa29ba634fbc4f3f87b6d078c2990" + integrity sha512-1spZL6sgOV8JJJuN8W5CLtJYwTOnlyaV32jPXfidavU0QMS8MP+rW3+NUQ9Uzc1UYhOu8llZWtnen93neVGQRw== dependencies: - "@nrwl/cli" "15.3.3" - "@nrwl/tao" "15.3.3" + "@nrwl/cli" "15.4.5" + "@nrwl/tao" "15.4.5" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" @@ -15230,7 +15261,7 @@ nx@15.3.3, "nx@>=14.8.1 < 16": strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" - tsconfig-paths "^3.9.0" + tsconfig-paths "^4.1.2" tslib "^2.3.0" v8-compile-cache "2.3.0" yargs "^17.6.2" @@ -15812,15 +15843,15 @@ patch-package@6.2.2: tmp "^0.0.33" patch-package@^6.2.2: - version "6.5.0" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.0.tgz#feb058db56f0005da59cfa316488321de585e88a" - integrity sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q== + version "6.5.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621" + integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== dependencies: "@yarnpkg/lockfile" "^1.1.0" chalk "^4.1.2" cross-spawn "^6.0.5" find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" + fs-extra "^9.0.0" is-ci "^2.0.0" klaw-sync "^6.0.0" minimist "^1.2.6" @@ -16071,9 +16102,9 @@ postcss@^7.0.36: source-map "^0.6.1" postcss@^8.1.7, postcss@^8.4.6: - version "8.4.20" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56" - integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g== + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -16124,21 +16155,18 @@ prepend-http@^2.0.0: integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier-plugin-solidity@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.0.tgz#a417d104b48a43af3adbfb96b65dbce34fd21429" - integrity sha512-5gq0T49ifvXH/6x1STuKyWjTUgi6ICoV65yNtKlg/vZEvocFtSpByJOJICBfqPwNsnv4vhhWIqkLGSUJmWum2w== + version "1.1.1" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.1.tgz#4d3375b85f97812ffcbe48d5a8b3fe914d69c91f" + integrity sha512-uD24KO26tAHF+zMN2nt1OUzfknzza5AgxjogQQrMLZc7j8xiQrDoNWNeOlfFC0YLTwo12CLD10b9niLyP6AqXg== dependencies: "@solidity-parser/parser" "^0.14.5" - emoji-regex "^10.2.1" - escape-string-regexp "^4.0.0" semver "^7.3.8" solidity-comments-extractor "^0.0.7" - string-width "^4.2.3" "prettier@^1.18.2 || ^2.0.0", prettier@^2.1.2, prettier@^2.2.1, prettier@^2.3.2, prettier@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" - integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== + version "2.8.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.2.tgz#c4ea1b5b454d7c4b59966db2e06ed7eec5dfd160" + integrity sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw== pretty-format@^29.3.1: version "29.3.1" @@ -16382,9 +16410,9 @@ punycode@2.1.0: integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.2.0.tgz#2092cc57cd2582c38e4e7e8bb869dc8d3148bc74" + integrity sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw== pupa@^2.1.1: version "2.1.1" @@ -16819,10 +16847,10 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" -remove-markdown@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.2.2.tgz#66b0ceeba9fb77ca9636bb1b0307ce21a32a12a6" - integrity sha512-jwgEf3Yh/xi4WodWi/vPlasa9C9pMv1kz5ITOIAGjBW7PeZ/CHZCdBfJzQnn2VX2cBvf1xCuJv0tUJqn/FCMNA== +remove-markdown@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.5.0.tgz#a596264bbd60b9ceab2e2ae86e5789eee91aee32" + integrity sha512-x917M80K97K5IN1L8lUvFehsfhR8cYjGQ/yAMRI9E7JIKivtl5Emo5iD13DhMr+VojzMCiYk8V2byNPwT/oapg== repeat-element@^1.1.2: version "1.1.4" @@ -17129,10 +17157,10 @@ rollup@^2.77.2: optionalDependencies: fsevents "~2.3.2" -rollup@^3.7.4: - version "3.7.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.7.5.tgz#db580f8eda50237b0721ddea301fb981cd992933" - integrity sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ== +rollup@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011" + integrity sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w== optionalDependencies: fsevents "~2.3.2" @@ -17509,14 +17537,14 @@ shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" -shiki@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.11.1.tgz#df0f719e7ab592c484d8b73ec10e215a503ab8cc" - integrity sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA== +shiki@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.12.1.tgz#26fce51da12d055f479a091a5307470786f300cd" + integrity sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ== dependencies: - jsonc-parser "^3.0.0" - vscode-oniguruma "^1.6.1" - vscode-textmate "^6.0.0" + jsonc-parser "^3.2.0" + vscode-oniguruma "^1.7.0" + vscode-textmate "^8.0.0" side-channel@^1.0.4: version "1.0.4" @@ -18680,6 +18708,15 @@ tsconfig-paths@^3.10.1, tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a" + integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -18825,6 +18862,15 @@ typechain@^5.1.2: prettier "^2.1.2" ts-essentials "^7.0.1" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typed-assert@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" @@ -18843,14 +18889,14 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typedoc@^0.23.15: - version "0.23.23" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.23.tgz#9cf95b03d2d40031d8978b55e88b0b968d69f512" - integrity sha512-cg1YQWj+/BU6wq74iott513U16fbrPCbyYs04PHZgvoKJIc6EY4xNobyDZh4KMfRGW8Yjv6wwIzQyoqopKOUGw== + version "0.23.24" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.24.tgz#01cf32c09f2c19362e72a9ce1552d6e5b48c4fef" + integrity sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA== dependencies: lunr "^2.3.9" - marked "^4.2.4" - minimatch "^5.1.1" - shiki "^0.11.1" + marked "^4.2.5" + minimatch "^5.1.2" + shiki "^0.12.1" typeforce@^1.18.0: version "1.18.0" @@ -19279,15 +19325,15 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vscode-oniguruma@^1.6.1: +vscode-oniguruma@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== -vscode-textmate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210" - integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ== +vscode-textmate@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" + integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== vue-template-es2015-compiler@^1.9.0: version "1.9.1" @@ -19387,15 +19433,6 @@ web3-bzz@1.2.11: swarm-js "^0.1.40" underscore "1.9.1" -web3-bzz@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" - integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - web3-bzz@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.1.tgz#81397be5ce262d03d82b92e9d8acc11f8a609ea1" @@ -19414,14 +19451,6 @@ web3-core-helpers@1.2.11: web3-eth-iban "1.2.11" web3-utils "1.2.11" -web3-core-helpers@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" - integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== - dependencies: - web3-eth-iban "1.7.4" - web3-utils "1.7.4" - web3-core-helpers@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz#7904747b23fd0afa4f2c86ed98ea9418ccad7672" @@ -19442,17 +19471,6 @@ web3-core-method@1.2.11: web3-core-subscriptions "1.2.11" web3-utils "1.2.11" -web3-core-method@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" - integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== - dependencies: - "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-utils "1.7.4" - web3-core-method@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.1.tgz#0fc5a433a9fc784c447522f141c0a8e0163c7790" @@ -19471,13 +19489,6 @@ web3-core-promievent@1.2.11: dependencies: eventemitter3 "4.0.4" -web3-core-promievent@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" - integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== - dependencies: - eventemitter3 "4.0.4" - web3-core-promievent@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz#f334c8b2ceac6c2228f06d2a515f6d103157f036" @@ -19496,17 +19507,6 @@ web3-core-requestmanager@1.2.11: web3-providers-ipc "1.2.11" web3-providers-ws "1.2.11" -web3-core-requestmanager@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" - integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== - dependencies: - util "^0.12.0" - web3-core-helpers "1.7.4" - web3-providers-http "1.7.4" - web3-providers-ipc "1.7.4" - web3-providers-ws "1.7.4" - web3-core-requestmanager@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz#272ffa55b7b568ecbc8e4a257ca080355c31c60e" @@ -19527,14 +19527,6 @@ web3-core-subscriptions@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" -web3-core-subscriptions@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" - integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" - web3-core-subscriptions@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz#f5ae1380e92746eadfab6475b8a70ef5a1be6bbf" @@ -19556,19 +19548,6 @@ web3-core@1.2.11: web3-core-requestmanager "1.2.11" web3-utils "1.2.11" -web3-core@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" - integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== - dependencies: - "@types/bn.js" "^5.1.0" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-requestmanager "1.7.4" - web3-utils "1.7.4" - web3-core@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.1.tgz#050b1c408d1f9b7ae539e90f7f7d1b7a7d10578b" @@ -19591,14 +19570,6 @@ web3-eth-abi@1.2.11: underscore "1.9.1" web3-utils "1.2.11" -web3-eth-abi@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" - integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== - dependencies: - "@ethersproject/abi" "^5.6.3" - web3-utils "1.7.4" - web3-eth-abi@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz#47455d6513217c4b0866fea6f97b1c4afa0b6535" @@ -19624,23 +19595,6 @@ web3-eth-accounts@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" -web3-eth-accounts@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" - integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== - dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.2" - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-util "^7.0.10" - scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" - web3-eth-accounts@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz#1ce7387721f118aeb0376291e4d8bbe2ac323406" @@ -19673,20 +19627,6 @@ web3-eth-contract@1.2.11: web3-eth-abi "1.2.11" web3-utils "1.2.11" -web3-eth-contract@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" - integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== - dependencies: - "@types/bn.js" "^5.1.0" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-utils "1.7.4" - web3-eth-contract@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz#bdf3e33bbcb79a1b6144dffd6a0deefd2e459272" @@ -19716,20 +19656,6 @@ web3-eth-ens@1.2.11: web3-eth-contract "1.2.11" web3-utils "1.2.11" -web3-eth-ens@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" - integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-contract "1.7.4" - web3-utils "1.7.4" - web3-eth-ens@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz#e78a9651fea8282abe8565b001819e2d645e5929" @@ -19752,14 +19678,6 @@ web3-eth-iban@1.2.11: bn.js "^4.11.9" web3-utils "1.2.11" -web3-eth-iban@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" - integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== - dependencies: - bn.js "^5.2.1" - web3-utils "1.7.4" - web3-eth-iban@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz#c6484e5d68ca644aa78431301e7acd5df24598d1" @@ -19780,18 +19698,6 @@ web3-eth-personal@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" -web3-eth-personal@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" - integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - web3-eth-personal@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz#00b5ff1898b62044d25ed5fddd8486168d4827cf" @@ -19823,24 +19729,6 @@ web3-eth@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" -web3-eth@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" - integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== - dependencies: - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-accounts "1.7.4" - web3-eth-contract "1.7.4" - web3-eth-ens "1.7.4" - web3-eth-iban "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - web3-eth@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.1.tgz#395f6cd56edaac5dbb23e8cec9886c3fd32c430e" @@ -19868,15 +19756,6 @@ web3-net@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" -web3-net@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" - integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" - web3-net@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.1.tgz#2bed4d4b93166724129ec33d0e5dea98880285f4" @@ -19920,14 +19799,6 @@ web3-providers-http@1.2.11: web3-core-helpers "1.2.11" xhr2-cookies "1.1.0" -web3-providers-http@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" - integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== - dependencies: - web3-core-helpers "1.7.4" - xhr2-cookies "1.1.0" - web3-providers-http@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.1.tgz#8aa89c11a9272f11ddb74b871273c92225faa28d" @@ -19947,14 +19818,6 @@ web3-providers-ipc@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" -web3-providers-ipc@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" - integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.7.4" - web3-providers-ipc@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz#6128a3a3a824d06bf0efcfe86325401f8691a5ca" @@ -19973,15 +19836,6 @@ web3-providers-ws@1.2.11: web3-core-helpers "1.2.11" websocket "^1.0.31" -web3-providers-ws@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" - integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" - websocket "^1.0.32" - web3-providers-ws@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz#5e5370e07eb8c615ed298ebc8602b283c7b7d649" @@ -20001,16 +19855,6 @@ web3-shh@1.2.11: web3-core-subscriptions "1.2.11" web3-net "1.2.11" -web3-shh@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" - integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-net "1.7.4" - web3-shh@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.1.tgz#028a95cf9d3a36020380938b9a127610efbb9be7" @@ -20035,19 +19879,6 @@ web3-utils@1.2.11: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" - integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== - dependencies: - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - web3-utils@1.8.1, web3-utils@^1.0.0-beta.31, web3-utils@^1.2.11, web3-utils@^1.6.0: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.1.tgz#f2f7ca7eb65e6feb9f3d61056d0de6bbd57125ff" @@ -20074,20 +19905,7 @@ web3@1.2.11: web3-shh "1.2.11" web3-utils "1.2.11" -web3@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" - integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== - dependencies: - web3-bzz "1.7.4" - web3-core "1.7.4" - web3-eth "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-shh "1.7.4" - web3-utils "1.7.4" - -web3@^1.0.0-beta.34, web3@^1.3.6, web3@^1.6.0: +web3@1.8.1, web3@^1.0.0-beta.34, web3@^1.3.6, web3@^1.6.0: version "1.8.1" resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.1.tgz#8ea67215ef5f3a6f6d3381800b527242ea22885a" integrity sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ== @@ -20322,7 +20140,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== -which-typed-array@^1.1.2: +which-typed-array@^1.1.2, which-typed-array@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== @@ -20519,9 +20337,9 @@ ws@^7.4.6: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.11.0, ws@^8.4.2, ws@^8.8.1: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== xdg-basedir@^4.0.0: version "4.0.0" From 7608ed821f3edf35b34a2e840e84fb496baa3a70 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Wed, 11 Jan 2023 09:16:06 -0700 Subject: [PATCH 05/17] Add lower level initializer --- .../contracts/DeterministicDeployFactory.sol | 45 ++++++++++++++----- .../contracts/tokens/FungibleTokenWrapper.sol | 2 +- .../contracts/tokens/TokenWrapper.sol | 14 +++++- 3 files changed, 49 insertions(+), 12 deletions(-) diff --git a/packages/contracts/contracts/DeterministicDeployFactory.sol b/packages/contracts/contracts/DeterministicDeployFactory.sol index 4d1876c83..6af2157dc 100644 --- a/packages/contracts/contracts/DeterministicDeployFactory.sol +++ b/packages/contracts/contracts/DeterministicDeployFactory.sol @@ -4,16 +4,41 @@ pragma solidity ^0.8.0; contract DeterministicDeployFactory { event Deploy(address addr); - function deploy(bytes memory bytecode, uint _salt) external { - address addr; - assembly { - addr := create2(0, add(bytecode, 0x20), mload(bytecode), _salt) - if iszero(extcodesize(addr)) { - revert(0, 0) - } - } + function deploy(bytes memory bytecode, uint _salt) external returns (address) { + address addr; + assembly { + addr := create2(0, add(bytecode, 0x20), mload(bytecode), _salt) + if iszero(extcodesize(addr)) { + revert(0, 0) + } + } - emit Deploy(addr); - } + emit Deploy(addr); + return addr; + } + + function deployFungibleToken( + bytes memory bytecode, + uint _salt, + uint16 _feePercentage, + address _feeRecipient, + address _handler, + uint256 _limit, + bool _isNativeAllowed + ) external { + address c = this.deploy(bytecode, _salt); + // delegate call initialize the contract created with the msg.sender + (bool success, bytes memory data) = c.delegatecall( + abi.encodeWithSignature( + "initialize(uint16,address,address,uint256,bool)", + _feePercentage, + _feeRecipient, + _handler, + _limit, + _isNativeAllowed + ) + ); + require(success, string(data)); + } } diff --git a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol index 65ff37a50..5a95b7657 100644 --- a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol +++ b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol @@ -19,7 +19,6 @@ import "../utils/ProposalNonceTracker.sol"; */ contract FungibleTokenWrapper is TokenWrapper, - Initialized, IFungibleTokenWrapper, ProposalNonceTracker { @@ -56,6 +55,7 @@ contract FungibleTokenWrapper is uint256 _limit, bool _isNativeAllowed ) public onlyUninitialized { + super.initialize(msg.sender); initialized = true; feePercentage = _feePercentage; feeRecipient = payable(_feeRecipient); diff --git a/packages/contracts/contracts/tokens/TokenWrapper.sol b/packages/contracts/contracts/tokens/TokenWrapper.sol index 68b9fa992..ef92be19e 100644 --- a/packages/contracts/contracts/tokens/TokenWrapper.sol +++ b/packages/contracts/contracts/tokens/TokenWrapper.sol @@ -6,6 +6,7 @@ pragma solidity ^0.8.0; import "../interfaces/tokens/ITokenWrapper.sol"; +import "../utils/Initialized.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; @@ -17,7 +18,7 @@ import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; @author Webb Technologies. @notice This contract is intended to be used with TokenHandler/FungibleToken contract. */ -abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper { +abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper, Initialized { using SafeMath for uint256; uint16 public feePercentage; address payable public feeRecipient; @@ -32,6 +33,17 @@ abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper { string memory _symbol ) ERC20PresetMinterPauser(_name, _symbol) {} + function initialize(address admin) public onlyUninitialized { + initialized = true; + address currentAdmin = getRoleMember(DEFAULT_ADMIN_ROLE, 0); + _revokeRole(DEFAULT_ADMIN_ROLE, currentAdmin); + _revokeRole(MINTER_ROLE, currentAdmin); + _revokeRole(PAUSER_ROLE, currentAdmin); + _grantRole(DEFAULT_ADMIN_ROLE, admin); + _grantRole(MINTER_ROLE, admin); + _grantRole(PAUSER_ROLE, admin); + } + /** @notice Get the fee for a target amount to wrap @param _amountToWrap The amount to wrap From d7fc30b655a5ca46a858bd9b9bc212eb6232ee1a Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Wed, 11 Jan 2023 11:36:16 -0700 Subject: [PATCH 06/17] Update token contracts for create2/admin related purposes --- .../contracts/DeterministicDeployFactory.sol | 37 ++++++++++++++++++- .../contracts/anchors/LinkableAnchor.sol | 16 ++++---- .../interfaces/tokens/IMultiTokenManager.sol | 4 +- .../contracts/tokens/AaveTokenWrapper.sol | 30 +++++++++------ .../contracts/tokens/FungibleTokenWrapper.sol | 6 ++- .../tokens/MultiFungibleTokenManager.sol | 7 +++- .../contracts/tokens/MultiNftTokenManager.sol | 3 +- .../contracts/contracts/tokens/Registry.sol | 3 +- .../contracts/vanchors/base/VAnchorBase.sol | 4 +- 9 files changed, 80 insertions(+), 30 deletions(-) diff --git a/packages/contracts/contracts/DeterministicDeployFactory.sol b/packages/contracts/contracts/DeterministicDeployFactory.sol index 6af2157dc..e8b490730 100644 --- a/packages/contracts/contracts/DeterministicDeployFactory.sol +++ b/packages/contracts/contracts/DeterministicDeployFactory.sol @@ -17,6 +17,16 @@ contract DeterministicDeployFactory { return addr; } + /** + @notice Deploy a fungible token + @param bytecode The bytecode of the contract + @param _salt The salt for the contract + @param _feePercentage The fee percentage for wrapping + @param _feeRecipient The recipient for fees from wrapping. + @param _handler The address of the handler + @param _limit The maximum amount of tokens that can be wrapped + @param _isNativeAllowed Whether or not native tokens are allowed to be wrapped + */ function deployFungibleToken( bytes memory bytecode, uint _salt, @@ -28,7 +38,7 @@ contract DeterministicDeployFactory { ) external { address c = this.deploy(bytecode, _salt); // delegate call initialize the contract created with the msg.sender - (bool success, bytes memory data) = c.delegatecall( + (bool success, bytes memory data) = c.call( abi.encodeWithSignature( "initialize(uint16,address,address,uint256,bool)", _feePercentage, @@ -40,5 +50,30 @@ contract DeterministicDeployFactory { ); require(success, string(data)); } + + /** + @notice Deploy a VAnchor + @param bytecode The bytecode of the contract + @param _salt The salt for the contract + @param _minimalWithdrawalAmount The minimal withdrawal amount + @param _maximumDepositAmount The maximum deposit amount + */ + function deployVAnchor( + bytes memory bytecode, + uint _salt, + uint256 _minimalWithdrawalAmount, + uint256 _maximumDepositAmount + ) external { + address c = this.deploy(bytecode, _salt); + // delegate call initialize the contract created with the msg.sender + (bool success, bytes memory data) = c.call( + abi.encodeWithSignature( + "initialize(uint256,uint256)", + _minimalWithdrawalAmount, + _maximumDepositAmount + ) + ); + require(success, string(data)); + } } diff --git a/packages/contracts/contracts/anchors/LinkableAnchor.sol b/packages/contracts/contracts/anchors/LinkableAnchor.sol index 20b1a764b..70dc8ae62 100644 --- a/packages/contracts/contracts/anchors/LinkableAnchor.sol +++ b/packages/contracts/contracts/anchors/LinkableAnchor.sol @@ -66,6 +66,14 @@ abstract contract LinkableAnchor is event EdgeAddition(uint256 chainID, uint256 latestLeafIndex, uint256 merkleRoot); event EdgeUpdate(uint256 chainID, uint256 latestLeafIndex, uint256 merkleRoot); + /** + @notice Checks the sender is the AnchorHandler configured on this contract + */ + modifier onlyHandler() { + require(msg.sender == handler, "sender is not the handler"); + _; + } + /** @notice The LinkableAnchor constructor @param _handler The address of the `AnchorHandler` contract @@ -227,14 +235,6 @@ abstract contract LinkableAnchor is return true; } - /** - @notice Checks the sender is the AnchorHandler configured on this contract - */ - modifier onlyHandler() { - require(msg.sender == handler, "sender is not the handler"); - _; - } - /** @notice Checks the `_chainID` has an edge on this contract */ diff --git a/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol b/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol index 0267843ba..620d5616b 100644 --- a/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol +++ b/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol @@ -26,6 +26,7 @@ interface IMultiTokenManager { @param _limit The maximum amount of tokens that can be wrapped @param _feePercentage The fee percentage for wrapping @param _isNativeAllowed Whether or not native tokens are allowed to be wrapped + @param _admin The address of the admin who will receive minting rights and admin role */ function registerToken( address _handler, @@ -34,7 +35,8 @@ interface IMultiTokenManager { bytes32 _salt, uint256 _limit, uint16 _feePercentage, - bool _isNativeAllowed + bool _isNativeAllowed, + address _admin ) external returns (address); /** diff --git a/packages/contracts/contracts/tokens/AaveTokenWrapper.sol b/packages/contracts/contracts/tokens/AaveTokenWrapper.sol index e686a200b..4872310b4 100644 --- a/packages/contracts/contracts/tokens/AaveTokenWrapper.sol +++ b/packages/contracts/contracts/tokens/AaveTokenWrapper.sol @@ -26,29 +26,35 @@ contract AaveTokenWrapper is FungibleTokenWrapper, IAaveTokenWrapper { string memory _name, string memory _symbol, address _aaveLendingPool - ) FungibleTokenWrapper(_name, _symbol) { - aaveLendingPool = IAaveLendingPool(_aaveLendingPool); - } + ) FungibleTokenWrapper(_name, _symbol) {} /** @notice AaveTokenWrapper initializer - @param _feeRecipient The recipient for fees from wrapping - @param _governor The address of the governor + @param _feePercentage The fee percentage for wrapping + @param _feeRecipient The recipient for fees from wrapping. + @param _handler The address of the handler @param _limit The maximum amount of tokens that can be wrapped @param _isNativeAllowed Whether or not native tokens are allowed to be wrapped + @param _admin The address of the admin who will receive minting rights and admin role + @param _aaveLendingPool The address of the Aave lending pool */ function initialize( + uint16 _feePercentage, address _feeRecipient, - address _governor, + address _handler, uint256 _limit, bool _isNativeAllowed, + address _admin, address _aaveLendingPool - ) public { - require(!initialized, "Contract already initialized"); - feeRecipient = payable(_feeRecipient); - wrappingLimit = _limit; - isNativeAllowed = _isNativeAllowed; - initialized = true; + ) public onlyUninitialized { + super.initialize( + _feePercentage, + _feeRecipient, + _handler, + _limit, + _isNativeAllowed, + _admin + ); aaveLendingPool = IAaveLendingPool(_aaveLendingPool); } diff --git a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol index 5a95b7657..b87534366 100644 --- a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol +++ b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol @@ -47,15 +47,17 @@ contract FungibleTokenWrapper is @param _handler The address of the handler @param _limit The maximum amount of tokens that can be wrapped @param _isNativeAllowed Whether or not native tokens are allowed to be wrapped + @param _admin The address of the admin who will receive minting rights and admin role */ function initialize( uint16 _feePercentage, address _feeRecipient, address _handler, uint256 _limit, - bool _isNativeAllowed + bool _isNativeAllowed, + address _admin ) public onlyUninitialized { - super.initialize(msg.sender); + super.initialize(_admin); initialized = true; feePercentage = _feePercentage; feeRecipient = payable(_feeRecipient); diff --git a/packages/contracts/contracts/tokens/MultiFungibleTokenManager.sol b/packages/contracts/contracts/tokens/MultiFungibleTokenManager.sol index c55f670b7..114298974 100644 --- a/packages/contracts/contracts/tokens/MultiFungibleTokenManager.sol +++ b/packages/contracts/contracts/tokens/MultiFungibleTokenManager.sol @@ -25,6 +25,7 @@ contract MultiFungibleTokenManager is MultiTokenManagerBase { @param _limit The maximum amount of tokens that can be wrapped @param _feePercentage The fee percentage for wrapping @param _isNativeAllowed Whether or not native tokens are allowed to be wrapped + @param _admin The address of the admin who will receive minting rights and admin role */ function registerToken( address _handler, @@ -33,7 +34,8 @@ contract MultiFungibleTokenManager is MultiTokenManagerBase { bytes32 _salt, uint256 _limit, uint16 _feePercentage, - bool _isNativeAllowed + bool _isNativeAllowed, + address _admin ) external override onlyRegistry onlyInitialized returns (address) { FungibleTokenWrapper token = new FungibleTokenWrapper{ salt: _salt }(_name, _symbol); @@ -42,7 +44,8 @@ contract MultiFungibleTokenManager is MultiTokenManagerBase { payable(masterFeeRecipient), _handler, _limit, - _isNativeAllowed + _isNativeAllowed, + _admin ); wrappedTokens.push(address(token)); diff --git a/packages/contracts/contracts/tokens/MultiNftTokenManager.sol b/packages/contracts/contracts/tokens/MultiNftTokenManager.sol index a9fa76ecb..e943e43f0 100644 --- a/packages/contracts/contracts/tokens/MultiNftTokenManager.sol +++ b/packages/contracts/contracts/tokens/MultiNftTokenManager.sol @@ -23,7 +23,8 @@ contract MultiNftTokenManager is MultiTokenManagerBase { bytes32, uint256, uint16, - bool + bool, + address ) public view override onlyRegistry onlyInitialized returns (address) { revert(); } diff --git a/packages/contracts/contracts/tokens/Registry.sol b/packages/contracts/contracts/tokens/Registry.sol index 0024473b0..ef335a0bc 100644 --- a/packages/contracts/contracts/tokens/Registry.sol +++ b/packages/contracts/contracts/tokens/Registry.sol @@ -90,7 +90,8 @@ contract Registry is Initialized, IRegistry, ProposalNonceTracker { _salt, _limit, _feePercentage, - _isNativeAllowed + _isNativeAllowed, + maspVAnchor ); emit TokenRegistered(token, _tokenHandler, _assetIdentifier); idToWrappedAsset[_assetIdentifier] = token; diff --git a/packages/contracts/contracts/vanchors/base/VAnchorBase.sol b/packages/contracts/contracts/vanchors/base/VAnchorBase.sol index 25a76833b..9edb5de71 100644 --- a/packages/contracts/contracts/vanchors/base/VAnchorBase.sol +++ b/packages/contracts/contracts/vanchors/base/VAnchorBase.sol @@ -75,14 +75,14 @@ abstract contract VAnchorBase is LinkableAnchor { function configureMinimalWithdrawalLimit( uint256 _minimalWithdrawalAmount, uint32 _nonce - ) public override onlyHandler onlyIncrementingByOne(_nonce) { + ) public override onlyHandler onlyIncrementingByOne(_nonce) onlyInitialized { _configureMinimalWithdrawalLimit(_minimalWithdrawalAmount); } function configureMaximumDepositLimit( uint256 _maximumDepositAmount, uint32 _nonce - ) public override onlyHandler onlyIncrementingByOne(_nonce) { + ) public override onlyHandler onlyIncrementingByOne(_nonce) onlyInitialized { _configureMaximumDepositLimit(_maximumDepositAmount); } From c564e1160f809139f0b6710c8f41a5ba9315bce0 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Thu, 12 Jan 2023 17:56:46 -0700 Subject: [PATCH 07/17] Ups --- .../test/token/MultiTokenManager.test.ts | 3 +- .../contracts/test/token/Registry.test.ts | 3 +- packages/tokens/src/FungibleTokenWrapper.ts | 32 +++++++++++++++++-- .../tokens/src/MultiFungibleTokenManager.ts | 15 ++++++--- 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/packages/contracts/test/token/MultiTokenManager.test.ts b/packages/contracts/test/token/MultiTokenManager.test.ts index 3e984c849..c872a6ea7 100644 --- a/packages/contracts/test/token/MultiTokenManager.test.ts +++ b/packages/contracts/test/token/MultiTokenManager.test.ts @@ -48,7 +48,8 @@ describe('MultiFungibleTokenManager', () => { salt, limit, feePercentage, - true + true, + sender.address, ); await tx.wait(); const wrappedTokenAddress = await multiTokenMgr.contract.wrappedTokens(0); diff --git a/packages/contracts/test/token/Registry.test.ts b/packages/contracts/test/token/Registry.test.ts index f33f933ca..2179cbbf3 100644 --- a/packages/contracts/test/token/Registry.test.ts +++ b/packages/contracts/test/token/Registry.test.ts @@ -72,7 +72,8 @@ describe('Registry', () => { salt, limit, feePercentage, - true + true, + sender.address, ) ).to.be.revertedWith('MultiTokenManagerBase: Only registry can call this function'); }); diff --git a/packages/tokens/src/FungibleTokenWrapper.ts b/packages/tokens/src/FungibleTokenWrapper.ts index 51fb22b24..b07e90771 100644 --- a/packages/tokens/src/FungibleTokenWrapper.ts +++ b/packages/tokens/src/FungibleTokenWrapper.ts @@ -1,4 +1,4 @@ -import { ethers } from 'ethers'; +import { BigNumberish, ethers } from 'ethers'; import { getChainIdType } from '@webb-tools/utils'; import { toHex, generateFunctionSigHash } from '@webb-tools/sdk-core'; import { @@ -28,7 +28,7 @@ export class FungibleTokenWrapper { feePercentage: number, feeRecipient: string, handler: string, - limit: string, + limit: BigNumberish, isNativeAllowed: boolean, deployer: ethers.Signer ) { @@ -37,7 +37,7 @@ export class FungibleTokenWrapper { const contract = await factory.deploy(name, symbol); await contract.deployed(); // Initialize immediately after deployment as we use an intializer now - await contract.initialize(feePercentage, feeRecipient, handler, limit, isNativeAllowed); + await contract.initialize(feePercentage, feeRecipient, handler, limit, isNativeAllowed, await deployer.getAddress()); const tokenWrapper = new FungibleTokenWrapper(contract, deployer); return tokenWrapper; @@ -90,6 +90,32 @@ export class FungibleTokenWrapper { return; } + public async approve(address: string, amount: BigNumberish) { + const tx = await this.contract.approve(address, amount); + await tx.wait(); + return; + } + + public async wrap(tokenAddress: string, amount: BigNumberish) { + const tx = await this.contract.wrap(tokenAddress, amount); + await tx.wait(); + return; + } + + public async unwrap(tokenAddress: string, amount: BigNumberish) { + const tx = await this.contract.unwrap(tokenAddress, amount); + await tx.wait(); + return; + } + + public async isNativeAllowed(): Promise { + return await this.contract.isNativeAllowed(); + } + + public async canWrap(address: string): Promise { + return await this.contract.isValidToken(address); + } + public async getFeeRecipientAddress(): Promise { return await this.contract.feeRecipient(); } diff --git a/packages/tokens/src/MultiFungibleTokenManager.ts b/packages/tokens/src/MultiFungibleTokenManager.ts index 1e18f97d0..c6b80a60d 100644 --- a/packages/tokens/src/MultiFungibleTokenManager.ts +++ b/packages/tokens/src/MultiFungibleTokenManager.ts @@ -6,23 +6,29 @@ import { export class MultiFungibleTokenManager { contract: MultiFungibleTokenManagerContract; + signer: ethers.Signer; - constructor(contract: MultiFungibleTokenManagerContract) { + constructor( + contract: MultiFungibleTokenManagerContract, + signer: ethers.Signer, + ) { this.contract = contract; + this.signer } public static async createMultiFungibleTokenManager(deployer: ethers.Signer) { const factory = new MultiFungibleTokenManager__factory(deployer); const contract = await factory.deploy(); + await contract.deployed(); - const manager = new MultiFungibleTokenManager(contract); + const manager = new MultiFungibleTokenManager(contract, deployer); return manager; } public static async connect(managerAddress: string, signer: ethers.Signer) { const managerContract = MultiFungibleTokenManager__factory.connect(managerAddress, signer); - const manager = new MultiFungibleTokenManager(managerContract); + const manager = new MultiFungibleTokenManager(managerContract, signer); return manager; } @@ -48,7 +54,8 @@ export class MultiFungibleTokenManager { salt, limit, feePercentage, - isNativeAllowed + isNativeAllowed, + await this.signer.getAddress(), ); await tx.wait(); } From 6df9ae4fdfc5c065fa170c674c89933d1567d320 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Thu, 12 Jan 2023 23:00:49 -0700 Subject: [PATCH 08/17] Ups --- packages/tokens/src/FungibleTokenWrapper.ts | 2 +- yarn.lock | 44 +-------------------- 2 files changed, 2 insertions(+), 44 deletions(-) diff --git a/packages/tokens/src/FungibleTokenWrapper.ts b/packages/tokens/src/FungibleTokenWrapper.ts index b07e90771..a70cda806 100644 --- a/packages/tokens/src/FungibleTokenWrapper.ts +++ b/packages/tokens/src/FungibleTokenWrapper.ts @@ -34,7 +34,7 @@ export class FungibleTokenWrapper { ) { assert(feePercentage <= 10_000, 'feePercentage should be less than 10_000'); const factory = new FungibleTokenWrapper__factory(deployer); - const contract = await factory.deploy(name, symbol); + const contract: FungibleTokenWrapperContract = await factory.deploy(name, symbol); await contract.deployed(); // Initialize immediately after deployment as we use an intializer now await contract.initialize(feePercentage, feeRecipient, handler, limit, isNativeAllowed, await deployer.getAddress()); diff --git a/yarn.lock b/yarn.lock index 7f29da1d1..3ee402c1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -993,7 +993,7 @@ pirates "^4.0.5" source-map-support "^0.5.16" -"@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== @@ -4986,15 +4986,6 @@ "@polkadot/rpc-core" "9.2.4" "@webb-tools/protocol-substrate-types" "^0.0.2" -"@webb-tools/api-derive@0.1.4-119": - version "0.1.4-119" - resolved "https://registry.yarnpkg.com/@webb-tools/api-derive/-/api-derive-0.1.4-119.tgz#9705b5696819a1c9bcb6ccca92c2920789cf1aa4" - integrity sha512-sTfu//CXAsCGWStDPTTmKG0YzbtYPfFPa18PZlB9BKnWt2s/cUkGefoeBbj63kPuyOn8QvW1X0uHRe3CL4pg/Q== - dependencies: - "@polkadot/api" "9.2.4" - "@polkadot/rpc-core" "9.2.4" - "@webb-tools/protocol-substrate-types" "^0.0.2" - "@webb-tools/api@0.1.4-106": version "0.1.4-106" resolved "https://registry.yarnpkg.com/@webb-tools/api/-/api-0.1.4-106.tgz#3eeb67bf8b3d1b416ed0a5b98781e59e87322e3a" @@ -5020,15 +5011,6 @@ "@webb-tools/api-derive" "0.1.4-119" "@webb-tools/protocol-substrate-types" "0.0.3" -"@webb-tools/api@0.1.4-119": - version "0.1.4-119" - resolved "https://registry.yarnpkg.com/@webb-tools/api/-/api-0.1.4-119.tgz#6ef554d0f1a23b010a38ac90d0ce145de3a87f78" - integrity sha512-JC7T+7kk8f5c49CyV6JVBEqk3jmlF38MrIRz1JBRdQ9TQ4+lD5IYKkUH5duM/kGmMllmHuyZkI2y33GZ3d8rhA== - dependencies: - "@polkadot/api" "9.2.4" - "@webb-tools/api-derive" "0.1.4-119" - "@webb-tools/protocol-substrate-types" "0.0.3" - "@webb-tools/bridges@^0.2.6", "@webb-tools/bridges@^0.2.7", "@webb-tools/bridges@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@webb-tools/bridges/-/bridges-0.2.9.tgz#ffa92ebbc87967637cd55aa0b99cbb97af39fc09" @@ -5450,30 +5432,6 @@ prettier "^2.2.1" tiny-secp256k1 "^2.2.1" -"@webb-tools/test-utils@0.1.4-119": - version "0.1.4-119" - resolved "https://registry.yarnpkg.com/@webb-tools/test-utils/-/test-utils-0.1.4-119.tgz#e5654b645f6edc01a5b6a7490827527d67de39ab" - integrity sha512-RVwidzGSIP9XNVsmYbHiIl+XEptHbpPgu/GBqYSM0UF4jIn83X/Dkc9kyKHzkyqTq1QcYya7k11gljs4FZFhow== - dependencies: - "@polkadot/api" "9.2.4" - "@polkadot/keyring" "10.1.7" - "@types/node" "16.11.7" - "@webb-tools/api" "0.1.4-119" - "@webb-tools/dkg-substrate-types" "0.0.1" - "@webb-tools/protocol-solidity" "0.4.2" - "@webb-tools/protocol-substrate-types" "0.0.3" - "@webb-tools/sdk-core" "0.1.4-119" - "@webb-tools/tokens" "0.4.2" - "@webb-tools/utils" "0.4.2" - "@webb-tools/vbridge" "0.4.2" - ecpair "^2.0.1" - ethers "5.7.0" - ganache "7.5.0" - get-port "6.1.2" - is-ci "^3.0.1" - prettier "^2.2.1" - tiny-secp256k1 "^2.2.1" - "@webb-tools/tokens@0.2.6": version "0.2.6" resolved "https://registry.yarnpkg.com/@webb-tools/tokens/-/tokens-0.2.6.tgz#33c84b5e27c565dab4a0f4f7bec08bdeffabd46e" From 7d2a0f0dd6847f3c27a2b23647a8680da17cbeeb Mon Sep 17 00:00:00 2001 From: salman01zp Date: Fri, 13 Jan 2023 12:56:49 +0530 Subject: [PATCH 09/17] revert deployer changes and fix contract package build --- package.json | 10 ++++- packages/anchors/src/Deployer.ts | 4 +- packages/anchors/src/VAnchorForest.ts | 5 +-- packages/bridges/src/SignatureBridgeSide.ts | 4 +- .../contracts/DeterministicDeployFactory.sol | 32 ++------------- .../contracts/tokens/FungibleTokenWrapper.sol | 2 +- .../contracts/tokens/TokenWrapper.sol | 14 +------ packages/contracts/package.json | 15 ++++--- .../contracts/test/vanchor/vanchor.test.ts | 5 +-- packages/tokens/src/FungibleTokenWrapper.ts | 2 +- scripts/evm/deployments/VBridge8Side.ts | 7 ++-- .../deployments/create2/deploymentScript.ts | 26 ++++++------ yarn.lock | 40 +------------------ 13 files changed, 46 insertions(+), 120 deletions(-) diff --git a/package.json b/package.json index 7fd5e30c5..09c26cac4 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,12 @@ "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-truffle5": "^2.0.0", "@nomiclabs/hardhat-web3": "^2.0.0", + "@webb-tools/anchors": "^0.5.0", + "@webb-tools/bridges": "^0.5.0", + "@webb-tools/interfaces": "^0.5.0", + "@webb-tools/tokens": "^0.5.0", + "@webb-tools/utils": "^0.5.0", + "@webb-tools/vbridge": "^0.5.0", "eth-proof": "~2.1.6", "ethers": "5.7.0", "itertools": "^1.7.1", @@ -76,15 +82,17 @@ "circomlib": "^2.0.5", "circomlibjs": "0.0.8", "dotenv": "^16.0.3", + "ecpair": "^2.1.0", "elliptic": "^6.5.3", "ethereum-waffle": "^3.4.4", "hardhat-artifactor": "^0.2.0", "mocha-parallel-tests": "^2.3.0", "prettier": "^2.3.2", "snarkjs": "0.4.22", + "tiny-secp256k1": "^2.2.1", "truffle-artifactor": "^4.0.30", "ts-node": "^10.1.0", "typechain": "^5.1.2", "typescript": "4.7.2" } -} +} \ No newline at end of file diff --git a/packages/anchors/src/Deployer.ts b/packages/anchors/src/Deployer.ts index da8abc686..47bc5958f 100644 --- a/packages/anchors/src/Deployer.ts +++ b/packages/anchors/src/Deployer.ts @@ -1,7 +1,5 @@ import { Signer, ethers } from 'ethers'; -import { - DeterministicDeployFactory as DeterministicDeployFactoryContract, -} from '@webb-tools/contracts'; +import { DeterministicDeployFactory as DeterministicDeployFactoryContract } from '@webb-tools/contracts'; export class Deployer { signer: ethers.Signer; diff --git a/packages/anchors/src/VAnchorForest.ts b/packages/anchors/src/VAnchorForest.ts index c50e197a7..283f6eee1 100644 --- a/packages/anchors/src/VAnchorForest.ts +++ b/packages/anchors/src/VAnchorForest.ts @@ -22,10 +22,7 @@ import { } from '@webb-tools/sdk-core'; // import { MerkleTree } from "." -import { - IVariableAnchorExtData, - IVariableAnchorPublicInputs, -} from '@webb-tools/interfaces'; +import { IVariableAnchorExtData, IVariableAnchorPublicInputs } from '@webb-tools/interfaces'; import { hexToU8a, UTXOInputs, diff --git a/packages/bridges/src/SignatureBridgeSide.ts b/packages/bridges/src/SignatureBridgeSide.ts index ff0893c40..dc94cf84a 100644 --- a/packages/bridges/src/SignatureBridgeSide.ts +++ b/packages/bridges/src/SignatureBridgeSide.ts @@ -354,9 +354,9 @@ export class SignatureBridgeSide implements IBridgeSide { tokenAddress: string ) { if (!this.tokenHandler) throw this.TOKEN_HANDLER_MISSING_ERROR; - console.log("executeAddTokenProposalWithSig") + console.log('executeAddTokenProposalWithSig'); const proposalData = await this.createAddTokenUpdateProposalData(fungibleToken, tokenAddress); - console.log("execute"); + console.log('execute'); return this.execute(proposalData); } diff --git a/packages/contracts/contracts/DeterministicDeployFactory.sol b/packages/contracts/contracts/DeterministicDeployFactory.sol index 6af2157dc..752dbdddd 100644 --- a/packages/contracts/contracts/DeterministicDeployFactory.sol +++ b/packages/contracts/contracts/DeterministicDeployFactory.sol @@ -2,9 +2,9 @@ pragma solidity ^0.8.0; contract DeterministicDeployFactory { - event Deploy(address addr); + event Deploy(address addr); - function deploy(bytes memory bytecode, uint _salt) external returns (address) { + function deploy(bytes memory bytecode, uint _salt) external { address addr; assembly { addr := create2(0, add(bytecode, 0x20), mload(bytecode), _salt) @@ -14,31 +14,5 @@ contract DeterministicDeployFactory { } emit Deploy(addr); - return addr; } - - function deployFungibleToken( - bytes memory bytecode, - uint _salt, - uint16 _feePercentage, - address _feeRecipient, - address _handler, - uint256 _limit, - bool _isNativeAllowed - ) external { - address c = this.deploy(bytecode, _salt); - // delegate call initialize the contract created with the msg.sender - (bool success, bytes memory data) = c.delegatecall( - abi.encodeWithSignature( - "initialize(uint16,address,address,uint256,bool)", - _feePercentage, - _feeRecipient, - _handler, - _limit, - _isNativeAllowed - ) - ); - require(success, string(data)); - } -} - +} \ No newline at end of file diff --git a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol index 5a95b7657..65ff37a50 100644 --- a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol +++ b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol @@ -19,6 +19,7 @@ import "../utils/ProposalNonceTracker.sol"; */ contract FungibleTokenWrapper is TokenWrapper, + Initialized, IFungibleTokenWrapper, ProposalNonceTracker { @@ -55,7 +56,6 @@ contract FungibleTokenWrapper is uint256 _limit, bool _isNativeAllowed ) public onlyUninitialized { - super.initialize(msg.sender); initialized = true; feePercentage = _feePercentage; feeRecipient = payable(_feeRecipient); diff --git a/packages/contracts/contracts/tokens/TokenWrapper.sol b/packages/contracts/contracts/tokens/TokenWrapper.sol index ef92be19e..68b9fa992 100644 --- a/packages/contracts/contracts/tokens/TokenWrapper.sol +++ b/packages/contracts/contracts/tokens/TokenWrapper.sol @@ -6,7 +6,6 @@ pragma solidity ^0.8.0; import "../interfaces/tokens/ITokenWrapper.sol"; -import "../utils/Initialized.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; @@ -18,7 +17,7 @@ import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; @author Webb Technologies. @notice This contract is intended to be used with TokenHandler/FungibleToken contract. */ -abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper, Initialized { +abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper { using SafeMath for uint256; uint16 public feePercentage; address payable public feeRecipient; @@ -33,17 +32,6 @@ abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper, Initia string memory _symbol ) ERC20PresetMinterPauser(_name, _symbol) {} - function initialize(address admin) public onlyUninitialized { - initialized = true; - address currentAdmin = getRoleMember(DEFAULT_ADMIN_ROLE, 0); - _revokeRole(DEFAULT_ADMIN_ROLE, currentAdmin); - _revokeRole(MINTER_ROLE, currentAdmin); - _revokeRole(PAUSER_ROLE, currentAdmin); - _grantRole(DEFAULT_ADMIN_ROLE, admin); - _grantRole(MINTER_ROLE, admin); - _grantRole(PAUSER_ROLE, admin); - } - /** @notice Get the fee for a target amount to wrap @param _amountToWrap The amount to wrap diff --git a/packages/contracts/package.json b/packages/contracts/package.json index b5658fdba..9f7559ecf 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,14 +1,17 @@ { "name": "@webb-tools/contracts", - "main": "./typechain/index.ts", + "main": "./lib/index.js", "license": "GPL-3.0-or-later", "author": "Webb Developers ", "scripts": { - "compile": "yarn run clean && yarn run build:contracts", - "build": "yarn run build:library", + "compile": "yarn compile:private && yarn build:library && yarn copy:declarations", + "compile:private": "yarn run clean && yarn run build:contracts", + "build": "exit 0", "clean": "rimraf -rf ./lib && rimraf -rf ./typechain && rimraf -rf ./cache && rimraf -rf ./artifacts", "build:library": "tsc -p tsconfig.build.json", "test": "npx hardhat test", + "test:parallel": "npx hardhat test --parallel", + "copy:declarations": "copyfiles -f ./typechain/*.d.ts ./lib", "build:contracts": "npx hardhat compile", "test:gas-reporter": "REPORT_GAS=true npx hardhat test --parallel" }, @@ -21,12 +24,12 @@ "@typechain/hardhat": "^2.3.0", "@types/chai": "^4.3.0", "@types/mocha": "^9.0.0", - "@webb-tools/sdk-core": "0.1.4-113", - "@webb-tools/test-utils": "0.1.4-113", + "@webb-tools/sdk-core": "0.1.4-119", "@webb-tools/semaphore": "0.0.1-5", "@webb-tools/semaphore-group": "0.0.1-4", "@webb-tools/semaphore-identity": "0.0.1-3", "@webb-tools/semaphore-proof": "0.0.1-5", + "@webb-tools/test-utils": "0.1.4-119", "babel-plugin-styled-components": "^2.0.7", "bn.js": "4.11.6", "chai": "^4.3.5", @@ -51,6 +54,6 @@ "type": "git", "url": "git://github.com/webb-tools/protocol-solidity.git" }, - "version": "0.5.3", + "version": "0.5.4", "gitHead": "e1f3b300b6e004ac5a346dc0458bb1d303969d97" } diff --git a/packages/contracts/test/vanchor/vanchor.test.ts b/packages/contracts/test/vanchor/vanchor.test.ts index 2b204ee1b..bbb42e398 100644 --- a/packages/contracts/test/vanchor/vanchor.test.ts +++ b/packages/contracts/test/vanchor/vanchor.test.ts @@ -39,10 +39,7 @@ import { } from '@webb-tools/sdk-core'; import { VAnchor, PoseidonHasher } from '@webb-tools/anchors'; import { Verifier } from '@webb-tools/vbridge'; -import { writeFileSync } from 'fs'; import { SetupTxVAnchorMock } from './mocks/SetupTxVAnchorMock'; -import { isTupleTypeNode } from 'typescript'; -import { TokenWrapper__factory } from 'packages/contracts/typechain'; const BN = require('bn.js'); @@ -50,7 +47,7 @@ const path = require('path'); const snarkjs = require('snarkjs'); const { toBN } = require('web3-utils'); -describe('VAnchor for 1 max edge', () => { +describe.only('VAnchor for 1 max edge', () => { let anchor: VAnchor; const levels = 30; diff --git a/packages/tokens/src/FungibleTokenWrapper.ts b/packages/tokens/src/FungibleTokenWrapper.ts index 51fb22b24..33e394a63 100644 --- a/packages/tokens/src/FungibleTokenWrapper.ts +++ b/packages/tokens/src/FungibleTokenWrapper.ts @@ -81,7 +81,7 @@ export class FungibleTokenWrapper { } public async grantMinterRole(address: string) { - console.log("Grant minting role"); + console.log('Grant minting role'); const MINTER_ROLE = ethers.utils.keccak256(ethers.utils.toUtf8Bytes('MINTER_ROLE')); console.log(MINTER_ROLE); const tx = await this.contract.grantRole(MINTER_ROLE, address); diff --git a/scripts/evm/deployments/VBridge8Side.ts b/scripts/evm/deployments/VBridge8Side.ts index d1ff1701f..bb722abcb 100644 --- a/scripts/evm/deployments/VBridge8Side.ts +++ b/scripts/evm/deployments/VBridge8Side.ts @@ -26,7 +26,6 @@ import { chainIdTypeBinance, chainIdTypeAurora, } from "../ethersGovernorWallets"; -import { LinkableAnchor } from "typechain"; import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from "./utils"; import { zip } from 'itertools'; @@ -113,10 +112,10 @@ async function run() { const tokens: Record = { // [chainIdTypeGoerli]: ["0", ""], - // [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], + [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], // [chainIdTypeOptimism]: ["0", "0x4200000000000000000000000000000000000006"], - [chainIdTypePolygon]: ["0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889"], - [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], + // [chainIdTypePolygon]: ["0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889"], + // [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], }; const endPoints: Record = { diff --git a/scripts/evm/deployments/create2/deploymentScript.ts b/scripts/evm/deployments/create2/deploymentScript.ts index 8460dc19d..dffaf8e55 100644 --- a/scripts/evm/deployments/create2/deploymentScript.ts +++ b/scripts/evm/deployments/create2/deploymentScript.ts @@ -28,7 +28,7 @@ import { import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from "../utils"; import { zip } from 'itertools'; -import { EndPointConfig, moonbaseEndPoints, polygonEndPoints } from "../endPoints"; +import { EndPointConfig, moonbaseEndPoints, polygonEndPoints, sepoliaEndPoints } from "../endPoints"; import Create2VBridge from "./create2Bridge"; @@ -64,29 +64,29 @@ async function deploySignatureVBridge( const zkComponentsSmall = await fetchComponentsFromFilePaths( path.resolve( __dirname, - `../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/poseidon_vanchor_2_8.wasm` + `../../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/poseidon_vanchor_2_8.wasm` ), path.resolve( __dirname, - `../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/witness_calculator.cjs` + `../../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/witness_calculator.cjs` ), path.resolve( __dirname, - `../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/circuit_final.zkey` + `../../../../solidity-fixtures/solidity-fixtures/vanchor_2/8/circuit_final.zkey` ) ); const zkComponentsLarge = await fetchComponentsFromFilePaths( path.resolve( __dirname, - `../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/poseidon_vanchor_16_8.wasm` + `../../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/poseidon_vanchor_16_8.wasm` ), path.resolve( __dirname, - `../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/witness_calculator.cjs` + `../../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/witness_calculator.cjs` ), path.resolve( __dirname, - `../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/circuit_final.zkey` + `../../../../solidity-fixtures/solidity-fixtures/vanchor_16/8/circuit_final.zkey` ) ); @@ -104,26 +104,26 @@ async function deploySignatureVBridge( async function run() { const deployers: DeployerConfig = { // [chainIdTypeGoerli]: walletGoerli, - // [chainIdTypeSepolia]: walletSepolia, + [chainIdTypeSepolia]: walletSepolia, // [chainIdTypeOptimism]: walletOptimism, // [chainIdTypePolygon]: walletPolygon, - [chainIdTypeMoonbase]: walletMoonbase, + // [chainIdTypeMoonbase]: walletMoonbase, }; const tokens: Record = { // [chainIdTypeGoerli]: ["0", ""], - // [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], + [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], // [chainIdTypeOptimism]: ["0", "0x4200000000000000000000000000000000000006"], // [chainIdTypePolygon]: ["0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889"], - [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], + // [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], }; const endPoints: Record = { // [chainIdTypeGoerli]: goerliEndPoints, - // [chainIdTypeSepolia]: sepoliaEndPoints, + [chainIdTypeSepolia]: sepoliaEndPoints, // [chainIdTypeOptimism]: optimismEndPoints, // [chainIdTypePolygon]: polygonEndPoints, - [chainIdTypeMoonbase]: moonbaseEndPoints, + // [chainIdTypeMoonbase]: moonbaseEndPoints, } const vbridge = await deploySignatureVBridge(tokens, deployers); diff --git a/yarn.lock b/yarn.lock index b5f72ccce..39cc59efe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4977,15 +4977,6 @@ "@polkadot/rpc-core" "9.2.4" "@webb-tools/protocol-substrate-types" "0.0.1" -"@webb-tools/api-derive@0.1.4-113": - version "0.1.4-113" - resolved "https://registry.yarnpkg.com/@webb-tools/api-derive/-/api-derive-0.1.4-113.tgz#a8e6ffa179852134737a94d82fc2d750199610ad" - integrity sha512-GR85xq4inPQKWFBtTWxVqMtA/MchUf0sZjjoxz5VBLJea9cKOO3aPVZriVe9E4vLtOjde5JZRi5yeaX/Df+Xtw== - dependencies: - "@polkadot/api" "9.2.4" - "@polkadot/rpc-core" "9.2.4" - "@webb-tools/protocol-substrate-types" "^0.0.2" - "@webb-tools/api-derive@0.1.4-119": version "0.1.4-119" resolved "https://registry.yarnpkg.com/@webb-tools/api-derive/-/api-derive-0.1.4-119.tgz#9705b5696819a1c9bcb6ccca92c2920789cf1aa4" @@ -5011,14 +5002,6 @@ "@polkadot/api" "9.2.4" "@webb-tools/api-derive" "0.1.4-108" -"@webb-tools/api@0.1.4-113": - version "0.1.4-113" - resolved "https://registry.yarnpkg.com/@webb-tools/api/-/api-0.1.4-113.tgz#d8a960fb20965538b217e6b45757894c8edb43fe" - integrity sha512-oTRBi5GGXuTDWo94POFeKoQpsQEwUxT2QxhgOoqhL3aMsy3Jr3lUzgUAITQzdzjuZtkwDHsVaUUpqUdkXw6pEA== - dependencies: - "@polkadot/api" "9.2.4" - "@webb-tools/api-derive" "0.1.4-113" - "@webb-tools/api@0.1.4-119": version "0.1.4-119" resolved "https://registry.yarnpkg.com/@webb-tools/api/-/api-0.1.4-119.tgz#6ef554d0f1a23b010a38ac90d0ce145de3a87f78" @@ -5425,27 +5408,6 @@ prettier "^2.2.1" tiny-secp256k1 "^2.2.1" -"@webb-tools/test-utils@0.1.4-113": - version "0.1.4-113" - resolved "https://registry.yarnpkg.com/@webb-tools/test-utils/-/test-utils-0.1.4-113.tgz#04417f2e6835ea912fa6d5358bb5cd6091b793b2" - integrity sha512-YogTlJXMtMnAZlXEkanymsGDp+xq/oYhZP4wMjbY9DYC7HhGbBPbVA7HW7JpCRVou/55u4QGno+i6QJbgksB3Q== - dependencies: - "@polkadot/api" "9.2.4" - "@polkadot/keyring" "10.1.7" - "@webb-tools/api" "0.1.4-113" - "@webb-tools/protocol-solidity" "0.2.6" - "@webb-tools/sdk-core" "0.1.4-113" - "@webb-tools/tokens" "0.2.6" - "@webb-tools/utils" "0.2.6" - "@webb-tools/vbridge" "0.2.6" - ecpair "^2.0.1" - ethers "5.7.0" - ganache "7.4.1" - get-port "6.1.2" - is-ci "^3.0.1" - prettier "^2.2.1" - tiny-secp256k1 "^2.2.1" - "@webb-tools/test-utils@0.1.4-119": version "0.1.4-119" resolved "https://registry.yarnpkg.com/@webb-tools/test-utils/-/test-utils-0.1.4-119.tgz#e5654b645f6edc01a5b6a7490827527d67de39ab" @@ -9135,7 +9097,7 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ecpair@^2.0.1: +ecpair@^2.0.1, ecpair@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ecpair/-/ecpair-2.1.0.tgz#673f826b1d80d5eb091b8e2010c6b588e8d2cb45" integrity sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw== From d47eef9741b59794f47a6c226cf37b24525ef63d Mon Sep 17 00:00:00 2001 From: salman01zp Date: Fri, 13 Jan 2023 13:44:23 +0530 Subject: [PATCH 10/17] fix ts-check errors --- packages/contracts/test/token/AaveTokenWrapper.test.ts | 8 +------- packages/contracts/test/trees/MerkleForest.test.ts | 8 ++++---- .../contracts/test/vanchor/mocks/SetupTxVAnchorMock.ts | 4 +--- scripts/evm/deployments/create2/deploymentScript.ts | 1 - 4 files changed, 6 insertions(+), 15 deletions(-) diff --git a/packages/contracts/test/token/AaveTokenWrapper.test.ts b/packages/contracts/test/token/AaveTokenWrapper.test.ts index a8451381c..1c568a4a9 100644 --- a/packages/contracts/test/token/AaveTokenWrapper.test.ts +++ b/packages/contracts/test/token/AaveTokenWrapper.test.ts @@ -10,18 +10,12 @@ const { BigNumber } = require('ethers'); const bne = (x, e) => BigNumber.from(x + '0'.repeat(parseInt(e))); // Convenience wrapper classes for contract classes -import { ERC20 as ERC20Class } from '@webb-tools/tokens'; -import { IERC20 } from '../../typechain/IERC20'; -import { AaveTokenWrapper } from '../../typechain/AaveTokenWrapper'; -import { AaveTokenWrapper__factory } from '../../typechain/factories/AaveTokenWrapper__factory'; +import { AaveTokenWrapper, AaveTokenWrapper__factory, IERC20 } from '@webb-tools/contracts'; import { expect } from 'chai'; describe('AaveTokenWrapper', () => { - let token: ERC20Class; let aaveToken: AaveTokenWrapper; let sender: SignerWithAddress; - const tokenName = 'Token'; - const tokenSymbol = 'TKN'; const aaveTokenName = 'Wrapped Token'; const aaveTokenSymbol = 'wTKN'; const aaveLendingPoolAddress = '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9'; diff --git a/packages/contracts/test/trees/MerkleForest.test.ts b/packages/contracts/test/trees/MerkleForest.test.ts index 800f95750..cdb34b3d8 100644 --- a/packages/contracts/test/trees/MerkleForest.test.ts +++ b/packages/contracts/test/trees/MerkleForest.test.ts @@ -46,7 +46,7 @@ describe('MerkleForest', () => { poseidonLib = await PoseidonLibFactory.deploy(); await poseidonLib.deployed(); - const LinkableIncrementalBinaryTree = await ethers.getContractFactory( + let LinkableIncrementalBinaryTree = await ethers.getContractFactory( 'LinkableIncrementalBinaryTree', { signer: wallet, @@ -55,17 +55,17 @@ describe('MerkleForest', () => { }, } ); - linkableIncrementalBinaryTree = await LinkableIncrementalBinaryTree.deploy(); + let linkableIncrementalBinaryTree = await LinkableIncrementalBinaryTree.deploy(); await linkableIncrementalBinaryTree.deployed(); - const MerkleForest = await ethers.getContractFactory('MerkleForestMock', { + let MerkleForest = await ethers.getContractFactory('MerkleForestMock', { signer: wallet, libraries: { PoseidonT3: poseidonLib.address, LinkableIncrementalBinaryTree: linkableIncrementalBinaryTree.address, }, }); - merkleForest = await MerkleForest.deploy( + let merkleForest = await MerkleForest.deploy( groupLevels, subtreeLevels, hasherInstance.contract.address diff --git a/packages/contracts/test/vanchor/mocks/SetupTxVAnchorMock.ts b/packages/contracts/test/vanchor/mocks/SetupTxVAnchorMock.ts index dc9d93a64..4a3d42599 100644 --- a/packages/contracts/test/vanchor/mocks/SetupTxVAnchorMock.ts +++ b/packages/contracts/test/vanchor/mocks/SetupTxVAnchorMock.ts @@ -6,14 +6,12 @@ import { Utxo, CircomProvingManager, ProvingManagerSetupInput, - Note, - NoteGenInput, FIELD_SIZE, LeafIdentifier, } from '@webb-tools/sdk-core'; import { IVariableAnchorExtData, IVariableAnchorPublicInputs } from '@webb-tools/interfaces'; import { hexToU8a, u8aToHex, getChainIdType, ZkComponents } from '@webb-tools/utils'; -import { VAnchorTree as VAnchorContract } from '../../../typechain'; +import { VAnchorTree as VAnchorContract } from '@webb-tools/contracts'; export class SetupTxVAnchorMock extends VAnchor { private rootsForProof: BigNumber[]; diff --git a/scripts/evm/deployments/create2/deploymentScript.ts b/scripts/evm/deployments/create2/deploymentScript.ts index dffaf8e55..ef7f0fd82 100644 --- a/scripts/evm/deployments/create2/deploymentScript.ts +++ b/scripts/evm/deployments/create2/deploymentScript.ts @@ -22,7 +22,6 @@ import { walletDemeter, chainIdTypeSepolia, walletSepolia, - chainIdTypeBinance, chainIdTypeAurora, } from "../../ethersGovernorWallets"; import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; From ca53b96621e01a5346cbdb5a983a7995c93a490f Mon Sep 17 00:00:00 2001 From: salman01zp Date: Fri, 13 Jan 2023 17:39:30 +0530 Subject: [PATCH 11/17] remove logs --- packages/bridges/src/SignatureBridgeSide.ts | 2 -- .../contracts/test/vanchor/vanchor.test.ts | 2 +- packages/tokens/src/FungibleTokenWrapper.ts | 3 -- scripts/evm/deployments/VBridge8Side.ts | 28 ++++++++++--------- .../evm/deployments/create2/create2Bridge.ts | 21 -------------- 5 files changed, 16 insertions(+), 40 deletions(-) diff --git a/packages/bridges/src/SignatureBridgeSide.ts b/packages/bridges/src/SignatureBridgeSide.ts index dc94cf84a..c367d1668 100644 --- a/packages/bridges/src/SignatureBridgeSide.ts +++ b/packages/bridges/src/SignatureBridgeSide.ts @@ -354,9 +354,7 @@ export class SignatureBridgeSide implements IBridgeSide { tokenAddress: string ) { if (!this.tokenHandler) throw this.TOKEN_HANDLER_MISSING_ERROR; - console.log('executeAddTokenProposalWithSig'); const proposalData = await this.createAddTokenUpdateProposalData(fungibleToken, tokenAddress); - console.log('execute'); return this.execute(proposalData); } diff --git a/packages/contracts/test/vanchor/vanchor.test.ts b/packages/contracts/test/vanchor/vanchor.test.ts index bbb42e398..ab5e8a0d3 100644 --- a/packages/contracts/test/vanchor/vanchor.test.ts +++ b/packages/contracts/test/vanchor/vanchor.test.ts @@ -47,7 +47,7 @@ const path = require('path'); const snarkjs = require('snarkjs'); const { toBN } = require('web3-utils'); -describe.only('VAnchor for 1 max edge', () => { +describe('VAnchor for 1 max edge', () => { let anchor: VAnchor; const levels = 30; diff --git a/packages/tokens/src/FungibleTokenWrapper.ts b/packages/tokens/src/FungibleTokenWrapper.ts index 33e394a63..b71bd7ebd 100644 --- a/packages/tokens/src/FungibleTokenWrapper.ts +++ b/packages/tokens/src/FungibleTokenWrapper.ts @@ -81,12 +81,9 @@ export class FungibleTokenWrapper { } public async grantMinterRole(address: string) { - console.log('Grant minting role'); const MINTER_ROLE = ethers.utils.keccak256(ethers.utils.toUtf8Bytes('MINTER_ROLE')); - console.log(MINTER_ROLE); const tx = await this.contract.grantRole(MINTER_ROLE, address); await tx.wait(); - console.log(tx); return; } diff --git a/scripts/evm/deployments/VBridge8Side.ts b/scripts/evm/deployments/VBridge8Side.ts index deff347fd..8f1f675cf 100644 --- a/scripts/evm/deployments/VBridge8Side.ts +++ b/scripts/evm/deployments/VBridge8Side.ts @@ -30,6 +30,7 @@ import { zip } from 'itertools'; import fs from 'fs'; import { EndPointConfig, goerliEndPoints, moonbaseEndPoints, optimismEndPoints, polygonEndPoints, sepoliaEndPoints } from "./endPoints"; + async function deploySignatureVBridge( tokens: Record, deployers: DeployerConfig @@ -99,24 +100,24 @@ async function deploySignatureVBridge( async function run() { const deployers: DeployerConfig = { - [chainIdTypeGoerli]: walletGoerli, - [chainIdTypeSepolia]: walletSepolia, - [chainIdTypeOptimism]: walletOptimism, + // [chainIdTypeGoerli]: walletGoerli, + // [chainIdTypeSepolia]: walletSepolia, + // [chainIdTypeOptimism]: walletOptimism, [chainIdTypePolygon]: walletPolygon, - [chainIdTypeMoonbase]: walletMoonbase, - [chainIdTypeArbitrum]: walletArbitrum, + // [chainIdTypeMoonbase]: walletMoonbase, + // [chainIdTypeArbitrum]: walletArbitrum, // [chainIdTypeHermes]: walletHermes, // [chainIdTypeAthena]: walletAthena, // [chainIdTypeDemeter]: walletDemeter }; const tokens: Record = { - [chainIdTypeGoerli]: ['0', '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6'], - [chainIdTypeSepolia]: ['0', '0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7'], - [chainIdTypeOptimism]: ['0', '0x4200000000000000000000000000000000000006'], + // [chainIdTypeGoerli]: ['0', '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6'], + // [chainIdTypeSepolia]: ['0', '0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7'], + // [chainIdTypeOptimism]: ['0', '0x4200000000000000000000000000000000000006'], [chainIdTypePolygon]: ['0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889'], - [chainIdTypeMoonbase]: ['0xD909178CC99d318e4D46e7E66a972955859670E1'], - [chainIdTypeArbitrum]: ['0', '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3'], + // [chainIdTypeMoonbase]: ['0xD909178CC99d318e4D46e7E66a972955859670E1'], + // [chainIdTypeArbitrum]: ['0', '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3'], // [chainIdTypeHermes]: ['0'], // [chainIdTypeAthena]: ['0'], // [chainIdTypeDemeter]: ['0'] @@ -127,18 +128,17 @@ async function run() { // [chainIdTypeSepolia]: sepoliaEndPoints, // [chainIdTypeOptimism]: optimismEndPoints, [chainIdTypePolygon]: polygonEndPoints, - [chainIdTypeMoonbase]: moonbaseEndPoints, + // [chainIdTypeMoonbase]: moonbaseEndPoints, } const vbridge = await deploySignatureVBridge(tokens, deployers); // print out all the info for the addresses const bridgeConfig = await vbridge.exportConfig(); - + const anchorIterable = bridgeConfig.vAnchors.values(); const bridgeSideIterable = bridgeConfig.vBridgeSides.values(); - for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)){ const chainId = await anchor.signer.getChainId(); const anchorContractConfig: ContractConfig = { @@ -178,6 +178,8 @@ async function run() { beneficiary ); + const configString = JSON.stringify(chainConfig, null, 2); + console.log(configString); // convert config to kebab case and write to json file const dirPath = `${__dirname}/relayer-config`; writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig diff --git a/scripts/evm/deployments/create2/create2Bridge.ts b/scripts/evm/deployments/create2/create2Bridge.ts index 825922a07..57eab20b6 100644 --- a/scripts/evm/deployments/create2/create2Bridge.ts +++ b/scripts/evm/deployments/create2/create2Bridge.ts @@ -130,16 +130,12 @@ export class Create2VBridge { for (let chainID of vBridgeInput.chainIDs) { const initialGovernor = initialGovernors[chainID]; // Create the bridgeSide - console.log("Create Deployer"); let deployer: Deployer; const Deployer1 = new DeterministicDeployFactory__factory(deployers[chainID]); let deployer1Contract = await Deployer1.deploy(); await deployer1Contract.deployed(); - console.log("Deployer deployed"); deployer = new Deployer(deployer1Contract); - console.log("create2Brdige side called"); let vBridgeInstance = await SignatureBridgeSide.create2BridgeSide(deployer, saltHex, deployers[chainID] ); - console.log("create2BridgeSide"); const handler = await AnchorHandler.create2AnchorHandler( vBridgeInstance.contract.address, [], @@ -148,9 +144,7 @@ export class Create2VBridge { saltHex, deployers[chainID] ); - console.log("create2AnchorHandler"); vBridgeInstance.setAnchorHandler(handler); - console.log("setAnchorHandler"); // Create Treasury and TreasuryHandler const treasuryHandler = await TreasuryHandler.create2TreasuryHandler( vBridgeInstance.contract.address, @@ -160,23 +154,18 @@ export class Create2VBridge { saltHex, vBridgeInstance.admin ); - console.log("create2TreasuryHandler"); const treasury = await Treasury.create2Treasury( treasuryHandler.contract.address, deployer, saltHex, vBridgeInstance.admin ); - console.log("create2TreasuryHandler"); await vBridgeInstance.setTreasuryHandler(treasuryHandler); await vBridgeInstance.setTreasuryResourceWithSignature(treasury); - console.log("setTreasuryResourceWithSignature"); // Create the Hasher and Verifier for the chain const hasherInstance = await PoseidonHasher.create2PoseidonHasher(deployer, saltHex, deployers[chainID]); - console.log("create2PoseidonHasher"); const verifier = await Verifier.create2Verifier(deployer, saltHex, deployers[chainID]); let verifierInstance = verifier.contract; - console.log("create2Verifier"); // Check the addresses of the asset. If it is zero, deploy a native token wrapper let allowedNative: boolean = false; for (const tokenToBeWrapped of vBridgeInput.vAnchorInputs.asset[chainID]!) { @@ -195,7 +184,6 @@ export class Create2VBridge { saltHex, vBridgeInstance.admin ); - console.log("create2TokenWrapperHandler"); let tokenInstance: FungibleTokenWrapper; if (!vBridgeInput.webbTokens.get(chainID)) { tokenInstance = await FungibleTokenWrapper.create2FungibleTokenWrapper( @@ -210,14 +198,11 @@ export class Create2VBridge { saltHex, deployers[chainID] ); - console.log("create2FungibleTokenWrapper no webbtoken"); } else { tokenInstance = vBridgeInput.webbTokens.get(chainID)!; } - console.log("create2FungibleTokenWrapper"); await vBridgeInstance.setTokenWrapperHandler(tokenWrapperHandler); await vBridgeInstance.setFungibleTokenResourceWithSignature(tokenInstance); - console.log("setFungibleTokenResourceWithSignature"); // Add all token addresses to the governed token instance. for (const tokenToBeWrapped of vBridgeInput.vAnchorInputs.asset[chainID]!) { // if the address is not '0', then add it @@ -225,7 +210,6 @@ export class Create2VBridge { await vBridgeInstance.executeAddTokenProposalWithSig(tokenInstance, tokenToBeWrapped); } } - console.log("passed"); // append each token webbTokenAddresses.set(chainID, tokenInstance.contract.address); @@ -245,20 +229,15 @@ export class Create2VBridge { largeCircuitZkComponents, deployers[chainID] ); - console.log("create2VAnchor"); // grant minting rights to the anchor await tokenInstance.grantMinterRole(vAnchorInstance.contract.address); - console.log("grantMinterRole"); chainGroupedVAnchors.push(vAnchorInstance); vAnchors.set(Create2VBridge.createVAnchorIdString({ chainId: chainID }), vAnchorInstance); - console.log("createVAnchorIdString"); await Create2VBridge.setPermissions(vBridgeInstance, chainGroupedVAnchors); createdVAnchors.push(chainGroupedVAnchors); - console.log("setPermissions"); // Transfer ownership of the bridge to the initialGovernor const tx = await vBridgeInstance.transferOwnership(initialGovernor, 0); await tx.wait(); - console.log("transferOwnership"); vBridgeSides.set(chainID, vBridgeInstance); } From 12a73c5b976705851dee52b17043e0d69956ce86 Mon Sep 17 00:00:00 2001 From: salman01zp Date: Fri, 13 Jan 2023 18:49:42 +0530 Subject: [PATCH 12/17] fix test --- packages/contracts/test/trees/MerkleForest.test.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/contracts/test/trees/MerkleForest.test.ts b/packages/contracts/test/trees/MerkleForest.test.ts index cdb34b3d8..ea67d912a 100644 --- a/packages/contracts/test/trees/MerkleForest.test.ts +++ b/packages/contracts/test/trees/MerkleForest.test.ts @@ -6,14 +6,13 @@ import { toFixedHex } from '@webb-tools/sdk-core'; import { BigNumber } from 'ethers'; import { ethers } from 'hardhat'; -import { poseidon, poseidon_gencontract as poseidonContract } from 'circomlibjs'; +import { poseidon_gencontract as poseidonContract } from 'circomlibjs'; import { MerkleTree } from '@webb-tools/sdk-core'; import { PoseidonHasher } from '@webb-tools/anchors'; import { MerkleForestMock as MerkleForestMockContract, LinkableIncrementalBinaryTree as LinkableIncrementalBinaryTreeContract, - LinkableIncrementalBinaryTree__factory, -} from '../../typechain'; +} from '../../lib'; const TruffleAssert = require('truffle-assertions'); const assert = require('assert'); @@ -46,7 +45,7 @@ describe('MerkleForest', () => { poseidonLib = await PoseidonLibFactory.deploy(); await poseidonLib.deployed(); - let LinkableIncrementalBinaryTree = await ethers.getContractFactory( + const LinkableIncrementalBinaryTree = await ethers.getContractFactory( 'LinkableIncrementalBinaryTree', { signer: wallet, @@ -55,17 +54,17 @@ describe('MerkleForest', () => { }, } ); - let linkableIncrementalBinaryTree = await LinkableIncrementalBinaryTree.deploy(); + linkableIncrementalBinaryTree = await LinkableIncrementalBinaryTree.deploy(); await linkableIncrementalBinaryTree.deployed(); - let MerkleForest = await ethers.getContractFactory('MerkleForestMock', { + const MerkleForest = await ethers.getContractFactory('MerkleForestMock', { signer: wallet, libraries: { PoseidonT3: poseidonLib.address, LinkableIncrementalBinaryTree: linkableIncrementalBinaryTree.address, }, }); - let merkleForest = await MerkleForest.deploy( + merkleForest = await MerkleForest.deploy( groupLevels, subtreeLevels, hasherInstance.contract.address From 1dffa800abfc5a719d57bbf90032533e6381f3f0 Mon Sep 17 00:00:00 2001 From: semaraugusto Date: Tue, 17 Jan 2023 08:15:51 -0300 Subject: [PATCH 13/17] make token contracts build again --- .../contracts/tokens/FungibleTokenWrapper.sol | 3 ++- packages/contracts/contracts/tokens/TokenWrapper.sol | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol index b87534366..047e1cfad 100644 --- a/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol +++ b/packages/contracts/contracts/tokens/FungibleTokenWrapper.sol @@ -18,6 +18,7 @@ import "../utils/ProposalNonceTracker.sol"; TokenHandler contract. */ contract FungibleTokenWrapper is + Initialized, TokenWrapper, IFungibleTokenWrapper, ProposalNonceTracker @@ -57,7 +58,7 @@ contract FungibleTokenWrapper is bool _isNativeAllowed, address _admin ) public onlyUninitialized { - super.initialize(_admin); + super._initialize(_admin); initialized = true; feePercentage = _feePercentage; feeRecipient = payable(_feeRecipient); diff --git a/packages/contracts/contracts/tokens/TokenWrapper.sol b/packages/contracts/contracts/tokens/TokenWrapper.sol index 68b9fa992..affdbbbd6 100644 --- a/packages/contracts/contracts/tokens/TokenWrapper.sol +++ b/packages/contracts/contracts/tokens/TokenWrapper.sol @@ -41,6 +41,16 @@ abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper { return _amountToWrap.mul(feePercentage).div(10000); } + /** + @notice Get the fee for a target amount to wrap + @param _admin the address for granting minting, pausing and admin roles at initialization + */ + function _initialize(address _admin) internal returns (uint256) { + _setupRole(MINTER_ROLE, _admin); + _setupRole(DEFAULT_ADMIN_ROLE, _admin); + _setupRole(PAUSER_ROLE, _admin); + } + /** @notice Get the amount to wrap for a target `_deposit` amount @param _deposit The deposit amount From ed1dcfca40edd2ee226ec4cc50fa918b459ff06c Mon Sep 17 00:00:00 2001 From: semaraugusto Date: Tue, 17 Jan 2023 08:23:25 -0300 Subject: [PATCH 14/17] fix syntax errors on tests --- package.json | 4 +-- .../contracts/test/vanchor/vanchor.test.ts | 29 ++++++++++++------- .../test/vanchor/vanchorForest.test.ts | 27 +++++++++++------ 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 191118550..5934adb7d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "build": "yarn compile && yarn build:packages", "setup": "yarn compile && yarn build:circuits && yarn build:ptau", "test": "yarn workspace @webb-tools/contracts run test", - "fast": "yarn workspace @webb-tools/contracts run fast", + "fast": "yarn workspace @webb-tools/contracts run test:parallel", "build:circuits": "./scripts/bash/build_circuits.sh", "build:packages": "lerna run build", "build:ptau": "./scripts/bash/generate_phase1_ptau.sh", @@ -97,4 +97,4 @@ "typechain": "^5.1.2", "typescript": "4.7.2" } -} \ No newline at end of file +} diff --git a/packages/contracts/test/vanchor/vanchor.test.ts b/packages/contracts/test/vanchor/vanchor.test.ts index ab5e8a0d3..0cede519a 100644 --- a/packages/contracts/test/vanchor/vanchor.test.ts +++ b/packages/contracts/test/vanchor/vanchor.test.ts @@ -47,7 +47,7 @@ const path = require('path'); const snarkjs = require('snarkjs'); const { toBN } = require('web3-utils'); -describe('VAnchor for 1 max edge', () => { +describe.only('VAnchor for 1 max edge', () => { let anchor: VAnchor; const levels = 30; @@ -141,7 +141,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1195,7 +1196,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1270,7 +1272,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1346,7 +1349,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1452,7 +1456,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 5; @@ -1609,7 +1614,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 5; @@ -1638,7 +1644,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 10001; @@ -1665,7 +1672,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = -1; @@ -1691,7 +1699,8 @@ describe('VAnchor for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 2.5; diff --git a/packages/contracts/test/vanchor/vanchorForest.test.ts b/packages/contracts/test/vanchor/vanchorForest.test.ts index 9726a2fd5..df630bccc 100644 --- a/packages/contracts/test/vanchor/vanchorForest.test.ts +++ b/packages/contracts/test/vanchor/vanchorForest.test.ts @@ -145,7 +145,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1265,7 +1266,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1341,7 +1343,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1418,7 +1421,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); @@ -1525,7 +1529,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 5; @@ -1683,7 +1688,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 5; @@ -1712,7 +1718,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 10001; @@ -1739,7 +1746,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = -1; @@ -1765,7 +1773,8 @@ describe('VAnchorForest for 1 max edge', () => { dummyFeeRecipient, sender.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const wrapFee = 2.5; From 378c9f1b8e01c40368e69935da403c529a5d8d34 Mon Sep 17 00:00:00 2001 From: semaraugusto Date: Tue, 17 Jan 2023 08:27:29 -0300 Subject: [PATCH 15/17] fix syntax error for identityVAnchor.test.ts --- .../contracts/test/identityVAnchor/identityVAnchor.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/contracts/test/identityVAnchor/identityVAnchor.test.ts b/packages/contracts/test/identityVAnchor/identityVAnchor.test.ts index 4d164221a..43b5b8f1d 100644 --- a/packages/contracts/test/identityVAnchor/identityVAnchor.test.ts +++ b/packages/contracts/test/identityVAnchor/identityVAnchor.test.ts @@ -1398,7 +1398,8 @@ describe('IdentityVAnchor for 2 max edges', () => { dummyFeeRecipient, alice.address, '10000000000000000000000000', - true + true, + wallet.address ); await wrappedToken.add(token.address, (await wrappedToken.proposalNonce()).add(1)); const groupId = BigNumber.from(99); // arbitrary From ac8d74ac80d83fecf5a2993ec9703a596f09a6bb Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Tue, 17 Jan 2023 10:44:34 -0500 Subject: [PATCH 16/17] Fmt --- package.json | 3 +- .../interfaces/tokens/IMultiTokenManager.sol | 2 +- .../contracts/tokens/AaveTokenWrapper.sol | 9 +- .../contracts/tokens/TokenWrapper.sol | 6 +- scripts/evm/deployments/VBridge8Side.ts | 49 ++--- .../evm/deployments/create2/create2Bridge.ts | 14 +- .../deployments/create2/deploymentScript.ts | 72 ++++---- scripts/evm/deployments/endPoints.ts | 50 +++--- scripts/evm/deployments/utils.ts | 170 +++++++++--------- scripts/evm/ethersGovernorWallets.ts | 5 +- 10 files changed, 184 insertions(+), 196 deletions(-) diff --git a/package.json b/package.json index 5934adb7d..f12acd28b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "clean:packages": "lerna run clean", "fetch:fixtures": "cd packages/contracts/solidity-fixtures && dvc pull && cd ../../../", "prettier": "prettier -c .", - "prettier:write": "prettier -w .", "publish:packages": "lerna run compile && lerna publish", "setup:groth16:vanchor2": "./scripts/bash/groth16/vanchor/phase2_poseidon_vanchor2.sh", "setup:groth16:vanchor8": "./scripts/bash/groth16/vanchor/phase2_poseidon_vanchor8.sh", @@ -34,7 +33,7 @@ "setup:plonk:identity-vanchor8": "./scripts/bash/plonk/identity_vanchor/phase2_identity_vanchor8.sh", "setup:plonk": "./scripts/bash/setup_verifiers_plonk.sh", "ts-check": "tsc --noEmit -p ./tsconfig.json", - "format": "prettier --write \"packages/**/*.{ts,js,jsx,tsx}\"" + "format": "prettier -w ." }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.2", diff --git a/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol b/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol index 620d5616b..703294ec2 100644 --- a/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol +++ b/packages/contracts/contracts/interfaces/tokens/IMultiTokenManager.sol @@ -36,7 +36,7 @@ interface IMultiTokenManager { uint256 _limit, uint16 _feePercentage, bool _isNativeAllowed, - address _admin + address _admin ) external returns (address); /** diff --git a/packages/contracts/contracts/tokens/AaveTokenWrapper.sol b/packages/contracts/contracts/tokens/AaveTokenWrapper.sol index 4872310b4..c2aab0072 100644 --- a/packages/contracts/contracts/tokens/AaveTokenWrapper.sol +++ b/packages/contracts/contracts/tokens/AaveTokenWrapper.sol @@ -47,14 +47,7 @@ contract AaveTokenWrapper is FungibleTokenWrapper, IAaveTokenWrapper { address _admin, address _aaveLendingPool ) public onlyUninitialized { - super.initialize( - _feePercentage, - _feeRecipient, - _handler, - _limit, - _isNativeAllowed, - _admin - ); + super.initialize(_feePercentage, _feeRecipient, _handler, _limit, _isNativeAllowed, _admin); aaveLendingPool = IAaveLendingPool(_aaveLendingPool); } diff --git a/packages/contracts/contracts/tokens/TokenWrapper.sol b/packages/contracts/contracts/tokens/TokenWrapper.sol index affdbbbd6..70d9b73a4 100644 --- a/packages/contracts/contracts/tokens/TokenWrapper.sol +++ b/packages/contracts/contracts/tokens/TokenWrapper.sol @@ -46,9 +46,9 @@ abstract contract TokenWrapper is ERC20PresetMinterPauser, ITokenWrapper { @param _admin the address for granting minting, pausing and admin roles at initialization */ function _initialize(address _admin) internal returns (uint256) { - _setupRole(MINTER_ROLE, _admin); - _setupRole(DEFAULT_ADMIN_ROLE, _admin); - _setupRole(PAUSER_ROLE, _admin); + _setupRole(MINTER_ROLE, _admin); + _setupRole(DEFAULT_ADMIN_ROLE, _admin); + _setupRole(PAUSER_ROLE, _admin); } /** diff --git a/scripts/evm/deployments/VBridge8Side.ts b/scripts/evm/deployments/VBridge8Side.ts index 8f1f675cf..ffb6d55ff 100644 --- a/scripts/evm/deployments/VBridge8Side.ts +++ b/scripts/evm/deployments/VBridge8Side.ts @@ -23,13 +23,19 @@ import { chainIdTypeSepolia, walletSepolia, chainIdTypeAurora, -} from "../ethersGovernorWallets"; -import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; -import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from "./utils"; +} from '../ethersGovernorWallets'; +import { EvmLinkedAnchor, ProposalSigningBackend } from '@webb-tools/test-utils'; +import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from './utils'; import { zip } from 'itertools'; import fs from 'fs'; -import { EndPointConfig, goerliEndPoints, moonbaseEndPoints, optimismEndPoints, polygonEndPoints, sepoliaEndPoints } from "./endPoints"; - +import { + EndPointConfig, + goerliEndPoints, + moonbaseEndPoints, + optimismEndPoints, + polygonEndPoints, + sepoliaEndPoints, +} from './endPoints'; async function deploySignatureVBridge( tokens: Record, @@ -122,45 +128,45 @@ async function run() { // [chainIdTypeAthena]: ['0'], // [chainIdTypeDemeter]: ['0'] }; - + const endPoints: Record = { // [chainIdTypeGoerli]: goerliEndPoints, // [chainIdTypeSepolia]: sepoliaEndPoints, // [chainIdTypeOptimism]: optimismEndPoints, [chainIdTypePolygon]: polygonEndPoints, // [chainIdTypeMoonbase]: moonbaseEndPoints, - } + }; const vbridge = await deploySignatureVBridge(tokens, deployers); // print out all the info for the addresses const bridgeConfig = await vbridge.exportConfig(); - + const anchorIterable = bridgeConfig.vAnchors.values(); const bridgeSideIterable = bridgeConfig.vBridgeSides.values(); - - for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)){ + + for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)) { const chainId = await anchor.signer.getChainId(); const anchorContractConfig: ContractConfig = { address: anchor.contract.address.toLowerCase(), - deployedAt: anchor.contract.deployTransaction.blockNumber + deployedAt: anchor.contract.deployTransaction.blockNumber, }; const bridgeContractConfig: ContractConfig = { address: bridgeSide.contract.address.toLowerCase(), - deployedAt: bridgeSide.contract.deployTransaction.blockNumber - } - const proposalSigningBackend : ProposalSigningBackend = { type: "DKGNode", node: "tangle" } + deployedAt: bridgeSide.contract.deployTransaction.blockNumber, + }; + const proposalSigningBackend: ProposalSigningBackend = { type: 'DKGNode', node: 'tangle' }; const linkedAnchors: EvmLinkedAnchor[] = []; const typedChainId = getChainIdType(chainId); - const beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b"; // relayer wallet address - + const beneficiary = '0xf1fd5607b90f6c421db7313158baac170d4f053b'; // relayer wallet address + // Add all other anchors to the list of linked anchors for (const otherAnchor of Array.from(bridgeConfig.vAnchors.values())) { if (otherAnchor !== anchor) { - linkedAnchors.push({ + linkedAnchors.push({ chainId: (await otherAnchor.contract.getChainId()).toString(), address: otherAnchor.contract.address.toLowerCase(), - type: "Evm" + type: 'Evm', }); } } @@ -177,18 +183,17 @@ async function run() { endPointConfig, beneficiary ); - + const configString = JSON.stringify(chainConfig, null, 2); console.log(configString); // convert config to kebab case and write to json file const dirPath = `${__dirname}/relayer-config`; - writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig - ) + writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig); console.log( `Anchor ${anchorContractConfig.address} deployed at: ${anchorContractConfig.deployedAt} for chainId ${chainId}` ); - + console.log( `BridgeSide ${bridgeContractConfig.address} deployed at: ${bridgeContractConfig.deployedAt} for chain ${chainId}` ); diff --git a/scripts/evm/deployments/create2/create2Bridge.ts b/scripts/evm/deployments/create2/create2Bridge.ts index 57eab20b6..ec4eaf332 100644 --- a/scripts/evm/deployments/create2/create2Bridge.ts +++ b/scripts/evm/deployments/create2/create2Bridge.ts @@ -135,7 +135,11 @@ export class Create2VBridge { let deployer1Contract = await Deployer1.deploy(); await deployer1Contract.deployed(); deployer = new Deployer(deployer1Contract); - let vBridgeInstance = await SignatureBridgeSide.create2BridgeSide(deployer, saltHex, deployers[chainID] ); + let vBridgeInstance = await SignatureBridgeSide.create2BridgeSide( + deployer, + saltHex, + deployers[chainID] + ); const handler = await AnchorHandler.create2AnchorHandler( vBridgeInstance.contract.address, [], @@ -163,7 +167,11 @@ export class Create2VBridge { await vBridgeInstance.setTreasuryHandler(treasuryHandler); await vBridgeInstance.setTreasuryResourceWithSignature(treasury); // Create the Hasher and Verifier for the chain - const hasherInstance = await PoseidonHasher.create2PoseidonHasher(deployer, saltHex, deployers[chainID]); + const hasherInstance = await PoseidonHasher.create2PoseidonHasher( + deployer, + saltHex, + deployers[chainID] + ); const verifier = await Verifier.create2Verifier(deployer, saltHex, deployers[chainID]); let verifierInstance = verifier.contract; // Check the addresses of the asset. If it is zero, deploy a native token wrapper @@ -334,8 +342,6 @@ export class Create2VBridge { vBridgeSides: this.vBridgeSides, }; } - - } export default Create2VBridge; diff --git a/scripts/evm/deployments/create2/deploymentScript.ts b/scripts/evm/deployments/create2/deploymentScript.ts index ef7f0fd82..01268043d 100644 --- a/scripts/evm/deployments/create2/deploymentScript.ts +++ b/scripts/evm/deployments/create2/deploymentScript.ts @@ -1,8 +1,8 @@ -import { FungibleTokenWrapper } from "@webb-tools/tokens"; -import { fetchComponentsFromFilePaths, getChainIdType } from "@webb-tools/utils"; -import { DeployerConfig } from "@webb-tools/interfaces"; -import path from "path"; -import { ethers } from "ethers"; +import { FungibleTokenWrapper } from '@webb-tools/tokens'; +import { fetchComponentsFromFilePaths, getChainIdType } from '@webb-tools/utils'; +import { DeployerConfig } from '@webb-tools/interfaces'; +import path from 'path'; +import { ethers } from 'ethers'; import { chainIdTypeGoerli, chainIdTypeOptimism, @@ -23,13 +23,17 @@ import { chainIdTypeSepolia, walletSepolia, chainIdTypeAurora, -} from "../../ethersGovernorWallets"; -import { EvmLinkedAnchor, ProposalSigningBackend } from "@webb-tools/test-utils"; -import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from "../utils"; +} from '../../ethersGovernorWallets'; +import { EvmLinkedAnchor, ProposalSigningBackend } from '@webb-tools/test-utils'; +import { ContractConfig, getEvmChainConfig, writeEvmChainConfig } from '../utils'; import { zip } from 'itertools'; -import { EndPointConfig, moonbaseEndPoints, polygonEndPoints, sepoliaEndPoints } from "../endPoints"; -import Create2VBridge from "./create2Bridge"; - +import { + EndPointConfig, + moonbaseEndPoints, + polygonEndPoints, + sepoliaEndPoints, +} from '../endPoints'; +import Create2VBridge from './create2Bridge'; async function deploySignatureVBridge( tokens: Record, @@ -43,9 +47,7 @@ async function deploySignatureVBridge( for (const chainIdType of Object.keys(deployers)) { assetRecord[chainIdType] = tokens[chainIdType]; chainIdsArray.push(Number(chainIdType)); - governorConfig[Number(chainIdType)] = await deployers[ - chainIdType - ].getAddress(); + governorConfig[Number(chainIdType)] = await deployers[chainIdType].getAddress(); existingWebbTokens[chainIdType] = null; console.log(tokens[chainIdType]); } @@ -111,19 +113,19 @@ async function run() { const tokens: Record = { // [chainIdTypeGoerli]: ["0", ""], - [chainIdTypeSepolia]: ["0", "0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7"], + [chainIdTypeSepolia]: ['0', '0xeD43f81C17976372Fcb5786Dd214572e7dbB92c7'], // [chainIdTypeOptimism]: ["0", "0x4200000000000000000000000000000000000006"], // [chainIdTypePolygon]: ["0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889"], // [chainIdTypeMoonbase]: ["0xD909178CC99d318e4D46e7E66a972955859670E1"], }; - + const endPoints: Record = { // [chainIdTypeGoerli]: goerliEndPoints, [chainIdTypeSepolia]: sepoliaEndPoints, // [chainIdTypeOptimism]: optimismEndPoints, // [chainIdTypePolygon]: polygonEndPoints, // [chainIdTypeMoonbase]: moonbaseEndPoints, - } + }; const vbridge = await deploySignatureVBridge(tokens, deployers); @@ -132,30 +134,29 @@ async function run() { const anchorIterable = bridgeConfig.vAnchors.values(); const bridgeSideIterable = bridgeConfig.vBridgeSides.values(); - - - for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)){ + + for (const [anchor, bridgeSide] of zip(anchorIterable, bridgeSideIterable)) { const chainId = await anchor.signer.getChainId(); const anchorContractConfig: ContractConfig = { address: anchor.contract.address.toLowerCase(), - deployedAt: anchor.contract.deployTransaction.blockNumber + deployedAt: anchor.contract.deployTransaction.blockNumber, }; const bridgeContractConfig: ContractConfig = { address: bridgeSide.contract.address.toLowerCase(), - deployedAt: bridgeSide.contract.deployTransaction.blockNumber - } - const proposalSigningBackend : ProposalSigningBackend = { type: "DKGNode", node: "tangle" } + deployedAt: bridgeSide.contract.deployTransaction.blockNumber, + }; + const proposalSigningBackend: ProposalSigningBackend = { type: 'DKGNode', node: 'tangle' }; const linkedAnchors: EvmLinkedAnchor[] = []; const typedChainId = getChainIdType(chainId); - const beneficiary = "0xf1fd5607b90f6c421db7313158baac170d4f053b"; // relayer wallet address - + const beneficiary = '0xf1fd5607b90f6c421db7313158baac170d4f053b'; // relayer wallet address + // Add all other anchors to the list of linked anchors for (const otherAnchor of Array.from(bridgeConfig.vAnchors.values())) { if (otherAnchor !== anchor) { - linkedAnchors.push({ + linkedAnchors.push({ chainId: (await otherAnchor.contract.getChainId()).toString(), address: otherAnchor.contract.address.toLowerCase(), - type: "Evm" + type: 'Evm', }); } } @@ -172,27 +173,22 @@ async function run() { endPointConfig, beneficiary ); - + // convert config to kebab case and write to json file const dirPath = `${__dirname}/relayer-config`; - writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig - ) + writeEvmChainConfig(`${dirPath}/${endPointConfig.name}.toml`, chainConfig); console.log( `Anchor ${anchorContractConfig.address} deployed at: ${anchorContractConfig.deployedAt} for chainId ${chainId}` ); - + console.log( `BridgeSide ${bridgeContractConfig.address} deployed at: ${bridgeContractConfig.deployedAt} for chain ${chainId}` ); } - for (const webbToken of Array.from( - bridgeConfig.webbTokenAddresses.entries() - )) { - console.log( - `webbToken entry: ${webbToken[0]} + ${webbToken[1].toLowerCase()}` - ); + for (const webbToken of Array.from(bridgeConfig.webbTokenAddresses.entries())) { + console.log(`webbToken entry: ${webbToken[0]} + ${webbToken[1].toLowerCase()}`); } } diff --git a/scripts/evm/deployments/endPoints.ts b/scripts/evm/deployments/endPoints.ts index ac676b805..62a264e4f 100644 --- a/scripts/evm/deployments/endPoints.ts +++ b/scripts/evm/deployments/endPoints.ts @@ -1,37 +1,35 @@ export type EndPointConfig = { - httpEndpoint: string, - wsEndpoint: string, - name: string - } - -export const polygonEndPoints: EndPointConfig = { - httpEndpoint: process.env.MUMBAI_TESTNET_HTTPS_URL!, - wsEndpoint: process.env.MUMBAI_TESTNET_WSS_URL!, - name: "mumbai" + httpEndpoint: string; + wsEndpoint: string; + name: string; }; -export const sepoliaEndPoints: EndPointConfig = { - httpEndpoint: process.env.SEPOLIA_HTTPS_URL!, - wsEndpoint: process.env.SEPOLIA_WSS_URL!, - name: "sepolia" +export const polygonEndPoints: EndPointConfig = { + httpEndpoint: process.env.MUMBAI_TESTNET_HTTPS_URL!, + wsEndpoint: process.env.MUMBAI_TESTNET_WSS_URL!, + name: 'mumbai', }; -export const optimismEndPoints: EndPointConfig = { - httpEndpoint: process.env.OPTIMISM_TESTNET_HTTPS_URL!, - wsEndpoint: process.env.OPTIMISM_TESTNET_WSS_URL!, - name: "optimism" +export const sepoliaEndPoints: EndPointConfig = { + httpEndpoint: process.env.SEPOLIA_HTTPS_URL!, + wsEndpoint: process.env.SEPOLIA_WSS_URL!, + name: 'sepolia', }; -export const moonbaseEndPoints: EndPointConfig = { - httpEndpoint: process.env.MOONBASE_HTTPS_URL!, - wsEndpoint: process.env.MOONBASE_WSS_URL!, - name: "moonbase" +export const optimismEndPoints: EndPointConfig = { + httpEndpoint: process.env.OPTIMISM_TESTNET_HTTPS_URL!, + wsEndpoint: process.env.OPTIMISM_TESTNET_WSS_URL!, + name: 'optimism', }; -export const goerliEndPoints: EndPointConfig = { - httpEndpoint: process.env.GOERLI_HTTPS_URL!, - wsEndpoint: process.env.GOERLI_WSS_URL!, - name: "goerli" +export const moonbaseEndPoints: EndPointConfig = { + httpEndpoint: process.env.MOONBASE_HTTPS_URL!, + wsEndpoint: process.env.MOONBASE_WSS_URL!, + name: 'moonbase', }; - +export const goerliEndPoints: EndPointConfig = { + httpEndpoint: process.env.GOERLI_HTTPS_URL!, + wsEndpoint: process.env.GOERLI_WSS_URL!, + name: 'goerli', +}; diff --git a/scripts/evm/deployments/utils.ts b/scripts/evm/deployments/utils.ts index a4cbe7b54..bd904295b 100644 --- a/scripts/evm/deployments/utils.ts +++ b/scripts/evm/deployments/utils.ts @@ -1,6 +1,14 @@ import fs from 'fs'; -import { Contract, ConvertToKebabCase, EventsWatcher, FullChainInfo, LinkedAnchor, ProposalSigningBackend, WithdrawConfig } from "@webb-tools/test-utils"; -import { EndPointConfig } from "./endPoints"; +import { + Contract, + ConvertToKebabCase, + EventsWatcher, + FullChainInfo, + LinkedAnchor, + ProposalSigningBackend, + WithdrawConfig, +} from '@webb-tools/test-utils'; +import { EndPointConfig } from './endPoints'; import { Wallet } from 'ethers'; import { toToml } from 'tomlify-j0.4'; @@ -18,77 +26,69 @@ const defaultEventWatcherConfigValue: EventsWatcher = { }; export type ContractConfig = { - address: string, - deployedAt: number, + address: string; + deployedAt: number; }; export function getEvmChainConfig( - chainId: number, - anchor: ContractConfig, - bridge: ContractConfig, - deployerWallet: Wallet, - linkedAnchors: LinkedAnchor[], - proposalSigningBackend: ProposalSigningBackend, - endpoint: EndPointConfig, - beneficiary?: string - ): FullChainInfo{ - - const contracts: Contract[] = [ - // first the local Anchor - { - contract: 'VAnchor', - address: anchor.address, - deployedAt: anchor.deployedAt, - size: 1, // Ethers - proposalSigningBackend: proposalSigningBackend, - withdrawConfig: defaultWithdrawConfigValue, - eventsWatcher: defaultEventWatcherConfigValue, - linkedAnchors: linkedAnchors, - }, - { - contract: 'SignatureBridge', - address: bridge.address, - deployedAt: bridge.deployedAt, - eventsWatcher: defaultEventWatcherConfigValue - }, - ]; - const chainInfo: FullChainInfo = { - name: endpoint.name, - enabled: true, - httpEndpoint: endpoint.httpEndpoint, - wsEndpoint: endpoint.wsEndpoint, - blockConfirmations: 0, - chainId: chainId, - beneficiary: beneficiary ?? '', - privateKey: deployerWallet.privateKey, - contracts: contracts, - }; - return chainInfo; + chainId: number, + anchor: ContractConfig, + bridge: ContractConfig, + deployerWallet: Wallet, + linkedAnchors: LinkedAnchor[], + proposalSigningBackend: ProposalSigningBackend, + endpoint: EndPointConfig, + beneficiary?: string +): FullChainInfo { + const contracts: Contract[] = [ + // first the local Anchor + { + contract: 'VAnchor', + address: anchor.address, + deployedAt: anchor.deployedAt, + size: 1, // Ethers + proposalSigningBackend: proposalSigningBackend, + withdrawConfig: defaultWithdrawConfigValue, + eventsWatcher: defaultEventWatcherConfigValue, + linkedAnchors: linkedAnchors, + }, + { + contract: 'SignatureBridge', + address: bridge.address, + deployedAt: bridge.deployedAt, + eventsWatcher: defaultEventWatcherConfigValue, + }, + ]; + const chainInfo: FullChainInfo = { + name: endpoint.name, + enabled: true, + httpEndpoint: endpoint.httpEndpoint, + wsEndpoint: endpoint.wsEndpoint, + blockConfirmations: 0, + chainId: chainId, + beneficiary: beneficiary ?? '', + privateKey: deployerWallet.privateKey, + contracts: contracts, + }; + return chainInfo; } - -export function writeEvmChainConfig ( - path: string, - config: FullChainInfo -) { +export function writeEvmChainConfig(path: string, config: FullChainInfo) { type ConvertedLinkedAnchor = ConvertToKebabCase; type ConvertedContract = Omit< - ConvertToKebabCase, - | 'events-watcher' - | 'proposal-signing-backend' - | 'withdraw-config' - | 'linked-anchors' - | 'deployed-at' + ConvertToKebabCase, + | 'events-watcher' + | 'proposal-signing-backend' + | 'withdraw-config' + | 'linked-anchors' + | 'deployed-at' > & { 'events-watcher': ConvertToKebabCase; 'proposal-signing-backend'?: ConvertToKebabCase; 'withdraw-config'?: ConvertToKebabCase; 'linked-anchors'?: ConvertedLinkedAnchor[]; }; - type ConvertedConfig = Omit< - ConvertToKebabCase, - 'contracts' - > & { + type ConvertedConfig = Omit, 'contracts'> & { contracts: ConvertedContract[]; }; type FullConfigFile = { @@ -109,66 +109,60 @@ export function writeEvmChainConfig ( 'events-watcher': { enabled: contract.eventsWatcher.enabled, 'polling-interval': contract.eventsWatcher.pollingInterval, - 'print-progress-interval': - contract.eventsWatcher.printProgressInterval + 'print-progress-interval': contract.eventsWatcher.printProgressInterval, }, 'linked-anchors': contract?.linkedAnchors?.map((anchor: LinkedAnchor) => anchor.type === 'Evm' ? { - address: anchor.address, - 'chain-id': anchor.chainId, - type: 'Evm' - } + address: anchor.address, + 'chain-id': anchor.chainId, + type: 'Evm', + } : anchor.type === 'Substrate' - ? { + ? { 'chain-id': anchor.chainId, pallet: anchor.pallet, 'tree-id': anchor.treeId, - type: 'Substrate' - + type: 'Substrate', } - : { + : { 'resource-id': anchor.resourceId, - type: 'Raw' + type: 'Raw', } ), 'proposal-signing-backend': contract.proposalSigningBackend?.type === 'Mocked' ? { - 'private-key': contract.proposalSigningBackend?.privateKey, - type: 'Mocked' - } + 'private-key': contract.proposalSigningBackend?.privateKey, + type: 'Mocked', + } : contract.proposalSigningBackend?.type === 'DKGNode' - ? { + ? { node: contract.proposalSigningBackend?.node, - type: 'DKGNode' + type: 'DKGNode', } - : undefined, + : undefined, 'withdraw-config': contract.withdrawConfig ? { - 'withdraw-fee-percentage': - contract.withdrawConfig?.withdrawFeePercentage, - 'withdraw-gaslimit': contract.withdrawConfig?.withdrawGaslimit - } - : undefined + 'withdraw-fee-percentage': contract.withdrawConfig?.withdrawFeePercentage, + 'withdraw-gaslimit': contract.withdrawConfig?.withdrawGaslimit, + } + : undefined, })), enabled: config.enabled, 'http-endpoint': config.httpEndpoint, name: config.name, 'private-key': config.privateKey, - 'ws-endpoint': config.wsEndpoint + 'ws-endpoint': config.wsEndpoint, }; const fullConfigFile: FullConfigFile = { evm: { - [config.name]: convertedConfig - } + [config.name]: convertedConfig, + }, }; const toml = toToml(fullConfigFile, { spaces: 4 }); // Write the TOML string to a file fs.writeFileSync(path, toml); - } - - diff --git a/scripts/evm/ethersGovernorWallets.ts b/scripts/evm/ethersGovernorWallets.ts index 1a1728b9b..8f25e0380 100644 --- a/scripts/evm/ethersGovernorWallets.ts +++ b/scripts/evm/ethersGovernorWallets.ts @@ -9,10 +9,7 @@ export const chainIdTypePolygon = getChainIdType(80001); export const providerGoerli = new ethers.providers.JsonRpcProvider( `https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161` ); -export const walletGoerli = new ethers.Wallet( - process.env.PRIVATE_KEY!, - providerGoerli -); +export const walletGoerli = new ethers.Wallet(process.env.PRIVATE_KEY!, providerGoerli); export const chainIdTypeGoerli = getChainIdType(5); export const providerSepolia = new ethers.providers.JsonRpcProvider(`https://rpc.sepolia.org`); From c38bba2423c955d1932c54f2789bda6f575dd9ad Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Tue, 17 Jan 2023 15:01:01 -0500 Subject: [PATCH 17/17] Attempt ts-check fix --- scripts/evm/deployments/VBridge8Side.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/evm/deployments/VBridge8Side.ts b/scripts/evm/deployments/VBridge8Side.ts index ffb6d55ff..ae91eb287 100644 --- a/scripts/evm/deployments/VBridge8Side.ts +++ b/scripts/evm/deployments/VBridge8Side.ts @@ -129,7 +129,7 @@ async function run() { // [chainIdTypeDemeter]: ['0'] }; - const endPoints: Record = { + const chainEndPoints: Record = { // [chainIdTypeGoerli]: goerliEndPoints, // [chainIdTypeSepolia]: sepoliaEndPoints, // [chainIdTypeOptimism]: optimismEndPoints, @@ -171,7 +171,7 @@ async function run() { } } - const endPointConfig = endPoints[typedChainId]; + const endPointConfig = chainEndPoints[typedChainId]; // construct chain configuration const chainConfig = getEvmChainConfig( chainId,