1 | import { IOHelper } from '@neo-one/client-common-esnext-esm';
|
2 | import { BinaryReader, BlockBase, utils, } from '@neo-one/node-core-esnext-esm';
|
3 | export class MerkleBlockPayload extends BlockBase {
|
4 | static deserializeWireBase(options) {
|
5 | const { reader } = options;
|
6 | const blockBase = super.deserializeBlockBaseWireBase(options);
|
7 | const transactionCount = reader.readVarUIntLE(utils.INT_MAX_VALUE).toNumber();
|
8 | const hashes = reader.readArray(() => reader.readUInt256());
|
9 | const flags = reader.readVarBytesLE();
|
10 | return new this({
|
11 | version: blockBase.version,
|
12 | previousHash: blockBase.previousHash,
|
13 | merkleRoot: blockBase.merkleRoot,
|
14 | timestamp: blockBase.timestamp,
|
15 | index: blockBase.index,
|
16 | consensusData: blockBase.consensusData,
|
17 | nextConsensus: blockBase.nextConsensus,
|
18 | script: blockBase.script,
|
19 | transactionCount,
|
20 | hashes,
|
21 | flags,
|
22 | });
|
23 | }
|
24 | static deserializeWire(options) {
|
25 | return this.deserializeWireBase({
|
26 | context: options.context,
|
27 | reader: new BinaryReader(options.buffer),
|
28 | });
|
29 | }
|
30 | constructor({ version, previousHash, merkleRoot, timestamp, index, consensusData, nextConsensus, script, transactionCount, hashes, flags, }) {
|
31 | super({
|
32 | version,
|
33 | previousHash,
|
34 | merkleRoot,
|
35 | timestamp,
|
36 | index,
|
37 | consensusData,
|
38 | nextConsensus,
|
39 | script,
|
40 | });
|
41 | this.transactionCount = transactionCount;
|
42 | this.hashes = hashes;
|
43 | this.flags = flags;
|
44 | this.merkleBlockPayloadSizeInternal = utils.lazy(() => super.size +
|
45 | IOHelper.sizeOfUInt32LE +
|
46 | IOHelper.sizeOfArray(this.hashes, () => IOHelper.sizeOfUInt256) +
|
47 | IOHelper.sizeOfVarBytesLE(this.flags));
|
48 | }
|
49 | get size() {
|
50 | return this.merkleBlockPayloadSizeInternal();
|
51 | }
|
52 | serializeWireBase(writer) {
|
53 | super.serializeWireBase(writer);
|
54 | writer.writeVarUIntLE(this.transactionCount);
|
55 | writer.writeArray(this.hashes, (hash) => {
|
56 | writer.writeUInt256(hash);
|
57 | });
|
58 | writer.writeVarBytesLE(this.flags);
|
59 | }
|
60 | }
|
61 |
|
62 | //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lcmtsZUJsb2NrUGF5bG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFFBQVEsRUFBNkIsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RyxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFJVCxLQUFLLEdBQ04sTUFBTSwrQkFBK0IsQ0FBQztBQU92QyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBUztJQUN4QyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBbUM7UUFDbkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMzQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QyxPQUFPLElBQUksSUFBSSxDQUFDO1lBQ2QsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1lBQzFCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtZQUNwQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDaEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1lBQzlCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztZQUN0QixhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN4QixnQkFBZ0I7WUFDaEIsTUFBTTtZQUNOLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUErQjtRQUMzRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsTUFBTSxFQUFFLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQU9ELFlBQW1CLEVBQ2pCLE9BQU8sRUFDUCxZQUFZLEVBQ1osVUFBVSxFQUNWLFNBQVMsRUFDVCxLQUFLLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ2lCO1FBQ3RCLEtBQUssQ0FBQztZQUNKLE9BQU87WUFDUCxZQUFZO1lBQ1osVUFBVTtZQUNWLFNBQVM7WUFDVCxLQUFLO1lBQ0wsYUFBYTtZQUNiLGFBQWE7WUFDYixNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUM5QyxHQUFHLEVBQUUsQ0FDSCxLQUFLLENBQUMsSUFBSTtZQUNWLFFBQVEsQ0FBQyxjQUFjO1lBQ3ZCLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQy9ELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsTUFBb0I7UUFDM0MsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRiIsImZpbGUiOiJuZW8tb25lLW5vZGUtcHJvdG9jb2wvc3JjL3BheWxvYWQvTWVya2xlQmxvY2tQYXlsb2FkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmluYXJ5V3JpdGVyLCBJT0hlbHBlciwgU2VyaWFsaXphYmxlV2lyZSwgVUludDI1NiB9IGZyb20gJ0BuZW8tb25lL2NsaWVudC1jb21tb24tZXNuZXh0LWVzbSc7XG5pbXBvcnQge1xuICBCaW5hcnlSZWFkZXIsXG4gIEJsb2NrQmFzZSxcbiAgQmxvY2tCYXNlQWRkLFxuICBEZXNlcmlhbGl6ZVdpcmVCYXNlT3B0aW9ucyxcbiAgRGVzZXJpYWxpemVXaXJlT3B0aW9ucyxcbiAgdXRpbHMsXG59IGZyb20gJ0BuZW8tb25lL25vZGUtY29yZS1lc25leHQtZXNtJztcbmV4cG9ydCBpbnRlcmZhY2UgTWVya2xlQmxvY2tQYXlsb2FkQWRkIGV4dGVuZHMgQmxvY2tCYXNlQWRkIHtcbiAgcmVhZG9ubHkgdHJhbnNhY3Rpb25Db3VudDogbnVtYmVyO1xuICByZWFkb25seSBoYXNoZXM6IFJlYWRvbmx5QXJyYXk8VUludDI1Nj47XG4gIHJlYWRvbmx5IGZsYWdzOiBCdWZmZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNZXJrbGVCbG9ja1BheWxvYWQgZXh0ZW5kcyBCbG9ja0Jhc2UgaW1wbGVtZW50cyBTZXJpYWxpemFibGVXaXJlPE1lcmtsZUJsb2NrUGF5bG9hZD4ge1xuICBwdWJsaWMgc3RhdGljIGRlc2VyaWFsaXplV2lyZUJhc2Uob3B0aW9uczogRGVzZXJpYWxpemVXaXJlQmFzZU9wdGlvbnMpOiBNZXJrbGVCbG9ja1BheWxvYWQge1xuICAgIGNvbnN0IHsgcmVhZGVyIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGJsb2NrQmFzZSA9IHN1cGVyLmRlc2VyaWFsaXplQmxvY2tCYXNlV2lyZUJhc2Uob3B0aW9ucyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25Db3VudCA9IHJlYWRlci5yZWFkVmFyVUludExFKHV0aWxzLklOVF9NQVhfVkFMVUUpLnRvTnVtYmVyKCk7XG4gICAgY29uc3QgaGFzaGVzID0gcmVhZGVyLnJlYWRBcnJheSgoKSA9PiByZWFkZXIucmVhZFVJbnQyNTYoKSk7XG4gICAgY29uc3QgZmxhZ3MgPSByZWFkZXIucmVhZFZhckJ5dGVzTEUoKTtcblxuICAgIHJldHVybiBuZXcgdGhpcyh7XG4gICAgICB2ZXJzaW9uOiBibG9ja0Jhc2UudmVyc2lvbixcbiAgICAgIHByZXZpb3VzSGFzaDogYmxvY2tCYXNlLnByZXZpb3VzSGFzaCxcbiAgICAgIG1lcmtsZVJvb3Q6IGJsb2NrQmFzZS5tZXJrbGVSb290LFxuICAgICAgdGltZXN0YW1wOiBibG9ja0Jhc2UudGltZXN0YW1wLFxuICAgICAgaW5kZXg6IGJsb2NrQmFzZS5pbmRleCxcbiAgICAgIGNvbnNlbnN1c0RhdGE6IGJsb2NrQmFzZS5jb25zZW5zdXNEYXRhLFxuICAgICAgbmV4dENvbnNlbnN1czogYmxvY2tCYXNlLm5leHRDb25zZW5zdXMsXG4gICAgICBzY3JpcHQ6IGJsb2NrQmFzZS5zY3JpcHQsXG4gICAgICB0cmFuc2FjdGlvbkNvdW50LFxuICAgICAgaGFzaGVzLFxuICAgICAgZmxhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlc2VyaWFsaXplV2lyZShvcHRpb25zOiBEZXNlcmlhbGl6ZVdpcmVPcHRpb25zKTogTWVya2xlQmxvY2tQYXlsb2FkIHtcbiAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZVdpcmVCYXNlKHtcbiAgICAgIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCxcbiAgICAgIHJlYWRlcjogbmV3IEJpbmFyeVJlYWRlcihvcHRpb25zLmJ1ZmZlciksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25Db3VudDogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzaGVzOiBSZWFkb25seUFycmF5PFVJbnQyNTY+O1xuICBwdWJsaWMgcmVhZG9ubHkgZmxhZ3M6IEJ1ZmZlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXJrbGVCbG9ja1BheWxvYWRTaXplSW50ZXJuYWw6ICgpID0+IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgIHZlcnNpb24sXG4gICAgcHJldmlvdXNIYXNoLFxuICAgIG1lcmtsZVJvb3QsXG4gICAgdGltZXN0YW1wLFxuICAgIGluZGV4LFxuICAgIGNvbnNlbnN1c0RhdGEsXG4gICAgbmV4dENvbnNlbnN1cyxcbiAgICBzY3JpcHQsXG4gICAgdHJhbnNhY3Rpb25Db3VudCxcbiAgICBoYXNoZXMsXG4gICAgZmxhZ3MsXG4gIH06IE1lcmtsZUJsb2NrUGF5bG9hZEFkZCkge1xuICAgIHN1cGVyKHtcbiAgICAgIHZlcnNpb24sXG4gICAgICBwcmV2aW91c0hhc2gsXG4gICAgICBtZXJrbGVSb290LFxuICAgICAgdGltZXN0YW1wLFxuICAgICAgaW5kZXgsXG4gICAgICBjb25zZW5zdXNEYXRhLFxuICAgICAgbmV4dENvbnNlbnN1cyxcbiAgICAgIHNjcmlwdCxcbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb25Db3VudCA9IHRyYW5zYWN0aW9uQ291bnQ7XG4gICAgdGhpcy5oYXNoZXMgPSBoYXNoZXM7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuXG4gICAgdGhpcy5tZXJrbGVCbG9ja1BheWxvYWRTaXplSW50ZXJuYWwgPSB1dGlscy5sYXp5KFxuICAgICAgKCkgPT5cbiAgICAgICAgc3VwZXIuc2l6ZSArXG4gICAgICAgIElPSGVscGVyLnNpemVPZlVJbnQzMkxFICtcbiAgICAgICAgSU9IZWxwZXIuc2l6ZU9mQXJyYXkodGhpcy5oYXNoZXMsICgpID0+IElPSGVscGVyLnNpemVPZlVJbnQyNTYpICtcbiAgICAgICAgSU9IZWxwZXIuc2l6ZU9mVmFyQnl0ZXNMRSh0aGlzLmZsYWdzKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWVya2xlQmxvY2tQYXlsb2FkU2l6ZUludGVybmFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2VyaWFsaXplV2lyZUJhc2Uod3JpdGVyOiBCaW5hcnlXcml0ZXIpOiB2b2lkIHtcbiAgICBzdXBlci5zZXJpYWxpemVXaXJlQmFzZSh3cml0ZXIpO1xuICAgIHdyaXRlci53cml0ZVZhclVJbnRMRSh0aGlzLnRyYW5zYWN0aW9uQ291bnQpO1xuICAgIHdyaXRlci53cml0ZUFycmF5KHRoaXMuaGFzaGVzLCAoaGFzaCkgPT4ge1xuICAgICAgd3JpdGVyLndyaXRlVUludDI1NihoYXNoKTtcbiAgICB9KTtcbiAgICB3cml0ZXIud3JpdGVWYXJCeXRlc0xFKHRoaXMuZmxhZ3MpO1xuICB9XG59XG4iXX0=
|