区块链与状态机
区块链与状态机
前言
在学数字逻辑的时候接触过状态机,区块链, 以太坊智能合约中也提到了状态机,想把这两个概念融合在一起理解清楚。
状态机
状态机的关键是转移,会把转移的状态表现出来。而状态机一般以状态图的形式呈现。
像参考中说的一样,状态机编程有点像系统编程,在windows编程中,一个窗口有多种状态,简单一点就是两个状态:选中和非选中状态。当鼠标点击窗口内部(事件发生,或者理解成一个触发器trigger)时,窗口的状态改变,由非选中变成了选中,而可视化窗口看到的就是灰色的菜单栏变亮。这就是一个简单的状态机。
现在让我们放开想象,切换一下视角(或者专业一点,切换视图view),假设我们成了windows这个庞大系统中的一个小进程,系统中还有千百个进程处于不同的状态,或中止,或挂起,或正在运行。
现在,再切换一下视角,成为庞大互联网中的一个小主机,想象一下蜘蛛网的样子,每台主机的状态也有不同,或关机,或传输数据,或被攻击,每台主机都有不同的状态。
区块链
区块链中将各个节点视为状态机,整个网络是在不断动态变化的,通过状态机可以把握整个网络的动态。
状态机在区块链中的应用
切换成区块链内部视角,区块链除了各个区块外,本质上还是离不开网络。可以将区块生产节点理解为生态系统中的生产者,其他节点基于区块完成交易,验证,广播等各个动作,可以理解为消费者。每个节点都有不同的状态,通过状态机我们能描述清楚区块链的网络节点部分。
- 智能合约接收外界输入,内部执行代码(执行动作,进行状态转换),最终达到一个新的状态
区块链生态
生态,也可以理解为一个系统。仅仅从技术层面看,区块链不止是区块和链,还有网络,规则等一系列衍生。稍稍有点理解为什么很多公司在关注区块链生态了。