UNPKG

3.32 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const client_common_1 = require("@neo-one/client-common");
4const errors_1 = require("../errors");
5const utils_1 = require("../utils");
6const TransactionBase_1 = require("./TransactionBase");
7const TransactionType_1 = require("./TransactionType");
8class EnrollmentTransaction extends TransactionBase_1.TransactionBase(client_common_1.TransactionBaseModel) {
9 constructor({ version, attributes, inputs, outputs, scripts, hash, publicKey }) {
10 super({
11 version,
12 type: TransactionType_1.TransactionType.Enrollment,
13 attributes,
14 inputs,
15 outputs,
16 scripts,
17 hash,
18 });
19 this.sizeExclusive = utils_1.utils.lazy(() => client_common_1.IOHelper.sizeOfUInt8 + client_common_1.IOHelper.sizeOfECPoint(this.publicKey));
20 this.publicKey = publicKey;
21 if (this.version !== 0) {
22 throw new client_common_1.InvalidFormatError(`Expected version to be 0. Received: ${this.version}`);
23 }
24 const getScriptHashesForVerifying = super.getScriptHashesForVerifying.bind(this);
25 this.enrollmentGetScriptHashesForVerifyingInternal = utils_1.utils.lazyAsync(async (options) => {
26 const hashes = await getScriptHashesForVerifying(options);
27 return new Set([...hashes, client_common_1.common.uInt160ToHex(client_common_1.crypto.getVerificationScriptHash(this.publicKey))]);
28 });
29 }
30 static deserializeWireBase(options) {
31 const { reader } = options;
32 const { type, version } = super.deserializeTransactionBaseStartWireBase(options);
33 if (type !== TransactionType_1.TransactionType.Enrollment) {
34 throw new client_common_1.InvalidFormatError(`Expected transaction type ${TransactionType_1.TransactionType.Enrollment}. Received: ${type}`);
35 }
36 const publicKey = reader.readECPoint();
37 const { attributes, inputs, outputs, scripts } = super.deserializeTransactionBaseEndWireBase(options);
38 return new this({
39 version,
40 publicKey,
41 attributes,
42 inputs,
43 outputs,
44 scripts,
45 });
46 }
47 clone({ scripts = this.scripts, attributes = this.attributes, inputs = this.inputs, outputs = this.outputs, }) {
48 return new this.constructor({
49 version: this.version,
50 attributes,
51 inputs,
52 outputs,
53 scripts,
54 publicKey: this.publicKey,
55 });
56 }
57 serializeExclusiveBase(writer) {
58 writer.writeECPoint(this.publicKey);
59 }
60 async serializeJSON(context) {
61 const transactionBaseJSON = await super.serializeTransactionBaseJSON(context);
62 return Object.assign(Object.assign({}, transactionBaseJSON), { type: 'EnrollmentTransaction', pubkey: client_common_1.JSONHelper.writeECPoint(this.publicKey) });
63 }
64 async getScriptHashesForVerifying(options) {
65 return this.enrollmentGetScriptHashesForVerifyingInternal(options);
66 }
67 async verify(_options) {
68 throw new errors_1.VerifyError('Enrollment transactions are obsolete');
69 }
70}
71exports.EnrollmentTransaction = EnrollmentTransaction;
72
73//# sourceMappingURL=EnrollmentTransaction.js.map