二. 区块链系统技术分析

 区块链系统技术分析

1区块的技术实现

1)区块的原理

区块是一段时间内全部合法交易数据的集合体。区块内部利用树状结构将全部数据构成一个不可改动的集合体。这样的集合体既便于交易的校验又便于交易的合法性验证。

2)区块的结构

每个区块是由数据区块头和区块身两部分构成的。区块头用于链接到前面的区块并且为区块链数据库提供完整性的保证,区块身则包含了经过验证的、区块创建过程中发生的价值交换的所有记录。

数据区块结构如下图:


头是80字节长。其包含六方面内容:版本号、前一个区块的记录、Merkle树的根值、时间戳、难度值、随机数。

版本号:4字节,标示软件及协议的相关版本信息。

前一个区块的记录:32字节,前一个区块头的哈希值。

Merkle树的根值:32字,这个区块所有交易的的标记数值。

时间戳:4字节,记录这个区块产生的近似时间(精确到秒的Unix时间)。

难度值:4字节,记录这个区块相关哈希值寻找的难度系数。

随机数:4字节,用于工作量证明算法的计数器

区块头结构如下图:


数据区块身平均每个记录至少超过500个交易,平均每个交易至少有250字节。区块身只含有一段时间内的全部的交易记录和这些交易记录形成的两棵Merkle树的数值(这两棵Merkle树的根值会再被放在一起进行哈希运算而获得唯一一个哈希值。但是这个唯一的哈希值会存放于区块头中,而不是区块身中)。

区块身结构(以只含8笔交易的区块身为例)如下图:


3)区块的技术

前一个区块的记录:前一个区块头的哈希值,通过这个值这个区块只能且必须和前一个区块练接上。最终所有一一首尾相连的区块们组成了区块链。

Merkle树的根值是由区块体中所有交易的哈希值(哈希指针)逐级两两哈希计算出来的一个数值。该数值就是整个交易集合的数字指纹(一个哈希指针)。该数值是用来确保整体数据的完整不变的。该数值也提供了一种校验区块是否存在某交易的有效途径。

难度值是用来控制区块制造速度的。它根据过去的出块速度自动进行调整以保持相对匀速的制造区块。难度的调整是在每个节点上独立自动发生的。每2,016个区块中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块(预期两周应该产生的区块数)的花费时间与1209600秒钟(两周的秒钟数)比较得出的。难度是根据实际时⻓与期望时间的数值进行相应调整的(或变难或变易)。简单来说,如果系统发现区块产⽣速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。

随机数是在前五个值固定情况下寻找一个适当的随机数值。这个随机数必须满足的条件是,用这个随机数与区块头的其他所有数值共同进行哈希运算可以得到一个小于难度目标(相对于前一个区块头哈希值)的区块头哈希值。

随机数的特点是合适值有多个(不过只需要找到一个就可以了),其他节点对其有效性验证很容易,并且只能通过穷举的方法获取。

数据区块身的Merkle树的形成是:

(1)先把所有的交易记录数据进行一一进行哈希计算,得到所有交易记录数据的哈希值。

(2)把(1)所得的哈希值进行两两配的哈希计算,得到哈希值的哈希值。

(3)再对(2)所得的哈希值进行两两配的哈希计算,得到哈希值的哈希值。

(3)以此类推进行哈希计算,直到最后得到两个哈希根值。

(4)最终,所有交易记录的的哈希值,哈希值的哈希值,一起构成两颗哈希值的树状结构。

2区块的链的技术实现

1)区块的链的原理

通过对前一区块整体进行哈希运算产生一个哈希值作为数据指针,将该数据指针存放于当前区块的区块头内,通过这个数据指针将当前区块与前一区块相链接。类似的将所有的区块一一链接起来形成区块链。以哈希值作为数据指针,不仅指明了前一个区块的地址,而且对前一区块进行了数字签名(对整个区块进行哈希计算获得一个哈希值)来防止该区块的内容被篡改。

2)区块的链的结构

