【问题标题】:Set price in Solidity contract using ERC-20 token使用 ERC-20 代币在 Solidity 合约中设置价格
【发布时间】:2021-04-02 04:58:05
【问题描述】:

我有一个ERC721 合同,但我有一个问题,我试图以另一种货币设置价格,例如UNISUSHI,但问题是我不知道如何更改它,我对合约不太了解,这里是代码。

我想知道是否可以使以下UNI 工作:

uint256 public constant NFT_PRICE = 1 ether;

我尝试做这样的事情

uint256 public constant NFT_PRICE = 1 UNI;

但这不起作用

【问题讨论】:

  • 你最好在Ethereum 上问这个问题而不是 Stack Overflow。
  • 谢谢!!我不知道它存在!
  • 您仍然可以 100% 在这里提问。欢迎在 stackoverflow 上提出所有编码问题。

标签: ethereum solidity contract nft


【解决方案1】:

以太坊本身只知道Ether 付款。

对于代币支付,您需要研究 ERC-20 标准及其transferFrom() 功能,以支持您的 Solidity 智能合约中的 ERC-20 代币支付。

对于 ERC-777 令牌,您可以使用 an incoming payment handler

【讨论】:

    【解决方案2】:

    好吧,也许这个答案有点晚了,如果你想为任何非以太币设定价格,你需要使用 erc20,uniswap 代币是 erc20,现在如果你想拥有固定数量那个代币(记住合约不可升级)你可能会做这样的事情uniToken.transferFrom(msg.sender,to,amount);记住代币也可以有小数,并且可能与以太小数不同,如果你想使用非固定数量,你将需要一个链环oracle 为您提供价格,例如,如果您想在 Uni 中设置 10 美元的金额,您将需要一个 oracle 来返回该值,然后您可以进行计算和其他事情,其他您需要知道的事情,在solidity中,表达式x ether只是糖语法,它的作用是返回x * 10 ^ 18的uint 256,因为这是在令牌和以太中处理小数的方式,所以如果你想要0.5个以太,你可以这样做@987654323 @ 或者这个5 * 10^17 或者这个500000000000000000 并且都代表完全相同的数字r,这是一种不丢失小数点的方法,大多数令牌和以太币都使用 18 位小数,但有些不是,所以检查这一点很重要

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 2021-05-15
      • 2021-05-17
      • 1970-01-01
      • 2018-01-06
      • 2021-10-17
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多