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