区块链交易的不可更改性是福也是祸。
BAYC钓鱼网络攻击。PolyNetwork黑客攻击。Harmony Bridge黑客攻击。Ronin被盗案。仅2021年就有140亿美元的加密货币被盗。这些——以及更多——都是确凿的盗窃行为,但没有“撤销按钮”(例如,信用卡付款逆转),也不是每个人都有一个Jump Crypto在需要时拯救他们。
但如果存在一种可逆类型的代币呢?
这是我们斯坦福大学的几个研究员(Dan Boneh, Qinchen Wang和我)在过去几个月里一直在努力回答的问题。我们设计了与ERC-20和ERC-721相近的选择式代币标准,并支持逆转交易(当有足够的证据支持它时),写了一篇关于它们的论文,也实现了一些原型。我们分别称这些代币标准为ERC-20R和ERC-721R。
现在,你可能在想:可逆代币?这难道不是违背了区块链的目的吗?事实上没有。它并不意味着要取代ERC-20代币或使以太坊可逆——它只是允许在交易后的短时间内对盗窃行为提出质疑,并可能予以恢复。
注意,交易在变得不可逆之前只能冻结很短的一段时间(比如3天)。ERC-20R资金在大部分时间里都是不可逆转的。
交易中的可逆性
在交易中,两个可逆代币之间的交换是即时的;如果一方要求冻结,那么无论可逆时间段是否已经过去,都有可能从另一方收回资金。然而,将可逆代币换为不可逆代币是可能的;为了保护自己不被逆转,交易可能只在可逆时间段之后才最终完成交换。这意味着可逆→不可逆的交换将有延迟,直到资金不可逆转。因此,一旦两个主要的代币变成可逆的,其他代币也会有很大的压力变成可逆的。
根据实施情况的不同,立即清算可逆时间段已过的资产(例如清算3天前你收到的资产)是有可能的。在这种情况下,你的可逆代币和不可逆代币之间将不需要有延迟。
工作原理
逆转交易的过程
假设攻击者从受害者那里窃取了资金。资金可能被进一步转移到其他地址,如下面的图1所示。会发生以下情况:
1、受害者要求冻结被盗资金。受害者向治理合约提交冻结请求,同时提交相关证据和一些资金。有争议的交易必须是最近发生的(有一个固定的可逆时间段)。
2、法官接受或拒绝冻结请求。去中心化的法官群体投票决定是否冻结资产。审议时间最多也就一两天。如果他们拒绝了请求,程序就会停止,受害者就会失去他们的资金。如果他们接受请求,那么治理合约将冻结ERC-20R/ERC-721R合约。
3、执行冻结。对于NFT,它只是阻止NFT被转移。对于ERC-20R,它将追踪被盗资金并禁止这些资金转移。请注意,只要账户所有者的余额高于被冻结金额,仍然可以与他人进行交易。
4、审判。然后,双方都可以向去中心化的法官群体提交证据。最终,法官做出决定,然后指示治理合约调用受影响的ERC-20R或ERC-721R合约上的reverse或rejectReverse函数。如果调用rejectReverse,则解除对有争议资产的冻结。审判时间可能会很长,可能持续几周。
5、逆转(如果适用的话)。reverse函数将被冻结的资产送回受害者。
图1:交易示例图
追踪被盗资金
当资产被盗时,很少仅仅放在一个地方。攻击者经常把它从一个账户转移到另一个账户。在这种情况下,攻击者甚至可以监视内存池(mempool),并在看到冻结请求传入时,在抢先交易中移动资产。我们避免这种情况的解决方案是在单笔交易中执行完整的链上冻结(及其计算),这样攻击者就不能“跑过”冻结。
但我们不能直接禁用每个接触过这些资产的账户,那我们怎么决定冻结哪些账户?幸运的是,如果是NFT,冻结非常简单:只需要查看当前拥有该NFT的人,然后冻结该帐户。然而,货币的可分割性使得冻结ERC-20更加复杂。这些资金可以被分割到几十个账户中,转移到像Tornado这样的匿名混合器中,或者兑换成另一种数字货币。如果它经过很多账户,至少其中一些账户和黑客有关。但有些账户很可能是无辜的,或者是提供合法服务以换取付款的商家。我们不可能总是正确地辨别每个账户的罪责。因此,我们提供了一个默认的冻结程序来追踪和锁定被盗资金。我们的算法确保:
1、假设没有销毁,就会有足够的资产被冻结以弥补失窃的金额。(销毁的资产将从归还的金额中减去)
2、账户的资金只会在与窃贼有直接交易往来的情况下才会被冻结
3、就交易图而言,该算法的运行时间复杂度合理
我们在论文中讨论了更多的算法细节。
去中心化的司法系统
这个谜题中更模糊的部分是关于“去中心化的法官群体”。这些法官是谁?他们如何投票?他们如何获得奖励?
这些最终取决于治理,也就是创建ERC-20R/ERC-721R实例的人。在我们的论文中,我们探讨了如何阻止法官的不诚实和贿赂,奖励机制,等等。我们强调,法官不能增加交易或任意修改一个人的余额值。