区块链在网络管理应用方面的初探
摘要:用简单明了的表述叙述出什么是区块链,并且用实际代码表示出区块链挖矿的具体实现方式。后又阐述出区块链的新特性并且概括出区块链在众多领域特别在网络安全和网络管理方面的应用前景。
关键词:去中心化,区块链,网络安全和网络管理
A preliminary study on theapplication of block chain in network management
Chenlu
(Chongqinguniversity of posts and telecommunications)
Abstract:Theblock chain is described in a simple and clear description, and the concreterealization method of block chain mining is expressed in the actual code. Afterthat, the new characteristics of blockchain are expounded and the applicationprospect of blockchain in many fields, especially in network security andnetwork management, is summarized.
Key words:Decentralization, blockchain,network security and network management
0 前 言*
区块链是时下最火最热的话题之一,区块链的核心技术不免引起了我的关注。2017年4月份,我开始了解这个词汇,并且在参加一个大数据比赛时专门做了关于区块链对于金融经济特别是对中国金融经济产生的影响,当时这个技术还很新,具体的实现方式还只能在国外的网站找,对于相关的论文也不是很多。区块链技术本身就是基于去中心化的对等网络,所以这篇报告着重区块链本身的技术和它关于网络管理的具体应用。
1 区块链核心技术和实现实例过程
1.1 什么是区块链?
区块链,我们可以理解为一种值得信赖的第三方,是一种高速的透明的有效的网络交互设计模式。有一篇文章总计的很精准:区块链技术基于去中心化的对等网络,用开源软件把密码学原理、时序数据和共识机制相结合,来保障分布式数据库中各节点的连贯和持续,使信息能即时验证、可追溯、但难以篡改和无法屏蔽,从而创造了一套隐私、高效、安全的共享价值体系。区块链的这种去中心化的对等网络的实现方式,带来的优点如下图1:
图1 区块链的两大主要优势
去中心化,通俗点来理解就是把基站或者服务器分散到每一台电脑上面,每个都可以作为主机来使用,这样的模式,需要的就是点对点的网络。区块的结构并不复杂,包含了一些字段,整体上看一个区块的结构类似于双向链表中的节点。可以先直观的感受比特币系统中第505156个区块的头信息。这种结构类似于网络管理ASN.1(虽然还是有很多不同)。
图2 区块链第505156个区块的头信息
这些字段相当一部分可以通过字面意思来理解,对于较为重要的字段进行一一列举。
. Number OfTransactions:此区块中所包含的交易数量,网页下方显示了846个交易的详细信息,也称为区块体。
. Difficulty:难度系数,为了控制区块产生的速度,难度系数代表当前区块产生的难度。
. Version:区块链的版本。
. Nonce:工作量,在当前难度系数下计算了1683386125次才生成了此区块。
. Hash:此区块的Hash签名,唯一且不可更改。
. Previous Block:前一个区块的Hash签名,有且只有一个。
. Next Block(s):后一个区块的Hash签名,可以有多个(区块链存在分叉的情况)。
. Merkle Root:默克尔树根,默克尔树是存储交易签名的数据结构,在Git中也有应用。
这些关键字段的正确维护是区块链实现的基础,也是区块链去中心化,解决双花和拜占庭将军问题的基本结构。有了关键的数据结构,还需要相辅相成的规则和算法才能运行起来。理清楚整个流程之后再回过头看区块结构就能一目了然了。
图3 区块链的区块内部及链接结构
可以看出,一个区块本身包括先前散列值、随机数和merkle根三块部分。关于这三部分,前面两个不过多阐述,merkle根指的是merkle树这种数据结构的根节点,这种树的结构可以是二叉树或者多叉树,它有个特点是叶子节点的是为该叶子节点的数据值或者数据值的hash,非叶子节点(兄弟节点)的值是其子节点的值的hash值。这里的markle根,在区块的头部,连接着后面的区块体。通过观察区块结构可以得出结论:
一个区块写入后Hash唯一且不可更改,除非把整个区块链中所有区块的Hash,Previous Block,Next Block(s)全部做相应更改。一个区块的内容更改后Hash随之更改。
1.2 区块链1.8.1版本挖矿实例
具体的操作步骤如下:
一、安装go-ethereum客户端:
图4 安装go-ethereum客户端
二、初始化:
新建文件genesis.json,内容:
图5 genesis.json内容
在终端使用以下命令进行初始化:
三、启动私链:
下面的命令将把日志输入到eth_output.log,并开启Geth javascriptconsole(后面简称web3 console)