区块链链上追踪基础篇【中】:地址标签的识别(1) | xxx区块链链上追踪基础篇【中】:地址标签的识别(1) – xxx
菜单

区块链链上追踪基础篇【中】:地址标签的识别(1)

七月 13, 2021 - 安全维基


区块链链上追踪基础篇【中】:地址标签的识别(1)

上一篇文章我们介绍过了关于区块链地址标签的一些基本概念。

地址标签可以说是链上数据分析最为重要的基础数据之一,地址标签的应用场景也非常广泛,比如对恶意地址的资金流向分析、或是针对某些特定任务或巨鲸的地址做资金流入流出预警,这些都需要地址标签数据。

知名的 Whale Alert 就是专门针对主流区块链项目的链上资金变动进行告警的产品,其预警信息中最大的价值就在于对资金流向的判断会有地址属性的说明 —— 流出某交易所、流入某交易所、某个事件中涉及的资金异动等等:

区块链链上追踪基础篇【中】:地址标签的识别(1)

从这一篇开始,我们就介绍几种最简单的地址标签识别思路。大家也就可以据此去开始着手打造自己的链上追踪能力了。


今天先从地址类别开始讲起


这是最简单的方式了,肉眼即可完成、使用正则即可批量完成,主要应用于BTC。在BTC地址中,可以根据格式分为几类常见地址:


那么,这几类分别是什么?首先需要先明确在BTC中的两个概念:

有了以上两个基础概念,就可以对刚才遗留的几个疑问展开说明了。到底是什么 P2PKH、什么又是 P2SH 等等问题:


P2PKH 是 Pay to Public Key Hash 的缩写。


如果 Public Key 就被简单粗暴的理解为钱包地址的话,那么 Public Key Hash 就可以更粗暴的理解为对地址做了一次 HASH 计算,那么,Pay to Public Key Hash 的理解是不是就很简单了?

为什么要对 Public Key 做 HASH 呢?这可以防止一种极端场景。比如,产生公私钥对的算法出现了漏洞,那么可能拿到 Public Key 便可破解出 Private Key,而在 BTC 的世界里拿到了 Private Key 就是相当于拿到了钱包的所有权。所以考虑到极端情况下,对 Public Key 做一次 HASH 计算得到 Public Key 的密文,这样即便算法出现漏洞,想要通过密文得到 Public Key 的明文也是有一定难度的。这就在一定程度上加了一道双重保险。

在 BTC 世界中还有一种更简单的格式,便是P2PK,了解了 P2PKH 之后再理解 P2PK 就容易多了,就是少了个 HASH 过程,直接暴露 Public Key。

P2PKH 这种严谨的方式便是 BTC 最早的地址格式,至今也依然在沿用。


P2SH是Pay to Script Hash的缩写。


使用 P2PKH 地址转账时,其他本质依然是向一个固定的 Public Key 转账,而每个 Public Key 与 Private Key 的对应关系又是唯一的,即,只能由一个人来控制。因此就是带来了一个问题,如果当我们的交易需要一个人以上授权的时候怎么办?

所以就有了 P2SH,P2SH 本质上就是将 Public Key 换成了 Script。也就是说,控制过程不再是一个公私钥对的方式,而是可以通过脚本对控制过程进行编程,那么,就有了一种可能性,控制钱包的人不少一个人而是很多人。

所以,P2SH 地址常用于多签,即,多个人出示了自己的 Private Key 进行验证之后,这笔交易才能够被发送出去。


第三种格式,Bech32格式。


它与前两种格式地址截然不同,是专为SegWit开发的地址格式,不区分大小写,有固定的地址前缀便于识别。SegWit 来自 Segregated Witness 的缩写,中文称“隔离见证”。是 BTC 的一种扩容方案,简单来说就是把原来 BTC 交易的数据结构做了一些拆分。有兴趣的读者可以去看看细节。


以上对三种地址格式做了介绍。可能不熟悉交易细节的读者依然无法理解,这么简单的地址标记逻辑,在实际应用中真的有用吗?好,举例说明。

以最典型的 P2SH 为例,我们来找一个3 开头的地址:
36KAwNUR8VeLpUfGwdk7LEN6F4yvoRWMjn
从这个地址的交易中抽取一个哈希为36a4daa66e7d4892adc662f8dbf2429f5567a686f2e7fc45e48df4f4f0723e44的交易,如下图:

区块链链上追踪基础篇【中】:地址标签的识别(1)


从这个交易中可以提取它的Redeem Script 信息(图中被圈红色的部分),通过BTC节点的RPC方法decodescript(hexstring):

$ curl --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "decodescript", "params": ["522102bca8b2795561f5822e68ac75f1ec253285b8d22bd7648c1b905509517e3d5a7a210363598b591b5fe2eba9322a1b6e55f6bfc3fc27f8060e3de7240e1de67f8adae62103a6890dff6fbf2c897b1e578b6cbe6e5dd6c7652f538162a851410270cb4b106a53ae"]}' -H 'content-type: text/plain;' http://your_bitcoin_node_rpc_url | jq

即可解析出这个交易背后的“真相” —— 即,发起交易的地址是一个多签地址,其背后还有三个权限地址:

{  "result": {    "asm": "2 02bca8b2795561f5822e68ac75f1ec253285b8d22bd7648c1b905509517e3d5a7a 0363598b591b5fe2eba9322a1b6e55f6bfc3fc27f8060e3de7240e1de67f8adae6 03a6890dff6fbf2c897b1e578b6cbe6e5dd6c7652f538162a851410270cb4b106a 3 OP_CHECKMULTISIG",    "reqSigs": 2,    "type": "multisig",    "addresses": [      "1HfoxzkAwMpF1TrNceEY9EHZi2qGgmtDCi", //多签地址1      "1Au8p4wagsHM5Ph6CAmDkQqdzeXspLypob", //多签地址2      "1NLHhwxYj4ETz2qH3twycFyPSKNy1aTmoc" //多签地址3    ],    "p2sh": "36KAwNUR8VeLpUfGwdk7LEN6F4yvoRWMjn"  },  "error": null,  "id": "curltest"}
从以上结果来看:

所以,在这一个过程下来之后,我们至少为这个地址获得了两个标签 —— P2SH 和 多签地址 —— 而同时我们又获得了三个权限地址及其对应标签。

当然,至于多签地址这一标签的应用,会涉及到很多不同的追踪场景,例如,多签地址的上游地址,很可能会具备很强的中心化平台特征或是个人投资属性特征,这些特征都需要放在具体场景中去使用和分析。
至此大家也可以看出,地址标签实际上在多数情况下只作为第一层数据而已,在不同的应用场景下,可以在标签基础上深挖出第二层、第三层 …… 越深入,内容越丰富,价值越大。限于篇幅在此先不展开,后面的各类实战介绍中会陆续有所涉及。

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51