数字加密货币网络拓扑结构特征分析

2020-02-04 02:04陈汇文郭东超李莉王钰栋王凯迪
电子技术与软件工程 2020年20期
关键词:哈希字节比特

陈汇文 郭东超 李莉 王钰栋 王凯迪

(北京信息科技大学 北京市 100101)

1 引言

1.1 背景介绍

近年来,随着越来越多完善区块链平台和基于区块链的高质量去中心化应用的出现,区块链受到全世界的广泛关注[1][3][4][5][6][7][8][9]。区块链及技术的重要性在于它有潜力在不依靠任何第三方授权的情况下,促进不信任网络空间中有价值的数字资产安全转移和可信赖合作[2][9]。

区块链起源于比特币,在比特币形成过程中,区块是一个一个的存储单元,记录了一定时间内各个区块节点全部的交流信息。各个区块之间通过随机散列(也称哈希算法)实现链接,后一个区块包含前一个区块的哈希值,随着信息交流的扩大,一个区块与一个区块相继接续,形成的结果就叫区块链[10]。作为第一个基于区块链技术构建的适用平台,人们认为比特币开创了第一代区块链的时代,其底层的区块链技术已在全球范围内迅速被接受。后续以太坊出现,标志着第二代区块链技术的出现。

区块链作为分布式数据存储、点对点传输、共识机制、加密算法等技术的集成应用,被认为是继大型机、个人电脑、互联网之后计算模式的颠覆式创新,很可能在全球范围引起一场新的技术革新和产业变革[11]。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式[12]。

任何区块链平台的基本功能都是安全地进行存储在分布式分类账中的交易(即以数据结构形式的区块链)。跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。也由记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。

所以,通过区块链技术记录的数据除了在信息量巨大之外,还具有极高的防伪造性、真实性以及可追溯性等特征,并且还属于结构化数据。从大数据的角度来说,就是具有很高的价值密度,所以这些账本信息有极高的分析价值。因此,本文将从复杂网络角度,对比特币以及以太坊交易数据的基本拓扑性质进行分析,并得出了能描述该网络特征的一些结论。

图1:比特币数据结构

1.2 工作内容

本文的工作内容大致分为一下三个阶段:同步比特币、以太坊的原始交易数据;对同步下来的数据进行解析、清洗得到能构建交易网络的数据集;通过数据集建立交易网络,从网络科学角度对基本网络拓扑性质进行分析。

1.3 其余部分的内容简介

本文的其余部分介绍如下:第二部分简单介绍了加密数字货币的数据结构和分析过程涉及的复杂网络理论,然后讲解了我们使用的数据采集和预处理方案,最后展示了我们的分析结果;第三部分对我们的研究进行了总结并提出对后续研究的期望。

2 研究内容

2.1 数字加密货币数据结构

本节将简单介绍数字货币的区块链数据结构以及该试验中涉及到的网络科学原理。

图2:默克尔树生成过程

图3:交易数据结构

图4:输入脚本、输出脚本结构

图5:解析比特币地址流程图

图6:数据集Ⅰ的度分布

图7:数据集Ⅱ的度分布

从总体上看,区块链是由一个个区块前后链接,以链式结构形成的去中性化账本。这些区块通过如安全哈希算法(SHA)、椭圆曲线数字签名算法(ECDSA)等基于密码学的算法对一定时间段内产生的交易数据进行加密处理而生成,在保障存储在其中交易数据匿名性的同时,也使各区块相互关联,使其具有不可篡改的特性。虽然不同的数字加密货币在数据结构上有部分细微的差别,但是大体结构却基本一致,每个区块均由区块头Header 与区块体Body 组成。

区块头起着维护整个区块链链式结构的作用。以比特币为例,比特币区块头里存储了当前比特币软件的版本号Version(4 字节)、前区块的哈希值Prev-block Hash(32 字节)、验证区块里交易哈希的默克尔根Merkle-root(32 字节)当前区块生成的时间戳Timestamp(4 字节)、标注的难度值Bits(4 字节)以及用于验证工作量算法算法的随机数Nonce(4 字节),具体结构图1所示。

