Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文
就在2023.3.7日,由 10K Universe 提出的以太坊改进提议 EIP-6147 已移至最终版本(Final)!
, W3 k5 N' t% B# U" d3 V该标准是 ERC-721 的扩展,分离了 NFT 和SBT的持有权和转让权,并定义了一个新的可设置到期时间的"守卫者"角色Guard,可使得 NFT 防盗、借贷、租赁、SBT 等更具灵活。
3 h! L5 }) w( X* v本文将系统讲述ERC-6147的实现机制,并对比往期NFT租赁协议专案ERC-4907、ERC-5055,来综合分析点评此协议以及适合的应用场景!9 x% v0 r. T7 I
$ q4 D- a; f# Y" y; U9 @  D
5 g  g2 H# c! D3 w' H" s/ l( i$ x

+ q% o, H, W' w1、背景7 ~7 [' S( Y2 c% F. J# M' K' S. @
NFT已经可谓是个老生常谈的话题了,借助链上的不可篡改特性以及合约本身的自动化运作,实现了链上资产的确权与管理,笔者也从标准协议,租赁拓展协议,乃至于NFT交易市场的几种主流模式来撰写过多篇文章长文。9 S* J, A& e2 |3 Y' ^
如果要论证NFT的优势可能可以罗列上几页纸,但要论证NFT的劣势,则千言万语汇聚成一个词:流动性!
9 q# K* k/ w; v当然各位可能要质疑的是,流动性不足的困境与实现产权分离标准有什么关系呢?
' O. {! J, Z# X, w* [, H' {; }在笔者看来,事实上NFT流动性的困境更多不是源于NFT协议本身,对ID的非同质化机制和限定ID区间导致的,哪怕是近乎无穷的ERC20token难道就不缺乏流动性了吗?更重要的是,流动性本身是出于对金融产品的定价诉求而产生的话题,如何让NFT本身具有使用价值,便成了让价值有所依归而不是只依赖于市场操作的协议。$ E; x* C9 m  H( J. m
影响使用价值NFT使用价值的,也正是NFT协议本身
2 I2 J5 j5 ^: X$ B
9 u7 ^4 x7 F1 M0 s% ]$ K
4 _' p# c/ r9 x* }3 r1.1、产权耦合,高价值NFT会倾向于安全避险
- n; d1 u, _% G" C+ U8 Q  b目前NFT被盗的案例很多,然而现有的NFT防盗方案,比如将NFT转入冷钱包等都会使得NFT的使用不便。
- k6 P/ G" N* W8 n: o$ O$ W并且在目前的NFT借贷中,NFT所有者需要将NFT转移到NFT借贷合约中,NFT所有者在获得借贷期间不再拥有NFT的使用权,这边是产权耦合的问题,这其实和我们现实中购买房产再房产抵押换取流动性资金时,再非风险条件下是不用被占用房屋使用权的情况很不同。) ^; E/ _+ b& q0 i' J: m( q5 h
记忆尤新的是,猴子APE空投时被攻击者用闪电贷结合NFTX进行攻击
8 q" R- ~, u) Q1 J0 ?3 q
" J1 k2 p0 _% D% K6 o" A原事件分析可拓展阅读:EIP-5058 能否防止NFT项目方提桶跑路?  c# M$ m% b# |# i
整件事情里,唯一受损的则是质押了猴子的用户,本来是赚取微不足道的时间利差却痛失了ape的海量空投。9 {7 R; N5 i3 H$ N$ D1 E2 T' \# o
同样的,产权耦合的还有SBT的问题$ Y. `0 C7 ~$ K
对于SBT,目前主流观点认为SBT是不可转让的,这使得SBT与以太地址绑定。但是,当用户地址的私钥泄露或丢失时,找回SBT将成为一项复杂的工作,并且没有相应的标准。SBT本质上实现了NFT持有权和转让权的分离。当SBT所在的钱包被盗或不可用时,SBT应该是可以恢复的。
5 m: p1 ?/ b& v- h, b) A6 |" x例如,如果一所大学向其毕业生颁发基于文凭的SBT,如果大学后来发现毕业生有学术不端行为或损害大学声誉,它应该有能力收回此文凭的SBT。
5 Q3 \( F& S/ j2 t( M* E; U5 V2 G2 z$ f0 }1 ^, [
; t- [! d2 W$ |# t/ Z) J
1.2、产权分离分案,强制性维度难以把控
4 _# I) o( G% U7 a: b) g过往十四也解读过若干尝试产权分离的方案,例如ERC-4907和ERC-5058,不可避免的最大的难题在于强制性程度的衡量,这并不是方案本身的问题,而是方案本身的哲学理念问题。9 v! n1 I6 y4 N& d# S' x7 p
2 S! g2 z: |7 X5 `$ X$ ~+ c
/ ]* }( o$ Y' }0 R5 [: t) {' M' ~5 b
1.2.1、简单哲学ERC-4907,定义愿景剩下交给共识6 h: I& ^$ v" V3 E0 m3 Q
在2022-07月,NFT 租赁市场 Double Protocol 提交的可租赁 NFT 标准“EIP-4907”通过了以太坊开发团队的最终审核,成为第 30 个 ERC 标准“Final”的状态。
7 @  c9 C+ ~* |7 E3 B. [% r0 H( r代码极为简单仅有72行,使用这个标准,就是在原来的ERC721之上新增! ]% I: |7 a) k2 Y" I+ \
  • 1个事件(用于通知链下应用称为事件)
  • 3个方法(用于实现链上数据管理功能)
  • 0 J: F1 `% x8 s/ u& F- x
struct UserInfo { address user;// 用户地址 uint64 expires;//用户到期时间}归咎原理,其实4907只是新增了一个数据对象UserInfo 在所有权的概念之外增加“用户”的维度,但是毕竟其强制性有限,只要转移就能强行终止出租授权8 ]2 z' i6 o) H" k4 c, G* G
详情可拓展阅读:/ d  ?7 {0 @8 i4 {/ T7 z7 r
  • 721租赁协议解读:以太坊新标准EIP-4907是怎样实现NFT租赁的?
  • 1155租赁协议解读:NFT租赁提案EIP-5006步入最后审核!4 Y* k9 L* Y- p4 D  R# f* p9 m$ ]

" F- n( r8 |( Q& W, |4 H1 q& b# b# F/ m, w- f7 Q2 c
1.2.2、0信任哲学的ERC-5058,代码即法律
* G0 m3 [  ?$ J  f+ d0 C" t# v他本质上是对NFT的锁定状态进行管理,让项目方在继承5058实现的NFT项目中,提供锁定即转移的功能,也可以在继承中实现更多功能比如版税等
8 z/ M/ H& Z/ ]: n* H+ o# ?他封装提供了若干提供方法:只有用户许可以及项目方执行之后才会完全锁定: Z. Z3 ]7 z7 J) {7 ~' Y% e
用户可调用
3 r& r) l5 k! V: s$ t  M7 Z1 z
  • lockApprove(许可锁定单个NFT)
  • setLockApprovalForAll(许可锁定该地址下全部NFT); T* |9 x& I# ]) A3 X
项目方合约调用:8 R+ r  n6 C( u% {
  • lockFrom(锁定用户的NFT)
  • unlockFrom(解锁用户的NFT)/ c, X- f$ c8 g0 z7 q9 B8 M% h
锁定期的定义也极具强制性,近乎只依据设定之初的时间点
9 L7 X" j$ Y4 c/ \% V项目方(第三方)锁定 NFT 时,需要指定锁定过期的区块高度,该高度必须大于当前区块高度。锁到期后,NFT 自动释放,才可以进行转移。$ \( `% F5 P: L0 B3 b, k
项目目前还是处于草稿阶段,或许强制性过高以及用户项目方双向操作的较高成本所致
3 {9 U  H3 q/ A7 \6 a$ H1 s详情可拓展阅读:EIP-5058 能否防止NFT项目方提桶跑路?
1 H. ?- Y! o) T7 U: `' I9 n讲述完上述完全不强制4907,以及完全强制的5058,便到了本文主题:最新通过以太坊基金会审查,确定为Final的ERC-6147,虽然他原生的标题是:《Guard of NFT/SBT, an Extension of ERC-721 》,但十四君从系列的租赁研究经验来看,他更应该称是《半强制的NFT产权分离标准》* m' a9 c6 n5 I  }/ u0 @1 V

2 }; {; Y7 ^: n% Q
" u0 s0 @. O; P! ~2、ERC-6147的运作机制
, @. T4 o. \2 X5 w* n  |" ?此协议整体代码也非常精简且高度复用,属于对ERC721的拓展标准,但是要注意,如果使用了他,则转移的操作可能与常规的721的逻辑不同,操作不当可能容易被钓鱼,具体如何咱们展开说说。
7 q3 r7 N0 D. f2 b" s建议拓展阅读:【源码解读】你买的NFT到底是什么?
/ w. g2 e2 i7 D0 \9 V* U
3 [) T( I: u5 r1 G* V8 x0 @8 T+ o' J/ f* Y) b" l! W& Z8 e
2.1、Guard是什么?谁能控制?
& o8 s' w. s# W0 o) y首先ERC-6147定义了一个名为Guard(守卫者)的角色,和4907的UserInfo很相似,4 e7 K& V5 w" f% d( R$ N. @1 Q
struct GuardInfo{ address guard; // 守卫者地址, uint64 expires; // 到期时间,}而Guard只有该NFT的当前所有者地址以及有代扣权限的地址,可以通过changeGuard设置,9 [  `+ K& A: \' O" `, q* k
通过源码可以看到,在设置Guard的时候若干的细节// 防止误锁定,所以Guard不能设置为0地址
( L9 g# m# ~6 ]3 F4 H* A2 urequire(newGuard != address(0), "ERC6147: new guard can not be null"); 5 H* H/ W+ r' w1 Q" P
// 只有Guard可以修改自己require(guard == _msgSender(), "ERC6147: only guard can change it self");
* a2 }1 q7 A; Y* V// 只有nft的所有者或者获得授权者可以设置Guardrequire(_isApprovedOrOwner(_msgSender(), tokenId), "ERC6147: caller is not owner nor approved");; x3 k4 ]  S9 A. i) w. S
设置成功后,任何人都可以通过guardInfo 方法来查询某个NFTID,当前的Guard信息,同时这里也沿用了和4907一样的基于时间戳的设计,所以是到期无需二次上链交易,就可以自动失效。
$ X/ K5 q8 X+ l/ w, T! C那Guard的身份,谁可以去除掉呢?只有Guard自己以及时间(到期)可以。
  Z% }6 R4 W& y$ D& h/ _0 y- h0 O/ m( u) C9 @4 {) |* |! U
7 J* Q, t7 p3 s
' N/ j9 a, \, a. h5 V& U0 l
2.2、Guard能做什么?
0 o! W- A2 N1 n0 e首先具有了强制转移权,对于设置了Guard的NFT而言,在进行transferFrom的时候,会查询交易发起方是否是守卫地址,是才能转移。
6 I% |5 t; |7 q( @: N5 z  T2 G5 y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

虹桥大宝剑 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    26