组成区块链的基本要素

作者: zidea | 来源:发表于2018-11-16 05:44 被阅读24次

今天给他家分享的是当下炙手可热的技术—区块链。大家在百度输入区块链几个字,就能获得成千上万条有关的消息。想必大家或多或少对区块链有所了解。即是并不关心科技,也多少会知道有区块链这个词。我也在通过不断的学习,来不断刷新自己对区块链的认识。作为一名程序员,自然而然地也想探究一下区块链背后的技术。虽然个人能力有限。今天目标是带大家了解一下组成区块链的五个基本元素,内容可能因为自己的知识结构和能力限制,可能有有误的地方,希望大家指正。

有人说你研究他—区块链有啥用,其实我也不知道他对我的工作会有啥帮助和用处。但是我知道,如果我都知道他的好处,那他就不会给我带来惊喜和更多价值,现在唯一可以确定他能给我带来的好处就是,带来了一些新思想,开阔了我的编程思路。这是我现在唯一知道他能给我带来的好处。

什么是状态机

这里定义状态机,这个状态机只是为了说明区块链,所以设计很简单,初始化状态为整型 0 更新状态的是将消息(数字)添加到初始状态(0),如图 状态发生了变化 q1 7 = 0 + 7,这是状态机(下图)

状态机的更新状态

区块链技术是基于状态机的,不断更新状态,q1 = q0 + 7(message) q2 = q1 + (-5) = 2 …

状态机流程

这里我们为消息添加一个校验函数,来屏蔽一些无效的信息。这个函数接受当先状态和消息做为参数,按一定规则进行校验,返回真或假,来决定信息是否有效,从而决定是否更新状态。定义一个简单的校验规则就是,加入 message 值(7) 需要大于当前状态(0) 也就是 7 > 0 。

区块链状态机 添加校验节点

我们看一下图,在 q1 接受信息 -5 进行校验,结果 –5 是否合法,这是因为规则是 message (-5)需要大于原有状态值 7,所以 -5 > 7 为 false 没有通过校验。继续向下显然 16 > 7 通过校验状态更新为 7 + 16 为 23。(如下图)

我们创建 4 个节点可以代表人或组织,每两个节点可以双向传递消息,这样就形成一个分布式网络,确保了信息可以传递给每个节点。(如下图)

分布图

在这个分布式网络,每个节点都有一个状态机,可以接受信息然后更新自己状态。

每个节点都有自己的状态机

当 message (-5)从一个节点进入分布式网络,以这个节点为路口来更新整个网络上每个节点的状态机。

更新整个网络状态

当 message (-5)流入到每个节点时,每个节点都会获取消息进行校验来更新自己状态机。

分布图 进行校验

这样问题也来了,当不同 message 从两个不同或多个节点进入分布式网络,来更新每个节点的状态机。这样就会带来一致性的问题。这样就有可能有两种情况,第一种情况是先接受 29 然后接受 72 ,还有一种是与之相反。

两种情况,

这样就有可能有两种情况,第一种情况是先接受 72 然后接受 29 ,还有一种是与之相反。

第一种情况,先接受 72 由于 72 > 23 所以会通过校验更新状态为 95, 然后由于 29 < 95 所以无法再更新状态机。

这样就有可能有两种情况,第二种情况是先接受 29 然后接受 72 ,还有一种是与之相反。

第二种情况,先接受 29 由于 29 > 23 所以会通过校验更新状态为 52, 然后由于 29 < 52 所以更新状态为 124。

这样对带来问题,每个节点会按哪种情况来更新自己的状态呢?哪种 message 顺序是正确的呢?

通过一定的算法来为每个节点分配彩票,然后进行摇奖,胜出的节点可以决定分歧的对与错。有关具体如何实现,由于个人也在对其内部实现机制了解中,无法给出详细的解答。

这种方式适合内部区块链,而非公网区块链。假设一个人进行提议,大家投标来决定这种情况是否为正确来解决一致性的问题。这部分内容以后给大家更详细地解释。

在处理一致性问题上,我们势必要花费一定时间,这样就可能带来瓶颈的的问题,尤其是大量的信息接连而至的情况下。

为了解决瓶颈问题,我们将一定数量的消息组合为一组消息块,然后通过算法来排序,然后将一组消息添块加到节点上的状态机来更新状态。

依赖一组由公钥/私钥(Public Key /Private Key)组成的密钥对,所以采用非对称加密又被称为公钥加密(Public Key Cryptography)。具体来说,公钥和私钥均可以用于加密。如果密钥对中的其中一个用于加密,另一个则用于解密。公钥公诸于众,不具有隐私性,任何人均可以获取;而私钥专属于拥有该密钥对的实体,属于绝对隐私。

这里给大家来图解—非对称加密

总结

请大家多多支持我的微信公众号,这里会推送最新最快的好文章。

小马学编程

相关文章

  • 组成区块链的基本要素

    今天给他家分享的是当下炙手可热的技术—区块链。大家在百度输入区块链几个字,就能获得成千上万条有关的消息。想必大家或...

  • 密码朋克中有哪些牛人?

    ​你好,我树哥。 什么是区块链组成部分? 区块链的定义就是由区块组成的链条。 区块又可以划分为区块头、区块体。 区...

  • 没事浅谈区块链和比特币

    区块链是由多个区块组成,每个区块就是有区块头和区块链组成,每个区块头包含了区块的元信息(区块编号,上一区块的哈希值...

  • POW共识算法-简单的模拟

    生成区块代码 组成区块链代码 测试

  • 币多多 区块链常识:币圈的组成?

    Q:币圈的组成? A:由区块链、区块链项目ICO方、交易所组成。 在区块链上,当有交易发生时,会进行全网广播,矿工...

  • 区块链小计

    区块链的组成 区块链是一块块区块组成的,每个区块分为2部分:区块头和区块体。 区块头保存的是自己的区块体和上一个区...

  • 区块链的三大特征之去中心化

    区块链的三大特性 作为区块链小白,通过一段时间的学习了解,我对区块链形成的基本看法是,基于三个基本要素而体现出的三...

  • 20180712(信通院)可信区块链电信应用项目组成立

    2018-07-13 可信区块链计划 可信区块链电信应用项目组成立了 可信区块链电信应用项目组成立大会于2018年...

  • 大胆点步入正轨

    区块链重新激活“范式”的生命力,因为区块链作为一种结构和体系缺失具备范式的基本要素,包括信仰、方法、理论、模式应用...

  • 代 码 の 区 块 链 跑 起 来 的 发 动 机

    之前的文章中我们有提到过区块链的几大基本要素,其中很重要的一个就是有唯一开源代码,区块链密码学中,代码也是成为区块...

网友评论

    本文标题:组成区块链的基本要素

    本文链接:https://www.haomeiwen.com/subject/dvkpfqtx.html