对前一块区块哈希值Prev-block Hash、随机数Nonce、默克尔根Merkle-root 进行两次SHA-256 运算,就能得到当前区块的哈希值,并可以作为下一个区块的Prev-block Hash 存储在下一个区块中。因此,所有的区块都能以区块头Header 中的前一块区块哈希值Prev-block Hash 为指针串联在一起,生成一个完整的、以时间戳Timestamp 为顺序的链式账本。同时区块头中的默克尔根涉及到区块链中最重要的数据结构——默克尔树,默克尔树是一种二叉树,结构如图2所示,它的每一个叶子节点都是一个交易哈希,每一层的节点通过两两成对进行哈希运算,得到的最后一个节点即为默克尔根。默克尔树的存在不仅能提高区块链的运行效率,还能区块链系统更轻量化,提高区块链的可扩展性[13]。

区块体中记载着整个区块链最核心的数据——交易数据。图3为交易数据结构,区块体中的交易数据以交易Transaction(TX)为基本单位。每个区块里至少有一笔交易,并且第一笔交易均为创币交易Coinbase,创币交易没有交易的输入方,只有交易的接收方。以比特币中的交易数据为例,每一笔交易都由交易哈希Transaction Hash(32 字节)、交易软件的版本号Version(4 字节)、区块锁定时间Lock Time(4 字节)、交易输入Transaction Input、交易输出Transaction Output 这几部分组成。

一笔交易可以由多个交易输入和输出,而交易输出、交易输入这两部分记载着这笔交易的输入方、接收方的信息。交易输入中记载着过去区块中没有被花费掉的交易输出,即UTOX(Unspent Transaction Outputs),由引用交易哈希Prev-tx Hash(32 字节)、引用交易单支出索引号Index(4 字节)、输入脚本Script Sig(长度不定)、输入脚本长度Script Sig Len(1-9字节)、序列号Sequence(4字节)组成。交易输出则由转账金额Value(8 字节)、输出脚本ScriptPubKey(长度不定)、输出脚本长度ScriptPubKey Len(1-9字节)组成。其中,输入、输出脚本结构如图4所示。

这些脚本中又存储了公钥、签名等信息,通过解析公钥可以得到这笔UTOX 的地址。而通过交易输入中的上一笔交易哈希和交易输出索引,能定位到上一笔交易中的UTOX 的地址,也就获得了交易发起者的地址。这样,便可以获得不同地址间转账的信息、构建区块链交易网络进行分析。

2.2 分析中涉及的网络科学原理

图,也称网络,在本文中,无特殊说明,图和网络这两个概念可互换。图是由节点(Node)和边(Edge)构成,可简记为G=(V,E),其中V(V ≠Φ)表示节点的集合,E 表示边的集合,图中共有N=|V|个节点,L=|E|条边。一般来说,一个图可表示一个复杂网络系统,图中节点表示系统中的实体对象,边表示对象之间的关系。如果,两个节点Vi 和Vj 存在关联,则它们之间存在一条边Ei,j,也可写作。若含义与相同,则Ei,j为无向边,否则Ei,j 为有向边。如果图中所有的边都是无向边,则该图为无向图,反之则为有向图。若节点Vi 和Vj 之间存在一条边(有向边或无向边),则节点Vi 和Vj 互相称为邻居(Neighbor)或邻接点。在把实际问题抽象为图时,很多时候需要将附加段信息放在图的边(或点)上,边上的附加信息成为图的边权(简称权),权可以是数或者其他指派的量。给每一条边指定了权的图称为带权图。在图中,综上所述,图的种类有有向无权图,有向有权图,无向无权图,无向有权图。本文重点关注的是无向无权图以及有向无权图。

在无向无权图中,一节点所关联的边数为该节点的度数。我们把任取一个节点其度为k 的概率称为度分布 P(k),定义式如下:

对于有限大的无向网络,可用E[D]表示平均度(Average Degree),定义式如下:

对于有向图,节点v 为起点的边数为节点v 的出度,记作d+(v);节点v 为终点的边数为节点v 的入度,记作d-(v)。

