UNPKG

9.09 kBJavaScriptView Raw
1import { IOHelper } from '@neo-one/client-common-esnext-esm';
2import { BinaryReader, BlockBase, utils, } from '@neo-one/node-core-esnext-esm';
3export 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=