译文
从BRC-20设计原理入手,剖析钱包潜在的攻击漏洞
从BRC-20设计原理,分析钱包攻击漏洞
作者:Trustless Labs
大家好,今天我们要聊的是币安交易所的一次出格事件。你知道吗,没错,币安暂停了ORDI的提现!听起来就像是一个夸张的新闻标题,但它是真的。别着急,今天我将以幽默风趣的方式,为你揭开这个故事的真相。
首先,让我们来看一共发生了什么事吧。当时我们在深入研究BRC-20代码和机制后,发现了一些有关巨额持有人可能遭受攻击的问题。于是,我们决定使用一些经过测试的手段,锁定了币安ORDI热钱包的资产,这个操作导致了币安不得不暂停ORDI的提现。我们可不是来给币安制造麻烦的,所以我们第一时间与币安团队沟通,详细讨论了我们的操作细节,以帮助币安尽快解除这一限制。三个小时后,币安终于恢复了ORDI的提现功能。
现在,你可能会有疑问,为什么有人能够轻松地锁定你的BRC-20余额呢?别急,我们来从BRC-20的设计原理出发,一起来分析一下币安暂停ORDI提现的原因。
BRC-20中有三个关键概念:可转让余额(Transferable balance)、可用余额(Available balance)和总余额(Overall balance)。让我们以币安ORDI热钱包的余额为例来解释一下。转账需要经历两个步骤:第一步,inscribe一个transfer的Inscription;第二步,将这个Inscription转给接收方,完成BRC-20的转账。由于Inscription的转移是基于UTXO的,也就是说,第一步inscribe多少数字货币,第二步转出的数字货币数量就对应多少。因此,Transferable balance也是基于UTXO的。
举个例子来帮助你理解:假设你是一个新创建的地址A,在这个地址里你获得了m个ORDI,或者是别人转了m个ORDI给你。那么此时A的可用余额(Available balance)和总余额(Overall balance)都是m。而可转让余额(Transferable balance)为0。接着,你又从地址A转出了n个ORDI到地址B。第一步操作是inscribe一个amt为n的Inscription到A地址(当且仅当n <= m时,该Inscription才是有效的)。这时,A的可转让余额为n,可用余额为m – n,总余额为m。第二步操作是将这个amt为n的Inscription转给地址B。这时,A的可用余额和总余额都变成了m – n,可转让余额为0。而地址B的可用余额和总余额都变成了n,可转让余额也为0。这样,一次转账就完成了。
那么,现在回到我们的问题,为什么ORDI无法提现呢?原因就在于,任何人都可以在任意地址上inscribe一个任意数量的Inscription,这样就可以通过执行BRC-20转账的第一步操作来锁定任意地址的数字货币余额。那么,币安如何解决这个问题呢?其实很简单,币安只需将之前提到的三个Inscription转给自己,就可以将可转让余额变回可用余额。然后,根据用户的提现需求,inscribe相应数量的Inscription来转出数字货币。但是,这只能是暂时的解决办法,无法从根本上解决问题。所以,未来,改进BRC-20协议本身,解决当前设计上的不足,才能解决这个问题。
嗨!各位数字资产的投资者们,别忘了这是个庆幸的日子!币安团队及时发现了这个问题,并在我们的帮助下解决了它。这次的事件对于整个数字资产社区来说,我们可以从中学到很多东西。无论是作为投资者还是开发者,我们都需要保持警惕,不断提高我们的安全意识。希望通过这次事件的发生,我们可以更好地了解和应对类似的风险。
朋友们,保持关注,下次再见!如果你有什么想法或问题,欢迎在评论区与我互动。
We will continue to update 算娘; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles





