Closed wiasliaw closed 1 year ago
Love your idea. However, with this, it incur a lot of cost on project owner site. If there is 300 refund nft, project owner need to pay 300 nft gas fee in order to claim back all the nft and sell it over to the market. A lot of project owner are going to say no no to this.
Question that I will ask myself is what critical problem will the project get if nft was return to EOA account? Would you mind to share a little bit more on the critical problems part and be more specific?
Previously, we are worrying that the project owner drain the fund by keep calling the refund function but this problem was solved by @tina1998612 over here https://github.com/exo-digital-labs/ERC721R/pull/9
Yeah, I am totally agree with you. We are working on it. Probably will put it on contract extended section. Here are the issues https://github.com/exo-digital-labs/ERC721R/issues/13 and https://github.com/exo-digital-labs/ERC721R/issues/12. Maybe you can discuss with project owner @elie222 and see how you can contribute on this part. 👍
Hey, I think it could be cool to offer an extension like this, but not sure I'd like to see this in the core.
Often when someone refunds it's a sign that the market doesn't want that NFT or the market can't handle that number of NFTs on sale. In many projects the floor price drops below mint price within a few days of mint. This is a sign that the project was overvalued and there wasn't enough demand for it. Too many NFTs existed or the price was too high. By refunding to the contract owner they can avoid putting them back on sale till the market is capable of absorbing the extra NFTs. For a project to have unsold items in its contract is unhealthy for the project (no secondary trading can really happen in this period as you may as well by from the contract).
@lawweiliang I agree with the cost on project owner. I think place back NFT into primary market is workable by calling ERC721.safeTransferFrom()
. Contract owner needs to call approveForAll
with ERC721 contract address. For user, they can prevent from taxing by market place like Opensea in primary market.
Another thought is if there are large amount of refunded token, is there any need to claim tokens out of the contract? If need, why to claim out all the token, not claim some of token?
Question that I will ask myself is what critical problem will the project get if nft was return to EOA account? Would you mind to share a little bit more on the critical problems part and be more specific?
It depends on which type of ERC721. If it is a farming or governance NFT, contract owners might have too much power or reward.
@elie222
For a project to have unsold items in its contract is unhealthy for the project.
I think that refunded item in contract owner's address has the same meaning of unsold item.
@elie222
For a project to have unsold items in its contract is unhealthy for the project.
I think that refunded item in contract owner's address has the same meaning of unsold item.
The difference is that the owner doesn't need to put them back on sale. In our case for example, we intend to hold those NFTs as the market doesn't want them. If a buyRefunded function exists then people can keep buying from it (at the same price as mint price I assume) which isn't necessarily healthy.
I'm trying to understand the benefit of returning the NFTs to the contract's ownership rather than to another address that can choose to do what they like with the NFTs?
A team could always choose to implement it this way but it feels like the default should be to return to the contract owner / refund address
@elie222
I think owner can choose the way to handle the refunded token. i.e. in public for unrevealed token, owner might choose to place back token into market. Let token in owner's hand is a waste. But after token is revealed, owner might choose to hold that token, because the market doesn't want them.
I think owner can choose the way to handle the refunded token. i.e. in public for unrevealed token, owner might choose to place back token into market. Let token in owner's hand is a waste. But after token is revealed, owner might choose to hold that token, because the market doesn't want them.
@wiasliaw
Yup, for my project, I will treat refunded item as unsold item. Even if the token haven't been revealed, if there is returns, I will sell the token to the secondary market. So the return token would not be sitting there and do nothing.
Thing are getting way more complex if send the return token to other contract and cause even more vulnerability. I still prefer simple and straight forward method. If owner not able to sell the NFT, return the picture back to the owner. What he/she want to do with the NFT, up to him/her. Peace.
@lawweiliang I agree with the cost on project owner. I think place back NFT into primary market is workable by calling
ERC721.safeTransferFrom()
. Contract owner needs to callapproveForAll
with ERC721 contract address. For user, they can prevent from taxing by market place like Opensea in primary market.
Technically, yup. Possible. I understand your concern. For me personally, I still prefer straight forward way. Primary market not able to sell, then sell it over secondary market. Easy for us to explain to the community as well. Further, when you explain it to project owner, they will prefer simple and cheaper way. 👍
Another thought is if there are large amount of refunded token, is there any need to claim tokens out of the contract? If need, why to claim out all the token, not claim some of token?
Why need claiming? At the end, owner still want to get back the nft. Why not directly send the refund token to owner address? Wouldn't it be better?
Yeap. remain here for further discussion.
For Exodia we did return it for sale btw. For CryptoFighters we don't want them back on primary contract though
replace
refundAddress
toaddress(this)
I know it is convenient to let an EOA to do something with refunded NFT. However, it may caught some bad things.
Refund
should place NFT back into primary market and user can choose to mint NFT or choose to buy NFT which refunded by other.