首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NFT市场是如何运作的?

NFT市场是如何运作的?
EN

Ethereum用户
提问于 2021-05-12 18:08:37
回答 2查看 451关注 0票数 4

如果我想实现一个小的NFT市场,并希望用户能够将项目出售,而其他用户购买这些,我应该怎么做呢?我是否需要在每次有人提出要出售的东西时,签订一份得到批准的市场合同?当有人购买该商品时,合同将执行safeTransferFrom函数吗?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2021-05-12 18:29:20

是的,这是人们通常做的一种方式。

如果您的市场只适用于一个特定的令牌,则可以使用更好的选项。

票数 0
EN

Ethereum用户

发布于 2021-07-17 03:26:33

我用这个合同:

代码语言:javascript
复制
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.21 <0.9.0;

import '@openzeppelin-contracts/contracts/token/ERC721/ERC721.sol';
import '@openzeppelin-contracts/contracts/finance/PaymentSplitter.sol';

contract BALANCE is ERC721 {
    event NftBought(address _seller, address _buyer, uint256 _price);

    mapping (uint256 => uint256) public tokenIdToPrice;
    uint public nextTokenId;
      address public admin;

    constructor() ERC721('Balance', 'BALANCE') {
          admin = msg.sender;
    }
    
      function mint(address to) external {
    require(msg.sender == admin, 'only admin');
    if(nextTokenId < 2){_safeMint(to, nextTokenId);
    nextTokenId++;
    }
  } 
    
              function _baseURI() internal view override returns (string memory) {
    return 'https://.herokuapp.com/';
  }

    function allowBuy(uint256 _tokenId, uint256 _price) external {
        require(msg.sender == ownerOf(_tokenId), 'Not owner of this token');
        require(_price > 0, 'Price zero');
        tokenIdToPrice[_tokenId] = _price;
    }

    function disallowBuy(uint256 _tokenId) external {
        require(msg.sender == ownerOf(_tokenId), 'Not owner of this token');
        tokenIdToPrice[_tokenId] = 0;
    }
    
    function buy(uint256 _tokenId) external payable {
        uint256 price = tokenIdToPrice[_tokenId];
        require(price > 0, 'This token is not for sale');
        require(msg.value == price, 'Incorrect value');
        
        address seller = ownerOf(_tokenId);
        _transfer(seller, msg.sender, _tokenId);
        tokenIdToPrice[_tokenId] = 0; // not for sale anymore
        payable(seller).transfer(msg.value); // send the ETH to the seller

        emit NftBought(seller, msg.sender, msg.value);
    }
}

我叫allowBuy('tokenId','prince_in_WEI')来设置id价格,然后发送buy('tokenId'),尽管我对它有很大的异议。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/98826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档