Allow extrinsic length encoding to operate on u8a[] (#148)

This commit is contained in:
Jaco Greeff
2018-09-12 10:25:31 +02:00
committed by GitHub
parent 08b1fe107f
commit 99628f2dbd
3 changed files with 13 additions and 7 deletions
@@ -2,14 +2,16 @@
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
import { UncheckedRaw } from '@polkadot/primitives/extrinsic';
import bnToU8a from '@polkadot/util/bn/toU8a';
import u8aConcat from '@polkadot/util/u8a/concat';
export default function encodeLength (unchecked: UncheckedRaw): Uint8Array {
export default function encodeLength (...values: Array<Uint8Array>): Uint8Array {
const length = values.reduce((length, u8a) => {
return length + u8a.length;
}, 0);
return u8aConcat(
bnToU8a(unchecked.length, 32, true),
unchecked
bnToU8a(length, 32, true),
...values
);
}
@@ -13,7 +13,9 @@ export default function encodeBlockRaw (header: Uint8Array, extrinsics: Array<Un
return u8aConcat(
header,
encodeArray(
extrinsics.map(uncheckedLength)
extrinsics.map((extrinsic) =>
uncheckedLength(extrinsic)
)
)
);
}
@@ -9,6 +9,8 @@ import trieRootOrdered from '@polkadot/trie-hash/rootOrdered';
export default function extrinsicsRootRaw (extrinsics: Array<UncheckedRaw> = []): Uint8Array {
return trieRootOrdered(
extrinsics.map(uncheckedLength)
extrinsics.map((extrinsic) =>
uncheckedLength(extrinsic)
)
);
}