如何从另一份智能合约中烧掉智能合约的令牌?
假设在区块链上具有内部功能_BURN和100000000令牌的总供应,我想写一份新的智能合约,可以刻录令牌tokena并从供应中脱颖而出?我尝试了许多解决方案,但仍然无法调用函数_Burn
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
假设在区块链上具有内部功能_BURN和100000000令牌的总供应,我想写一份新的智能合约,可以刻录令牌tokena并从供应中脱颖而出?我尝试了许多解决方案,但仍然无法调用函数_Burn
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
由于该功能是内部,因此这意味着它只能在合同本身或从其衍生的合同中内部访问。
您可以使用ERC20Burnable扩展名(下面的链接)或与外部/公共修饰符的令牌合同内实现_burn函数。这样,其他合同可以调用该功能。
erc20 burnable burnable版本:
token合同:
燃烧合同:
您的合同:
令牌合同:
燃烧合同:
减少供应已在burn功能内实施,因此无需担心。
请记住,燃烧的合同需求需要津贴才能花费所有者代币。您可以通过将令牌合同的批准功能与烧合合同的地址作为参数:
在部署燃烧合同时,请确保将令牌地址添加为构造函数参数。
Since the function is internal, it means it can only be accessed internally within the contract itself or in contracts deriving from it.
You can either use ERC20Burnable extension (link below) or implement the _burn function inside your token contract with external/public modifier. This way, other contracts can call the function.
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/ERC20Burnable.sol
ERC20Burnable version:
Token contract:
Burning contract:
Your contract version:
Token contract:
Burning contract:
Decreasing supply is already implemented inside _burn function, so no need to worry about that. https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L290
Keep in mind that the burning contract needs allowance to spend the owner's tokens. You can do that by using approve function of the token contract with the burning contract's address as the parameter:
While deploying the burning contract, make sure to add the token address as the constructor parameter.