区块链与状态机

在学数字逻辑的时候接触过状态机,区块链, 以太坊智能合约中也提到了状态机,想把这两个概念融合在一起理解清楚。

attachments-2018-03-9MDlTgOS5aa74ab46b850.png

作者:shenpanzhimao

来源:CSDN

原文链接:http://t.cn/E2Bz5dr

本文约1500字+,阅读(观看)需要10分钟

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


前言

在学数字逻辑的时候接触过状态机,区块链, 以太坊智能合约中也提到了状态机,想把这两个概念融合在一起理解清楚。

状态机

状态机的关键是转移,会把转移的状态表现出来。而状态机一般以状态图的形式呈现。

像参考中说的一样,状态机编程有点像系统编程,在windows编程中,一个窗口有多种状态,简单一点就是两个状态:选中和非选中状态。当鼠标点击窗口内部(事件发生,或者理解成一个触发器trigger)时,窗口的状态改变,由非选中变成了选中,而可视化窗口看到的就是灰色的菜单栏变亮。这就是一个简单的状态机。

现在让我们放开想象,切换一下视角(或者专业一点,切换视图view),假设我们成了windows这个庞大系统中的一个小进程,系统中还有千百个进程处于不同的状态,或中止,或挂起,或正在运行。

现在,再切换一下视角,成为庞大互联网中的一个小主机,想象一下蜘蛛网的样子,每台主机的状态也有不同,或关机,或传输数据,或被攻击,每台主机都有不同的状态。

99c8759cc8ed42378034f3ed3e13fe20


github贪吃蛇的状态机示例

区块链

区块链中将各个节点(主机)视为状态机,整个网络是在不断动态变化的,通过状态机可以把握整个网络的动态。

状态机在区块链中的应用

切换成区块链内部视角,区块链除了各个区块外,本质上还是离不开网络。可以将区块生产节点理解为生态系统中的生产者,其他节点基于区块完成交易,验证,广播等各个动作,可以理解为消费者。每个节点都有不同的状态,通过状态机我们能描述清楚区块链的网络节点部分。

智能合约接收外界输入,内部执行代码(执行动作,进行状态转换),最终达到一个新的状态

状态机与共识算法

共识算法理解

共识,也就是节点之间达成一致。达成一致是一种动态的平衡,可以理解为是一种状态。共识算法要求节点每隔一段时间达成一次共识,从状态机的角度上来看就是每隔一段时间达到某种状态。

区块链网络,本质上是一个P2P网络,也是一个分布式网络。分布式网络中一份数据有多个备份,存储在不同的节点(主机)上。使用状态机方法来解决分布式网络中的容错问题和一致性问题,是一种典型的解决方法。自然而然地,区块链的共识算法中的共识,就是保持各个节点的一致性,使用状态机方法来构建区块链的共识算法,也是一种主要的途径。

如何把状态机应用到区块链共识算法中

有限确定状态机,指的是状态机的状态是有限的,而且是确定的。通俗地讲,如果有10个相同的状态机,它们的输入一样,接受输入执行的动作顺序也一样,得到的最终输出也是一样的。共识算法的目的是在分布式网络中,让多个节点(主机)达成共识(一致的状态)。如果每一个节点(主机)上运行相同的状态机,那么当网络中的节点收到广播消息,并且通过验证机制确认消息的真实性后,执行这个消息中的指令,就能达到一致性的目的。

状态机在共识算法的具体表现

共识算法中,一般会规定多个角色,在角色之间进行切换,就可以理解是状态机进行状态的切换。

如何对消息进行验证(确认消息是真的)

这就可以讨论拜占庭问题了。

区块链生态

生态,也可以理解为一个系统。仅仅从技术层面看,区块链不止是区块和链,还有网络,规则等一系列衍生。

参考

状态机理解

状态机理解2

【paper】状态机方法来实现分布式容错系统


文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

attachments-2018-02-kL1zBfXx5a7ffd0b78798.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
社区运营-小以

556 篇文章

作家榜 »

  1. 社区运营-小以 556 文章
  2. 社区运营-小链 244 文章
  3. 于中阳Mercina-zy 79 文章
  4. 涂晶 75 文章
  5. 李晓琼 44 文章
  6. 兄弟连区块链培训 42 文章
  7. 吴寿鹤 36 文章
  8. John-smith 25 文章