meta-contract-debug
Version:
Meta Contract SDK
37 lines (36 loc) • 1.41 kB
JavaScript
;
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;