我正在使用 Oraclize 进行一个项目,我从 coinmarketcap 获得 1 ETH 美元价格(1 ETH = 1e18 WEI),即
474.846
使用 Oraclize 的 parseInt
我可以将其解析为 uint256
。由于缺乏浮点数据类型,我在计算任何给定的美元价格有多少 wei
时遇到问题,即 0.001176470588235$
有什么想法吗?
您必须使用自己的小数偏移量,以便可以在合约中使用整数。因此,您不需要使用 1 wei = x 美元,而是需要说(例如)1 wei = x 一便士的千分之一,其中 x 是整数。您必须决定需要多少精度。
您应该先使用Chainlink等Oracle来获取ETH/USD的价格。
import {AggregatorV3Interface} from "@chainlink/[email protected]/src/v0.8/shared/interfaces/AggregatorV3Interface.sol";
function getLastPrice() public view returns(int256){
AggregatorV3Interface dataFeed = AggregatorV3Interface(
0x694AA1769357215DE4FAC081bf1f309aDC325306
);
(
,
int answer,
,
,
)= dataFeed.latestRoundData();
return answer;
}
答案将为您提供 ETH/USD 的最新价格(小数点后 8 位)(例如 346468256425)。 或者 ETH 最新价格 = answer/1e8 ; * 将 => 3464.68256425$*
现在您可以简单地将其转换为 wei/USD:
1 ETH = 1e18 WEI/美元 = answer/1e8 ;
希望能帮到你。