UNPKG

lisk-framework

Version:

Lisk blockchain application platform

93 lines 3.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.decodeLegacyChainBracketInfo = exports.encodeLegacyChainBracketInfo = exports.encodeBlockHeader = exports.encodeBlock = exports.getLegacyTransactionJSONWithSchema = exports.decodeBlockJSON = exports.decodeBlockHeader = exports.decodeBlock = exports.getBlockSchema = exports.blockSchemaMap = void 0; const lisk_codec_1 = require("@liskhq/lisk-codec"); const lisk_cryptography_1 = require("@liskhq/lisk-cryptography"); const schemas_1 = require("./schemas"); exports.blockSchemaMap = { 2: { block: schemas_1.blockSchemaV2, header: schemas_1.blockHeaderSchemaV2, }, }; const getBlockSchema = (version) => { const blockSchema = exports.blockSchemaMap[version]; if (!blockSchema) { throw new Error(`Legacy block version ${version} is not registered.`); } return blockSchema; }; exports.getBlockSchema = getBlockSchema; const readVersion = () => 2; const decodeBlock = (data) => { const version = readVersion(); const blockSchema = (0, exports.getBlockSchema)(version); const rawBlock = lisk_codec_1.codec.decode(blockSchema.block, data); const id = lisk_cryptography_1.utils.hash(rawBlock.header); return { block: { ...rawBlock, header: { ...lisk_codec_1.codec.decode(blockSchema.header, rawBlock.header), id, }, }, schema: blockSchema, }; }; exports.decodeBlock = decodeBlock; const decodeBlockHeader = (blockHeader) => { const version = readVersion(); const blockSchema = (0, exports.getBlockSchema)(version); const id = lisk_cryptography_1.utils.hash(blockHeader); return { ...lisk_codec_1.codec.decode(blockSchema.header, blockHeader), id, }; }; exports.decodeBlockHeader = decodeBlockHeader; const decodeBlockJSON = (data) => { const { block, schema } = (0, exports.decodeBlock)(data); return { block: { header: { ...lisk_codec_1.codec.toJSON(schema.header, block.header), id: block.header.id.toString('hex'), }, payload: block.payload.map(tx => tx.toString('hex')), }, schema, }; }; exports.decodeBlockJSON = decodeBlockJSON; const getLegacyTransactionJSONWithSchema = (data) => { const legacyTransaction = lisk_codec_1.codec.decode(schemas_1.transactionSchemaV2, data); const id = lisk_cryptography_1.utils.hash(data); return { transaction: { ...lisk_codec_1.codec.toJSON(schemas_1.transactionSchemaV2, legacyTransaction), id: id.toString('hex'), }, schema: schemas_1.transactionSchemaV2, }; }; exports.getLegacyTransactionJSONWithSchema = getLegacyTransactionJSONWithSchema; const encodeBlock = (data) => { const blockSchema = (0, exports.getBlockSchema)(data.header.version); const headerBytes = lisk_codec_1.codec.encode(blockSchema.header, data.header); return lisk_codec_1.codec.encode(blockSchema.block, { header: headerBytes, payload: data.payload, }); }; exports.encodeBlock = encodeBlock; const encodeBlockHeader = (blockHeader) => { const blockSchema = (0, exports.getBlockSchema)(blockHeader.version); return lisk_codec_1.codec.encode(blockSchema.header, blockHeader); }; exports.encodeBlockHeader = encodeBlockHeader; const encodeLegacyChainBracketInfo = (data) => lisk_codec_1.codec.encode(schemas_1.legacyChainBracketInfoSchema, data); exports.encodeLegacyChainBracketInfo = encodeLegacyChainBracketInfo; const decodeLegacyChainBracketInfo = (data) => lisk_codec_1.codec.decode(schemas_1.legacyChainBracketInfoSchema, data); exports.decodeLegacyChainBracketInfo = decodeLegacyChainBracketInfo; //# sourceMappingURL=codec.js.map