区块的链的结构非常简单,就是存放在当前区块头中的前一个区块的哈希值,一个哈希指针。

区块的链(整个加重黑色实线部分)的结构如下图:


3)区块的链的技术

任何数据链表中都包含一系列连接在一起的数据块。每个数据块包含有数据和一个指向前一个数据块的数据指针。该数据指针就是链接数据块的链。在区块链系统中,数据块就是区块。普通的数据指针则被哈希指针取代。

作为哈希指针的哈希值是通过对整个区块进行哈希运算而获得的。这样的哈希指针作为地址的同时也是一个数字签名。

区块链的形成过程就是如何选取一条合适的链的过程。在特定难度系数规定下,就会有一个特定的哈希值的集合,包含所有符合要求的哈希值。但是对于每一个区块来说,只能选用一个哈希值作为其哈希指针。选用的方法是通过节点之间比拼哈希计算的速度,选取最先获得的上述哈希值集合内的一个值。其他该哈希值集合内的哈希值一律弃用。判定一条链是否符合要求就涉及到分布式共识机制的工作量证明算法。

3  区块链的技术实现

1)区块链的原理

区块链是一个的巨大账本。作为比特币的底层技术,区块链是由一串使用密码学相关联所产生的数据块组成,每一个数据块中包含了多次区块链系统网络检验的信息。随着区块链系统交易不断产生,节点(每台通过客户端口连接到区块链网络上的电脑)不断验证各种交易并创造新的区块来记录最新的交易,这个帐本会一直增长延长。这些区块按照时间顺序线性补充到原有的区块链上。每一个节点都有一份完整的已有区块链备份记录,而这些都是通过进行数据验证算法解密的节点自动完成。区块链上保留有所有关于每个节点和节点上全部交易的各种各样的信息,这些信息也被记录在完整的区块链上。区块链帐本完全对所有的节点公开,这意味着区块链信息可以通过各个节点地址在浏览器上进行查询任何关于各个交易的各种信息。

2)区块链的结构

区块链就是用哈希指针将全部区块按照时间次序将所有的区块链接而形成一部完整的账本。

区块链(以只有五个区块的区块链为例)的结构如下图:


原始

3)区块链的技术

(1)区块链的工作流程主要包括如下步骤:

第一,发送节点将新的数据记录向全网进行广播;

第二,接收节点对收到的数据记录信息进行检验,比如记录信息是否合法,通过检验后,数据记录将被纳入到一个区块中;

第三,全网所有接收节点对区块执行共识算法(工作量证明、权益证明等);

第四,区块通过共识算法过程后被正式纳入区块链中存储,全网区块链系统的节点均表示接受该区块,而表示接受的方法,就是将该区块的随机散列值视为最新的区块散列值,新区块的制造将以该区块链为基础进行延长。

(2)区块链的增长

节点始终都将最长的区块链视为正确的链,并持续以此为基础验证和延长它。如果有两个区块链系统的节点同时广播不同版本的新区块,那么其他区块链系统的节点在接收到该区块的时间上将存在先后差别,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成长的链条。该僵局的打破需要共识算法的进一步运行,当其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。这样就可以防止区块链的分叉。

新的数据记录的广播实际上并不需要抵达全部的区块链系统的节点。只要数据记录信息能够抵达足够多的区块链系统的节点,那么将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个区块链系统的节点没有收到某特定区块,那么该区块链系统的节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求。

区块链网络里的记账者是区块链系统的节点,区块链系统的节点负责把数据记录记到数据区块里,为了鼓励区块链系统的节点记账,系统会按照规则随机地给记账的节点进行奖励。

(3)时间戳

为了保证不会有人制造假数据记录呢,或者保证造假数据记录不被通过验证,区块链应用了:时间戳。

时间戳的应用正是区块链与众不同的地方,区块链不仅关注数据区块里的内容,也关注数据区块本身,把数据区块的内容与数据区块本身通过时间戳联系了起来。

