搜索
NFT元宇宙Web3
近期热门

创建灵魂绑定治理令牌 5 分钟操作指南

波动

Soulbound 代币或 SBT 现在很热门。真的很滚烫。

在 Puja Ohlhaver、Vitalik Buterin 和 Glen Weyl 最近的论文“去中心化社会:寻找 Web3 的灵魂”中描述,SBT 本质上是不可转让的 NFT。因为它们是不可转让的,所以 SBT 可以与一个特定的人或“灵魂”相关联,并用于代表个人独特的链上身份。你可以想象灵魂绑定的代币被用来代表各种重要的永久信息,例如投票历史或链上工作凭证。借助灵魂绑定令牌的集合,链上“灵魂”或身份可以代表有关特定人的明确的、分散的链上信息库。

SBT 的一个有希望的用例是 DAO 治理。例如,灵魂绑定代币可用于实施一人一票的规则,或强制执行特定提案的链上投票要求。

让我们开始动手建造一个!

尽管名字听起来很有bigeer,但 SBT 是脚踏实地的技术。我们已经知道构建它们所需的所有代码。在这个例子中,我们将构建一个不可转让的 NFT,它可以与OpenZeppelin Governor一起使用来为 DAO 提供动力。

步骤1

首先,我们将打开OpenZeppelin 向导来构建我们的合约基础。

由于我们正在构建 NFT,我们将选择“ERC721”作为我们的合约类型,“Mintable”,以便我们可以创建新的和“投票”,以便与 DAO 兼容。

第2步

现在我们有了基础,我们需要自定义我们的代码。为此,让我们通过单击“在 Remix 中打开”在 Remix 中打开我们的代码。

代码应如下所示:

Github:https ://gist.github.com/crazyrabbitLTC/d1298c1666c1fb3f05cf2ff11ecd5a07

我们已经拥有启动兼容 DAO 的 NFT 代币所需的所有代码!(OpenZeppelin Contracts Wizard非常棒)。现在,我们只需要进行一些更改以使其“灵魂绑定”(即不可转让)。

在 OpenZeppelin ERC721 Contracts API文档中,你会发现一些我们将用来控制代币可转移性的钩子。

我们已经在使用函数 _afterTokenTransfer(address from, address to, uint256 tokenId) 但我们需要添加一个新函数来检查令牌转移之前以阻止它发生。

要阻止令牌转移,请将以下内容添加到你的代码中:

Github:https ://gist.github.com/crazyrabbitLTC/00a969fbeb4baf9a266ce74eb9390416

现在,在任何人发送令牌之前,require 语句将检查是否:true == false

当它显然不是时,将阻止传输并显示错误消息Err. token is SOUL BOUND。

第 3 步:

很好,除非我们有问题。这个钩子将在所有传输上运行,这意味着它甚至会阻止铸币,这在技术上是从零地址到真实地址的传输。这不是缚魂信物!

为了解决这个问题,我们应该检查发件人是不是零地址,这样我们就知道这是一个铸币交易而不是转账。让我们更新我们的代码来检查这一点:

Github:https ://gist.github.com/crazyrabbitLTC/4c0fa2bfab0334a36e8575ac0ea5b2ea

完美!现在我们有了一个可以铸造但不能转移的灵魂绑定 NFT。这非常适合不可转让的投票系统,或任何你不希望参与者在公开市场上出售的徽章。因为我们将 ERC721 与 Votes 扩展一起使用,所以我们的新 SBT 也可以在带有 OpenZeppelin Governor 的 DAO 中使用。

最终代码:

开始玩儿吧~

编辑于 2022-06-04 10:46
「 真诚赞赏,手留余香 」
赞赏

发表评论已发布0

手机APP 意见反馈 返回顶部 返回底部