首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链图片式学习笔记(二)

4.区块链技术栈

1)区块链基本技术组合

区块链是将产生的数据按照一定的时间间隔,分成一个个的数据块记录,然后再根据数据块的先后关系串联起来,就是所谓的区块链。按照这种规则,沿着时间线不断增加新的区块,就好像是时光记录仪一样,记录下发生的每一笔操作。

2)区块链账本

说明:

l区块数据在逻辑上分成区块头和区块体,每个区块头通过梅克尔根(可以认为就是一个区块中所有交易事务的集体身份证号)关联了区块中众多的交易事务,每个区块之间通过区块头哈希值串联起来

l这个数据格式将连续不断发生的数据分成一个一个的数据块,在下载同步这些数据的时候,可以并行地从各个节点来获得,无论数据先后,到达本地后再根据身份证号组装起来

l这是一种链条格式,很难从中间去破坏。如果有人篡改了2号区块,那么他就得同时把2号区块后续所有区块都更改掉,这个难度极大。在区块链系统中,一个节点产生的数据或者更改的数据要发送到网络中的其他节点接受验证,而其他节点是不会验证通过一个被篡改的数据,因为跟自己本地区块链账本数据匹配不起来,这也是区块链数据不可篡改的设计

l利用共识算法(如掷骰子)选定记账人,对记账人的记账行为进行奖励,比特币就是使用了这样的原理来不断发行新的比特币

3)共识机制

所谓共识,就是指大家都达成一致。

共识算法,就是一个规则,每个节点按照这个规则去确认各自的数据。

筛选规则,其实就是一组条件,给一组指标让大家完成,谁能更好地完成指标,谁就有机会被选上。

在区块链系统中,存在着多种这样的筛选方案,比如Pow(proof of Work,工作量证明),PoS(Proof of Stake,权益证明),DPos(Delegate Proof of Stake,委托权益证明),PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等。区块链系统就是通过这种筛选算法或者说共识算法来使得网络中各个节点的账本数据达成一致。

4)密码算法

区块之间的连接,靠一种叫做哈希值的数据来关联,这是通过密码算法中的哈希算法计算得出。哈希算法可以通过对一段数据计算后的得出一段摘要字符串,这种摘要字符串与原始数据是一一对应的。

区块链账本对每一个区块都会计算出一个哈希值,称为区块哈希,通过区块哈希来串联区块。如果有人篡改了某一个区块数据,由于后面的区块是通过区块哈希来指向的,只要前面的区块发生变动,这个区块哈希就无效了,无法指导正确的区块。

除了整个区块会被计算哈希值外,区块中包含的每一笔事务数据也会被计算出一个哈希值,称为“事务哈希”,每一个事务哈希都可以唯一地表示一个事务。

对一个区块中所有的事务进行哈希计算后,可以得出一组事务哈希。

再通过对这些事务哈希进行加工处理,最终会得出一棵哈希树的数据结构。

哈希树的顶部就是树根,称为“梅克尔根”。通过这个梅克尔根就可以把整个区块中的事务约束起来,只要区块中的事务有任何改变,梅克尔根就会发生变化,利用这一点,可以确保区块数据的完整性。

其他的密码算法应用还有很多,如通过密码算法创建账户地址、签名交易事务等。

5)脚本系统

区块链系统之所以能够形成一个有价值的网络,依靠的就是脚本系统。

所谓脚本,就是一组程序规则,在比特币系统中,只能进行发送和接收,这个发送与接收的过程就是通过实现在比特币中的一组脚本程序来完成的。

有些系统允许用户自行编写一组程序规则,编好后部署到区块链账本中,这样就可以扩展区块链系统的功能,例如以太坊就是通过实现一套可以自定义功能的脚本系统,进而实现了智能合约功能。

6)网络路由

区块链是一个分布式系统,网络中的节点通过网络路由来进行彼此间通信。

在区块链系统中会定义一种协议,称为“节点发现协议”。

除了发现节点外,更重要的一个功能是同步数据,节点要保持自己的数据是最新的,就必须要时时更新自己的数据。既然没有服务器来下载,就通过最临近的节点进行同步。

通过向邻近节点发送数据请求获得最新数据,节点彼此都充当服务器和被服务者,通过这种方式,网络中的每一个节点都会在某一个时刻达成数据上的一致。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180405G09IW000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券