Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文
就在2023.3.7日,由 10K Universe 提出的以太坊改进提议 EIP-6147 已移至最终版本(Final)!- ?0 T2 z2 r7 y: f
该标准是 ERC-721 的扩展,分离了 NFT 和SBT的持有权和转让权,并定义了一个新的可设置到期时间的"守卫者"角色Guard,可使得 NFT 防盗、借贷、租赁、SBT 等更具灵活。
. V" z$ V$ O% J) G本文将系统讲述ERC-6147的实现机制,并对比往期NFT租赁协议专案ERC-4907、ERC-5055,来综合分析点评此协议以及适合的应用场景!& n0 r6 @9 a# A0 D2 ]2 W

6 h& m2 n* q8 l. C8 E; p- v0 R/ u5 Z4 T
( M& h* y" M. R5 O6 x5 Y
1、背景1 g2 C0 V+ I  G& r
NFT已经可谓是个老生常谈的话题了,借助链上的不可篡改特性以及合约本身的自动化运作,实现了链上资产的确权与管理,笔者也从标准协议,租赁拓展协议,乃至于NFT交易市场的几种主流模式来撰写过多篇文章长文。  U/ n6 X; z1 {- f& f# B
如果要论证NFT的优势可能可以罗列上几页纸,但要论证NFT的劣势,则千言万语汇聚成一个词:流动性!
; \1 H; y* _1 \. @+ q当然各位可能要质疑的是,流动性不足的困境与实现产权分离标准有什么关系呢?6 p9 }& t2 q& _/ \/ J
在笔者看来,事实上NFT流动性的困境更多不是源于NFT协议本身,对ID的非同质化机制和限定ID区间导致的,哪怕是近乎无穷的ERC20token难道就不缺乏流动性了吗?更重要的是,流动性本身是出于对金融产品的定价诉求而产生的话题,如何让NFT本身具有使用价值,便成了让价值有所依归而不是只依赖于市场操作的协议。# i7 W2 x8 O5 n( @% N
影响使用价值NFT使用价值的,也正是NFT协议本身1 d1 r; k, v5 b! g' [% H) m3 V

, d* p+ R# V, a- m7 t2 e& D
# h- p, a) s5 l8 Q' p- L2 Q  b# v1.1、产权耦合,高价值NFT会倾向于安全避险( K- |5 h) |3 E: H6 m4 w# W, d; u
目前NFT被盗的案例很多,然而现有的NFT防盗方案,比如将NFT转入冷钱包等都会使得NFT的使用不便。
# ]5 Z7 R5 M5 h9 v: Q' H9 U并且在目前的NFT借贷中,NFT所有者需要将NFT转移到NFT借贷合约中,NFT所有者在获得借贷期间不再拥有NFT的使用权,这边是产权耦合的问题,这其实和我们现实中购买房产再房产抵押换取流动性资金时,再非风险条件下是不用被占用房屋使用权的情况很不同。/ A* x* {3 {: Y9 M* D
记忆尤新的是,猴子APE空投时被攻击者用闪电贷结合NFTX进行攻击
" I* F' z# q' L% z: B: P) j
2 Q+ y9 H6 p4 T3 a# g% q原事件分析可拓展阅读:EIP-5058 能否防止NFT项目方提桶跑路?" O& Q3 N! i3 s7 W, r
整件事情里,唯一受损的则是质押了猴子的用户,本来是赚取微不足道的时间利差却痛失了ape的海量空投。
  V1 E& {% [4 O& R: p6 t同样的,产权耦合的还有SBT的问题
! B. x  h2 ~1 @% h- L5 L& A, U2 }4 X$ Y对于SBT,目前主流观点认为SBT是不可转让的,这使得SBT与以太地址绑定。但是,当用户地址的私钥泄露或丢失时,找回SBT将成为一项复杂的工作,并且没有相应的标准。SBT本质上实现了NFT持有权和转让权的分离。当SBT所在的钱包被盗或不可用时,SBT应该是可以恢复的。4 t+ F. M7 y5 n* |, X' P6 q$ s
例如,如果一所大学向其毕业生颁发基于文凭的SBT,如果大学后来发现毕业生有学术不端行为或损害大学声誉,它应该有能力收回此文凭的SBT。
' [! w, k, L4 z5 V* K. F1 C( S; ?9 d' m8 U" A* Z8 \
: r$ @1 F( \; ~, r9 a
1.2、产权分离分案,强制性维度难以把控
8 N: T  O7 o! O: i& D过往十四也解读过若干尝试产权分离的方案,例如ERC-4907和ERC-5058,不可避免的最大的难题在于强制性程度的衡量,这并不是方案本身的问题,而是方案本身的哲学理念问题。
6 x! b1 x! H! x0 F& `
$ s2 P5 G9 r! y: P9 @, @8 p! w0 o/ _' d' n" m3 M# N2 s5 d
1.2.1、简单哲学ERC-4907,定义愿景剩下交给共识5 s* N& n" l% V
在2022-07月,NFT 租赁市场 Double Protocol 提交的可租赁 NFT 标准“EIP-4907”通过了以太坊开发团队的最终审核,成为第 30 个 ERC 标准“Final”的状态。
# P& T$ ?3 r9 i% G, b2 ?# B# e代码极为简单仅有72行,使用这个标准,就是在原来的ERC721之上新增
2 ^2 f$ b  E- ?) R# `" ~
  • 1个事件(用于通知链下应用称为事件)
  • 3个方法(用于实现链上数据管理功能)
  • . R1 C: q2 z+ c7 I/ K: g
struct UserInfo { address user;// 用户地址 uint64 expires;//用户到期时间}归咎原理,其实4907只是新增了一个数据对象UserInfo 在所有权的概念之外增加“用户”的维度,但是毕竟其强制性有限,只要转移就能强行终止出租授权9 b0 S, N3 }/ ~1 l* i2 ^
详情可拓展阅读:: p) z9 s0 w; P+ Z
  • 721租赁协议解读:以太坊新标准EIP-4907是怎样实现NFT租赁的?
  • 1155租赁协议解读:NFT租赁提案EIP-5006步入最后审核!
    5 Z* z8 T/ y/ F

: l: x% I% h, t* Y, O& }4 w6 P
0 E% M) D% ^4 D6 I# _2 c) J8 o* Q9 K- @1.2.2、0信任哲学的ERC-5058,代码即法律
: A" E( _$ M- m) e) ^  m他本质上是对NFT的锁定状态进行管理,让项目方在继承5058实现的NFT项目中,提供锁定即转移的功能,也可以在继承中实现更多功能比如版税等
8 Y# i! h( l9 _他封装提供了若干提供方法:只有用户许可以及项目方执行之后才会完全锁定, \/ i0 Q4 h) i# K. b3 t) g
用户可调用
: P% f; I+ K: y. M; F) {3 w
  • lockApprove(许可锁定单个NFT)
  • setLockApprovalForAll(许可锁定该地址下全部NFT)
    3 O' @% O9 m5 m+ l, T$ o
项目方合约调用:
. ~. [6 q! [+ e' R7 ]9 Y  a/ s$ K! @
  • lockFrom(锁定用户的NFT)
  • unlockFrom(解锁用户的NFT)
    & n; l5 D$ e, |0 r* o7 D7 n
锁定期的定义也极具强制性,近乎只依据设定之初的时间点
( f! R1 ]9 O9 ]6 H8 x& F项目方(第三方)锁定 NFT 时,需要指定锁定过期的区块高度,该高度必须大于当前区块高度。锁到期后,NFT 自动释放,才可以进行转移。! ^# H8 x- e$ O% N( R9 m" ], r
项目目前还是处于草稿阶段,或许强制性过高以及用户项目方双向操作的较高成本所致
7 K1 f) a. p2 H1 D% \详情可拓展阅读:EIP-5058 能否防止NFT项目方提桶跑路?+ p6 \/ A1 v, J: e
讲述完上述完全不强制4907,以及完全强制的5058,便到了本文主题:最新通过以太坊基金会审查,确定为Final的ERC-6147,虽然他原生的标题是:《Guard of NFT/SBT, an Extension of ERC-721 》,但十四君从系列的租赁研究经验来看,他更应该称是《半强制的NFT产权分离标准》
$ x9 O. f4 r/ a; o
# M8 m/ h) ?5 ?6 L4 I2 s5 x7 @
! e+ Z5 F! o5 p9 K+ O* c( P9 m2、ERC-6147的运作机制
' W0 ]# U5 i' G6 a" f1 p( T此协议整体代码也非常精简且高度复用,属于对ERC721的拓展标准,但是要注意,如果使用了他,则转移的操作可能与常规的721的逻辑不同,操作不当可能容易被钓鱼,具体如何咱们展开说说。
5 P- U6 x  w/ T( u% p: U1 I建议拓展阅读:【源码解读】你买的NFT到底是什么?
4 y# N9 F$ A4 w3 n$ Z1 c# k9 l; ]0 `3 Z0 m
0 d! e1 C; |- o4 w2 x. ^
2.1、Guard是什么?谁能控制?$ N; {& H" a6 u( M, |9 q7 u7 v1 m. r
首先ERC-6147定义了一个名为Guard(守卫者)的角色,和4907的UserInfo很相似,
, D; c6 k. G  S2 `4 g/ i9 `- D- Qstruct GuardInfo{ address guard; // 守卫者地址, uint64 expires; // 到期时间,}而Guard只有该NFT的当前所有者地址以及有代扣权限的地址,可以通过changeGuard设置,3 i' C4 j' q$ r# _+ H& {
通过源码可以看到,在设置Guard的时候若干的细节// 防止误锁定,所以Guard不能设置为0地址
2 A" Z( a$ k5 L% x5 t8 V) t* j4 V0 brequire(newGuard != address(0), "ERC6147: new guard can not be null");
4 S0 v1 [, m5 a. y// 只有Guard可以修改自己require(guard == _msgSender(), "ERC6147: only guard can change it self");. K) X' r0 d* ]# b) u" F
// 只有nft的所有者或者获得授权者可以设置Guardrequire(_isApprovedOrOwner(_msgSender(), tokenId), "ERC6147: caller is not owner nor approved");; U4 ]) e# w9 G" V
设置成功后,任何人都可以通过guardInfo 方法来查询某个NFTID,当前的Guard信息,同时这里也沿用了和4907一样的基于时间戳的设计,所以是到期无需二次上链交易,就可以自动失效。0 b$ b7 t( \) g  i
那Guard的身份,谁可以去除掉呢?只有Guard自己以及时间(到期)可以。$ \8 Y6 f" M0 ?: c/ s% r% `# M! e
. V7 q# T! D5 |% x6 c& X# n

0 |  E3 U- G; E9 C+ P; z% f
$ f3 _) F5 ^: O# X0 [% E2.2、Guard能做什么?) N  P2 p1 s- v
首先具有了强制转移权,对于设置了Guard的NFT而言,在进行transferFrom的时候,会查询交易发起方是否是守卫地址,是才能转移。
' k( \+ J: L. C7 k0 O
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

虹桥大宝剑 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    26