Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The fulfiller does not have the balances needed to fulfill. #105

Closed
pguardiario opened this issue Aug 29, 2022 · 15 comments
Closed

The fulfiller does not have the balances needed to fulfill. #105

pguardiario opened this issue Aug 29, 2022 · 15 comments
Labels

Comments

@pguardiario
Copy link

Can someone help me understand why I get this error?
I'm trying to buy a nft that's listed on opensea.
The fulfiller is the owner of the nft, correct?
I verified that the owner address is right.
The message sounds like seaport thinks the owner doesn't have that token...

const provider = new ethers.providers.Web3Provider(window.ethereum)
const seaport = new Seaport(provider)
let [account] = await window.ethereum.enable()

const offerer = account // me
const fulfiller = "0x3649b5fA32d367BfAf218354cf5eB7Ab55AE1c46" // the address that owns the token

const { executeAllActions } = await seaport.createOrder(
  {
    offer: [
      {
        amount: ethers.utils.parseEther("0.0019").toString(),
        recipient: fulfiller,
      },
    ],
    consideration: [
      {
        itemType: 2, //ItemType.ERC721,
        token: "0x42921c64797b64499a3ad3a3cdbbfab7bee294fe",
        identifier: "1262",
        recipient: offerer,
      },
    ],
  },
  offerer
)

const order = await executeAllActions()
console.log(order)

const { executeAllActions: executeAllFulfillActions } =
  await seaport.fulfillOrder({
    order,
    accountAddress: account,
  });

const transaction = executeAllFulfillActions();

@srslafazan
Copy link

Same 👍

@BravoNatalie
Copy link

BravoNatalie commented Sep 30, 2022

I was under the impression that the fulfiller and the offerer are the same, but I'm also with this error.

@pguardiario
Copy link
Author

pguardiario commented Sep 30, 2022 via email

@Sufiyan-dev
Copy link

Hey i solved this error, Let me explain,
In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT.
this will be run successfully, since you are creating it.
But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.

I hope you understand it. Please do let me know you solved it or not.

@emorling
Copy link

emorling commented Oct 1, 2022

Hey i solved this error, Let me explain, In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT. this will be run successfully, since you are creating it. But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.

I hope you understand it. Please do let me know you solved it or not.

Awesome please provide a code example

@Sufiyan-dev
Copy link

Sufiyan-dev commented Oct 1, 2022

Here is the link to my script file.

I have created 2 seaport instances for interaction with 2 different accounts.

Here is the link
link

@pguardiario
Copy link
Author

Hey i solved this error, Let me explain, In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT. this will be run successfully, since you are creating it. But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.

I hope you understand it. Please do let me know you solved it or not.

No, the order I created matched an active listing on opensea and I'm trying to fulfill it. And I'm trying to do it from frontend.

@Sufiyan-dev
Copy link

Sufiyan-dev commented Oct 4, 2022

Of that you must need the order obj to fulfil it. And please check the consideration part that must be required to fulfil that order.you must be not fulfilling it.

Well i think i have done the same thing, but actually i created order and the fulfil it.even if its not working please share your code for better understanding of your problem. So i can help you in an better way.

Have a great day ahead 👋

@pguardiario
Copy link
Author

I shared it at the top. I'm just trying to buy an NFT that's already listed.

@Maumasi
Copy link

Maumasi commented Oct 4, 2022

Hey i solved this error, Let me explain, In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT. this will be run successfully, since you are creating it. But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.

I hope you understand it. Please do let me know you solved it or not.

I think I understand. From this explanation, it sounds like the seaport.createOrder block is a bidding/buy order. Separately, the short seaport.fulfillOrder block is the other side of that transaction that a seller would make.

It is confusing because the Seaport-js docs show the example as one full process to execute a bid/buy order.

While I not getting the error anymore because I'm not trying to run the seaport.fulfillOrder block as the bidder. Though, I'm not seeing the order show up on Opensea even though I can see that the order has been verified by following up the order with:

const validated = seaport.validate([order]);
const transaction = await validated.transact();
console.log('validated: ', await transaction.wait());

@Sufiyan-dev
Copy link

Hey i solved this error, Let me explain, In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT. this will be run successfully, since you are creating it. But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.
I hope you understand it. Please do let me know you solved it or not.

I think I understand. From this explanation, it sounds like the seaport.createOrder block is a bidding/buy order. Separately, the short seaport.fulfillOrder block is the other side of that transaction that a seller would make.

It is confusing because the Seaport-js docs show the example as one full process to execute a bid/buy order.

While I not getting the error anymore because I'm not trying to run the seaport.fulfillOrder block as the bidder. Though, I'm not seeing the order show up on Opensea even though I can see that the order has been verified by following up the order with:

const validated = seaport.validate([order]);
const transaction = await validated.transact();
console.log('validated: ', await transaction.wait());

yes

@scqsu
Copy link

scqsu commented Oct 18, 2022

Hey i solved this error, Let me explain, In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT. this will be run successfully, since you are creating it. But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.
I hope you understand it. Please do let me know you solved it or not.

I think I understand. From this explanation, it sounds like the seaport.createOrder block is a bidding/buy order. Separately, the short seaport.fulfillOrder block is the other side of that transaction that a seller would make.
It is confusing because the Seaport-js docs show the example as one full process to execute a bid/buy order.
While I not getting the error anymore because I'm not trying to run the seaport.fulfillOrder block as the bidder. Though, I'm not seeing the order show up on Opensea even though I can see that the order has been verified by following up the order with:

const validated = seaport.validate([order]);
const transaction = await validated.transact();
console.log('validated: ', await transaction.wait());

yes

do you know how to fulfill a listed nft item ( this nft was already on opensea marketplace) ?

The scenario is i'm a buyer, i want to buy listed item on opensea through seaport-js.

@scqsu
Copy link

scqsu commented Oct 19, 2022

Can someone help me understand why I get this error? I'm trying to buy a nft that's listed on opensea. The fulfiller is the owner of the nft, correct? I verified that the owner address is right. The message sounds like seaport thinks the owner doesn't have that token...

const provider = new ethers.providers.Web3Provider(window.ethereum)
const seaport = new Seaport(provider)
let [account] = await window.ethereum.enable()

const offerer = account // me
const fulfiller = "0x3649b5fA32d367BfAf218354cf5eB7Ab55AE1c46" // the address that owns the token

const { executeAllActions } = await seaport.createOrder(
  {
    offer: [
      {
        amount: ethers.utils.parseEther("0.0019").toString(),
        recipient: fulfiller,
      },
    ],
    consideration: [
      {
        itemType: 2, //ItemType.ERC721,
        token: "0x42921c64797b64499a3ad3a3cdbbfab7bee294fe",
        identifier: "1262",
        recipient: offerer,
      },
    ],
  },
  offerer
)

const order = await executeAllActions()
console.log(order)

const { executeAllActions: executeAllFulfillActions } =
  await seaport.fulfillOrder({
    order,
    accountAddress: account,
  });

const transaction = executeAllFulfillActions();

hi, do you solve this problem ?

@Sufiyan-dev
Copy link

This doesn't work like that, owner himself have to make an order and sign by himself and user have to creat other order.
For example:
Owner has 1 NFT
In order to sell this nft, the owner need to create an order where he will specify that he will give this nft and in return what he wants.
And if the same consideration matches by an buyer where the buyer want that nft and he is giving the same thing what owner wants then only the transaction will be successful.

@github-actions
Copy link

github-actions bot commented May 9, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Thank you for your contributions. If you believe this was a mistake, please comment.

@github-actions github-actions bot added the Stale label May 9, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale May 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants