简体   繁体   English

通过 JS API 在 OpenSea 上列出 NFT:无法提取传输调用数据错误 400

[英]Listing NFT on OpenSea via JS API: Failed to extract transfer calldata Error 400

I am trying to use the OpenSea JavaScript API in order to list NFTs for sale automatically.我正在尝试使用OpenSea JavaScript API来自动列出要出售的 NFT。 I can't seem to figure out why I keep getting the error Error: API Error 400: ['Failed to extract transfer calldata'] .我似乎无法弄清楚为什么我不断收到错误Error: API Error 400: ['Failed to extract transfer calldata'] Perhaps I have not entered some data correctly?也许我没有正确输入一些数据? My code is adapted from this example .我的代码改编自这个例子

SOURCE资源

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);
  }

};

FULL LOGS完整日志

在此处输入图像描述

WHERE I GOT DATA我从哪里得到数据

在此处输入图像描述

ASSET URL 资产URL

What is your Token Standard?你的代币标准是什么?

If it is not ERC721, you need to specify it as your schemaName inside the asset object, like this:如果不是 ERC721,则需要在资产 object 中将其指定为schemaName ,如下所示:

const fixedPriceSellOrder = await seaport.createSellOrder({
      asset: {
        tokenId: "28370143653034713195993216915191765879963367987017833025925208213530804748289",
        tokenAddress: NFT_CONTRACT_ADDRESS,
        schemaName: "ERC1155"
      },
      startAmount: 0.1,
      expirationTime: 0,
      accountAddress: OWNER_ADDRESS,
    });

You can find Token Standard in Details tab, on Opensea asset page:您可以在 Opensea 资产页面的 Details 选项卡中找到 Token Standard:

提取转接呼叫数据失败 错误 400

Remove the dash and you're good.删除破折号,你很好。 ERC1155 was fine for me. ERC1155对我来说很好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Solidity Js,在函数获取时,我得到一个错误,因为“TypeError:数据位置必须是”memory“或”calldata”,用于函数中的返回参数 - Solidity Js, on function get i get an error as "TypeError: Data location must be "memory" or "calldata" for return parameter in function 错误:请求失败,状态代码为 400 - React - API Key - Error: Request Failed with status code 400 - React - API Key 如何获取 OpenSea API - How To Fetch OpenSea API 如何使用 Web3.js 或 Ethers.js 强制转移 NFT - How to force the transfer of an NFT using Web3.js or Ethers.js 如何使用虚拟钱包和 solana web3js 转移 NFT spl-token - How to transfer NFT spl-token using phantom wallet and solana web3js Imgur API(400错误) - Imgur API (400 Error) createError.js:16 Uncaught (in promise) 错误:请求失败,状态码为 400 - createError.js:16 Uncaught (in promise) Error: Request failed with status code 400 尝试通过 Dropbox Javascript SDK 访问 Dropbox API 时出现错误 400 - Error 400 when trying to access Dropbox API via Dropbox Javascript SDK createError.js:16 Uncaught (in promise) Error: Request failed with status code 400 反应 - createError.js:16 Uncaught (in promise) Error: Request failed with status code 400 in react Instagram Api OAuthAccessTokenException 400 错误 - Instagram Api OAuthAccessTokenException 400 error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM