@protokol/notarization-crypto
Version:
Transaction Builders For Notarization Transaction Types
66 lines • 2.72 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NotarizationTransaction = void 0;
const crypto_1 = require("@arkecosystem/crypto");
const utils_1 = require("@protokol/utils");
const bytebuffer_1 = __importDefault(require("bytebuffer"));
const defaults_1 = require("../defaults");
const enums_1 = require("../enums");
const notarization_schemas_1 = require("./utils/notarization-schemas");
const { schemas } = crypto_1.Transactions;
class NotarizationTransaction extends crypto_1.Transactions.Transaction {
static getSchema() {
return schemas.extend(schemas.transactionBaseSchema, {
$id: this.key,
required: ["asset", "typeGroup"],
properties: {
type: { transactionType: this.type },
typeGroup: { const: this.typeGroup },
amount: notarization_schemas_1.amountSchema,
vendorField: notarization_schemas_1.vendorFieldSchema,
asset: {
type: "object",
required: ["notarization"],
properties: {
notarization: notarization_schemas_1.notarizationSchema,
},
},
},
});
}
serialize() {
var _a;
const { data } = this;
utils_1.Asserts.assert.defined((_a = data.asset) === null || _a === void 0 ? void 0 : _a.notarization);
const notarizationAsset = data.asset.notarization;
const hashBuffer = Buffer.from(notarizationAsset.hash);
const buffer = new bytebuffer_1.default(1 + hashBuffer.length, true);
// hash
buffer.writeByte(hashBuffer.length);
buffer.append(hashBuffer, "hex");
return buffer;
}
deserialize(buf) {
const { data } = this;
//hash
const hashLength = buf.readUint8();
const hash = buf.readString(hashLength);
const notarization = { hash };
data.asset = {
notarization,
};
}
hasVendorField() {
return true;
}
}
exports.NotarizationTransaction = NotarizationTransaction;
NotarizationTransaction.typeGroup = enums_1.NotarizationTransactionGroup;
NotarizationTransaction.type = enums_1.NotarizationTransactionTypes.Notarization;
NotarizationTransaction.key = "Notarization";
NotarizationTransaction.version = defaults_1.defaults.version;
NotarizationTransaction.defaultStaticFee = crypto_1.Utils.BigNumber.make(enums_1.NotarizationStaticFees.Notarization);
//# sourceMappingURL=notarization.js.map