Solidity

如何為我的代幣設置動態買賣價格?

  • February 20, 2022

我已經建構了一個簡單的 erc-20 令牌。我使用 ethereum.org 程式碼上給出的程式碼作為參考。他們在那裡談到了設定我的代幣的價格。但是如何動態設置它,例如根據市場自動更改買賣價格?我從哪裡得到這個價格?Ethereum.org 已經說過一些關於數據饋送的內容,那是什麼?以及如何使用它?

獲取價格

首先,您必須了解價格。您可以使用Chainlink Price Feeds輕鬆獲取價格。

// note, this is using node.js syntax. see the docs for remix syntax
pragma solidity ^0.6.7;

import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";

contract PriceConsumerV3 {

   AggregatorV3Interface internal priceFeed;

   /**
    * Network: Kovan
    * Aggregator: ETH/USD
    * Address: 0x9326BFA02ADD2366b30bacB125260Af641031331
    */
   constructor() public {
       priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
   }

   /**
    * Returns the latest price
    */
   function getLatestPrice() public view returns (int) {
       (
           uint80 roundID, 
           int price,
           uint startedAt,
           uint timeStamp,
           uint80 answeredInRound
       ) = priceFeed.latestRoundData();
       // If the round is not complete yet, timestamp is 0
       require(timeStamp > 0, "Round not complete");
       return price;
   }
}

否則,您可以使用oracle以價格對 API進行 API 呼叫

讓它充滿活力

您需要一些鏈下服務來定期呼叫更新。您可以使用Chainlink 鬧鐘Chainlink cron 啟動器之類的東西,使其自動執行。您可以設置其中之一,以您希望的時間間隔呼叫您的價格更新契約(從上面部署)。

希望能幫助到你。

正如@Patrick Collins 上面所說,使用 Chainlink 和呼叫getLatestPrice()是可行的。但是你也可以做一個函式,通過getLatestPrice()在每筆交易中呼叫來確定價格,即當有人想要購買時,你呼叫getLatestPrice()並且在該函式中,你可以計算出 ETH 的美元等值。

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