【问题标题】:Show the USD value of the lottery prize-pool显示彩票奖池的美元价值
【发布时间】:2021-10-13 07:10:16
【问题描述】:

我做了一个彩票合约,我需要添加以太坊奖池的美元价格。

我用 axios 试过了,但还是看到 NaN

功能

async componentDidMount() {
    const manager = await lottery.methods.manager().call();
    const players = await lottery.methods.getPlayers().call();
    const balance = await web3.eth.getBalance(lottery.options.address);
    const axios = require('axios');
    const ratios = await axios.get('https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC,USD,EUR');
    const USDPrice = balance * ratios.USD;
   

    this.setState({ manager, players, balance, USDPrice});
  };

我调用函数的地方

<p>There are currently<b>{" "}
          {this.state.players.length}</b> people entered, competing to win<b>{" "}
          {web3.utils.fromWei(this.state.balance, "ether")} ETH! **{this.state.USDPrice}**</b>
        </p>

【问题讨论】:

  • 您确定ratios.USD 和/或balance 是可乘的实际数字/整数吗?试试console.logtypeOf..
  • 您通过 axios 的调用返回了{"BTC":0.06838,"USD":3137.15,"EUR":2686.85},所以在使用ratios.USD 时应该没问题,但是balance 怎么样?
  • @iLuvLogix 余额是从智能合约 (Solidity) 导入的,它是 uint256

标签: javascript node.js reactjs web3


【解决方案1】:

Axios 返回一个对象,其中data 是您想要的实际响应。也就是说,您需要访问 data 值才能从 API 中正确检索数据。一种方法可能是:

// ...
const ratios = (await axios.get('https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC,USD,EUR')).data;
// ...

【讨论】:

  • 欢迎来到 StackOverflow!请花一些时间来详细说明您的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
相关资源
最近更新 更多