From a7d965ef89137102e24beef973cf53098c1dd7ce Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sun, 11 Oct 2020 19:33:55 +0200 Subject: [PATCH] Rework contracts deploy (#3853) * Rework contracts deploy * Bump API * Remove .wasm from filename * Remove (instance) --- package.json | 6 +- packages/page-contracts/package.json | 2 +- packages/page-contracts/src/Codes/Add.tsx | 17 +-- packages/page-contracts/src/Codes/Upload.tsx | 16 +- packages/page-contracts/src/Contracts/Add.tsx | 9 +- .../page-contracts/src/Contracts/Call.tsx | 22 ++- packages/page-contracts/src/Deploy.tsx | 141 ++++++++---------- packages/page-contracts/src/useAbi.ts | 4 +- packages/page-contracts/src/useWeight.ts | 23 ++- packages/react-api/package.json | 2 +- yarn.lock | 112 +++++++------- 11 files changed, 165 insertions(+), 189 deletions(-) diff --git a/package.json b/package.json index a67ffe1d47..cc5766c681 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,10 @@ "afterSign": "electron-builder-notarize" }, "resolutions": { - "@polkadot/api": "^2.1.2-19", - "@polkadot/api-contract": "^2.1.2-19", + "@polkadot/api": "^2.1.2-20", + "@polkadot/api-contract": "^2.1.2-20", "@polkadot/keyring": "^3.5.1", - "@polkadot/types": "^2.1.2-19", + "@polkadot/types": "^2.1.2-20", "@polkadot/util": "^3.5.1", "@polkadot/util-crypto": "^3.5.1", "@polkadot/wasm-crypto": "^1.4.1", diff --git a/packages/page-contracts/package.json b/packages/page-contracts/package.json index 3bed98b333..dac1b2ae59 100644 --- a/packages/page-contracts/package.json +++ b/packages/page-contracts/package.json @@ -12,6 +12,6 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.11.2", - "@polkadot/api-contract": "^2.1.2-19" + "@polkadot/api-contract": "^2.1.2-20" } } diff --git a/packages/page-contracts/src/Codes/Add.tsx b/packages/page-contracts/src/Codes/Add.tsx index f86a963b88..d9144f35bf 100644 --- a/packages/page-contracts/src/Codes/Add.tsx +++ b/packages/page-contracts/src/Codes/Add.tsx @@ -3,7 +3,7 @@ import { StringOrNull } from '@polkadot/react-components/types'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useState } from 'react'; import { Button, Input, Modal } from '@polkadot/react-components'; import { isNull } from '@polkadot/util'; import { ABI, InputName } from '../shared'; @@ -24,16 +24,6 @@ function Add ({ onClose }: Props): React.ReactElement { const [name, setName] = useState(null); const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi(); - const isNameValid = useMemo( - (): boolean => !isNull(name) && name.length > 0, - [name] - ); - - const isValid = useMemo( - (): boolean => isCodeHashValid && isNameValid, - [isCodeHashValid, isNameValid] - ); - const _onSave = useCallback( (): void => { if (!codeHash || !name) { @@ -50,6 +40,9 @@ function Add ({ onClose }: Props): React.ReactElement { [abi, codeHash, name, onClose] ); + const isNameValid = !isNull(name) && name.length > 0; + const isValid = isCodeHashValid && isNameValid && isAbiSupplied && isAbiValid; + return ( @@ -73,7 +66,7 @@ function Add ({ onClose }: Props): React.ReactElement { !!accountId && (!isNull(name) && isNameValid) && isWasmValid && (!isAbiSupplied || isAbiValid), - [accountId, name, isAbiSupplied, isAbiValid, isNameValid, isWasmValid] - ); - const _onAddWasm = useCallback( (wasm: Uint8Array, name: string): void => { setWasm([compactAddLength(wasm), isWasm(wasm)]); - setName(name); + setName(name.replace('.wasm', '')); }, [setName] ); @@ -49,7 +44,8 @@ function Upload ({ onClose }: Props): React.ReactElement { return; } - store.saveCode(codeHash as Hash, { abi, name, tags: [] }) + store + .saveCode(codeHash as Hash, { abi, name, tags: [] }) .then() .catch((error: any): void => { console.error('Unable to save code', error); @@ -59,6 +55,8 @@ function Upload ({ onClose }: Props): React.ReactElement { [abi, name] ); + const isSubmittable = !!accountId && (!isNull(name) && isNameValid) && isWasmValid && isAbiSupplied && isAbiValid; + return ( @@ -89,7 +87,7 @@ function Upload ({ onClose }: Props): React.ReactElement { isAddressValid && isNameValid && isAbiValid, - [isAbiValid, isAddressValid, isNameValid] - ); - const _onAdd = useCallback( (): void => { const status: Partial = { action: 'create' }; @@ -66,6 +61,8 @@ function Add ({ onClose }: Props): React.ReactElement { [abi, address, api, name, onClose] ); + const isValid = isAddressValid && isNameValid && isAbiValid; + return ( diff --git a/packages/page-contracts/src/Contracts/Call.tsx b/packages/page-contracts/src/Contracts/Call.tsx index 26c0d841cb..40f49ab597 100644 --- a/packages/page-contracts/src/Contracts/Call.tsx +++ b/packages/page-contracts/src/Contracts/Call.tsx @@ -5,7 +5,7 @@ import { SubmittableExtrinsic } from '@polkadot/api/types'; import { CallResult } from './types'; import BN from 'bn.js'; -import React, { useCallback, useState, useEffect, useMemo } from 'react'; +import React, { useCallback, useState, useEffect } from 'react'; import styled from 'styled-components'; import { Button, Dropdown, Expander, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components'; import { PromiseContract as ApiContract } from '@polkadot/api-contract'; @@ -35,8 +35,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd const [outcomes, setOutcomes] = useState([]); const [execTx, setExecTx] = useState | null>(null); const [params, setParams] = useState([]); - const useWeightHook = useWeight(); - const { isValid: isWeightValid, weight } = useWeightHook; + const weight = useWeight(); useEffect((): void => { setParams([]); @@ -45,7 +44,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd useEffect((): void => { value && message.isMutating && setExecTx((): SubmittableExtrinsic<'promise'> | null => { try { - return contract.exec(message, message.isPayable ? value : 0, weight, ...params); + return contract.exec(message, message.isPayable ? value : 0, weight.weight, ...params); } catch (error) { return null; } @@ -57,7 +56,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd if (!accountId || !message || !value || !weight) return; contract - .read(message, message.isPayable ? value : 0, weight, ...params) + .read(message, message.isPayable ? value : 0, weight.weight, ...params) .send(accountId) .then((outcome) => setOutcomes([ { @@ -75,15 +74,12 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd ); const _onClearOutcome = useCallback( - (outcomeIndex: number) => () => setOutcomes(outcomes.slice(0, outcomeIndex).concat(outcomes.slice(outcomeIndex + 1))), + (outcomeIndex: number) => + () => setOutcomes([...outcomes.filter((_, index) => index !== outcomeIndex)]), [outcomes] ); - const isValid = useMemo( - () => !!(accountId && isWeightValid && isValueValid), - [accountId, isValueValid, isWeightValid] - ); - + const isValid = !!(accountId && weight.isValid && isValueValid); const isViaRpc = contract.hasRpcContractsCall && !message.isMutating; return ( @@ -142,7 +138,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd ('The maximum amount of gas to use for this contract call. If the call requires more, it will fail.')} label={t('maximum gas allowed')} - {...useWeightHook} + {...weight} /> {outcomes.length > 0 && ( diff --git a/packages/page-contracts/src/Deploy.tsx b/packages/page-contracts/src/Deploy.tsx index b4aa2a6d0a..616dc16700 100644 --- a/packages/page-contracts/src/Deploy.tsx +++ b/packages/page-contracts/src/Deploy.tsx @@ -1,15 +1,16 @@ // Copyright 2017-2020 @polkadot/app-contracts authors & contributors // SPDX-License-Identifier: Apache-2.0 +import { SubmittableExtrinsic } from '@polkadot/api/types'; import { StringOrNull } from '@polkadot/react-components/types'; import { AccountId } from '@polkadot/types/interfaces'; -import { CodecArg } from '@polkadot/types/types'; import { CodeStored } from './types'; import BN from 'bn.js'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useHistory } from 'react-router-dom'; import { SubmittableResult } from '@polkadot/api'; +import { PromiseBlueprint } from '@polkadot/api-contract'; import { Dropdown, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components'; import { useFormField, useNonEmptyString, useNonZeroBn, useApi } from '@polkadot/react-hooks'; import keyring from '@polkadot/ui-keyring'; @@ -21,48 +22,46 @@ import useAbi from './useAbi'; import useWeight from './useWeight'; import { ENDOWMENT } from './constants'; -type ConstructOptions = { key: string; text: React.ReactNode; value: string }[]; - interface Props { basePath: string; codeHash: string; - constructorIndex?: number; + constructorIndex: number; onClose: () => void; setConstructorIndex: React.Dispatch; } -function defaultContractName (name: string) { - return `${name} (instance)`; -} - function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstructorIndex }: Props): React.ReactElement { const { t } = useTranslation(); const { api } = useApi(); const history = useHistory(); - const useWeightHook = useWeight(); - const { isValid: isWeightValid, weight } = useWeightHook; + const weight = useWeight(); + const [initTx, setInitTx] = useState | null>(null); + const [params, setParams] = useState([]); + const [accountId, isAccountIdValid, setAccountId] = useFormField(null); + const [endowment, isEndowmentValid, setEndowment] = useNonZeroBn(new BN(ENDOWMENT)); + + useEffect((): void => { + setParams([]); + }, [constructorIndex]); const code = useMemo( (): CodeStored => store.getCode(codeHash), [codeHash] ); - const [accountId, isAccountIdValid, setAccountId] = useFormField(null); - const [endowment, isEndowmentValid, setEndowment] = useNonZeroBn(new BN(ENDOWMENT)); - const [name, isNameValid, setName] = useNonEmptyString(t(defaultContractName(code.json.name))); + + const [name, isNameValid, setName] = useNonEmptyString(code.json.name); const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi, code.contractAbi], codeHash, true); - const isValid = useMemo( - () => isNameValid && isEndowmentValid && isWeightValid && isAccountIdValid, - [isAccountIdValid, isEndowmentValid, isNameValid, isWeightValid] + const blueprint = useMemo( + () => codeHash && contractAbi + ? new PromiseBlueprint(api, contractAbi, codeHash) + : null, + [api, codeHash, contractAbi] ); const constructOptions = useMemo( - (): ConstructOptions => { - if (!contractAbi) { - return []; - } - - return contractAbi.constructors.map((message, index) => ({ + () => contractAbi + ? contractAbi.constructors.map((message, index) => ({ key: `${index}`, text: ( ), - value: `${index}` - })); - }, + value: index + })) + : [], [contractAbi] ); - const [params, setParams] = useState(contractAbi && constructorIndex >= 0 ? contractAbi.constructors[constructorIndex].args : []); + useEffect((): void => { + endowment && setInitTx((): SubmittableExtrinsic<'promise'> | null => { + if (blueprint) { + try { + return blueprint.instantiate(constructorIndex, endowment, weight.weight, ...params); + } catch (error) { + console.error(error); - useEffect( - () => setParams(contractAbi ? contractAbi.constructors[constructorIndex].args : []), - [constructorIndex, contractAbi] - ); - - useEffect( - () => setName(t(defaultContractName(code.json.name))), - [code, setName, t] - ); - - const _constructCall = useCallback( - (): any[] => { - if (!contractAbi || constructorIndex < 0) { - return []; + return null; + } } - return [endowment, weight, codeHash, contractAbi.constructors[constructorIndex](...(params as CodecArg[]))]; - }, - [codeHash, constructorIndex, contractAbi, endowment, params, weight] - ); + return null; + }); + }, [blueprint, constructorIndex, endowment, params, weight]); const _onSuccess = useCallback( (result: SubmittableResult): void => { @@ -126,6 +118,8 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru [abi, api, basePath, history, name, onClose] ); + const isValid = isNameValid && isEndowmentValid && weight.isValid && isAccountIdValid; + return ( @@ -143,38 +137,32 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru onChange={setName} value={name || ''} /> - {isAbiSupplied - ? null - : ( - - ) - } - {contractAbi - ? ( - ('The deployment constructor information for this contract, as provided by the ABI.')} - isDisabled={contractAbi.constructors.length <= 1} - label={t('deployment constructor')} - onChange={setConstructorIndex} - options={constructOptions} - value={`${constructorIndex}`} - /> - ) - : null - } + {!isAbiSupplied && ( + + )} + {contractAbi && ( + ('The deployment constructor information for this contract, as provided by the ABI.')} + isDisabled={contractAbi.constructors.length <= 1} + label={t('deployment constructor')} + onChange={setConstructorIndex} + options={constructOptions} + value={constructorIndex} + /> + )} = 0 + contractAbi ? contractAbi.constructors[constructorIndex].args : [] } @@ -189,19 +177,18 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru ('The maximum amount of gas that can be used by this deployment, if the code requires more, the deployment will fail.')} label={t('maximum gas allowed')} - {...useWeightHook} + {...weight} /> diff --git a/packages/page-contracts/src/useAbi.ts b/packages/page-contracts/src/useAbi.ts index 1f15cefbe1..f8fdddfaa5 100644 --- a/packages/page-contracts/src/useAbi.ts +++ b/packages/page-contracts/src/useAbi.ts @@ -28,9 +28,7 @@ export default function useAbi (initialValue: [string | null | undefined, Abi | useEffect( (): void => { - if (!!initialValue[0] && abi !== initialValue[0]) { - setAbi([initialValue[0], initialValue[1], !!initialValue[1], !isRequired || !!initialValue[1]]); - } + initialValue[0] && abi !== initialValue[0] && setAbi([initialValue[0], initialValue[1], !!initialValue[1], !isRequired || !!initialValue[1]]); }, [abi, initialValue, isRequired] ); diff --git a/packages/page-contracts/src/useWeight.ts b/packages/page-contracts/src/useWeight.ts index e7acc73fa3..d0df2b0d86 100644 --- a/packages/page-contracts/src/useWeight.ts +++ b/packages/page-contracts/src/useWeight.ts @@ -13,23 +13,30 @@ const BN_MILLION = new BN(1e6); export default function useWeight (initialValue: BN = BN_MILLION): UseWeight { const [blockTime] = useBlockTime(); const [megaGas, setMegaGas] = useState(initialValue); - const [executionTime, isValid, percentage, weight] = useMemo( - (): [number, boolean, number, BN] => { + const [executionTime, percentage, weight, isValid] = useMemo( + (): [number, number, BN, boolean] => { if (!megaGas) { - return [0, false, 0, BN_ZERO]; + return [0, 0, BN_ZERO, false]; } const weight = megaGas.mul(BN_MILLION); const executionTime = megaGas.toNumber() / 1e6; const percentage = Math.round((executionTime / (blockTime / 1000)) * 100); - const isValid = !megaGas.isZero() && percentage < 100; - return [executionTime, isValid, percentage, weight]; + return [executionTime, percentage, weight, !megaGas.isZero() && percentage < 100]; }, [blockTime, megaGas] ); - return { - executionTime, isValid, megaGas: megaGas || BN_ZERO, percentage, setMegaGas, weight - }; + return useMemo( + () => ({ + executionTime, + isValid, + megaGas: megaGas || BN_ZERO, + percentage, + setMegaGas, + weight + }), + [executionTime, isValid, megaGas, percentage, setMegaGas, weight] + ); } diff --git a/packages/react-api/package.json b/packages/react-api/package.json index 23b24a0b86..8149e84b04 100644 --- a/packages/react-api/package.json +++ b/packages/react-api/package.json @@ -31,7 +31,7 @@ "homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-reactive#readme", "dependencies": { "@babel/runtime": "^7.11.2", - "@polkadot/api": "^2.1.2-19", + "@polkadot/api": "^2.1.2-20", "@polkadot/extension-dapp": "^0.35.0-beta.12", "rxjs-compat": "^6.6.3" } diff --git a/yarn.lock b/yarn.lock index 2d146524d1..974fc96d82 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2039,57 +2039,57 @@ __metadata: languageName: node linkType: hard -"@polkadot/api-contract@npm:^2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/api-contract@npm:2.1.2-19" +"@polkadot/api-contract@npm:^2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/api-contract@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/api": 2.1.2-19 - "@polkadot/rpc-core": 2.1.2-19 - "@polkadot/types": 2.1.2-19 + "@polkadot/api": 2.1.2-20 + "@polkadot/rpc-core": 2.1.2-20 + "@polkadot/types": 2.1.2-20 "@polkadot/util": ^3.5.1 bn.js: ^5.1.3 rxjs: ^6.6.3 - checksum: c4aab02ecc776e89f662dc6640053f31b5c6a8cf2f2d8345ea1641caae83e93a4f91d9b93716246b4721e895703e01a457340609e21ee2b8b18e4d13be72907b + checksum: 138f3f2ec27b6772d87d988b2c69fcbc303c821f2c68d1e99af52afe6eb257a0d3395b3350c450a73f7abc8657cb79fe07f54ca073bf38c13d3dae14fb8b9910 languageName: node linkType: hard -"@polkadot/api-derive@npm:2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/api-derive@npm:2.1.2-19" +"@polkadot/api-derive@npm:2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/api-derive@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/api": 2.1.2-19 - "@polkadot/rpc-core": 2.1.2-19 - "@polkadot/rpc-provider": 2.1.2-19 - "@polkadot/types": 2.1.2-19 + "@polkadot/api": 2.1.2-20 + "@polkadot/rpc-core": 2.1.2-20 + "@polkadot/rpc-provider": 2.1.2-20 + "@polkadot/types": 2.1.2-20 "@polkadot/util": ^3.5.1 "@polkadot/util-crypto": ^3.5.1 bn.js: ^5.1.3 memoizee: ^0.4.14 rxjs: ^6.6.3 - checksum: 4c333d7b682a9bd37b173d4a7fb70d36452632970fa4739132d102332e124100711c048732fda4f117e93d60b50fe4b0442523ec8fdbf3788542ba71111684ea + checksum: c3294b0cf54e499e260faaaf23ffea74b7188df80efc80b3f7ce8630b5afe55f2dfdb209b15a5e7edcba673e1a52837bfdc4f84e7f9b85d5d5fc6ca1560818a5 languageName: node linkType: hard -"@polkadot/api@npm:^2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/api@npm:2.1.2-19" +"@polkadot/api@npm:^2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/api@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/api-derive": 2.1.2-19 + "@polkadot/api-derive": 2.1.2-20 "@polkadot/keyring": ^3.5.1 - "@polkadot/metadata": 2.1.2-19 - "@polkadot/rpc-core": 2.1.2-19 - "@polkadot/rpc-provider": 2.1.2-19 - "@polkadot/types": 2.1.2-19 - "@polkadot/types-known": 2.1.2-19 + "@polkadot/metadata": 2.1.2-20 + "@polkadot/rpc-core": 2.1.2-20 + "@polkadot/rpc-provider": 2.1.2-20 + "@polkadot/types": 2.1.2-20 + "@polkadot/types-known": 2.1.2-20 "@polkadot/util": ^3.5.1 "@polkadot/util-crypto": ^3.5.1 bn.js: ^5.1.3 eventemitter3: ^4.0.7 rxjs: ^6.6.3 - checksum: c60419fe8cd141737534bad875befe72b11175dedb6871510f25b74fb1806b2619a8925c21e6ac1db87f37debc5e926832c5bb06a249c9ede1747dca39e1ad34 + checksum: 680d0fe4d9e3613cc888cb309a44e2a589fc8bef6bb727bd3bfba8432242a485348691b2c78b83b591a5767e15d44164dc1f3b93856252e0e2053c26300617c0 languageName: node linkType: hard @@ -2145,7 +2145,7 @@ __metadata: resolution: "@polkadot/app-contracts@workspace:packages/page-contracts" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/api-contract": ^2.1.2-19 + "@polkadot/api-contract": ^2.1.2-20 languageName: unknown linkType: soft @@ -2525,17 +2525,17 @@ __metadata: languageName: node linkType: hard -"@polkadot/metadata@npm:2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/metadata@npm:2.1.2-19" +"@polkadot/metadata@npm:2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/metadata@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/types": 2.1.2-19 - "@polkadot/types-known": 2.1.2-19 + "@polkadot/types": 2.1.2-20 + "@polkadot/types-known": 2.1.2-20 "@polkadot/util": ^3.5.1 "@polkadot/util-crypto": ^3.5.1 bn.js: ^5.1.3 - checksum: cbd10cb11d932967ad3cd3c1bf77221a886032e344e7ff1b851946dc955b9dd0279b1cd3010a9972762575087c59a3ea468086f5a9add89d2b93b10df7ca403e + checksum: f08a577035578d691f26142dd5e18ba3202849f176ec422ba2150a1cbdba939701f7e0a699cab4d9d188a165b1c3ddc9ff06f01f0c1663ab31ed44b5137fc0e5 languageName: node linkType: hard @@ -2544,7 +2544,7 @@ __metadata: resolution: "@polkadot/react-api@workspace:packages/react-api" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/api": ^2.1.2-19 + "@polkadot/api": ^2.1.2-20 "@polkadot/extension-dapp": ^0.35.0-beta.12 rxjs-compat: ^6.6.3 languageName: unknown @@ -2667,35 +2667,35 @@ __metadata: languageName: unknown linkType: soft -"@polkadot/rpc-core@npm:2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/rpc-core@npm:2.1.2-19" +"@polkadot/rpc-core@npm:2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/rpc-core@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/metadata": 2.1.2-19 - "@polkadot/rpc-provider": 2.1.2-19 - "@polkadot/types": 2.1.2-19 + "@polkadot/metadata": 2.1.2-20 + "@polkadot/rpc-provider": 2.1.2-20 + "@polkadot/types": 2.1.2-20 "@polkadot/util": ^3.5.1 memoizee: ^0.4.14 rxjs: ^6.6.3 - checksum: 194f52900cece006e6a21d46d30fecf84a806b251aa9870c38181bdfc3494ed609addf158b5a579c7d1e6757fc25aa2d709887a815e269f5d3566d688cfcd8c4 + checksum: ff6126e73801ddbd01e9d7b5687be820ac5442be5c4a9d4f0ea1d54ef67cae11c1eff7a7b61bde713f279dfbb3d02217cb58a2b6d801844a1711c261171db14a languageName: node linkType: hard -"@polkadot/rpc-provider@npm:2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/rpc-provider@npm:2.1.2-19" +"@polkadot/rpc-provider@npm:2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/rpc-provider@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/metadata": 2.1.2-19 - "@polkadot/types": 2.1.2-19 + "@polkadot/metadata": 2.1.2-20 + "@polkadot/types": 2.1.2-20 "@polkadot/util": ^3.5.1 "@polkadot/util-crypto": ^3.5.1 "@polkadot/x-fetch": ^0.3.2 "@polkadot/x-ws": ^0.3.2 bn.js: ^5.1.3 eventemitter3: ^4.0.7 - checksum: 58e93610a3b01e26d1ac111cd77a28a6eea401c444a954e23b3fd18aba1cd3fd931cc47af2793a706a90f4cda047942abb03e8b90c75a3b7a6171df9d10879e8 + checksum: 70033a1b200505cf8a743a7e223aff098aee574e31790e3a912f5f6b1eb2faaa13e851729a202b73f6b56d5eac69e257ad5eaca78e6db9e2deee5544e92b8709 languageName: node linkType: hard @@ -2708,31 +2708,31 @@ __metadata: languageName: node linkType: hard -"@polkadot/types-known@npm:2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/types-known@npm:2.1.2-19" +"@polkadot/types-known@npm:2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/types-known@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/types": 2.1.2-19 + "@polkadot/types": 2.1.2-20 "@polkadot/util": ^3.5.1 bn.js: ^5.1.3 - checksum: 73e0902549e229c2251a26439ec5d05b189d40b24f528f6af2eea3d009c9b4c643432038db9da57995b83af76f9b2db01cd73e0f98b260cff52dc1b75f75b2d9 + checksum: 595324baab89b64a248b9b7a957bd84772ba1149ceeb62b95d9d4c4ef4c0c2be1467ebb8dd3debfb9db373d7610e50fb72b5abeed156e87319793f1e13dbac15 languageName: node linkType: hard -"@polkadot/types@npm:^2.1.2-19": - version: 2.1.2-19 - resolution: "@polkadot/types@npm:2.1.2-19" +"@polkadot/types@npm:^2.1.2-20": + version: 2.1.2-20 + resolution: "@polkadot/types@npm:2.1.2-20" dependencies: "@babel/runtime": ^7.11.2 - "@polkadot/metadata": 2.1.2-19 + "@polkadot/metadata": 2.1.2-20 "@polkadot/util": ^3.5.1 "@polkadot/util-crypto": ^3.5.1 "@types/bn.js": ^4.11.6 bn.js: ^5.1.3 memoizee: ^0.4.14 rxjs: ^6.6.3 - checksum: 72385b2fd521a2c19d43bd8a102df288cb90f5c46dda0cecaacb84165bff951fcf9692ac2650b31b30c3d7bca2194a33777b8bbdeac5793c09a2374d1de38c1a + checksum: 16e9885e94e5537031788b7581fa3ebb7aaa8b989ae604b9f67637ed20ea018d1c90b31b06f996d1317ecce769abc71108e4cf0e68614efd596db31524c0541a languageName: node linkType: hard