diff --git a/packages/api-derive/package.json b/packages/api-derive/package.json index 9751b51205..5155bd45c0 100644 --- a/packages/api-derive/package.json +++ b/packages/api-derive/package.json @@ -32,6 +32,6 @@ "@polkadot/types": "^1.0.0-beta.4" }, "devDependencies": { - "@polkadot/keyring": "^2.0.0-beta.1" + "@polkadot/keyring": "^2.0.0-beta.2" } } diff --git a/packages/api-derive/src/balances/fees.ts b/packages/api-derive/src/balances/fees.ts index 422d5ae021..35031249aa 100644 --- a/packages/api-derive/src/balances/fees.ts +++ b/packages/api-derive/src/balances/fees.ts @@ -13,7 +13,7 @@ import { memo } from '../util'; type Result = [Balance, Balance, Balance, Balance, Balance]; -function queryV2 (api: ApiInterfaceRx): Observable { +function query (api: ApiInterfaceRx): Observable { const paymentBase = api.consts.transactionPayment || api.consts.balances; return of([ @@ -27,17 +27,6 @@ function queryV2 (api: ApiInterfaceRx): Observable { ]); } -function queryV1 (api: ApiInterfaceRx): Observable { - return api.queryMulti([ - // Support older versions and get values from storage - api.query.balances.creationFee, - api.query.balances.existentialDeposit, - api.query.balances.transferFee, - api.query.balances.transactionBaseFee, - api.query.balances.transactionByteFee - ]); -} - /** * @name fees * @returns An object containing the combined results of the storage queries for @@ -52,10 +41,6 @@ function queryV1 (api: ApiInterfaceRx): Observable { * ``` */ export function fees (api: ApiInterfaceRx): () => Observable { - const query = api.consts.balances - ? queryV2 - : queryV1; - return memo((): Observable => query(api).pipe( map(([creationFee, existentialDeposit, transferFee, transactionBaseFee, transactionByteFee]): DerivedFees => ({ diff --git a/packages/api-derive/src/democracy/referendums.ts b/packages/api-derive/src/democracy/referendums.ts index e6ed9d76c0..4570547ae8 100644 --- a/packages/api-derive/src/democracy/referendums.ts +++ b/packages/api-derive/src/democracy/referendums.ts @@ -14,10 +14,9 @@ import { memo } from '../util'; export function referendums (api: ApiInterfaceRx): () => Observable { return memo((): Observable => - // V2 vs V1 (and early V2) - api.query.democracy?.lowestUnbaked || api.query.democracy?.nextTally + api.query.democracy?.lowestUnbaked ? api.queryMulti<[ReferendumIndex, ReferendumIndex]>([ - api.query.democracy.lowestUnbaked || api.query.democracy.nextTally, + api.query.democracy.lowestUnbaked, api.query.democracy.referendumCount ]).pipe( switchMap(([earliest, referendumCount]): Observable => diff --git a/packages/api-derive/src/session/info.ts b/packages/api-derive/src/session/info.ts index b66166207a..e4e6c951cc 100644 --- a/packages/api-derive/src/session/info.ts +++ b/packages/api-derive/src/session/info.ts @@ -2,50 +2,20 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { BlockNumber, SessionIndex } from '@polkadot/types/interfaces'; +import { SessionIndex } from '@polkadot/types/interfaces'; import { DerivedSessionInfo, DeriveSessionIndexes } from '../types'; import { Observable, combineLatest } from 'rxjs'; import { map } from 'rxjs/operators'; import { ApiInterfaceRx } from '@polkadot/api/types'; -import { Option, u64, createType } from '@polkadot/types'; +import { u64, createType } from '@polkadot/types'; import { memo } from '../util'; -type ResultV1Session = [Option, BlockNumber, BlockNumber, SessionIndex]; -type ResultV1 = [BlockNumber, DeriveSessionIndexes, ResultV1Session]; - type ResultSlots = [u64, u64, u64, SessionIndex]; type ResultType = [boolean, u64, SessionIndex]; type Result = [ResultType, DeriveSessionIndexes, ResultSlots]; -// internal helper to just split the logic - take all inputs, do the calculations and combine -function createDerivedV1 (api: ApiInterfaceRx, [bestNumber, { currentIndex, validatorCount }, [_lastLengthChange, sessionLength, lastEraLengthChange, sessionsPerEra]]: ResultV1): DerivedSessionInfo { - const lastLengthChange = _lastLengthChange?.unwrapOr(null) || createType(api.registry, 'BlockNumber'); - const sessionProgress = bestNumber - .sub(lastLengthChange) - .add(sessionLength) - .mod(sessionLength); - const currentEra = currentIndex - .sub(lastEraLengthChange) - .mod(sessionsPerEra); - const eraProgress = currentEra - .mul(sessionLength) - .add(sessionProgress); - - return { - currentEra: createType(api.registry, 'EraIndex', currentEra), - currentIndex, - eraLength: createType(api.registry, 'BlockNumber', sessionLength.mul(sessionsPerEra)), - eraProgress: createType(api.registry, 'BlockNumber', eraProgress), - isEpoch: false, - sessionLength, - sessionsPerEra, - sessionProgress: createType(api.registry, 'BlockNumber', sessionProgress), - validatorCount - }; -} - function createDerivedLatest (api: ApiInterfaceRx, [[hasBabe, epochDuration, sessionsPerEra], { currentIndex, currentEra, validatorCount }, [currentSlot, epochIndex, epochOrGenesisStartSlot, currentEraStartSessionIndex]]: Result): DerivedSessionInfo { const epochStartSlot = epochIndex.mul(epochDuration).add(epochOrGenesisStartSlot); const sessionProgress = currentSlot.sub(epochStartSlot); @@ -64,21 +34,6 @@ function createDerivedLatest (api: ApiInterfaceRx, [[hasBabe, epochDuration, ses }; } -function infoV1 (api: ApiInterfaceRx): Observable { - return combineLatest([ - api.derive.chain.bestNumber(), - api.derive.session.indexes(), - api.queryMulti([ - api.query.session.lastLengthChange, - api.query.session.sessionLength, - api.query.staking.lastEraLengthChange, - api.query.staking.sessionsPerEra - ]) - ]).pipe( - map((result): DerivedSessionInfo => createDerivedV1(api, result)) - ); -} - function infoLatestAura (api: ApiInterfaceRx): Observable { return api.derive.session.indexes().pipe( map((indexes): DerivedSessionInfo => @@ -115,11 +70,9 @@ function infoLatestBabe (api: ApiInterfaceRx): Observable { * @description Retrieves all the session and era info and calculates specific values on it as the length of the session and eras */ export function info (api: ApiInterfaceRx): () => Observable { - const query = api.consts.timestamp || api.consts.babe || api.consts.aura - ? api.consts.babe - ? infoLatestBabe // 2.x with Babe - : infoLatestAura // 2.x with Aura (not all info there) - : infoV1; + const query = api.consts.babe + ? infoLatestBabe // 2.x with Babe + : infoLatestAura; // 2.x with Aura (not all info there) return memo((): Observable => query(api)); diff --git a/packages/api-derive/src/staking/infoStash.ts b/packages/api-derive/src/staking/infoStash.ts index 67d6ae8bac..a9e19ea124 100644 --- a/packages/api-derive/src/staking/infoStash.ts +++ b/packages/api-derive/src/staking/infoStash.ts @@ -13,10 +13,7 @@ import { Option, Vec } from '@polkadot/types'; import { memo } from '../util'; -// NOTE Unused ATM, preparing for V2-only - type Result = [Option, [Vec], RewardDestination, Exposure, ValidatorPrefs, Option?]; -type ResultV1 = [Option, ITuple<[Vec]>, RewardDestination, Exposure, ValidatorPrefs]; type ResultV2 = [Option, ITuple<[Vec]>, RewardDestination, Exposure, ValidatorPrefs, Option]; function parse (stashId: AccountId, [_controllerId, [nominators], rewardDestination, stakers, validatorPrefs, _nextKeys]: Result): DerivedStakingStash { @@ -31,17 +28,7 @@ function parse (stashId: AccountId, [_controllerId, [nominators], rewardDestinat }; } -function retrieveV1 (api: ApiInterfaceRx, stashId: AccountId): Observable { - return api.queryMulti([ - [api.query.staking.bonded, stashId], - [api.query.staking.nominators, stashId], - [api.query.staking.payee, stashId], - [api.query.staking.stakers, stashId], - [api.query.staking.validators, stashId] - ]); -} - -function retrieveV2 (api: ApiInterfaceRx, stashId: AccountId): Observable { +function query (api: ApiInterfaceRx, stashId: AccountId): Observable { return api.queryMulti([ [api.query.staking.bonded, stashId], [api.query.staking.nominators, stashId], @@ -53,10 +40,6 @@ function retrieveV2 (api: ApiInterfaceRx, stashId: AccountId): Observable Observable { - const query = api.consts.session - ? retrieveV2 - : retrieveV1; - return memo((stashId: AccountId): Observable => query(api, stashId).pipe( map((result): DerivedStakingStash => parse(stashId, result)) diff --git a/packages/api-derive/src/staking/query.ts b/packages/api-derive/src/staking/query.ts index 577b6c2640..fed726e312 100644 --- a/packages/api-derive/src/staking/query.ts +++ b/packages/api-derive/src/staking/query.ts @@ -13,142 +13,61 @@ import { createType, Option, Vec } from '@polkadot/types'; import { memo } from '../util'; -interface ParseInput { - accountId: AccountId; - controllerId: AccountId; - nominators: AccountId[]; - rewardDestination: RewardDestination; - queuedKeys?: [AccountId, Keys][]; - stakers: Exposure; - stakingLedger: Option; - stashId: AccountId; - validatorPrefs: ValidatorPrefs; - nextKeys?: Option; - nextKeyFor?: Option; -} +type MultiResultV2 = [Option, Option>, RewardDestination, Exposure, [ValidatorPrefs], Option, Option]; -function unwrapSessionIds (stashId: AccountId, queuedKeys: Option | [AccountId, Keys][], nextKeys: Option): { nextSessionIds: AccountId[]; sessionIds: AccountId[] } { - // for 2.x we have a Vec<(ValidatorId,Keys)> of the keys - if (Array.isArray(queuedKeys)) { - const sessionIds = (queuedKeys.find(([currentId]): boolean => - currentId.eq(stashId) - ) || [undefined, [] as AccountId[]])[1]; - const nextSessionIds = nextKeys.unwrapOr([] as AccountId[]); - - return { - nextSessionIds, - sessionIds - }; - } - - // substrate 1.x - const nextSessionIds = queuedKeys.isSome - ? [queuedKeys.unwrap()] - : []; +function unwrapSessionIds (stashId: AccountId, queuedKeys: [AccountId, Keys][], nextKeys: Option): { nextSessionIds: AccountId[]; sessionIds: AccountId[] } { + const sessionIds = (queuedKeys.find(([currentId]): boolean => + currentId.eq(stashId) + ) || [undefined, [] as AccountId[]])[1]; + const nextSessionIds = nextKeys.unwrapOr([] as AccountId[]); return { nextSessionIds, - sessionIds: nextSessionIds + sessionIds }; } -function parseResult (api: ApiInterfaceRx, { accountId, controllerId, stashId, nextKeyFor, queuedKeys, stakingLedger, nominators, rewardDestination, stakers, validatorPrefs, nextKeys }: ParseInput): DerivedStakingQuery { - const _stakingLedger = stakingLedger.unwrapOr(undefined); - const _nextKeyFor = nextKeyFor || createType(api.registry, 'Option', null); - const _nextKeys = nextKeys || createType(api.registry, 'Option', null); - - return { - accountId, - controllerId, - nominators, - rewardDestination, - stakers, - stakingLedger: _stakingLedger, - stashId, - validatorPrefs, - ...unwrapSessionIds(stashId, queuedKeys || _nextKeyFor, _nextKeys) - }; -} - -type MultiResultV1 = [Option, Option, [Vec], RewardDestination, Exposure, ITuple<[ValidatorPrefs]>]; - -function retrieveInfoV1 (api: ApiInterfaceRx, accountId: AccountId, stashId: AccountId, controllerId: AccountId): Observable { - return ( - api.queryMulti([ - [api.query.session.nextKeyFor, controllerId], - [api.query.staking.ledger, controllerId], - [api.query.staking.nominators, stashId], - [api.query.staking.payee, stashId], - [api.query.staking.stakers, stashId], - [api.query.staking.validators, stashId] - ]) as Observable - ).pipe(map(([nextKeyFor, stakingLedger, [nominators], rewardDestination, stakers, [validatorPrefs]]: MultiResultV1): DerivedStakingQuery => - parseResult(api, { - accountId, controllerId, stashId, nextKeyFor, stakingLedger, nominators, rewardDestination, stakers, validatorPrefs - }) - )); -} - -type MultiResultV2 = [[Vec] | Option>, RewardDestination, Exposure, [ValidatorPrefs], Option, Option]; - -function retrieveInfoV2 (api: ApiInterfaceRx, accountId: AccountId, stashId: AccountId, controllerId: AccountId): Observable { +function retrieve (api: ApiInterfaceRx, stashId: AccountId): Observable<[Vec>, MultiResultV2]> { return combineLatest([ api.query.session.queuedKeys>>(), api.queryMulti([ + [api.query.staking.bonded, stashId], [api.query.staking.nominators, stashId], [api.query.staking.payee, stashId], [api.query.staking.stakers, stashId], [api.query.staking.validators, stashId], - [api.query.session.nextKeys, [api.consts.session.dedupKeyPrefix, stashId]], - [api.query.staking.ledger, controllerId] + [api.query.session.nextKeys, [api.consts.session.dedupKeyPrefix, stashId]] ]) as Observable - ]).pipe(map(([queuedKeys, [_nominators, rewardDestination, stakers, [validatorPrefs], nextKeys, stakingLedger]]: [[AccountId, Keys][], MultiResultV2]): DerivedStakingQuery => { - // if we have staking.storageVersion it indicates the new structure, unwrap as needed - // FIXME We really want to be pulling all the new (valuable) info along - const nominators: AccountId[] = api.query.staking.storageVersion - ? (_nominators as Option>).isSome - ? (_nominators as Option>).unwrap()[0].targets - : [] - : (_nominators as [Vec])[0]; - - return parseResult(api, { - accountId, controllerId, stashId, queuedKeys, stakingLedger, nominators, rewardDestination, stakers, validatorPrefs, nextKeys - }); - })); -} - -function retrieveV1 (api: ApiInterfaceRx, accountId: AccountId): Observable { - // depending on where we come from, this may be a controller or stash - return combineLatest([ - api.query.staking.bonded>(accountId), - api.query.staking.ledger>(accountId) - ]).pipe(switchMap(([bonded, stakingLedger]): Observable => - stakingLedger.isSome - ? retrieveInfoV1(api, accountId, stakingLedger.unwrap().stash, accountId) - : bonded.isSome - ? retrieveInfoV1(api, accountId, accountId, bonded.unwrap()) - : of({ accountId: accountId, nextSessionIds: [], sessionIds: [] }) - )); -} - -function retrieveV2 (api: ApiInterfaceRx, stashId: AccountId): Observable { - return api.query.staking - .bonded>(stashId) - .pipe(switchMap((controllerId): Observable => - controllerId.isSome - ? retrieveInfoV2(api, stashId, stashId, controllerId.unwrap()) - : of({ accountId: stashId, nextSessionIds: [], sessionIds: [] }) - )); + ]); } /** - * @description From a stash, retrieve the controllerId and fill in all the relevant staking details + * @description From a stash, retrieve the controllerId and all relevant details */ -export function query (api: ApiInterfaceRx): (_accountId: Uint8Array | string) => Observable { - const retrieve = api.consts.session - ? retrieveV2 - : retrieveV1; +export function query (api: ApiInterfaceRx): (accountId: Uint8Array | string) => Observable { + return memo((accountId: Uint8Array | string): Observable => { + const stashId = createType(api.registry, 'AccountId', accountId); - return memo((accountId: Uint8Array | string): Observable => - retrieve(api, createType(api.registry, 'AccountId', accountId))); + return retrieve(api, stashId).pipe( + switchMap(([queuedKeys, [controllerIdOpt, nominatorsOpt, rewardDestination, stakers, [validatorPrefs], nextKeys]]): Observable => { + const controllerId = controllerIdOpt.unwrapOr(null); + + return controllerId + ? api.query.staking.ledger(controllerId).pipe( + map((stakingLedgerOpt): DerivedStakingQuery => ({ + accountId: stashId, + controllerId, + nominators: nominatorsOpt.unwrapOr([{ targets: [] }])[0].targets, + rewardDestination, + stakers, + stakingLedger: stakingLedgerOpt.unwrapOr(undefined), + stashId, + validatorPrefs, + ...unwrapSessionIds(stashId, queuedKeys, nextKeys) + })) + ) + : of({ accountId: stashId, nextSessionIds: [], sessionIds: [] }); + }) + ); + }); } diff --git a/packages/api/package.json b/packages/api/package.json index c031b56852..5c8fcd01b0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -28,14 +28,14 @@ "dependencies": { "@babel/runtime": "^7.7.7", "@polkadot/api-derive": "^1.0.0-beta.4", - "@polkadot/keyring": "^2.0.0-beta.1", + "@polkadot/keyring": "^2.0.0-beta.2", "@polkadot/metadata": "^1.0.0-beta.4", "@polkadot/rpc-core": "^1.0.0-beta.4", "@polkadot/rpc-provider": "^1.0.0-beta.4", "@polkadot/types": "^1.0.0-beta.4", - "@polkadot/util-crypto": "^2.0.0-beta.1" + "@polkadot/util-crypto": "^2.0.0-beta.2" }, "devDependencies": { - "@polkadot/keyring": "^2.0.0-beta.1" + "@polkadot/keyring": "^2.0.0-beta.2" } } diff --git a/packages/api/src/promise/Api.spec.ts b/packages/api/src/promise/Api.spec.ts index ed70681f5e..d61b47f85c 100644 --- a/packages/api/src/promise/Api.spec.ts +++ b/packages/api/src/promise/Api.spec.ts @@ -4,16 +4,24 @@ import { ApiOptions } from '../types'; -import testingPairs from '@polkadot/keyring/testingPairs'; +import createPair from '@polkadot/keyring/pair'; +import testKeyring from '@polkadot/keyring/testing'; import Mock from '@polkadot/rpc-provider/mock/index'; import { createType, TypeRegistry } from '@polkadot/types'; +import { hexToU8a } from '@polkadot/util'; import { SingleAccountSigner } from '../../test/util'; import ApiPromise from './Api'; describe('ApiPromise', (): void => { const registry = new TypeRegistry(); - const keyring = testingPairs({ type: 'ed25519' }); + const keyring = testKeyring({ type: 'ed25519' }); + const aliceEd = keyring.addPair( + createPair('ed25519', { + secretKey: hexToU8a('0xabf8e5bdbe30c65656c0a3cbd181ff8a56294a69dfedd27982aace4a7690911588dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee'), + publicKey: hexToU8a('0x88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee') + }) + ); let provider: Mock; beforeEach((): void => { @@ -63,7 +71,7 @@ describe('ApiPromise', (): void => { const api = new ApiPromise({ provider, registry }); expect( - await api.sign(keyring.alice_session, TEST) + await api.sign(aliceEd, TEST) ).toEqual(SIG); }); @@ -71,7 +79,7 @@ describe('ApiPromise', (): void => { const api = new ApiPromise({ provider, registry, - signer: new SingleAccountSigner(registry, keyring.alice_session) + signer: new SingleAccountSigner(registry, aliceEd) }); expect( @@ -82,11 +90,11 @@ describe('ApiPromise', (): void => { describe('decorator.signAsync', (): void => { it('signs a transfer using an external signer', async (): Promise => { - const signer = new SingleAccountSigner(registry, keyring.alice_session); + const signer = new SingleAccountSigner(registry, aliceEd); const api = await ApiPromise.create({ provider, registry, signer }); - const transfer = api.tx.balances.transfer(keyring.eve.address, 12345); + const transfer = api.tx.balances.transfer(keyring.getPair('0xe659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e').address, 12345); - await transfer.signAsync(keyring.alice_session, {}); + await transfer.signAsync(aliceEd, {}); expect(transfer.signature.toHex()).toEqual( '0x97f3cfe5088fcd575313e983f45d02b0f630e7b94ff9a3ac50e20cd096a8f554fda73d42ead891b5a1d3ce5607d83f20b0c6570b555e949cfb5763d0abcd590b' diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 1f37420599..a7865104fd 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -28,10 +28,10 @@ "dependencies": { "@babel/runtime": "^7.7.7", "@polkadot/types": "^1.0.0-beta.4", - "@polkadot/util": "^2.0.0-beta.1", - "@polkadot/util-crypto": "^2.0.0-beta.1" + "@polkadot/util": "^2.0.0-beta.2", + "@polkadot/util-crypto": "^2.0.0-beta.2" }, "devDependencies": { - "@polkadot/keyring": "^2.0.0-beta.1" + "@polkadot/keyring": "^2.0.0-beta.2" } } diff --git a/packages/rpc-core/package.json b/packages/rpc-core/package.json index 1433533c9b..7add688a7b 100644 --- a/packages/rpc-core/package.json +++ b/packages/rpc-core/package.json @@ -30,7 +30,7 @@ "@polkadot/jsonrpc": "^1.0.0-beta.4", "@polkadot/rpc-provider": "^1.0.0-beta.4", "@polkadot/types": "^1.0.0-beta.4", - "@polkadot/util": "^2.0.0-beta.1", + "@polkadot/util": "^2.0.0-beta.2", "rxjs": "^6.5.4" } } diff --git a/packages/rpc-provider/package.json b/packages/rpc-provider/package.json index 4652e0d98e..267eec8009 100644 --- a/packages/rpc-provider/package.json +++ b/packages/rpc-provider/package.json @@ -28,14 +28,14 @@ "dependencies": { "@babel/runtime": "^7.7.7", "@polkadot/metadata": "^1.0.0-beta.4", - "@polkadot/util": "^2.0.0-beta.1", - "@polkadot/util-crypto": "^2.0.0-beta.1", + "@polkadot/util": "^2.0.0-beta.2", + "@polkadot/util-crypto": "^2.0.0-beta.2", "eventemitter3": "^4.0.0", "isomorphic-fetch": "^2.2.1", "websocket": "^1.0.31" }, "devDependencies": { - "@polkadot/keyring": "^2.0.0-beta.1", + "@polkadot/keyring": "^2.0.0-beta.2", "mock-socket": "^9.0.2", "nock": "^11.7.1" } diff --git a/packages/types/package.json b/packages/types/package.json index 14c193eb13..302b42c708 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -28,12 +28,12 @@ "dependencies": { "@babel/runtime": "^7.7.7", "@polkadot/metadata": "^1.0.0-beta.4", - "@polkadot/util": "^2.0.0-beta.1", - "@polkadot/util-crypto": "^2.0.0-beta.1", + "@polkadot/util": "^2.0.0-beta.2", + "@polkadot/util-crypto": "^2.0.0-beta.2", "@types/memoizee": "^0.4.3", "memoizee": "^0.4.14" }, "devDependencies": { - "@polkadot/keyring": "^2.0.0-beta.1" + "@polkadot/keyring": "^2.0.0-beta.2" } } diff --git a/yarn.lock b/yarn.lock index 5d1e339f4a..fe8fdd4980 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1902,14 +1902,14 @@ typescript "^3.7.4" vuepress "^1.2.0" -"@polkadot/keyring@^2.0.0-beta.1": - version "2.0.0-beta.1" - resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.0.0-beta.1.tgz#8b28a5582da40f9a5aeaa294200dc811d9966394" - integrity sha512-aRs4QB4d3QaMHsUzE6Y+eTDm6PcD7DR3woGaju+yXRZAOCy5ckS2DOjqc+IBpeSASN7EL3YtMwaV+olYiPndKg== +"@polkadot/keyring@^2.0.0-beta.2": + version "2.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.0.0-beta.2.tgz#fbe171e1a07693a2a30c8a041adad0f258044cc8" + integrity sha512-joP1S5GzbQvhCyVqn/XRPuiN94H0bvtm0Nn2G4ZlAbSU78zyPDYpBtB29sITdv1dcRg/RQp1UjjKclBt1azcoA== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/util" "^2.0.0-beta.1" - "@polkadot/util-crypto" "^2.0.0-beta.1" + "@polkadot/util" "^2.0.0-beta.2" + "@polkadot/util-crypto" "^2.0.0-beta.2" "@polkadot/ts@^0.1.90": version "0.1.90" @@ -1918,13 +1918,13 @@ dependencies: "@types/chrome" "^0.0.91" -"@polkadot/util-crypto@^2.0.0-beta.1": - version "2.0.0-beta.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.0.0-beta.1.tgz#83ac5e30de4b3234ed424fc647bddc0671525bda" - integrity sha512-2B/I1x2Ijg80KrpBpbuOSltEqMYpz1cCf0PIPogFJqDY+UsSqfPknHqHYlsCiYX+mhe5vGvObaM+Pascr73HDw== +"@polkadot/util-crypto@^2.0.0-beta.2": + version "2.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.0.0-beta.2.tgz#b080e7f369faf026f5940a37021fd4a413ef1388" + integrity sha512-7QMyuHo3lWDFdLqGBxRJUk4caVLvouFYK516mMgWTle6btZyYHTAuuqHsj2d/7gWq3/qfginaByfPtHkdoMO6A== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/util" "^2.0.0-beta.1" + "@polkadot/util" "^2.0.0-beta.2" "@polkadot/wasm-crypto" "^0.20.0-beta.1" "@types/bip39" "^2.4.2" "@types/bs58" "^4.0.0" @@ -1940,10 +1940,10 @@ tweetnacl "^1.0.1" xxhashjs "^0.2.2" -"@polkadot/util@^2.0.0-beta.1": - version "2.0.0-beta.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.0.0-beta.1.tgz#f19cf52b90a9f61bf7f7d794f1b24c8a6e96f5a4" - integrity sha512-AHhHpFC2gVscSf6Rf57aUwCN5MLonXrT2+nPUGe29PDstBV9xMb49nBde/101hSEc0N6nhuNhoRZwwodIzWiyw== +"@polkadot/util@^2.0.0-beta.2": + version "2.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.0.0-beta.2.tgz#9d2370c1c4b17ace4006820345ee904c331202c7" + integrity sha512-qzfPGeSnhd6soFDxmZH5ytcuB0/XlhxLFi0P1yWiAmTff8+Hu48E/edW5JW76aDcoZL0/BQ1jk4Db7ulcgSQqw== dependencies: "@babel/runtime" "^7.7.7" "@types/bn.js" "^4.11.6"