关于度,还有一个度量是同配性(Assortativity),其作用是考察度值相近的节点是否倾向于互相连接。同配系数(Assortativitycoefficient)是一种基于“度”的皮尔森相关系数,用来度量相连节点对的关系,其定义为:

如果r 为正值代表具有相同度的点之间有某种协同关系,负值表示具有不同度数的节点间有某种联系。通常来说,r 的值在-1到+1 之间,+1 表示网络具有很好的同配模式,0 表示网络是非同配的,-1 表示这个网络完全不同配;如果同配性系数r<0 表示网络是异配的(Disassortative),反之若r>0 则表示网络是同配的(Assortative)。

在同配的网络中,度数高的节点更倾向于与其它度数高的节点相连接。

在图论中,用N*N 的邻接矩阵A 表示图是研究图的有利方法,便于用计算机研究图,也便于用代数的方法研究图的性质。设G =是一有向图,构造矩阵A(G):

A(G)=(aij)n*n,其中aij 是节点vi 邻接到节点vj 的条数,则A(G)为图G 的邻接矩阵。由此得出:

无向图也有对应的邻接矩阵,在无环(关联同一节点的一条边)和平行边(关联一对节点的m 条边,m ≥ 2)的情况下,无向图的邻接矩阵是对称的。

图中存在一个节点与边的序列,称为连通点和点的路(Walk),边不重复的路称为路径(Path)。在无向图中,所含边数最少的路径称为最短路径(Shortest path),所含边数也称为两节点间的最短路径距离(SPL,Shortest path length)。图中最长的最短路径,称为图的直径(Diameter)。平均最短路径长度(Average shortest path length)则是网络中所有节点之间的最短路径长度的平均值,简称 ASPL。在有权图中则需考虑权值,本文讨论的是无权图,故不予解释。

2.3 数据采集和数据预处理

本节将介绍我们收集数字加密货币数据、提取其中交易信息的方法。

本文的一个目标是对数字加密货币的交易网络的基本拓扑性质进行分析,所以要先建立该货币的交易网络。在这里可以把交易地址看作节点,而交易单则可看作是连接不同交易地址的边。因为数字加密货币的底层技术是区块链,所以该货币从创建时刻起所有的交易数据都可在互联网上进行下载。

以比特币为例,我们使用比特币钱包Bitcoin Core,比特币过往所有交易数据进行同步(2009年1月3 号的第一笔创币交易到2020年6月),数据大小一共为160GB。而比特币交易网络中的所有交易数据都经过特定加密算法的处理,转换成十六进制的形式存储在blk.dat 文件中。故只要根据前文介绍的比特币数据结构中每个部分的字节大小,即可对同步下来原始交易数据进行解析,得到每笔交易的详细信息(比如地址、金额、时间、交易类型等)。我们使用一个开源的解析库bitcoin-blockchain-parser,对blk.dat 文件中的原始十六进制字节流进行截取,存储到相应的对象中。

但是,这样只能解析到交易金额、时间、签名等信息,还不含有交易的地址。因此,还需要对交易输出中的公钥进行转化,才能得到交易地址。具体过程如图5,首先对公钥进行SHA-256 运算,得到公钥Hash,再对其进行RIPEMD-160 运算得到原始地址。在原始地址前加上比特币主网的版本号,进行两次SHA-256 运算,取结果的前4 字节作为校验和[14]。最后,将版本号、原始地址、校验和串联在一起,进行一次Base58 编码即可得到这笔UTOX 的地址。再将每个区块中解析到的交易信息依次存入csv 文件,便可建立交易网络进行相关分析。

2.4 分析结果

在分析中,我们以太坊两个数据集进行分析[15]。数据集Ⅰ包含5 千个块,序列号从7,035,000 到7,039,999,交易量超过30 万。数据集包含1 万个块,序列号从7,000,000 到7,009,999,交易量超过55 万。我们用向量P(i,j,a)描述每个事务。其中i,j 表示地址,P(i,j,)表示Etalum 硬币从地址i 转移到地址j。a 表示此次过程的交易量。由于有些测量仅对无向或非加权图有意义,接下来,我们将从有向加权网络的无向或非加权对应关系。图6 为数据集Ⅰ的网络拓扑结构。

