作者:北京链安安全实验室
发布时间:2019年6月6日
网络来源:REEBUF
一、比特币追溯背景
1.1 比特币的交易量
目前来看,比特币已经诞生10年,虽然是所有数字货币/公链中交易速度最慢、性能最低的区块链,但却依然是最安全、链上活跃度最高和承载交易最多的的一条链。
按照比特币的程序设计逻辑,比特币约每10分钟出1个块,每个块大小约为1MB,在开启segwit(隔离见证)之后,比特币的平均区块大小能达到1.2MB,比特币的平均交易速度峰值能达到4.5笔/秒。
由此计算比特币网络每年承载的交易数量上限为1.42亿笔交易(4.5*3600*24*365=141912000)。每年比特币的区块大小增加上限为61.6GB(1.2*3600*24*365/1024=61.6 GB)。根据比特币链上转账的数量、交易所的成交量和比特币2017年/2018年对美元的平均价格计算,比特币在2017年的交易量达到了8,580亿美元。而在2018年比特币的交易数量达到了3.2万亿美元左右。
1.2 比特币安全事件
2014年2月,当时全球最大的交易所Mt.Gox宣布丢失85万比特币,按市价约为5亿美元,Mt. Gox正式申请破产保护。
2014年,六大暗网中平均每天的比特币交易量达到65万美元。
2015年1月5日,Bitstamp确认丢失1.9万枚比特币。
2015年2月15日,比特儿被盗7170枚比特币。
2015年2月18日,比特币存钱罐宣称被盗3000枚比特币。
2016年8月3日凌晨,最大的美元比特币交易平台Bitfinex官网挂出公告,由于网站出现安全漏洞,导致用户持有的比特币被盗,随后据路透报道,被盗的比特币共119756枚,总计价值约为6500万美元。
2017年6月29日,韩国最大、全球前五大的比特币交易所Bithumb发现遭到黑客入侵,超过3万名客户的个人信息被盗取,这次黑客入侵导致投资者损失数十亿韩元。
2017年4月22日凌晨2点到3点,韩国比特币交易所Youbit被盗3831个比特币 发行Fei代币作为用户损失凭证。12月19日消息,再次遭到黑客攻击,造成相当于其总资产17%的严重损失。该交易所表示即将关门,并申请破产。
由于比特币非实名、全球化流通的特性,比特币成为暗网、洗钱等非法交易中的硬通货。随着比特币用户数和接受度螺旋式上升,交易所每天比特币交易量的攀升,大量交易所每天都在被黑客定向渗透。交易所被盗币后的比特币资金流向,暗网、洗钱等非法比特币交易的比特币去向追溯等类似问题亟待解决。
类似问题是比特币交易追踪溯源的主要背景。
二、比特币追溯技术
2.1 比特币实时交易追溯
对于单笔比特币的交易实时追踪溯源需求,可以通过访问区块链浏览器,输入交易产生的唯一txid(transaction id)去观察资金流向。也可以直接调用比特币客户端提供的RPC接口,直接与比特币全节点客户端的leveldb进行交互从而达到监控特定地址实时交易动态的需求。
2.2 比特币历史交易追溯
在特殊情况下,会有对历史单笔比特币交易中的特定资金去向或者历史单笔特定资金来源的溯源需求,由于涉及到的交易多达上千笔,并且单地址上的交易可能有几十万笔,以及比特币全节点原生客户端leveldb对于资金使用key value方式存储的局限性,比特币的区块链浏览器对于资金流向也没有办法以UTXO的方式呈现,本文介绍到的技术和产品主要定位于实现历史特定交易的资金流向追踪溯源。
2.3 比特币追溯原理
比特币系统是没有余额的概念的,它使用的是UTXO模型(Unspent Transaction Outputs,未使用过的交易输出),在交易过程中经常说的钱包余额,实际上是一个钱包地址的UTXO集合。所以,在比特币网络中,存储比特币余额的是交易输出,准确点说就是未使用过的交易输出,而每一笔交易的输入实际上引用的是上一笔交易的输出。下图是比特币系统中交易输入输出的过程。
我们看到交易和交易之间产生了关联。彼交易的输出是此交易的输入,此交易的输出又是另外一个交易的输出,如此交易链也就产生了。交易链非常长,从Coinbase诞生的比特币一直延续到世界末日才会终止。
如果想要追踪某个黑用户BTC的来源或者去向,只要能获取到该用户的BTC账户地址,然后便可以找到最近和这个账户发生关联的所有交易txid,并沿着交易树回溯,向前回溯到所有的Coinbase记录或者向后溯源该地址所有被花费掉的UTXO的去向。在现代强大的CPU和内存的前提下,这种溯源是可以办到的,这也是比特币溯源的依赖的基本原理。
2.4 比特币钱包、地址、UTXO、混币
溯源过程中会遇到一些问题,所有的用户地址都是一个hash编码,溯源者并不知道这些地址是现实世界中哪些人的地址,也就无法查到交易具体关联了现实世界中的哪些人。因此对于全量比特币地址的分析和画像至关重要。
比特币溯源中有几个基础的概念,钱包(wallet_id)、比特币地址(bitcoin_address)、utxo、混币这几个概念在介绍地址分析之前需要简单介绍下。
由于比特币utxo的账户模型设计和转账找零机制,通过钱包进行的每一笔转账花费掉的可能是多个地址的utxo。如txid为584892254e5bd6837f12930c6bba972a8206249af3e68f4f865ebb26115d20c2的该笔交易。
可以看到,inputs输入有3个地址18zRPrKzJ1yuvy5UfD56CHB6WYJvo48eWF、1933phfhK3ZgFQNLGSDXvqCn32k2buXY8a、1BexDzrCbfj491RFLa167ECBHYTBBsHKe9,这三个地址是归属于一个钱包。由于在溯源的时候,18zRPrKzJ1yuvy5UfD56CHB6WYJvo48eWF这个地址的比特币可能完全来自于上一笔交易,此时该比特币将会被标记为0代表为非混币交易。而1933phfhK3ZgFQNLGSDXvqCn32k2buXY8a、1BexDzrCbfj491RFLa167ECBHYTBBsHKe9这两个地址的比特币将会被标记为2,代表该比特币与本次追踪无关。而1DTxuk73bFUbRNmMDkiTmDixdkk1vV3C4a 将会被标记为1,证明本次追踪的比特币已经被混合。
txid为80cd9ee58f25645efdc5bc53c2af7601dc7e01411c5ec40ce7c32bc5ea3dda41的该笔交易,可以看到钱包中只用到了一个地址1933phfhK3ZgFQNLGSDXvqCn32k2buXY8a ,但是花费掉了这个地址的多笔utxo。
个人、矿池、交易所、特定机构可能会持有多个钱包。而单个钱包中可以包含多个地址,而每个地址上的比特币 “余额”又由单个或者多个绑定在该地址上的未花费的utxo集合组成。
2.5 比特币钱包画像数据和地址画像数据
我们通过对比特币250GB全量数据和4亿多笔交易数据进行存取和去重分析,共计分析出将近3亿多条的比特币地址,其中有余额的地址大概是2000多万条。根据已有的交易所冷钱包地址、矿池钱包地址和已经公开的网站的比特币交易地址,根据地址交易特征,比特币地址余额(balance)、支出总次数(count_out)、支出总金额(total_out)、收入总次数(count_in)、收入总金额(total_in)、第一次支出时间(out_first_time)、最后一次支出时间(out_last_time)、第一次收入时间(in_first_time)、最后一次收入时间(in_last_time)等,对比特币全量交易关系进行分析标记。目前从3亿多条比特币地址分析出43741745个钱包(wallet_id),51380177个地址标记有标签,24911个钱包标记有标签。
其中有标签的地址,截取部分主要信息如下图表。
地址标签类型 | 地址标签名称 | 地址数量 |
---|---|---|
交易所 | Bittrex.com | 1440909 |
交易所 | Poloniex.com | 960630 |
交易所 | CoinTrader.net | 905353 |
交易所 | Bitfinex.com | 701736 |
交易所 | LocalBitcoins.com | 523312 |
交易所 | Huobi | 1411914 |
交易所 | Bitstamp.net | 377491 |
交易所 | Kraken.com | 114456 |
交易所 | OKCoin.com | 480810 |
交易所 | Binance.com | 2211823 |
交易所 | HitBtc.com | 187142 |
交易所 | Cex.io | 238462 |
矿池 | BWPool | 894 |
矿池 | BTC.TOP | 892 |
矿池 | GBMiners | 667 |
矿池 | AntPool.com | 660 |
矿池 | BATPOOL | 516 |
矿池 | BitMinter.com | 438 |
矿池 | BW.com | 402 |
矿池 | KanoPool | 370 |
矿池 | BTC Guild | 364 |
矿池 | OzCoin | 361 |
矿池 | AntPool | 357 |
矿池 | Cointerra | 323 |
矿池 | KnCMiner.com | 292 |
矿池 | CoinLab | 238 |
矿池 | BTPOOL | 227 |
网站 | Xapo.com | 1874568 |
网站 | Cubits.com | 1463437 |
网站 | CoinPayments.net | 488091 |
网站 | Cryptopay.me | 322174 |
网站 | Cryptonator.com | 257141 |
网站 | BitcoinFog | 227505 |
网站 | AlphaBayMarket | 189776 |
网站 | BitPay.com | 186000 |
网站 | CoinJar.com | 178896 |
2.6 比特币交易者的IP定位
由于比特币基于P2P技术,并未原生使用VPN或者tor等技术进行IP隐藏。类似于bitnodes这样的网站可以较为轻松和精确地对比特币客户端的国别分布进行统计。
而要定位指定地区的比特币交易者的参与IP,只需要在对应的地区部署对应数量探针节点,通过对发起交易的客户端的IP地址通过算法进行筛选记录即可。
三、比特币溯源案例演示
前面已经对比特币溯源原理做过介绍,通过utxo特性和建立比特币全量地址画像表的方法,北京链安已经开发了一套历史全量比特币转账溯源分析系统,可以对历史单笔比特币交易中的特定资金去向或者历史单笔比特币交易中的特定资金来源进行分析并且以图形化的形式进行展现,并且使用全量比特币地址画像表对关键的交易所、矿池、比特币服务网站钱包进行标记。
3.1 silkroad比特币资金流向追踪
向后追踪案例以bitcointalk和reddit比较有争议的一笔比特币交易为例进行。
可以看到在2014年3月10日 的时候,比特币链上发生了一笔11万比特币的大额转账交易。关于该笔交易,普遍认为是暗网丝绸之路(silkroad)的钱包地址。由于时间跨度较大并且比特币区块链浏览器不支持全量画像地址库和utxo资金流向追踪,普通的方法无法实现这样的一笔敏感资金流向溯源。
可以看到在溯源第四层上面,每一层的点(钱包)的数量几乎以指数层级增长。以下通过自研系统对该笔转账进行分析并统计。
本次分析的分析参数。分析起始块高度281935、对应起始时间2014-03-10,分析截止块高度500000、对应截止时间2017-12-19,分析比特币阈值50btc,分析层数40,分析非混币(标志0)的比特币资金流向结果统计如下图表。
流入起止块高度 | 流入起止时间 | 流入数量 | 流入交易所 |
---|---|---|---|
467553-467553 | 2017/05/22-2017/05/22 | 225 | Bittrex.com |
479277-494209 | 2017/08/06-2017/11/13 | 2740 | HitBtc.com |
479989-487135 | 2017/08/11-2017/09/27 | 1096 | Bitstamp.net |
480165-480165 | 2017/08/12-2017/08/12 | 153 | Poloniex.com |
481897-494207 | 2017/08/25-2017/11/13 | 2119 | Bitfinex.com |
484677-484677 | 2017/09/11-2017/09/11 | 1020 | CoinHako.com |
486477-486477 | 2017/09/22-2017/09/22 | 89 | 某国内交易所 |
需要说明的是以上图表是分析的该笔111114.61735989的比特币转账的非混币资金流向,所以图表当中的比特币完全来自于原始的111114.61735989个比特币。可以看到,精确追踪到了7442枚比特币的资金流向。
3.2 某色情网站充值用户来源分析
比特币交易追踪向前溯源以某色情网站充值地址溯源为案例。
可以看到该色情网站支持比特币充值购买会员。从区块链浏览器可以看到该地址总共发生了14笔交易充值记录。
以下为该14笔交易的充值明细。
时间 | 来自于 | transaction id |
---|---|---|
2018/12/15 10:23 | 7d1b14f0342a5e8b | cd2d8a048d4b4d75223216266944b9a5506701a249c6b53ba0fd412374c10dc2 |
2018/12/14 7:14 | daf9010a42869d95 | e29662a2bd1050c66fe8dfe63edac7c3e0ca64ccb1d665f1c6e6d13536a1265e |
2018/12/2 11:44 | Huobi.com | d850dc72ab400649b11e661059bec96cfb57050551f0223e83a468d5944ffc4e |
2018/11/19 21:35 | 93e5afea21d5f8a0 | 1736028940d4aadd4ebbbb375eda402392f0fb6112175e1768a07b52757d8d31 |
2018/11/2 5:30 | 00000b55c1bcbc1f | e66eb7d921f8642fb9dd0543a7df7154992e80d9feb795a28ecb16a09f4410b0 |
2018/8/19 0:23 | 000004950069154a | dfd49323aa870a36f6c9fbeb8e76d928b97d2c8425159331148a485dbeff9dba |
2018/7/12 18:36 | 00003b4a0ae1ed6a | b433002ee5541b7c0045e2a29241b28dd3cc24d6b699d2dff21e88f950c17d9b |
2018/7/7 21:09 | Huobi.com | 52ac913b68198fdc915e70a1f76164a9a7cd0feb064155dd77be8a864b1696f4 |
2018/7/5 1:55 | Huobi.com | d79e53edf27974007a71b5a2fc56012c75176bbb2bdc3d97d4a7cef9e8ced202 |
2018/6/24 7:12 | 01c43e697a64fd4f | 919423ab828fe5e4dd12f8fc54a74ee99ee39dba81fa594bdc9f9fde28b41612 |
2018/5/30 12:44 | 20abbdaa7176dadb | 464d93bbc5e7c41bb1de1316860550cc0f2e065377a182f85d4990532b73be97 |
2018/5/7 11:35 | 00000b55c1bcbc1f | ab26f735fa33e454bd42c02ce65a3430026285e0960b2f3eaebe91f30e1a47b6 |
2018/4/12 2:01 | Huobi.com | 03c8e15bd389868e008b4fc1704ffd3a68d82b478002cd604e3f6a89735a5358 |
2018/4/9 15:04 | 7d2f58108a2bedea | b1c00643b063bc5cec1ab84cc90c27ad5970640c9d6bcca95cf3ca6b3faaaf2e |
可以看到有4笔交易是用户直接通过火币网进行提币充值。
四、比特币交易追溯场景和意义
4.1 非法交易调查
比特币交易追踪溯源系统可以帮助执法和金融机构识别并阻止使用加密货币进行欺诈,勒索和洗钱等非法活动的违法者。通过图形界面,使用户能够轻松地对比特币交易的来源和去向进行深入调查。
输入只需要提供比特币地址和该地址的一个transaction id,系统将自动找到所有路径,以供手动识别和调查资金的来源和去向。
4.2 交易所KYT
对于交易所来说,暗网、涉恐等洗钱充提是高风险交易。交易所需要一种自动化的方法来评估洗钱风险,以便他们能够满足监管要求。KYT(know your transaction)是一种满足这种需求的加密货币交易监控解决方案,通过KYT API,可以监控大量活动并持续识别高风险交易。
*本文作者:北京链安安全实验室,转载请注明来自FreeBuf.COM