# 【前沿解读】斯坦福研究员论文-以太坊可逆交易标准ERC20/721R的机制、创新与局限

By [shisi.eth](https://paragraph.com/@shisi-eth) · 2022-09-25

---

区块链交易的不可逆特性，一度被形容为是唯一的人类对上帝'时间'的低劣仿制品，然而也正是因为不可逆，导致大量黑客攻击资金被盗无处解决，也被趣称为web2向web3最成功的转型：黑客。

而斯坦福大学研究员（[kkwang@cs.stanford.edu](mailto:kkwang@cs.stanford.edu)等3人）于最近9.9号最新发布的论文，便是实现了两种**可逆交易的标准命名为ERC20R/ERC721R**。其引入了一个“去中心化法庭”机制，资产被盗时受害者可申请冻结资产，而”去中心化法庭“可通过投票来决定是否冻结，冻结资产后“法庭”将基于双方的证据来决定资产归属，以解决纠纷。

**然而不可逆到可逆，伴随的是大量复杂的问题**

*   谁能发起？恶意诬告阻塞资金怎么办
    
*   如何冻结？资金高速流转，涉事广泛，恶意投毒如何公证？
    
*   谁能仲裁？恶意法官，贿赂法官怎么办？
    

本文通过解读ERC20/721R的实例代码，以及对其算法实现探讨可逆交易的探索挑战。

1、可逆交易的发展简史
-----------

在2020年区块链上合计78亿美元被盗，到2021 年则合计140亿美元被盗，在过去一年里也有超过1亿美元的NFT受到钓鱼等问题被盗。

由此可见一旦真正能解决这样的问题，其标准的价值将有多大。

其实早在2015年就有让交易可逆的讨论提案了，这些年里既有部分项目尝试使用，也有Vitalik乃至ERC20的原作者之一也参与其中。

2015 年，Reversecoin是世界上第⼀个具有可逆交易的加密代币，它在交易发起和确认之间引⼊了⼀个超时时间。每个帐⼾都有⼀个离线密钥对，使所有者能够撤销交易或⽴即确认交易。但其实这并不能阻⽌许多现代黑客攻击：攻击者要么窃取确认密钥，要么欺骗⽤⼾使⽤确认密钥来再次确认恶意交易。

2018 年，ERC-20 标准的共同创建者之⼀(Dean Eigenmann)提出了可逆ICO的概念，投资者可以获得与最近投资时间成反⽐的退款⾦额。尽管这可以防⽌单个token在发布时的骗局，但它不能防⽌token后续恶意交易。

而2022年也出现有refunds-for-nfts （可退款的ERC721r标准）

而本论文中最重要思想是借鉴了2018年 **vitalik 提出的设想，基于Dao治理的可逆ERC20标准**

![](https://storage.googleapis.com/papyrus_images/8ff55f95259bc7b27111a53635056a00ab247a188dc8f2645c50292d3502784b.png)

2、ERC20/721R的实现原理
-----------------

论文实现理念的核心是：基于”去中心化法庭“治理的Token

基于ERC20/721R标准实现的token，其交易在链上发布后都有资格在短时间内撤销。但是争议期过后，交易不能再撤销。而在短暂的争议期内，发送方可以通过说服一组离散抽取的法官来首先冻结有争议的资产，然后再说服他们撤销交易来请求撤销交易。

看似一段话就描述完了，**但其实中间存在非常多的风险性问题**

*   决策前：谁能提案，谁能冻结？随意的冻结将会断绝信任也将阻塞资金
    
*   决策中：谁能参与，链上链下？法官可能被贿赂，法官的公正动机
    
*   决策后：币种跨越，如何归还？资金可能很离散，也可能殃及无辜
    

而20/721R的架构实现细节中，也带有对其不少困境的答案。

### 2.1、ERC20/721R标准的参与角色

![](https://storage.googleapis.com/papyrus_images/c03e0cd586f22f34094335181a1e276373a434791c3aabb3d315bfd1c8acfe45.png)

合计有4种角色参与其中，**受害人、治理合约、法官群体、资产合约**

*   victim是某受害者，即其Token的某个历史持有者，可以向治理合约发起请求冻结。
    
*   Governance 是治理合约去中心化法庭的实现，可以兼任多个20/721R的治理。
    
*   Judges 是法官群体，每次随机抽取法官投票，对资产合约发起冻结/解冻/归还资金等操作
    
*   ERC20/721R必须使用此标准，才能记录下历史资金流转记录并实现了冻结对象的追溯算法
    
*   Governance则是吃瓜群众，可以清理合约中无效的历史数据，从而减少gas费消耗
    

通过核心流程角色可以看出

基本上，只要Victim受害人发起，满足一定的治理合约的开庭条件（比如金额/手续费达标）就可以发起冻结，导致资金无法流动，所以，治理合约中的经济模型奖惩机制是非常需要设计的，否则要么是法官疲于奔命，要么是恶意冻结中的阻塞资金

可拓展阅读：资金阻塞对系统运作的影响：[【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483924&idx=1&sn=30a642fa1acec069e31b40937e2d7de4&chksm=e83aa5cedf4d2cd861d3cf09c555720d7e6b89febb909ee88853d88f86ca913d3a1d701c1c00&scene=21#wechat_redirect)

其次可逆交易在实现中还有2个核心的问题需要特别关注

1.  如何确保仲裁后可靠的归还
    
2.  如何防止恶意的法官和决策
    

### 2.2、ERC20/721R标准的判决流程

![](https://storage.googleapis.com/papyrus_images/f9b26452fc65feed6d6daa9637d0cb13175f40911a0ec394fa73997f3e08add3.png)

从论文的流程图中可以看出，主要5大环节

1.  失窃：黑客盗窃后可能快速洗钱转移到多地址，兑换流转，乃至销毁
    
2.  申诉：发起冻结是需要支付挑战保证金的，也将成为治理合约的收益来源
    
3.  抽法官：其组成从法官库中随机挑选，这可沿用POS类似的质押参与出块思路
    
4.  冻结：一旦法官决议冻结，则由智能合约来计算应该被冻结的地址与金额
    
5.  决断：最终等待双方提交证据以待法官决策，完成后法官分割评判收益
    

3、风控与博弈机制
---------

### 3.1、如何应对恶意法官？

从上述运作流程中可以看出

**法官决策有着极高的权利**，因此如何选择法官，如何对法官进行补偿，如何阻⽌行为不端恶意的法官，例如收受贿赂或对有争议的交易做出错误决定的法官，就是治理的难题

首先，法官的行为只能通过治理合约进行，其行为是受限的，虽然此合约并未真正实现但也提及了些设计思路，基本是参照POS质押出块的流程

*   秘密投票原则：在投票数量⾜够多之前不公开法官成员，用以规避主动找法官贿赂。
    
*   动态法官原则：随着有争议交易的⼤⼩⽽增加法官需要的数量，提高贿赂法官范围和成本。
    
*   法官SBT原则：采用链下现实世界中真实身份参与法官池，让错误判决影响其真实身份
    
*   决策分离原则：采用法官的决策无论是同意还是不同意，都可以收益瓜分提案手续费。
    
*   工作监察原则：法官如果多次无法及时投票，则罚没质押金以及清退
    

在十四君看来，这种理想中的法官管理方式，可能需要较高的收益做激励以及错判的2次复审，防止陷入有提案难决断的中间状态。

### 3.2、如何做到可靠冻结？

通过上文的描述，可以看出法官依赖于现实与去中心化投票的决断，但他们行为的基石是该资金已经被冻结，从而有时间让他们进行分析决断。

因此20/721R如何做到有效找到该冻结的对象和金额，就是本文最难，也是该论文最多笔墨创新的部分了。

### 3.2.1、针对ERC721R

这种逻辑相对简单，因为资金的流转是不可分的，只有地址可能多样。

当然即使是721也不简单，因为我作为历史持有者可能不是马上发现资金损失的，而即使是1分钟，也有可能导致该NFT被转移到其他无辜的用户手中。

所以ERC721R他定义了一套专门用于记录交易历史记录的合约数据存储，

针对冻结：定义了frozen\[tokenId\]  对象来锁定Id继续转移

针对受害地址：依据历史交易记录（合约内存储）来确定资金损失方

综合来看，721R与传统的721对比，则是记录如下的数据，总是能得知NFT流转方

    tokenID0 → (owner0, bn0),(owner1, bn1), . . .
    tokenID1 → (owner0, bn0),(owner1, bn1), . . .
    tokenID2 → (owner0, bn0),(owner1, bn1), . . .
    

当然你可能会说，这不是看NFT合约的历史记录就可得知了吗？

拓展阅读链上数据分析：[抓完X2Y2十万NFT订单，分析版税可以不收后多少用户真这么做了？](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483957&idx=1&sn=ab8e4bfe0068fc19dccbb8b00d358541&chksm=e83aa5efdf4d2cf9263463ea18b4090a25843e0ad84a85bc5594c316045b4d884e526317cf9a&scene=21#wechat_redirect)

不过论文中这种记录交易历史的做法，不只是为了找出争议交易的区间，也能作为一种对恶意法官的限制，是的，面对极高的法官权利，一旦NFT过了争议期，或者已经有往期评估审计后，那就无法发起撤销交易指令。

### 3.2.2、针对ERC20R

ERC-20 合约的冻结功能要复杂得多。问题在于，在盗窃和冻结请求之间，代币可能已转移到多个账⼾，且各个账号可能获得资金都不同。如下图

![](https://storage.googleapis.com/papyrus_images/445cbe946bdb9b854a1aaf8c1f009e694e0e1240b66a64cbeaf87c8eb9dc074f.png)

图中V是victim是某受害者，a0是黑客，a1-a11则是在冻结请求之前的全部涉案地址。图中表示了多种资金可能被操作的场景链路。

*   场景1：**资金可能销毁**，例如a8通过跨链桥转移到不同生态或者币交所出金，这时自然无法找回
    
*   场景2：**资金可能重叠**，a1可能是a0的长期存储地址，因此多笔被盗资产都在这里，在无法判别之前，只能冻结涉案金额，而非全部金额
    
*   场景3：**资金可能循环**，如a4又向a0转账，则需判断该资金是否是干净的
    

最终整个a1-11多少金额应该被纳入冻结计算，论文提出了一套算法来计算。

核心理念是依据上下资金传输来定义每个节点的锁定义务，比如V损失100，而a0中刚好有50，则先冻结这50，然后剩余的50作为a1,2,3的义务，往下操作冻结。承担的义务量由a0向a123转账的记录中计算得出。因此即使被投毒比如转1块给币交所，也不会冻结币交所超出争议资金承担义务的部分。

具体实现算法论文和其代码资源，通过十四君公众号后台回复'**ERC20/721R**' 可获取

4、总结
----

到这儿，对其实现已经基本讲述完毕，那这样的方式真的好吗？

**从作者本身看**

笔者认为这也是目前web3行业的一个大趋势，越来越多web2高端人才在涌入这样的时代热潮中，并且争相解决一些行业前沿协议层的问题，虽然是好事，但，整体人力投入不平衡，**胖协议、瘦应用的现状**依旧有些头重脚轻、避重就轻。尖端学者走前沿协议研究很好，那项目方是不是更应该拿了ICO后该好好做事呢？

可拓展阅读：协议与应用双赢的案例:[一文讲清-NFT市场新秀SudoSwap的AMM机制-创新挑战与局限](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483943&idx=1&sn=fe2caeb811f3aa5adfe9dc5a3a6d3367&chksm=e83aa5fddf4d2ceb6dd5c978aa209fd36f4ac2917718aaa094016292f9ec038b2c733547936b&scene=21#wechat_redirect)

**从论文目标看**

笔者认为，最大的难题并不是单纯的冻结算法精准度，**而是有延迟的Token与无延迟的Token如何兼容兑换的问题**，即可逆交易其实是有毒的，一旦争议资金发生跨协议转移，又被逆交易。那对于交易所而言，应该是等待资金度过争议期才执行真正的转移交换，这样对基建的颠覆很有可能阻碍其上的应用发展。

**从防黑效果看**

首先本身协议能否被社会接受是挑战，其次法官也将伴随质押经济的平衡设计，最终依旧存在贿赂部分矿工从而干扰甚至阻碍重排序交易的风险，而且，**最关键的是链上真正可信的数据是很难在链下实证出，这笔交易是被盗，而不是交易反悔**。所以笔者对防黑效果上并不完全看好。

**从合约实现看**

确实，来自斯坦福大学研究员的手笔其合约算法设计高度精巧，且确实在智能合约中实现算法也是难得一见的奇观，**赋予算法信任的同时，带来的问题则是高昂的代币成本。**

每次转移本身只是2处标准的NFTbalance的修改，然而如今要记录每次历史记录、冻结状态，冻结执行时还涉及大量对子地址的余额修改，都将导致其贵到无以复加。

对Gas计算原理可拓展阅读:[【源码解读】你买的NFT到底是什么？](http://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483815&idx=1&sn=5f91df631b450944739419be185e597c&chksm=e83aa67ddf4d2f6bf24b9f6139bd685db9b5f3ff5a131f84c179a5166ad42337f0b2aabe0bf0&scene=21#wechat_redirect)

欢迎你从后台提交web3行业问题探讨

点赞关注十四，用技术视角带给你价值

![](https://storage.googleapis.com/papyrus_images/b48f70bbbea572ee015d69b3cc0cb9b004349b41bd23b1e91ba285c352944d08.png)

---

*Originally published on [shisi.eth](https://paragraph.com/@shisi-eth/erc20-721r)*
