Allow extrinsic length encoding to operate on u8a[] (#148)
This commit is contained in:
@@ -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)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user