UNPKG

5.6 kBJavaScriptView Raw
1import { InvalidFormatError, IOHelper } from '@neo-one/client-common-esnext-esm';
2import { BlockBase } from './BlockBase';
3import { BinaryReader, utils } from './utils';
4export class Header extends BlockBase {
5 constructor() {
6 super(...arguments);
7 this.sizeExclusive = utils.lazy(() => IOHelper.sizeOfUInt8);
8 }
9 static deserializeWireBase(options) {
10 const { reader } = options;
11 const blockBase = super.deserializeBlockBaseWireBase(options);
12 if (reader.readUInt8() !== 0) {
13 throw new InvalidFormatError();
14 }
15 return new this({
16 version: blockBase.version,
17 previousHash: blockBase.previousHash,
18 merkleRoot: blockBase.merkleRoot,
19 timestamp: blockBase.timestamp,
20 index: blockBase.index,
21 consensusData: blockBase.consensusData,
22 nextConsensus: blockBase.nextConsensus,
23 script: blockBase.script,
24 });
25 }
26 static deserializeWire(options) {
27 return this.deserializeWireBase({
28 context: options.context,
29 reader: new BinaryReader(options.buffer),
30 });
31 }
32 serializeWireBase(writer) {
33 super.serializeWireBase(writer);
34 writer.writeUInt8(0);
35 }
36 async serializeJSON(context) {
37 return super.serializeBlockBaseJSON(context);
38 }
39}
40
41//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLGtCQUFrQixFQUFFLFFBQVEsRUFBVyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBUXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBTzlDLE1BQU0sT0FBTyxNQUFPLFNBQVEsU0FBUztJQUFyQzs7UUEyQnFCLGtCQUFhLEdBQWlCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBVTFGLENBQUM7SUFwQ1EsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQW1DO1FBQ25FLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLElBQUksa0JBQWtCLEVBQUUsQ0FBQztTQUNoQztRQUVELE9BQU8sSUFBSSxJQUFJLENBQUM7WUFDZCxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO1lBQ3BDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtZQUNoQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFDOUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQStCO1FBQzNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBSU0saUJBQWlCLENBQUMsTUFBb0I7UUFDM0MsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBNkI7UUFDdEQsT0FBTyxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwiZmlsZSI6Im5lby1vbmUtbm9kZS1jb3JlL3NyYy9IZWFkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaW5hcnlXcml0ZXIsIEhlYWRlckpTT04sIEludmFsaWRGb3JtYXRFcnJvciwgSU9IZWxwZXIsIFVJbnQyNTYgfSBmcm9tICdAbmVvLW9uZS9jbGllbnQtY29tbW9uLWVzbmV4dC1lc20nO1xuaW1wb3J0IHsgQmxvY2tCYXNlLCBCbG9ja0Jhc2VBZGQgfSBmcm9tICcuL0Jsb2NrQmFzZSc7XG5pbXBvcnQge1xuICBEZXNlcmlhbGl6ZVdpcmVCYXNlT3B0aW9ucyxcbiAgRGVzZXJpYWxpemVXaXJlT3B0aW9ucyxcbiAgU2VyaWFsaXphYmxlSlNPTixcbiAgU2VyaWFsaXphYmxlV2lyZSxcbiAgU2VyaWFsaXplSlNPTkNvbnRleHQsXG59IGZyb20gJy4vU2VyaWFsaXphYmxlJztcbmltcG9ydCB7IEJpbmFyeVJlYWRlciwgdXRpbHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgSGVhZGVyQWRkID0gQmxvY2tCYXNlQWRkO1xuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJLZXkge1xuICByZWFkb25seSBoYXNoT3JJbmRleDogVUludDI1NiB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlciBleHRlbmRzIEJsb2NrQmFzZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZVdpcmU8SGVhZGVyPiwgU2VyaWFsaXphYmxlSlNPTjxIZWFkZXJKU09OPiB7XG4gIHB1YmxpYyBzdGF0aWMgZGVzZXJpYWxpemVXaXJlQmFzZShvcHRpb25zOiBEZXNlcmlhbGl6ZVdpcmVCYXNlT3B0aW9ucyk6IEhlYWRlciB7XG4gICAgY29uc3QgeyByZWFkZXIgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgYmxvY2tCYXNlID0gc3VwZXIuZGVzZXJpYWxpemVCbG9ja0Jhc2VXaXJlQmFzZShvcHRpb25zKTtcbiAgICBpZiAocmVhZGVyLnJlYWRVSW50OCgpICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEZvcm1hdEVycm9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyB0aGlzKHtcbiAgICAgIHZlcnNpb246IGJsb2NrQmFzZS52ZXJzaW9uLFxuICAgICAgcHJldmlvdXNIYXNoOiBibG9ja0Jhc2UucHJldmlvdXNIYXNoLFxuICAgICAgbWVya2xlUm9vdDogYmxvY2tCYXNlLm1lcmtsZVJvb3QsXG4gICAgICB0aW1lc3RhbXA6IGJsb2NrQmFzZS50aW1lc3RhbXAsXG4gICAgICBpbmRleDogYmxvY2tCYXNlLmluZGV4LFxuICAgICAgY29uc2Vuc3VzRGF0YTogYmxvY2tCYXNlLmNvbnNlbnN1c0RhdGEsXG4gICAgICBuZXh0Q29uc2Vuc3VzOiBibG9ja0Jhc2UubmV4dENvbnNlbnN1cyxcbiAgICAgIHNjcmlwdDogYmxvY2tCYXNlLnNjcmlwdCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVzZXJpYWxpemVXaXJlKG9wdGlvbnM6IERlc2VyaWFsaXplV2lyZU9wdGlvbnMpOiBIZWFkZXIge1xuICAgIHJldHVybiB0aGlzLmRlc2VyaWFsaXplV2lyZUJhc2Uoe1xuICAgICAgY29udGV4dDogb3B0aW9ucy5jb250ZXh0LFxuICAgICAgcmVhZGVyOiBuZXcgQmluYXJ5UmVhZGVyKG9wdGlvbnMuYnVmZmVyKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaXplRXhjbHVzaXZlOiAoKSA9PiBudW1iZXIgPSB1dGlscy5sYXp5KCgpID0+IElPSGVscGVyLnNpemVPZlVJbnQ4KTtcblxuICBwdWJsaWMgc2VyaWFsaXplV2lyZUJhc2Uod3JpdGVyOiBCaW5hcnlXcml0ZXIpOiB2b2lkIHtcbiAgICBzdXBlci5zZXJpYWxpemVXaXJlQmFzZSh3cml0ZXIpO1xuICAgIHdyaXRlci53cml0ZVVJbnQ4KDApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlcmlhbGl6ZUpTT04oY29udGV4dDogU2VyaWFsaXplSlNPTkNvbnRleHQpOiBQcm9taXNlPEhlYWRlckpTT04+IHtcbiAgICByZXR1cm4gc3VwZXIuc2VyaWFsaXplQmxvY2tCYXNlSlNPTihjb250ZXh0KTtcbiAgfVxufVxuIl19