时间戳为什么会出现?这是由区块链的性质规定的,节点把数据记入了区块,因此一个区块就相当于一页账簿,每笔数据在账簿中的记录可以自动按时间先后排列,那么账簿的页与页怎么衔接起来?也就是说这一个区块与下一个区块的继承关系如何断定就成为了问题。于是时间戳就出现了。

时间戳的重要意义在于其使数据区块形成了新的结构,这个新的结构使各个区块通过时间线有序连接起来,形成了一个区块的链条,因此才称为区块链。区块按时间的先后顺序排列使得账簿的页与页的记录也具有了连续性。通过给数据记录印上时间标签,使得每一条数据记录都具有了唯一性,这就使数据记录本身在区块和区块上的哪个位置上发生可以精确定位且可回溯,给其他的校验机制协同发挥作用提供了极大的便利和确定性,也使得整个区块链网络能够确定性地验证某条数据记录是否真实。

由于区块链网络是公开的,这样整个系统都可以知道过去发生的所有数据记录。区块链上任何新的数据记录都继承自全部过去的数据记录。由于过去的数据记录是真实的,而且链条的各个区块记录由时间戳链接起来使之环环相扣,所以任何想要制造一个假的数据记录的企图,就不得不对在区块链上过去的所有数据记录进行修改。

在区块加入区块链的初期,可能形成了多个不同的链条;但因为最长的那个被诚实的节点所控制,所以想要修改过去的数据记录,首先就要从头构造出一个长度比最长的那个还要长的链条;在这个新的链条超过原来的那个链条后,才能制造出来一条含有双重支付的虚假数据的区块链。然而随着时间推移,制造新链条的难度和成本都是呈指数级上升的。

4区块链系统技术实现

1)区块链系统的原理

区块链系统是一个通过点对点通信技术实现的分布式记账,分布式存储,分布式传播的智能账本系统。网络系统上的存储着区块链的各个节点通过点对点的方式进行相互作用来共同形成,共同维护,共同所有一个客观的账本系统。

2)区块链系统的结构

区块链系统是由所有区块链的副本(实际上只有副本存在)通过点对点通信系统在互联网上连接而成的一个系统。

区块链系统(以12个区块链即节点构成的系统为例)的结构如下图:


3)区块链系统的技术

区块链系统是按照P2P协议运行的一系列节点的集合。区块链系统节点通常采用TCP协议,使用8333端口与相邻节点建立连接,建立连接时也会有认证过程,用来确定协议版本,软件版本,节点IP,区块高度等。

当节点连接到相邻节点后,接着就开始跟相邻节点同步区块链数据(轻量级钱包应用其实不会同步所有区块数据),节点们会交换一个getblocks消息,它包含本地区块链最顶端的哈希值。如果某个节点识别出它接收到的哈希值并不属于顶端区块,而是属于一个非顶端区块的旧区块,就说其自身的本地区块链比其他节点的区块链更长,并告诉其他节点需要补充区块,其他节点发送getdata消息来请求区块,验证后更新到本地区块链中。

P2P网络是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点,每个网络节点以扁平(flat)的拓扑结构相互连通。

区块链系统节点会记住它最近成功连接的网络节点,当重新启动后它可以迅速与先前的对等节点网络重新建立连接。区块链系统节点会在失去已有连接时尝试发现新节点。当建立一个或多个连接后,区块链系统节点将一条包含自身IP地址消息发送给其相邻节点。相邻节点再将此消息依次转发给它们各自的相邻节点,从而保证节点信息被多个节点所接收,保证连接更稳定。新接入的节点可以向它的相邻节点发送获取地址getaddr消息,要求它们返回其已知对等节点的IP地址列表。节点可以找到需连接到的对等节点。在节点启动时,可以给节点指定一个正活跃节点IP,如果没有,客户端也维持一个列表,列出了那些长期稳定运行的节点。这样的节点也被称为种子节点(其实和BT下载的种子文件道理是一样的),就可以通过种子节点来快速发现网络中的其他节点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容