区块链与状态机

区块链与状态机

前言

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

状态机

状态机的关键是转移,会把转移的状态表现出来。而状态机一般以状态图的形式呈现。
像参考中说的一样,状态机编程有点像系统编程,在windows编程中,一个窗口有多种状态,简单一点就是两个状态:选中和非选中状态。当鼠标点击窗口内部(事件发生,或者理解成一个触发器trigger)时,窗口的状态改变,由非选中变成了选中,而可视化窗口看到的就是灰色的菜单栏变亮。这就是一个简单的状态机。
现在让我们放开想象,切换一下视角(或者专业一点,切换视图view),假设我们成了windows这个庞大系统中的一个小进程,系统中还有千百个进程处于不同的状态,或中止,或挂起,或正在运行。
现在,再切换一下视角,成为庞大互联网中的一个小主机,想象一下蜘蛛网的样子,每台主机的状态也有不同,或关机,或传输数据,或被攻击,每台主机都有不同的状态。

github贪吃蛇
github贪吃蛇的状态机示例

区块链

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

状态机在区块链中的应用

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

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

状态机与共识算法

共识算法理解

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

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

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

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

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

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

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

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

区块链生态

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

参考

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

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值