我有一份ERC721
合同,但我有一个问题,我正在尝试以另一种货币设置价格,例如UNI
orSUSHI
但问题是我不知道如何更改它,我对合同不太了解,这里是编码。
我想知道是否可以进行以下UNI
工作:
uint256 public constant NFT_PRICE = 1 ether;
我尝试做这样的事情
uint256 public constant NFT_PRICE = 1 UNI;
但这不起作用
以太坊本身只知道Ether
支付。
对于代币支付,您需要研究 ERC-20 标准及其transferFrom()
功能,以在您的 Solidity 智能合约中支持 ERC-20 代币支付。
对于 ERC-777 代币,您可以使用收款处理程序。
好吧,也许这个答案有点晚了,如果你想为任何非以太币设定价格,你需要使用 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 位小数,但有些不是,所以检查一下很重要