我正在开发一个记分系统,我想用ERC-20代币.
对于我来说,“分发点/代币”给执行某些任务的钱包地址是很清楚的,但是,我的业务规则也有“惩罚”,钱包地址应该是松散点/标记.
我怎样才能做到这一点?当我分发一个令牌时,它不能从第三方地址中“删除”。对吗?
你怎么做?
谢谢
发布于 2020-12-12 06:29:28
在我的头上-你要使用你的自定义ERC20令牌吗?如果是,则仅在transfer方法中添加条件,使用户只传输令牌,而不锁定令牌(用户不受惩罚的令牌数量)。在每次传输时,条件将检查必须发送的令牌金额是否等于或小于用户未锁定余额。
如果使用的是已部署的ERC20令牌,则不能禁止用户使用应该禁止的令牌数量。您可以禁止在另一个智能联系人中使用令牌,但不能不允许用户将令牌从一个钱包地址发送到另一个钱包地址。
发布于 2020-12-13 23:00:19
你得把你的顾虑分开。
一般来说,传输的令牌超出了您的控制范围。因此,如果您想要削减余额,您应该在您自己的合同中持有标记,并将其作为内部会计事项,首先从deposit和withdraw函数开始,并建立一个存储您的合同负债的结构:
mapping(address => unit) public playerTokenBalances;在这种简单的模式下,你的合同中的代币“正在使用”,而收回的代币则安全地掌握在持有者手中--避免被大幅减刑的可能性。没有任何函数,您可以写,将在另一个钱包中花费令牌未经同意。
将奖励系统概念化可能就足够了,这样人们就会更愿意将他们的令牌(索赔)大部分时间留在您的合同中。而且,由于这是你的合同,这些余额将服从你的规则。
如果您发现这不足以满足您的用例,那么就有可能创建一个非标准的ERC20令牌契约来实现一些幕后逻辑。严格地说,ERC20是一个标准接口和一组必须实现的最小行为集,但它不是可以存在的函数的限制,也不是在契约中展开的逻辑。
这样一种特别的实施将得到非常仔细的考虑,因此通常最好选择第一种选择。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/91056
复制相似问题