卓游屋

BRC20钱包:潜在攻击方式的技术解析

2023-12-8   小编:lw

经过深入研究BRC-20代码和机制,我们发现了可能针对巨额持有人的攻击手段。为了帮助交易所检查流程规范问题,同时展现白帽精神,我们尝试使用测试过的方法锁定了币安ORDI热钱包资产,导致币安暂停了ORDI的提现。我们第一时间通知了币安团队,并与他们沟通了操作细节,以帮助币安尽快恢复提现。三小时后,币安成功恢复了ORDI的提现功能。本文将从BRC-20的设计原理出发,系统性地分析币安暂停ORDI提现的原因,帮助读者理解为什么任何人都可以锁定他们的BRC-20余额。

BRC20钱包:潜在攻击方式的技术解析图片1

首先,让我们在UniSat上看一下链上发生了什么。

以下是撰写本文时UniSat上展示的币安ORDI热钱包余额,分为Transferable(可转出的余额)、Available(可用余额)和Balance(总余额)三部分。这涉及到BRC-20中的三个基本概念:Transferable balance、Available balance和Overall balance。Transferable balance指的是可以直接转出的余额,Available balance指的是可以转为Transferable balance的余额,Overall balance是这两者之和,表示当前地址的总余额。或许你会问,既然币安ORDI热钱包有这么多余额,为什么无法提现转出呢?别着急,我们继续往下看。

BRC-20的转账需要两个步骤。第一步是inscribe一个transfer的Inscription,第二步是将该Inscription转给接收方,完成BRC-20的转账。由于Inscription转移是基于UTXO(未使用的交易输出)的,也就是说,在第一步inscribe时,可以转出的BRC-20数量取决于已inscribe的Inscription数量。举个例子来方便理解,假设A是一个新创建的地址,你将m个ORDI mint到A地址,或者将m个ORDI从其他地址转到A地址,这时A地址的Available balance和Overall balance都为m,Transferable balance为0。然后我们将n个ORDI从A地址转到B地址。在第一步,我们先inscribe一个amt为n的Inscription到A地址(当且仅当n<=m时,该Inscription才有效)。此时A地址的Transferable balance为n,Available balance为m-n,Overall balance为m。在第二步,我们将这个amt为n的Inscription转移到B地址。此时A地址的Available balance和Overall balance都为m-n,Transferable balance为0;B地址的Available balance和Overall balance都为n,Transferable balance为0。转账完成。

相关软件

推荐软件

推荐下载

最新软件

相关文章

网友评论

    加载更多
    回复 [1楼 ]取消回复