今年一月份,以太坊联合创始人 vitalik 发表了一篇题为《Soulbound》的文章,里面提到了灵魂绑定这一概念的出处——《魔兽世界》,以及由此联想到的不可转让的「灵魂绑定 NFT」的概念。
到了 5 月份,E. Glen Weyl、Puja Ohlhaver 以及 vitalik 又联合撰写了一篇题为《去中心化社会:找寻 Web3 的灵魂》的论文,谈及了灵魂绑定 NFT(又称 SBT)的多种使用场景,其中包括无抵押借贷、社交恢复钱包、灵魂空投、DAO 防御等。
那么“灵魂绑定”到底意味着什么,以及相关的代币标准讲了一些啥?
本文先通过《魔兽世界》的规则来解释灵魂绑定这个概念,再通过 Micah Zoltu 撰写的《EIP-5114:灵魂绑定代币》标准草案来帮助大家进一步认识灵魂绑定 NFT(SBT)的意义。
魔兽世界里的“灵魂绑定”
在《魔兽世界》这个游戏当中,很多顶级装备或游戏道具都是存在“Soulbound”这个设定的,简单理解就是玩家在拾取后,这些物品就会和游戏角色进行绑定,无法在交易市场进行流通。
(例如,玩家组团杀死黑暗神殿中的最终 BOSS 伊利丹之后,就有极小的机率获得外表酷炫的橙色武器埃辛诺斯战刃。)
相比那些由玩家锻造出来、可交易的武器装备,同等级的灵魂绑定装备属性要更好,也更难以获得。
那么“灵魂绑定”物品真的就是不可交易的吗?
并非如此,实际上,聪明的玩家们早就通过两种方式绕过了这种绑定。
第一种是所谓的“G 团”服务,简单说就是组织者(团长)组建一只专业过游戏副本的团队,并空出几个位置留给对“灵魂绑定”物品有需求的消费型游戏玩家,一旦出现了他们需要的“灵魂绑定”物品,就可以进行拍卖活动,而消费者支付的费用,最后需要在“G 团”内部进行分配,通过这种方式,“灵魂绑定”变相实现了可交易,但仅限于绑定前。
除此之外,即便是“灵魂绑定”后的装备、物品或坐骑,也可以通过账户交易的方式进行转移,也就是说,魔兽世界里的“灵魂绑定”概念,并不是指完全不可转移的意思,它只是和游戏角色进行了绑定。
(注:图片来自某第三方交易平台)
那 vitalik 等人提出的灵魂绑定 NFT(SBT)的概念又是什么样的呢?我们可以通过 EIP 5114 这个代币标准草案来进行了解。
(注意,该 EIP 目前还是 Draft 阶段,因此后期可能会出现一些更改,此外,Tim Daubenschütz 等人也撰写了一个类似的EIP-4973 代币标准,因此哪个标准最终会被社区广泛接受,目前还存在较大的不确定性)。
EIP 5114:灵魂绑定代币(Soulbound Token)标准
描述:在铸造时附着在“灵魂”之上的代币,此后无法转移这种代币。
作者:Micah Zoltu (@MicahZoltu)
状态:草案阶段(Draft)
类别:ERC
创建时间:2022-05-30
要求:EIP 721
摘要
灵魂绑定代币是指在铸造时绑定到另一个非同质化代币(NFT,例如一个 EIP-721 代币)的代币,并且在铸造后不能进行转移。
规范
```solidity
interface IERC5114 {
//在创建这类代币的新实例时激发
//此事件 ** 不能 ** 为同一个 `tokenId` 激发两次
event Mint (uint256 indexed tokenId, address indexed nftAddress, uint256 indexed nftTokenId);
//返回拥有该 token 的 NFT token
//如果 token 还没有被铸造,这个函数 ** 必须 ** throw
//此函数 ** 必须 ** 在每次生成后调用时始终返回相同的结果
//此函数 ** 必须 ** 返回与原始 `Mint` 事件中为 token 找到的值相同的值
function ownerOf (uint256 index) external view returns (address nftAddress, uint256 nftTokenId);
//返回一个抗审查的 URI,其中包含有关此 token 集合的详细信息;
//由此返回的元数据与通过 `tokenUri(uint256)` 返回的元数据合并
//collectionUri** 必须 ** 不可变且内容可寻址(例如,IPF://)
//collectionUri** 不能 ** 指向可变/可审查的内容(例如 https://)
//来自“tokenUri”的数据优先于此方法返回的数据
//`collectionUri` 中的内容引用的任何外部链接也必须 ** 遵守上述所有规则
function collectionUri () external view returns (string collectionUri);
//返回一个抗审查的 URI,其中包含有关此 token 实例的详细信息
//tokenUri ** 必须 ** 是不可变的并且内容可寻址(例如,ipfs://)
//tokenUri ** 不能 ** 指向可变/可审查的内容(例如,https://)
//来自此的数据优先于 `collectionUri` 返回的数据
//`tokenUri` 中的内容引用的任何外部链接也必须 ** 遵守上述所有规则
function tokenUri (uint256 tokenId) external view returns (string tokenUri);
基本原理
1、不变性
通过要求 token 永久不可移动,我们既保证绑定到单个 NFT 的灵魂绑定 token 集合之间的不可分离性和不可合并性,同时允许用户积极缓存结果。
2、需要URI内容可寻址
灵魂绑定 token 是附加到一个角色上的永久徽章/指示器。
这意味着不仅用户不能转让所有权,而且铸造者本身也不能撤回、转让或更改所有权。
这包括了转换或删除任何远程内容,作为审查或操纵特定用户的手段。
3、tokenUri 数据格式
“collectionUri()”和“tokenUri(uint256)”指向的数据格式被有意排除在本标准之外,以支持将来可以迭代的单独标准。
无论数据格式的细节如何,不变性约束是唯一定义的东西,以确保维护这个 token 的精神。
向后兼容性
这是一种新的 token 类型,并不意味着向后兼容除现有可行灵魂(如 EIP-721 代币)之外的任何现有代币。
安全注意事项
一些项目方可能会声称实施了这个 EIP,而对于用户而言,我们需要验证他们是否如实做到了这一点。
代币作者可以创建一个 token,当我们在对其 API 表面进行初始探测时,它可能看起来遵循了规则,但实际上并非如此。
例如,合约可允许通过某种机制进行转账,而只是最初不使用它们。
还应该明确的是,灵魂绑定代币并不是绑定的人类,而是绑定到了一个角色。
而角色是指随着时间的推移,收集多个灵魂绑定代币以建立徽章集合的任何参与者(甚至可以是一群人)。
这个人物角色可能会转移给另一个人或另一组人,并且与角色交互的任何人,都不应假设该角色背后有一个永久不变的人。
此外,一个灵魂绑定代币可以绑定到另一个灵魂绑定代币。
理论上,如果链中的所有代币同时创建,它们可能会形成一个 loop 循环。如果检测到循环,尝试走这样一条链的软件应该注意制定退出策略。
版权
通过 [CC0](../LICENSE.md) 放弃版权和相关权利。
关于灵魂绑定 NFT 的一点看法
相比魔兽世界这类游戏,区块链账户的可转让性会更低,因为私钥与用户地址是绑定的,这意味着即便某个区块链账户存在着较大的价值,用户之间也无法有效通过第三方平台或私下的方式进行账户交易(存在着巨大的风险)。
尽管如此,我们依旧不能简单假设「灵魂绑定 NFT」 就是与用户本身进行了绑定,而是需要考虑“灵魂交易”的可能性,因此,对于无抵押借贷用例而言,可能仅仅依靠链上信用值是不够的,而其他的一些灵魂绑定 NFT 用例,或多或少都会存在这样的问题。
在笔者看来,「灵魂空投」可能会是和大家最息息相关的一个点,就目前而言,web3 项目方为了更好地建立社区,会选择给早期活跃用户空投免费的代币,而这自然鼓励了女巫攻击行为(即一个用户使用多个地址进行交互),结果是,项目方想法设法去拉黑女巫账户,而用户则在想法设法躲避反女巫措施,这对双方而言都是不利的。
而「灵魂空投」的方式,可以让项目方更准确地瞄准目标空投用户,这反过来也鼓励用户精心培养自己的“灵魂”,而不是将时间与精力放到女巫攻击上面。
总的来说,「灵魂绑定 NFT」作为 vitalik 等人提出的去中心化社会的核心概念,它依旧处于非常早期的发展阶段,另一方面,对于用户来说,想办法让自己的“灵魂”变得有趣,可能会是非常有价值的。
相关资料:
1、https://vitalik.ca/general/2022/01/26/soulbound.html
2、https://www.defidaonews.com/article/6750230
3、https://github.com/ethereum/EIPs/pull/5114/files