生成 BuyOrder

生成买单 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