@neo-one/node-protocol
Version:
NEO•ONE NEO node and consensus protocol.
66 lines (64 loc) • 9.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const client_common_1 = require("@neo-one/client-common");
const node_core_1 = require("@neo-one/node-core");
class MerkleBlockPayload extends node_core_1.BlockBase {
static deserializeWireBase(options) {
const { reader } = options;
const blockBase = super.deserializeBlockBaseWireBase(options);
const transactionCount = reader.readVarUIntLE(node_core_1.utils.INT_MAX_VALUE).toNumber();
const hashes = reader.readArray(() => reader.readUInt256());
const flags = reader.readVarBytesLE();
return new this({
version: blockBase.version,
previousHash: blockBase.previousHash,
merkleRoot: blockBase.merkleRoot,
timestamp: blockBase.timestamp,
index: blockBase.index,
consensusData: blockBase.consensusData,
nextConsensus: blockBase.nextConsensus,
script: blockBase.script,
transactionCount,
hashes,
flags,
});
}
static deserializeWire(options) {
return this.deserializeWireBase({
context: options.context,
reader: new node_core_1.BinaryReader(options.buffer),
});
}
constructor({ version, previousHash, merkleRoot, timestamp, index, consensusData, nextConsensus, script, transactionCount, hashes, flags, }) {
super({
version,
previousHash,
merkleRoot,
timestamp,
index,
consensusData,
nextConsensus,
script,
});
this.transactionCount = transactionCount;
this.hashes = hashes;
this.flags = flags;
this.merkleBlockPayloadSizeInternal = node_core_1.utils.lazy(() => super.size +
client_common_1.IOHelper.sizeOfUInt32LE +
client_common_1.IOHelper.sizeOfArray(this.hashes, () => client_common_1.IOHelper.sizeOfUInt256) +
client_common_1.IOHelper.sizeOfVarBytesLE(this.flags));
}
get size() {
return this.merkleBlockPayloadSizeInternal();
}
serializeWireBase(writer) {
super.serializeWireBase(writer);
writer.writeVarUIntLE(this.transactionCount);
writer.writeArray(this.hashes, (hash) => {
writer.writeUInt256(hash);
});
writer.writeVarBytesLE(this.flags);
}
}
exports.MerkleBlockPayload = MerkleBlockPayload;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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SSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFwRkQsZ0RBb0ZDIiwiZmlsZSI6Im5lby1vbmUtbm9kZS1wcm90b2NvbC9zcmMvcGF5bG9hZC9NZXJrbGVCbG9ja1BheWxvYWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaW5hcnlXcml0ZXIsIElPSGVscGVyLCBTZXJpYWxpemFibGVXaXJlLCBVSW50MjU2IH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbic7XG5pbXBvcnQge1xuICBCaW5hcnlSZWFkZXIsXG4gIEJsb2NrQmFzZSxcbiAgQmxvY2tCYXNlQWRkLFxuICBEZXNlcmlhbGl6ZVdpcmVCYXNlT3B0aW9ucyxcbiAgRGVzZXJpYWxpemVXaXJlT3B0aW9ucyxcbiAgdXRpbHMsXG59IGZyb20gJ0BuZW8tb25lL25vZGUtY29yZSc7XG5leHBvcnQgaW50ZXJmYWNlIE1lcmtsZUJsb2NrUGF5bG9hZEFkZCBleHRlbmRzIEJsb2NrQmFzZUFkZCB7XG4gIHJlYWRvbmx5IHRyYW5zYWN0aW9uQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGFzaGVzOiByZWFkb25seSBVSW50MjU2W107XG4gIHJlYWRvbmx5IGZsYWdzOiBCdWZmZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNZXJrbGVCbG9ja1BheWxvYWQgZXh0ZW5kcyBCbG9ja0Jhc2UgaW1wbGVtZW50cyBTZXJpYWxpemFibGVXaXJlPE1lcmtsZUJsb2NrUGF5bG9hZD4ge1xuICBwdWJsaWMgc3RhdGljIGRlc2VyaWFsaXplV2lyZUJhc2Uob3B0aW9uczogRGVzZXJpYWxpemVXaXJlQmFzZU9wdGlvbnMpOiBNZXJrbGVCbG9ja1BheWxvYWQge1xuICAgIGNvbnN0IHsgcmVhZGVyIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGJsb2NrQmFzZSA9IHN1cGVyLmRlc2VyaWFsaXplQmxvY2tCYXNlV2lyZUJhc2Uob3B0aW9ucyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25Db3VudCA9IHJlYWRlci5yZWFkVmFyVUludExFKHV0aWxzLklOVF9NQVhfVkFMVUUpLnRvTnVtYmVyKCk7XG4gICAgY29uc3QgaGFzaGVzID0gcmVhZGVyLnJlYWRBcnJheSgoKSA9PiByZWFkZXIucmVhZFVJbnQyNTYoKSk7XG4gICAgY29uc3QgZmxhZ3MgPSByZWFkZXIucmVhZFZhckJ5dGVzTEUoKTtcblxuICAgIHJldHVybiBuZXcgdGhpcyh7XG4gICAgICB2ZXJzaW9uOiBibG9ja0Jhc2UudmVyc2lvbixcbiAgICAgIHByZXZpb3VzSGFzaDogYmxvY2tCYXNlLnByZXZpb3VzSGFzaCxcbiAgICAgIG1lcmtsZVJvb3Q6IGJsb2NrQmFzZS5tZXJrbGVSb290LFxuICAgICAgdGltZXN0YW1wOiBibG9ja0Jhc2UudGltZXN0YW1wLFxuICAgICAgaW5kZXg6IGJsb2NrQmFzZS5pbmRleCxcbiAgICAgIGNvbnNlbnN1c0RhdGE6IGJsb2NrQmFzZS5jb25zZW5zdXNEYXRhLFxuICAgICAgbmV4dENvbnNlbnN1czogYmxvY2tCYXNlLm5leHRDb25zZW5zdXMsXG4gICAgICBzY3JpcHQ6IGJsb2NrQmFzZS5zY3JpcHQsXG4gICAgICB0cmFuc2FjdGlvbkNvdW50LFxuICAgICAgaGFzaGVzLFxuICAgICAgZmxhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlc2VyaWFsaXplV2lyZShvcHRpb25zOiBEZXNlcmlhbGl6ZVdpcmVPcHRpb25zKTogTWVya2xlQmxvY2tQYXlsb2FkIHtcbiAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZVdpcmVCYXNlKHtcbiAgICAgIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCxcbiAgICAgIHJlYWRlcjogbmV3IEJpbmFyeVJlYWRlcihvcHRpb25zLmJ1ZmZlciksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25Db3VudDogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzaGVzOiByZWFkb25seSBVSW50MjU2W107XG4gIHB1YmxpYyByZWFkb25seSBmbGFnczogQnVmZmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lcmtsZUJsb2NrUGF5bG9hZFNpemVJbnRlcm5hbDogKCkgPT4gbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih7XG4gICAgdmVyc2lvbixcbiAgICBwcmV2aW91c0hhc2gsXG4gICAgbWVya2xlUm9vdCxcbiAgICB0aW1lc3RhbXAsXG4gICAgaW5kZXgsXG4gICAgY29uc2Vuc3VzRGF0YSxcbiAgICBuZXh0Q29uc2Vuc3VzLFxuICAgIHNjcmlwdCxcbiAgICB0cmFuc2FjdGlvbkNvdW50LFxuICAgIGhhc2hlcyxcbiAgICBmbGFncyxcbiAgfTogTWVya2xlQmxvY2tQYXlsb2FkQWRkKSB7XG4gICAgc3VwZXIoe1xuICAgICAgdmVyc2lvbixcbiAgICAgIHByZXZpb3VzSGFzaCxcbiAgICAgIG1lcmtsZVJvb3QsXG4gICAgICB0aW1lc3RhbXAsXG4gICAgICBpbmRleCxcbiAgICAgIGNvbnNlbnN1c0RhdGEsXG4gICAgICBuZXh0Q29uc2Vuc3VzLFxuICAgICAgc2NyaXB0LFxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbkNvdW50ID0gdHJhbnNhY3Rpb25Db3VudDtcbiAgICB0aGlzLmhhc2hlcyA9IGhhc2hlcztcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG5cbiAgICB0aGlzLm1lcmtsZUJsb2NrUGF5bG9hZFNpemVJbnRlcm5hbCA9IHV0aWxzLmxhenkoXG4gICAgICAoKSA9PlxuICAgICAgICBzdXBlci5zaXplICtcbiAgICAgICAgSU9IZWxwZXIuc2l6ZU9mVUludDMyTEUgK1xuICAgICAgICBJT0hlbHBlci5zaXplT2ZBcnJheSh0aGlzLmhhc2hlcywgKCkgPT4gSU9IZWxwZXIuc2l6ZU9mVUludDI1NikgK1xuICAgICAgICBJT0hlbHBlci5zaXplT2ZWYXJCeXRlc0xFKHRoaXMuZmxhZ3MpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tZXJrbGVCbG9ja1BheWxvYWRTaXplSW50ZXJuYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXJpYWxpemVXaXJlQmFzZSh3cml0ZXI6IEJpbmFyeVdyaXRlcik6IHZvaWQge1xuICAgIHN1cGVyLnNlcmlhbGl6ZVdpcmVCYXNlKHdyaXRlcik7XG4gICAgd3JpdGVyLndyaXRlVmFyVUludExFKHRoaXMudHJhbnNhY3Rpb25Db3VudCk7XG4gICAgd3JpdGVyLndyaXRlQXJyYXkodGhpcy5oYXNoZXMsIChoYXNoKSA9PiB7XG4gICAgICB3cml0ZXIud3JpdGVVSW50MjU2KGhhc2gpO1xuICAgIH0pO1xuICAgIHdyaXRlci53cml0ZVZhckJ5dGVzTEUodGhpcy5mbGFncyk7XG4gIH1cbn1cbiJdfQ==