0

构建以太坊 DApp:使用自定义代币投票

suchonaseo
3月前 34

在本关于使用以太坊构建 DApp 的教程系列的第 5 部分中,我们讨论了向故事添加内容,研究如何添加参与者从 DAO 购买代币以及向故事添加提交的功能。现在是 DAO 最终形式的时候了:投票、列入黑名单/取消黑名单以及股息分配和撤回。为了更好地衡量,我们将添加一些额外的辅助函数。  如果您迷失在这一切中,完整的源代码可以在repo中找到。 投票和提案 我们将发布提案并进行投票。我们需要两个新结构 提案将包含选民映射,以防止人们对提案进行两次投票,以及其他一些应该是不言自明的元数据。投票要么是赞成票,要么是反对票,并且会记住投票者以及他们以某种方式投票的理由,以及投票权——他们想要为该提案投票的代币数量。

 

 

 

我们还添加了一系列提案,以便我们可以将它们存储在某个地方,以及一个用于计算提案数量的计数器。 现在让我们构建它们的附带函数,从投票函数开始 注意函数 WhatsApp 号码数据 修饰符:通过将该投票要么是赞成票,要么是修饰符添加到我们的合约中,我们可以将其附加到任何未来的函数,并确保只有代币持有者才能执行该函数。这是可重复使用的安全检查! 投票功能会进行一些健全性检查,例如投票权是否为正、投票者拥有足够的代币来实际投票等。然后我们从存储中获取提案并确保它既没有过期也没有已经执行。对已经完成的提案进行投票是没有意义的。我们还需要确保此人尚未投票。

 

 

我们可以允许改变投票权,但这会给 DAO 带来一些漏洞,比如人们在最后一刻撤回选票等。也许是未来版本的候选者? 然后我们在提案中注册一个新的投票,更改当前结果以便于轻松查找分数,最后发出 Voted 事件。但什么是token.increaseLockedAmount? 这段逻辑增加了用户锁定的代币数量。该函数只能由代币合约的所有者(此时希望是 DAO)执行,并且将阻止用户发送超过注册到其帐户的锁定金额的代币。该锁定在提案失败或执行后解除。 现在让我们编写建议删除条目的函数。 投票删除和列入黑名单 正如本系列第 1 部分中所建立的,我们计划了三个条目删除功能: Learn to Code with JavaScript 删除条目:当投票确认后,目标条目将被删除。

最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!