AccountId33 (#5197)

* Support for ink! v4 metadata

* Adjust

* Support for AccountId33

* Revert "Adjust"

This reverts commit 862e20c3a88de40c6c639b1f51034c296d7f9d16.

* Revert "Support for ink! v4 metadata"

This reverts commit 07d1fc0dba4c4c2e2a52b349e6d84b046ebbd205.

* Adjust

* Adjust, keep exports

* Adjust test

* Adjust

* Sizing
This commit is contained in:
Jaco
2022-09-01 17:05:07 +03:00
committed by GitHub
parent a94c0ff11c
commit 9b1e5f2f25
7 changed files with 41 additions and 18 deletions
@@ -52,7 +52,7 @@ import type { ProxyAnnouncement, ProxyDefinition, ProxyType } from '@polkadot/ty
import type { AccountStatus, AccountValidity } from '@polkadot/types/interfaces/purchase';
import type { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery';
import type { RpcMethods } from '@polkadot/types/interfaces/rpc';
import type { AccountId, AccountId20, AccountId32, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, CrateVersion, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, SlotDuration, StorageData, StorageInfo, StorageProof, TransactionInfo, TransactionLongevity, TransactionPriority, TransactionStorageProof, TransactionTag, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
import type { AccountId, AccountId20, AccountId32, AccountId33, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, CrateVersion, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, SlotDuration, StorageData, StorageInfo, StorageProof, TransactionInfo, TransactionLongevity, TransactionPriority, TransactionStorageProof, TransactionTag, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';
import type { Si0Field, Si0LookupTypeId, Si0Path, Si0Type, Si0TypeDef, Si0TypeDefArray, Si0TypeDefBitSequence, Si0TypeDefCompact, Si0TypeDefComposite, Si0TypeDefPhantom, Si0TypeDefPrimitive, Si0TypeDefSequence, Si0TypeDefTuple, Si0TypeDefVariant, Si0TypeParameter, Si0Variant, Si1Field, Si1LookupTypeId, Si1Path, Si1Type, Si1TypeDef, Si1TypeDefArray, Si1TypeDefBitSequence, Si1TypeDefCompact, Si1TypeDefComposite, Si1TypeDefPrimitive, Si1TypeDefSequence, Si1TypeDefTuple, Si1TypeDefVariant, Si1TypeParameter, Si1Variant, SiField, SiLookupTypeId, SiPath, SiType, SiTypeDef, SiTypeDefArray, SiTypeDefBitSequence, SiTypeDefCompact, SiTypeDefComposite, SiTypeDefPrimitive, SiTypeDefSequence, SiTypeDefTuple, SiTypeDefVariant, SiTypeParameter, SiVariant } from '@polkadot/types/interfaces/scaleInfo';
import type { Period, Priority, SchedulePeriod, SchedulePriority, Scheduled, ScheduledTo254, TaskAddress } from '@polkadot/types/interfaces/scheduler';
import type { BeefyKey, FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys10, SessionKeys10B, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, SessionKeys6B, SessionKeys7, SessionKeys7B, SessionKeys8, SessionKeys8B, SessionKeys9, SessionKeys9B, ValidatorCount } from '@polkadot/types/interfaces/session';
@@ -78,6 +78,7 @@ declare module '@polkadot/types/types/registry' {
AccountId: AccountId;
AccountId20: AccountId20;
AccountId32: AccountId32;
AccountId33: AccountId33;
AccountIdOf: AccountIdOf;
AccountIndex: AccountIndex;
AccountInfo: AccountInfo;
+6 -2
View File
@@ -7,7 +7,6 @@ import { Raw } from '@polkadot/types-codec';
import jsonVec from '@polkadot/types-support/json/AccountIdVec.001.json' assert { type: 'json' };
import { TypeRegistry } from '../create';
import { GenericAccountId as AccountId } from '.';
describe('AccountId', (): void => {
const registry = new TypeRegistry();
@@ -37,7 +36,7 @@ describe('AccountId', (): void => {
});
describe('decoding', (): void => {
const testDecode = (type: string, input: Uint8Array | string | AccountId, expected: string): void =>
const testDecode = (type: string, input: Uint8Array | string, expected: string): void =>
it(`can decode from ${type}`, (): void => {
expect(
registry
@@ -57,6 +56,11 @@ describe('AccountId', (): void => {
registry.createType('AccountId', '0x0102030405060708010203040506070801020304050607080102030405060708'),
'5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'
);
testDecode(
'AccountId33',
registry.createType('AccountId33', '0x098765430987654309876543098765430987654309876543098765430987654309'),
'5CHCWUYMmDGeJjiuaQ1LnrsAWacDhiTAV6vCfytSxoqBdCCb'
);
testDecode('hex', '0x0102030405060708010203040506070801020304050607080102030405060708', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF');
testDecode('string', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF');
testDecode(
+24 -11
View File
@@ -22,20 +22,14 @@ function decodeAccountId (value?: AnyU8a | AnyString): Uint8Array {
throw new Error(`Unknown type passed to AccountId constructor, found typeof ${typeof value}`);
}
/**
* @name GenericAccountId
* @description
* A wrapper around an AccountId/PublicKey representation. Since we are dealing with
* underlying PublicKeys (32 bytes in length), we extend from U8aFixed which is
* just a Uint8Array wrapper with a fixed length.
*/
export class GenericAccountId extends U8aFixed {
constructor (registry: Registry, value?: AnyU8a) {
class BaseAccountId extends U8aFixed {
constructor (registry: Registry, allowedBits = 256 | 264, value?: AnyU8a) {
const decoded = decodeAccountId(value);
const decodedBits = decoded.length * 8;
// Part of stream containing >= 32 bytes or a all empty (defaults)
if (decoded.length < 32 && decoded.some((b) => b)) {
throw new Error(`Invalid AccountId provided, expected 32 bytes, found ${decoded.length}`);
if (decodedBits < allowedBits && decoded.some((b) => b)) {
throw new Error(`Invalid AccountId provided, expected ${allowedBits >> 3} bytes, found ${decoded.length}`);
}
super(registry, decoded, 256);
@@ -83,3 +77,22 @@ export class GenericAccountId extends U8aFixed {
return 'AccountId';
}
}
/**
* @name GenericAccountId
* @description
* A wrapper around an AccountId/PublicKey representation. Since we are dealing with
* underlying PublicKeys (32 bytes in length), we extend from U8aFixed which is
* just a Uint8Array wrapper with a fixed length.
*/
export class GenericAccountId extends BaseAccountId {
constructor (registry: Registry, value?: AnyU8a) {
super(registry, 256, value);
}
}
export class GenericAccountId33 extends BaseAccountId {
constructor (registry: Registry, value?: AnyU8a) {
super(registry, 264, value);
}
}
+1 -1
View File
@@ -3,7 +3,7 @@
export * from '../ethereum';
export { GenericAccountId } from './AccountId';
export { GenericAccountId, GenericAccountId as GenericAccountId32, GenericAccountId33 } from './AccountId';
export { GenericAccountIndex } from './AccountIndex';
export { GenericBlock } from './Block';
export { GenericCall } from './Call';
@@ -53,7 +53,8 @@ export default {
types: objectSpread({}, numberTypes, {
AccountId: 'AccountId32',
AccountId20: 'GenericEthereumAccountId',
AccountId32: 'GenericAccountId',
AccountId32: 'GenericAccountId32',
AccountId33: 'GenericAccountId33',
AccountIdOf: 'AccountId',
AccountIndex: 'GenericAccountIndex',
Address: 'MultiAddress',
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */
import type { GenericAccountId, GenericAccountIndex, GenericBlock, GenericCall, GenericConsensusEngineId, GenericEthereumAccountId, GenericLookupSource, GenericMultiAddress, StorageKey } from '@polkadot/types';
import type { GenericAccountId32, GenericAccountId33, GenericAccountIndex, GenericBlock, GenericCall, GenericConsensusEngineId, GenericEthereumAccountId, GenericLookupSource, GenericMultiAddress, StorageKey } from '@polkadot/types';
import type { Bytes, Compact, DoNotConstruct, Enum, Int, Null, Option, Struct, U8aFixed, UInt, Vec, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { ITuple } from '@polkadot/types-codec/types';
import type { AuthorityId } from '@polkadot/types/interfaces/consensus';
@@ -15,7 +15,10 @@ export interface AccountId extends AccountId32 {}
export interface AccountId20 extends GenericEthereumAccountId {}
/** @name AccountId32 */
export interface AccountId32 extends GenericAccountId {}
export interface AccountId32 extends GenericAccountId32 {}
/** @name AccountId33 */
export interface AccountId33 extends GenericAccountId33 {}
/** @name AccountIdOf */
export interface AccountIdOf extends AccountId {}