UNPKG

10.2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const client_common_1 = require("@neo-one/client-common");
4const node_core_1 = require("@neo-one/node-core");
5const Context_1 = require("./Context");
6class HeaderContext extends Context_1.Context {
7 constructor({ type, viewNumber, myIndex, primaryIndex, expectedView, validators, blockReceivedTimeSeconds, transactions, signatures, header, }) {
8 const previousHash = header.type === 'existing' ? header.block.previousHash : header.previousHash;
9 const transactionHashes = header.transactionHashes;
10 const blockIndex = header.type === 'existing' ? header.block.index : header.blockIndex;
11 const nonce = header.type === 'existing' ? header.block.consensusData : header.nonce;
12 const timestamp = header.type === 'existing' ? header.block.timestamp : header.timestamp;
13 const nextConsensus = header.type === 'existing' ? header.block.nextConsensus : header.nextConsensus;
14 super({
15 type,
16 previousHash,
17 blockIndex,
18 viewNumber,
19 myIndex,
20 primaryIndex,
21 expectedView,
22 validators,
23 blockReceivedTimeSeconds,
24 });
25 this.transactions = transactions;
26 this.transactionHashes = transactionHashes;
27 this.transactionHashesSet = new Set(transactionHashes);
28 this.signatures = signatures;
29 if (header.type === 'existing') {
30 this.header = header.block;
31 }
32 else {
33 this.header = new node_core_1.Block({
34 version: this.version,
35 previousHash: this.previousHash,
36 merkleRoot: node_core_1.MerkleTree.computeRoot(this.transactionHashes.map((hash) => client_common_1.common.hexToUInt256(hash))),
37 timestamp,
38 index: this.blockIndex,
39 consensusData: nonce,
40 nextConsensus,
41 transactions: [],
42 });
43 }
44 }
45 cloneSignatures(_options) {
46 throw new Error('Not Implemented');
47 }
48 toJSON() {
49 return Object.assign(Object.assign({}, super.toJSON()), { transactionHashes: this.transactionHashes.map((hash) => client_common_1.common.uInt256ToString(hash)), signatures: this.signatures.map((signature) => signature === undefined ? 'undefined' : signature.toString('hex')) });
50 }
51}
52exports.HeaderContext = HeaderContext;
53
54//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBRXJGLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQzVDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDbEUsSUFDRDtJQUNKLENBQUM7Q0FDRjtBQXhFRCxzQ0F3RUMiLCJmaWxlIjoibmVvLW9uZS1ub2RlLWNvbnNlbnN1cy9zcmMvY29udGV4dC9IZWFkZXJDb250ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tbW9uLCBFQ1BvaW50LCBVSW50MTYwLCBVSW50MjU2LCBVSW50MjU2SGV4IH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbic7XG5pbXBvcnQgeyBCbG9jaywgTWVya2xlVHJlZSB9IGZyb20gJ0BuZW8tb25lL25vZGUtY29yZSc7XG5pbXBvcnQgeyBCTiB9IGZyb20gJ2JuLmpzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL0NvbnRleHQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25zLCBUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmludGVyZmFjZSBIZWFkZXJDb250ZXh0QWRkIHtcbiAgcmVhZG9ubHkgdHlwZTogVHlwZTtcbiAgcmVhZG9ubHkgdmlld051bWJlcjogbnVtYmVyO1xuICByZWFkb25seSBteUluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IHByaW1hcnlJbmRleDogbnVtYmVyO1xuICByZWFkb25seSBleHBlY3RlZFZpZXc6IHJlYWRvbmx5IG51bWJlcltdO1xuICByZWFkb25seSB2YWxpZGF0b3JzOiByZWFkb25seSBFQ1BvaW50W107XG4gIHJlYWRvbmx5IGJsb2NrUmVjZWl2ZWRUaW1lU2Vjb25kczogbnVtYmVyO1xuICByZWFkb25seSB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9ucztcbiAgcmVhZG9ubHkgc2lnbmF0dXJlczogUmVhZG9ubHlBcnJheTxCdWZmZXIgfCB1bmRlZmluZWQ+O1xuICByZWFkb25seSBoZWFkZXI6XG4gICAgfCB7XG4gICAgICAgIHJlYWRvbmx5IHR5cGU6ICduZXcnO1xuICAgICAgICByZWFkb25seSBwcmV2aW91c0hhc2g6IFVJbnQyNTY7XG4gICAgICAgIHJlYWRvbmx5IHRyYW5zYWN0aW9uSGFzaGVzOiByZWFkb25seSBVSW50MjU2SGV4W107XG4gICAgICAgIHJlYWRvbmx5IGJsb2NrSW5kZXg6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgbm9uY2U6IEJOO1xuICAgICAgICByZWFkb25seSB0aW1lc3RhbXA6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgbmV4dENvbnNlbnN1czogVUludDE2MDtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcmVhZG9ubHkgdHlwZTogJ2V4aXN0aW5nJztcbiAgICAgICAgcmVhZG9ubHkgYmxvY2s6IEJsb2NrO1xuICAgICAgICByZWFkb25seSB0cmFuc2FjdGlvbkhhc2hlczogcmVhZG9ubHkgVUludDI1NkhleFtdO1xuICAgICAgfTtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbnRleHQ8VCBleHRlbmRzIEhlYWRlckNvbnRleHQ8VD4gPSBIZWFkZXJDb250ZXh0PGFueT4+IGV4dGVuZHMgQ29udGV4dDxUPiB7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9ucztcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uSGFzaGVzOiByZWFkb25seSBVSW50MjU2SGV4W107XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbkhhc2hlc1NldDogU2V0PFVJbnQyNTZIZXg+O1xuICBwdWJsaWMgcmVhZG9ubHkgc2lnbmF0dXJlczogUmVhZG9ubHlBcnJheTxCdWZmZXIgfCB1bmRlZmluZWQ+O1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyOiBCbG9jaztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgIHR5cGUsXG4gICAgdmlld051bWJlcixcbiAgICBteUluZGV4LFxuICAgIHByaW1hcnlJbmRleCxcbiAgICBleHBlY3RlZFZpZXcsXG4gICAgdmFsaWRhdG9ycyxcbiAgICBibG9ja1JlY2VpdmVkVGltZVNlY29uZHMsXG4gICAgdHJhbnNhY3Rpb25zLFxuICAgIHNpZ25hdHVyZXMsXG4gICAgaGVhZGVyLFxuICB9OiBIZWFkZXJDb250ZXh0QWRkKSB7XG4gICAgY29uc3QgcHJldmlvdXNIYXNoID0gaGVhZGVyLnR5cGUgPT09ICdleGlzdGluZycgPyBoZWFkZXIuYmxvY2sucHJldmlvdXNIYXNoIDogaGVhZGVyLnByZXZpb3VzSGFzaDtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkhhc2hlcyA9IGhlYWRlci50cmFuc2FjdGlvbkhhc2hlcztcbiAgICBjb25zdCBibG9ja0luZGV4ID0gaGVhZGVyLnR5cGUgPT09ICdleGlzdGluZycgPyBoZWFkZXIuYmxvY2suaW5kZXggOiBoZWFkZXIuYmxvY2tJbmRleDtcbiAgICBjb25zdCBub25jZSA9IGhlYWRlci50eXBlID09PSAnZXhpc3RpbmcnID8gaGVhZGVyLmJsb2NrLmNvbnNlbnN1c0RhdGEgOiBoZWFkZXIubm9uY2U7XG4gICAgY29uc3QgdGltZXN0YW1wID0gaGVhZGVyLnR5cGUgPT09ICdleGlzdGluZycgPyBoZWFkZXIuYmxvY2sudGltZXN0YW1wIDogaGVhZGVyLnRpbWVzdGFtcDtcbiAgICBjb25zdCBuZXh0Q29uc2Vuc3VzID0gaGVhZGVyLnR5cGUgPT09ICdleGlzdGluZycgPyBoZWFkZXIuYmxvY2submV4dENvbnNlbnN1cyA6IGhlYWRlci5uZXh0Q29uc2Vuc3VzO1xuICAgIHN1cGVyKHtcbiAgICAgIHR5cGUsXG4gICAgICBwcmV2aW91c0hhc2gsXG4gICAgICBibG9ja0luZGV4LFxuICAgICAgdmlld051bWJlcixcbiAgICAgIG15SW5kZXgsXG4gICAgICBwcmltYXJ5SW5kZXgsXG4gICAgICBleHBlY3RlZFZpZXcsXG4gICAgICB2YWxpZGF0b3JzLFxuICAgICAgYmxvY2tSZWNlaXZlZFRpbWVTZWNvbmRzLFxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbnMgPSB0cmFuc2FjdGlvbnM7XG4gICAgdGhpcy50cmFuc2FjdGlvbkhhc2hlcyA9IHRyYW5zYWN0aW9uSGFzaGVzO1xuICAgIHRoaXMudHJhbnNhY3Rpb25IYXNoZXNTZXQgPSBuZXcgU2V0KHRyYW5zYWN0aW9uSGFzaGVzKTtcbiAgICB0aGlzLnNpZ25hdHVyZXMgPSBzaWduYXR1cmVzO1xuICAgIGlmIChoZWFkZXIudHlwZSA9PT0gJ2V4aXN0aW5nJykge1xuICAgICAgdGhpcy5oZWFkZXIgPSBoZWFkZXIuYmxvY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhZGVyID0gbmV3IEJsb2NrKHtcbiAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uLFxuICAgICAgICBwcmV2aW91c0hhc2g6IHRoaXMucHJldmlvdXNIYXNoLFxuICAgICAgICBtZXJrbGVSb290OiBNZXJrbGVUcmVlLmNvbXB1dGVSb290KHRoaXMudHJhbnNhY3Rpb25IYXNoZXMubWFwKChoYXNoKSA9PiBjb21tb24uaGV4VG9VSW50MjU2KGhhc2gpKSksXG5cbiAgICAgICAgdGltZXN0YW1wLFxuICAgICAgICBpbmRleDogdGhpcy5ibG9ja0luZGV4LFxuICAgICAgICBjb25zZW5zdXNEYXRhOiBub25jZSxcbiAgICAgICAgbmV4dENvbnNlbnN1cyxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9uZVNpZ25hdHVyZXMoX29wdGlvbnM6IHsgcmVhZG9ubHkgc2lnbmF0dXJlczogUmVhZG9ubHlBcnJheTxCdWZmZXIgfCB1bmRlZmluZWQ+IH0pOiBUIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBJbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgcHVibGljIHRvSlNPTigpOiBvYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci50b0pTT04oKSxcbiAgICAgIHRyYW5zYWN0aW9uSGFzaGVzOiB0aGlzLnRyYW5zYWN0aW9uSGFzaGVzLm1hcCgoaGFzaCkgPT4gY29tbW9uLnVJbnQyNTZUb1N0cmluZyhoYXNoKSksXG5cbiAgICAgIHNpZ25hdHVyZXM6IHRoaXMuc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZSkgPT5cbiAgICAgICAgc2lnbmF0dXJlID09PSB1bmRlZmluZWQgPyAndW5kZWZpbmVkJyA6IHNpZ25hdHVyZS50b1N0cmluZygnaGV4JyksXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==