UNPKG

meta-contract-debug

Version:

Meta Contract SDK

37 lines (36 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.newDataPart = void 0; const TokenUtil = require("../../common/tokenUtil"); const NFT_ID_LEN = 20; const NFT_CODE_HASH_LEN = 20; const DATA_VERSION_LEN = 5; const NFT_ID_OFFSET = DATA_VERSION_LEN + NFT_ID_LEN; const NFT_CODE_HASH_OFFSET = NFT_ID_OFFSET + NFT_CODE_HASH_LEN; function newDataPart(dataPart) { let nSendersBuf = TokenUtil.getUInt32Buf(dataPart.nSenders); let receiverTokenAmountArrayBuf = Buffer.alloc(0); dataPart.receiverTokenAmountArray.forEach((tokenAmount) => { receiverTokenAmountArrayBuf = Buffer.concat([ receiverTokenAmountArrayBuf, tokenAmount.toBuffer({ endian: 'little', size: 8 }), ]); }); let receiverArrayBuf = Buffer.alloc(0); dataPart.receiverArray.map((address) => { receiverArrayBuf = Buffer.concat([receiverArrayBuf, address.hashBuffer]); }); let nReceiversBuf = TokenUtil.getUInt32Buf(dataPart.nReceivers); let tokenCodeHashBuf = Buffer.from(dataPart.tokenCodeHash, 'hex'); let tokenIDBuf = Buffer.from(dataPart.tokenID, 'hex'); const buf = Buffer.concat([ nSendersBuf, receiverTokenAmountArrayBuf, receiverArrayBuf, nReceiversBuf, tokenCodeHashBuf, tokenIDBuf, ]); return TokenUtil.buildScriptData(buf); } exports.newDataPart = newDataPart;