diff --git a/packages/type-extrinsics/src/codec/encode/index.spec.js b/packages/type-extrinsics/src/codec/encode/index.spec.js index b6e5fa8f0a..e073ed0efc 100644 --- a/packages/type-extrinsics/src/codec/encode/index.spec.js +++ b/packages/type-extrinsics/src/codec/encode/index.spec.js @@ -13,7 +13,8 @@ const keyring = testingPairs(); describe('encode', () => { it('encodes extrinsic correctly', () => { expect( - encode(keyring.nobody.publicKey(), 1234)( + encode( + keyring.nobody.publicKey(), 1234, extrinsics.timestamp.public.set, [10101], 'latest' diff --git a/packages/type-extrinsics/src/codec/encode/index.ts b/packages/type-extrinsics/src/codec/encode/index.ts index 58c477ae27..0db887c4f5 100644 --- a/packages/type-extrinsics/src/codec/encode/index.ts +++ b/packages/type-extrinsics/src/codec/encode/index.ts @@ -10,14 +10,11 @@ import { ExtrinsicWithAccount } from '../types'; import encodeCall from './call'; import encodeExtrinsic from './extrinsic'; -type Encoder = (extrinsic: SectionItem, values: Array, version: EncodingVersions) => ExtrinsicWithAccount; - -export default function encode (publicKey: Uint8Array, index: number | BN): Encoder { - return (extrinsic: SectionItem, values: Array, version: EncodingVersions): ExtrinsicWithAccount => - encodeCall( - publicKey, - index, - encodeExtrinsic(extrinsic, values, version), - version - ); +export default function encode (publicKey: Uint8Array, index: number | BN, extrinsic: SectionItem, values: Array, version: EncodingVersions): ExtrinsicWithAccount { + return encodeCall( + publicKey, + index, + encodeExtrinsic(extrinsic, values, version), + version + ); } diff --git a/packages/type-extrinsics/src/codec/encode/unchecked.spec.js b/packages/type-extrinsics/src/codec/encode/unchecked.spec.js index 24544b72e3..dc58ca3241 100644 --- a/packages/type-extrinsics/src/codec/encode/unchecked.spec.js +++ b/packages/type-extrinsics/src/codec/encode/unchecked.spec.js @@ -14,7 +14,8 @@ const keyring = testingPairs(); describe('unchecked', () => { it('encodes extrinsic correctly (nobody)', () => { expect( - encode(keyring.nobody, 1234)( + encode( + keyring.nobody, 1234, extrinsics.timestamp.public.set, [10101] ) @@ -37,9 +38,11 @@ describe('unchecked', () => { it('encodes extrinsic correctly (one)', () => { expect( - encode(keyring.one, 258, 'poc-1')( + encode( + keyring.one, 258, extrinsics.staking.public.transfer, - [keyring.two.publicKey(), 69] + [keyring.two.publicKey(), 69], + 'poc-1' ) ).toEqual( new Uint8Array([ @@ -62,7 +65,8 @@ describe('unchecked', () => { it('encodes extrinsic correctly (one + latest)', () => { expect( - encode(keyring.one, 258)( + encode( + keyring.one, 258, extrinsics.staking.public.transfer, [keyring.two.publicKey(), 69] ) @@ -89,7 +93,8 @@ describe('unchecked', () => { it('encodes timetamp.set extrinsic correctly (actual values)', () => { expect( - encode(keyring.nobody, 0)( + encode( + keyring.nobody, 0, extrinsics.timestamp.public.set, [0x5b13c37b] ) @@ -102,7 +107,8 @@ describe('unchecked', () => { it('encoded parachains.setHeads correctly (actual values)', () => { expect( - encode(keyring.nobody, 0)( + encode( + keyring.nobody, 0, extrinsics.parachains.public.setHeads, [[]] ) diff --git a/packages/type-extrinsics/src/codec/encode/unchecked.ts b/packages/type-extrinsics/src/codec/encode/unchecked.ts index 04948e5003..abcb86aec0 100644 --- a/packages/type-extrinsics/src/codec/encode/unchecked.ts +++ b/packages/type-extrinsics/src/codec/encode/unchecked.ts @@ -13,21 +13,15 @@ import u8aConcat from '@polkadot/util/u8a/concat'; import encode from './index'; import prefixes from './prefixes'; -type Encoder = (extrinsic: SectionItem, values: Array) => UncheckedRaw; +export default function unchecked (pair: KeyringPair, index: number | BN, extrinsic: SectionItem, values: Array, version: EncodingVersions = 'latest'): UncheckedRaw { + const message = encode(pair.publicKey(), index, extrinsic, values, version); + const signature = pair.sign(message); -export default function unchecked (pair: KeyringPair, index: number | BN, version: EncodingVersions = 'latest'): Encoder { - const encoder = encode(pair.publicKey(), index); - - return (extrinsic: SectionItem, values: Array): UncheckedRaw => { - const message = encoder(extrinsic, values, version); - const signature = pair.sign(message); - - return u8aConcat( - version === 'poc-1' - ? prefixes.none - : prefixes.publicKey, - message, - signature - ); - }; + return u8aConcat( + version === 'poc-1' + ? prefixes.none + : prefixes.publicKey, + message, + signature + ); } diff --git a/packages/type-extrinsics/src/codec/encode/uncheckedLength.ts b/packages/type-extrinsics/src/codec/encode/uncheckedLength.ts new file mode 100644 index 0000000000..33a3ed5d4e --- /dev/null +++ b/packages/type-extrinsics/src/codec/encode/uncheckedLength.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2018 @polkadot/extrinsics authors & contributors +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +import BN from 'bn.js'; +import { EncodingVersions, SectionItem } from '@polkadot/params/types'; +import { UncheckedRaw } from '@polkadot/primitives/extrinsic'; +import { KeyringPair } from '@polkadot/util-keyring/types'; +import { Extrinsics } from '../../types'; + +import encodeUnchecked from './unchecked'; +import encodeLength from './length'; + +export default function uncheckedLength (pair: KeyringPair, index: number | BN, extrinsic: SectionItem, values: Array, version: EncodingVersions = 'latest'): UncheckedRaw { + return encodeLength( + encodeUnchecked( + pair, + index, + extrinsic, + values, + version + ) + ); +} diff --git a/packages/type-primitives/src/codec/block/decodeRaw.spec.js b/packages/type-primitives/src/codec/block/decodeRaw.spec.js index 405a079e52..7323c0f0dd 100644 --- a/packages/type-primitives/src/codec/block/decodeRaw.spec.js +++ b/packages/type-primitives/src/codec/block/decodeRaw.spec.js @@ -44,7 +44,8 @@ describe('decodeRaw', () => { ) ).toMatchObject({ extrinsics: [ - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.timestamp.public.set, [10101] ) diff --git a/packages/type-primitives/src/codec/block/encode.spec.js b/packages/type-primitives/src/codec/block/encode.spec.js index e0f304e041..40b32dfeec 100644 --- a/packages/type-primitives/src/codec/block/encode.spec.js +++ b/packages/type-primitives/src/codec/block/encode.spec.js @@ -23,11 +23,13 @@ describe('encodeBlock', () => { stateRoot: hexToU8a('0xf707774183723f201b875024069f30e7089b7f83c3c3cdc534b10d15fca91262') }, extrinsics: [ - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked + (keyring.nobody, 0, extrinsics.timestamp.public.set, [0x5b13c3a4] ), - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.parachains.public.setHeads, [[]] ) diff --git a/packages/type-primitives/src/create/block.spec.js b/packages/type-primitives/src/create/block.spec.js index d68c735ff8..3b6049e0e5 100644 --- a/packages/type-primitives/src/create/block.spec.js +++ b/packages/type-primitives/src/create/block.spec.js @@ -34,11 +34,13 @@ describe('block', () => { it('creates a valid block, with defaults submitted', () => { const transactions = [ - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.timestamp.public.set, [0x5b13c3a4] ), - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.parachains.public.setHeads, [[]] ) diff --git a/packages/type-primitives/src/create/extrinsic/rootRaw.spec.js b/packages/type-primitives/src/create/extrinsic/rootRaw.spec.js index ce238cf3d0..74d52ef277 100644 --- a/packages/type-primitives/src/create/extrinsic/rootRaw.spec.js +++ b/packages/type-primitives/src/create/extrinsic/rootRaw.spec.js @@ -25,11 +25,13 @@ describe('root', () => { it('calculates the root correctly (actual)', () => { expect( root([ - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.timestamp.public.set, [0x5b13c3a4] ), - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.parachains.public.setHeads, [[]] ) diff --git a/packages/type-primitives/src/create/header.spec.js b/packages/type-primitives/src/create/header.spec.js index 95179412bb..428baa0145 100644 --- a/packages/type-primitives/src/create/header.spec.js +++ b/packages/type-primitives/src/create/header.spec.js @@ -22,11 +22,13 @@ describe('header', () => { it('applies the all transactions (extrinsicsRoot)', () => { const transactions = [ - encodeUnchecked(keyring.nobody, 0)( + encodeUnchecked( + keyring.nobody, 0, extrinsics.timestamp.public.set, [54321] ), - encodeUnchecked(keyring.one, 0)( + encodeUnchecked( + keyring.one, 0, extrinsics.timestamp.public.set, [12345] )