Nft

如何創建每個代幣固定美元價格的 Erc721 合約(例如,1 nft 應始終花費 200 美元,無論乙太幣價格如何)

  • June 15, 2022

我正在創建一個 Erc721a 合約,我想將我的代幣價格設置為 200 美元,為此我使用了 chanlink 的聚合器 v3 介面,它返回美元價值,但我應該如何使用它呢?如果有任何範常式式碼或任何具有相同功能的智能合約,請分享!謝謝。

例如,你可以這樣寫

   function getLatestPrice() public view returns (int) {
       (
           /*uint80 roundID*/,
           int price,
           /*uint startedAt*/,
           /*uint timeStamp*/,
           /*uint80 answeredInRound*/
       ) = priceFeed.latestRoundData();
       return price;
   }
   
   function mint() public payable returns(uint256 tokenId) {
       int oneEthInUsd = getLatestPrice(); // 1 ETH in terms of USD
   
       // If 1 ETH = 3274,72773030 USD

       // 1 ETH : 3274,72773030 USD = X ETH : 200 USD
       // X = 1 * 200 / 3274,72773030

       int twoHundredUsdInEth = 200 ether / oneEthInUsd; 
       require(msg.value >= uint(twoHundredUsdInEth), "The Price is 200 USD"); 

       // the rest of your minting function logic
 }

考慮使用 $ DAI or $ USDC 用於鑄幣支付,而不是來自 oracle 的價格饋送。

引用自:https://ethereum.stackexchange.com/questions/130261