Solidity
如何為我的代幣設置動態買賣價格?
我已經建構了一個簡單的 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 的美元等值。