中国传统
初九
2018/2/24
6去中心化
去中心化的单一分布式账本。
以往,数据库或者账本都是为某个中心机构持有,所有的交易记录都发送至某个中心机构或者管理机构以及一些中间层级机构,交易记录被这些机构掌握。这种方法存在弊端:1.每个机构拥有它们的账本,会产生“中心点故障”的风险;2.因为需要对各种账本进行审核,故完成交易需要耗费大量时间,这会导致工作失误且重复做功。
在一个分布式架构中,例如区块链,数据库或者账本为P2P网络中的所有参与者共享或者见诸在全部网络节点上。凭借区块链架构,这些参与者与当前中心化过程中管理机构的地位一样,或者这些新型参与者会取代现有部分参与者的位置。P2P网络中的节点能够生成和(或)审核新数据。每一个节点复制账本的过程与其它节点同步发生,从而确保每一个节点实时访问绝大部分现有数据。
1.在网络中分享账本能够很好得应对节点失效的发生(例如不会出现中心点故障)。面临不法行为或黑客入侵时又能应对自如。
2.因为不需要审核账本,完成交易的时间会缩短。通过减少办公室冗员且提高行政工作效率来降低基础设施成本。而且,由于人为犯错的次数会减少,账本信息的精确性得到提高。
7 区块
区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。
每个区块包含两个部分。
区块头(Head):记录当前区块的元信息
区块体(Body):实际数据
区块头包含了当前区块的多项元信息。
生成时间
实际数据(即区块体)的 Hash
上一个区块的 Hash
…
这里,你需要理解什么叫 Hash,这是理解区块链必需的。
所谓 Hash 就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 Hash 长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。
举例来说,字符串的 Hash 是(十六进制),转成二进制就是256位,而且只有能得到这个 Hash。
因此,就有两个重要的推论。
推论1:每个区块的 Hash 都是不一样的,可以通过 Hash 标识区块。
推论2:如果区块的内容变了,它的 Hash 一定会改变。
8 Hash的不可修改性
区块与 Hash 是一一对应的,每个区块的 Hash 都是针对”区块头”(Head)计算的。
Hash = SHA256(区块头)
上面就是区块 Hash 的计算公式,Hash 由区块头唯一决定,是区块链的 Hash 算法。
前面说过,区块头包含很多内容,其中有当前区块体的 Hash(注意是”区块体”的 Hash,而不是整个区块),还有上一个区块的 Hash。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。
这一点对区块链有重大意义。如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,Hash 的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
每个区块都连着上一个区块,这也是”区块链”这个名字的由来。
9 区块形成过程
在当前区块加入区块链后,所有矿工就立即开始下一个区块的生成工作。
1、把在本地内存中的交易信息记录到区块主体中;
2、在区块主体中生成此区块中所有交易信息的 Merkle 树,把 Merkle 树根的值保存在区块头中;
3、把上一个刚刚生成的区块的区块头的数据通过 SHA256 算法生成一个 哈希值填入到当前区块的父哈希值中;
4、把当前时间保存在时间戳字段中;
5、难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内。
10 如何生成区块链交易
卖家将资产转让的信息发送到网络中,网络上会显示一个交易ID号码、买家的地址(或者公钥)、资产交易价值、一个时间戳及卖家的数字签名(或者“私匙”)。区块链利用一套密码系统来提高数据的安全性。
例如,网络中有两个成员对房产契约互换达成一致:1.房产所有者安排一项交易,交易信息包括买家的网络地址,从而使卖家清楚房产契约转让给哪个买家;2.卖家用他的私匙进行签核来批准这项交易。
11 未完待续
欢迎大家关注我们的公众号,持续关注区块链专题解读。
领取专属 10元无门槛券
私享最新 技术干货