<>区块链与状态机

<>前言

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

<>状态机

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

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

现在让我们放开想象,切换一下视角(或者专业一点,切换视图view),假设我们成了windows这个庞大系统中的一个小进程,系统中还有千百个进程处于不同的状态,或中止,或挂起,或正在运行。
现在,再切换一下视角,成为庞大互联网中的一个小主机,想象一下蜘蛛网的样子,每台主机的状态也有不同,或关机,或传输数据,或被攻击,每台主机都有不同的状态。


github贪吃蛇的状态机示例
<https://github.com/hekailiang/squirrel/blob/master/EXAMPLES.md>

<>区块链

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

<>状态机在区块链中的应用


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

* 智能合约接收外界输入,内部执行代码(执行动作,进行状态转换),最终达到一个新的状态
<>状态机与共识算法

<>共识算法理解


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


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

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


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

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

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

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

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

<>区块链生态

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

<>参考

状态机理解 <https://blog.csdn.net/wuhenyouyuyouyu/article/details/73302377>
状态机理解2 <https://blog.csdn.net/qq_26653067/article/details/82741569>
【paper】状态机方法来实现分布式容错系统
<https://www.cs.cornell.edu/fbs/publications/SMSurvey.pdf>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信