3

我有一份ERC721合同,但我有一个问题,我正在尝试以另一种货币设置价格,例如UNIorSUSHI但问题是我不知道如何更改它,我对合同不太了解,这里是编码。

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

uint256 public constant NFT_PRICE = 1 ether;

我尝试做这样的事情

uint256 public constant NFT_PRICE = 1 UNI;

但这不起作用

4

2 回答 2

2

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

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

对于 ERC-777 代币,您可以使用收款处理程序

于 2021-04-02T09:22:27.990 回答
0

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

于 2021-11-26T16:48:46.593 回答