javascript - 通过 JS API : Failed to extract transfer calldata Error 400 在 OpenSea 上列出 NFT

标签 javascript node.js ethereum web3 nft

我正在尝试使用 OpenSea JavaScript API以便自动列出要出售的 NFT。我似乎无法弄清楚为什么我不断收到错误 Error: API Error 400: ['Failed to extract transfer calldata'] .也许我没有正确输入一些数据?我的代码改编自 this example .
来源

const opensea = require("opensea-js");
const OpenSeaPort = opensea.OpenSeaPort;
const Network = opensea.Network;
const MnemonicWalletSubprovider = require("@0x/subproviders")
  .MnemonicWalletSubprovider;
const RPCSubprovider = require("web3-provider-engine/subproviders/rpc");
const Web3ProviderEngine = require("web3-provider-engine");

const MNEMONIC = "SECRET ...";
const NODE_API_KEY = "FROM INFURA";
const isInfura = true;
//const FACTORY_CONTRACT_ADDRESS = process.env.FACTORY_CONTRACT_ADDRESS;
const NFT_CONTRACT_ADDRESS = "0x495f947276749Ce646f68AC8c248420045cb7b5e";
const OWNER_ADDRESS = "0x3eb8eea9565418281f4cae934dd69e7ff2bb5949";
const NETWORK = "mainnet";
const API_KEY = process.env.API_KEY || ""; // API key is optional but useful if you're doing a high volume of requests.

const BASE_DERIVATION_PATH = `44'/60'/0'/0`;

const mnemonicWalletSubprovider = new MnemonicWalletSubprovider({
  mnemonic: MNEMONIC,
  baseDerivationPath: BASE_DERIVATION_PATH,
});
const network =
  NETWORK === "mainnet" || NETWORK === "live" ? "mainnet" : "rinkeby";
const infuraRpcSubprovider = new RPCSubprovider({
  rpcUrl: isInfura
    ? "https://" + network + ".infura.io/v3/" + NODE_API_KEY
    : "https://eth-" + network + ".alchemyapi.io/v2/" + NODE_API_KEY,
});

const providerEngine = new Web3ProviderEngine();
providerEngine.addProvider(mnemonicWalletSubprovider);
providerEngine.addProvider(infuraRpcSubprovider);
providerEngine.start();

const seaport = new OpenSeaPort(
  providerEngine,
  {
    networkName:
      NETWORK === "mainnet" || NETWORK === "live"
        ? Network.Main
        : Network.Rinkeby,
    apiKey: API_KEY,
  },
  (arg) => console.log(arg)
);

exports.helloWorld = async (req, res) => {
  // Example: simple fixed-price sale of an item owned by a user.
  console.log("Auctioning an item for a fixed price...");

  try {
    const fixedPriceSellOrder = await seaport.createSellOrder({
      asset: {
        tokenId: "28370143653034713195993216915191765879963367987017833025925208213530804748289",
        tokenAddress: NFT_CONTRACT_ADDRESS,
      },
      startAmount: 0.1,
      expirationTime: 0,
      accountAddress: OWNER_ADDRESS,
    });
    console.log(
      `Successfully created a fixed-price sell order! ${fixedPriceSellOrder.asset.openseaLink}\n`
    );
  }
  catch (error) {
    console.log("ERROR",error);
  }

};
完整日志
enter image description here
我在哪里获得数据
enter image description here
ASSET URL

最佳答案

你的代币标准是什么?
如果不是 ERC721,则需要将其指定为您的 schemaName在 Assets 对象内部,如下所示:

const fixedPriceSellOrder = await seaport.createSellOrder({
      asset: {
        tokenId: "28370143653034713195993216915191765879963367987017833025925208213530804748289",
        tokenAddress: NFT_CONTRACT_ADDRESS,
        schemaName: "ERC1155"
      },
      startAmount: 0.1,
      expirationTime: 0,
      accountAddress: OWNER_ADDRESS,
    });
您可以在 Opensea Assets 页面的 Details 选项卡中找到 Token Standard:
Failed to extract transfer calldata Error 400
删除破折号,你很好。 ERC1155对我来说很好。

关于javascript - 通过 JS API : Failed to extract transfer calldata Error 400 在 OpenSea 上列出 NFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67265032/

相关文章:

javascript - 使用计算总和作为 Google Chart 的数据

javascript - Selenium:如何使 RemoteDriver 始终附加到当前浏览器选项卡?

javascript - 调用 Node SparkPost API 时在替换数据中发送 "CC"和 "BCC"

node.js - 收到错误 : ORA-01843: not a valid month] error and don't know why

blockchain - 如何在solidity 0.5.2版本中调用另一个合约中的合约?

c - 如何将随机散列减少为 bool 值

javascript - 在 NodeJS 中使用 MySQL 的 Passportjs

javascript - 用于脚本的 Web 服务器上的 Photoshop

node.js - 导致全局变量差异的原因(交互式与脚本)

javascript - 如何从不同节点访问合约功能?