从图6 我们可以看出,大部分节点都连接到了一起。网络作为一个整体是由一个巨型的连通子图(随机图论中称为巨集团)和许多有限大小的类书连通子图(也称有限集团)构成。我们计算了整个网络的分量大小分布。在数据集Ⅰ中,共有207056 个节点,6708 个分量。巨集团里包含了177100 个节点,占了所有节点的85%以上。其余不到15%的节点都分布在剩下的6707 个分量中。超过85%的节点可以通过跟踪传入或传出有向链路从彼此到达这一事实意味着大多数节点在有向图中是弱连接的。所有事务的历史记录都很好地记录在区块链中,这使得跟踪和审计事务特征成为可能。Etalum 平台的良好可审计特性有助于建立一个基于公共区块链的具有高级别安全性的经济系统。

在有向图中我们计算了两个数据里的同配系数,数据集Ⅰ和数据集Ⅱ的结果分别为r= -0.1331,r=- 0.2315。显示其为负相关。具体来说,大度节点倾向于与小度节点进行交易。虽然存在许多加密货币交换,表明了某种集中的趋势,但交易网络往往不会出现“富俱乐部”现象。

此外,我们还计算了两数据集的度分布。如图6 和图7,我们发现度为1 的节点和度为2 的接单占了整个网络的90%以上。交易数量少的节点占了整个网络的大部分。

平均跳数(即无向图的平均最短路径长度)和直径,数据集Ⅰ和数据集Ⅱ分别为(1.59,59)和(5.82,217)有关的两个数据集。事务网络是小世界网络,其直径以很快的速度增加。任何一对匿名用户之间的典型距离都非常小。换句话说,相对较低的平均最短路径表明循环周期可能很小。因此,Etalum 加密货币具有良好的流动性。我们怀疑这是因为比特币和Etalum 等公共区块链平台受限于货币供应的系统。在这些区块链平台中,新生的“钱”供应率被设计为下降。人们普遍认为,这可能导致所谓的通货紧缩以及加密货币为“货币”的崩溃。

3 总结与展望

3.1 总结

从数据结构的角度来说,数字加密货币的交易数据具有明显的层次化嵌套结构,要获取其中的交易信息必须根据区块生成原理逐步对原始数据流进行分层解析。而本文解析到的数据以及使用的解析的方法,相信会对后续相关的研究有所帮助。

此外,我们从网络科学的角度对提取出的交易数据的统计规律进行了初步分析和研究。通过网络科学的框架,将不同的账户之间的交易关系视为一个图形。引入一些关键的网络度量图形的统计属性,从而提供了对其关系的一些简单的研究和分析。我们发现,在这个交易关系的网络中,并不是所有的交易数量都是庞大的,交易数量少的账户占据整个网络的大部分,这意味着我们所研究的方向更倾向于大量的普通用户。因此我们认为,上述统计数据可以归于交易的多样性和大量的加密货币交易所的存在。

3.2 展望

基于区块链技术的数字加密货币虽然才出现不过数年,但是却对金融、网络安全、物联网等领域产生了革命性的影响,启发了众多基于区块链技术的应用,故我们相信未来对区块链数据的研究会越来越多。但同时因为数字加密货币的匿名性,网络上也滋生了大量通过数字加密货币进行的非法交易。

因此在未来的工作中,我们将联合数字加密货币交易平台的交易数据,与区块链上交易数据进行分析。寻找建立平台用户与区块链链上用户的关系的方法。此外,我们还打算对数字加密货币的交易网络拓扑结构特征进行更深入的分析,希望找出能描述其网络特点的模型。

猜你喜欢
哈希字节比特
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
比特币还能投资吗
简谈MC7字节码
比特币一年涨135%重回5530元
基于维度分解的哈希多维快速流分类算法
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构
多个超导磁通量子比特的可控耦合