1

I'm learning how to use the OpenSea SDK in Node.js (found here) by referring to its example OpenSea Creatures. The SDK links to a two-year old branch but I'm using the master branch.

I'm trying to create a factory that can deploy contracts from which tokens are minted. For testing purposes, I'm having my factory deploy the Creatures contract, and this is my Solidity code:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";
import "./ERC721Tradable.sol";

contract NFTContractFactory is Ownable
{
    event ContractCreated(address addr);

    function createContract(string memory name, string memory symbol)
        public onlyOwner
    {
        Creature nc = new Creature(name, symbol, owner());
        nc.transferOwnership(msg.sender);
        emit ContractCreated(address(nc));
    }
}

contract Creature is ERC721Tradable {
    constructor(string memory _name, string memory _symbol, address _proxyRegistryAddress)
        ERC721Tradable(_name, _symbol, _proxyRegistryAddress)
    {}

    function baseTokenURI() override public pure returns (string memory) {
        return "https://creatures-api.opensea.io/api/creature/";
    }

    function contractURI() public pure returns (string memory) {
        return "https://creatures-api.opensea.io/contract/opensea-creatures";
    }
}

ERC721Tradable.sol can be found here. The only change I've made to the Creature contract was to have its name and symbol be passed from the factory.

I have deployed samples of these contracts at the following addresses:

  • NFTContractFactory: 0xbc2e680be967834a5f6fd72ac9e2b0251f28b2a8
  • Creature: 0x5126c9f90a18c197dc8964ea477d63bcfbef97ab, 0xf9473fa26c4631dcd2ee1c7ad50e0c3545ff35a7, 0x5c7f60d78774f81989b262da785daf7b6a2aed2b

This is my test script:

const Web3 = require('web3')
const OpenSea = require('opensea-js')
const OpenSeaPort = OpenSea.OpenSeaPort
const Network = OpenSea.Network

const MnemonicWalletSubprovider = require("@0x/subproviders").MnemonicWalletSubprovider;
const MNEMONIC = 'my metamask wallet mnemonic'
const BASE_DERIVATION_PATH = `44'/60'/0'/0`;
const mnemonicWalletSubprovider = new MnemonicWalletSubprovider({
  mnemonic: MNEMONIC,
  baseDerivationPath: BASE_DERIVATION_PATH,
});

const RPCSubprovider = require("web3-provider-engine/subproviders/rpc");
const alchemyRpcSubprovider = new RPCSubprovider("my alchemy rinkeby endpoint");

const Web3ProviderEngine = require("web3-provider-engine");
const providerEngine = new Web3ProviderEngine();
providerEngine.addProvider(mnemonicWalletSubprovider);
providerEngine.addProvider(alchemyRpcSubprovider);
providerEngine.start();

const seaport = new OpenSeaPort(
  providerEngine,
  {
    networkName: Network.Rinkeby,
    apiKey: ""
  },
  (arg) => console.log(arg)
);

async function main() {
  // Expire this auction one day from now. Note that we convert from the JavaScript timestamp (milliseconds):
  const expirationTime = Math.round(Date.now() / 1000 + 60 * 60 * 24)

  const assetPromise = seaport.api.getAsset({
    tokenAddress: '0xf9473fa26c4631dcd2ee1c7ad50e0c3545ff35a7',
    tokenId: '1',
  })
  assetPromise.then(asset => {
    console.log(asset);
    const sellOrderPromise = seaport.createSellOrder({
      asset,
      accountAddress: 'my address',
      startAmount: 3,
      // If `endAmount` is specified, the order will decline in value to that amount until `expirationTime`. Otherwise, it's a fixed-price order:
      endAmount: 0.1,
      expirationTime
    });
    sellOrderPromise.then(order => console.log(order)).catch(error => console.log(error));
  });
}

main()

Unfortunately, my test output consists of only the token information from that line console.log(asset);; I don't even see the final order or any errors, and I don't see my listing being created either. I'm not sure how to troubleshoot this so I'd be so thankful if someone could point me in the right direction from here.

Edit1: Added .catch(error => console.log(error)); to catch any errors, but still nothing!

Edit2: Seems like I'm not the only one with the silent failure? Issue here

user10931326
  • 787
  • 2
  • 8
  • 15

0 Answers0