生成买单 dataToCall
⼊参为买家 address 及 NFT 资产 tokenID,调⽤ encodeBuyDatatocall ⽅法,⽣成买单 dataToCall。
function encodeBuyDatatocall(buyerAddressStr, tokenId) {
const from = '0000000000000000000000000000000000000000000000000000000000000000';
const to = formatHex32Byte(buyerAddressStr);
const id = formatNumber(tokenId);
const dataToCall = '0x23b872dd' + from + to + id;
// console.log("dataToCall:" + dataToCall);
return dataToCall;
}
function formatHex32Byte(hexStr) {
let str = hexStr.toLowerCase().startsWith("41") ? hexStr.substring(2).toLowerCase() : hexStr.toLowerCase();
let zero = '';
for (let i = str.length; i < 64; i++) {
zero += '0';
}
return zero + str;
}
function formatNumber(num) {
const hexStr = new BigNumber(num).toString(16);
return formatHex32Byte(hexStr);
}
根据卖单信息生成买单
修改卖单以生成买单:
- 买单 maker 取值为卖单 taker
- 买单 taker 取值为卖单 maker
- 买单 side 取值为 0
- 买单 feeRecipient 取值为 0 地址
- 买单 replacementPattern 取值为替换模式的另一个值:
卖单中 replacementPattern 取值为模式一时,买单中 replacementPattern 取值为模式二,反之亦然。
模式一:0x000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000
模式二:0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000