以太坊的状态机模型

我们之前详细学习了比特币的原理,后来又循着区块链的发展,泛泛地学习了一些其他区块链项目。

但是,因为以太坊是区块链里仅次于比特币的第二座高峰,或者说以太坊是区块链发展史的第二个重要节点,所以,对于以太坊的学习,我们又会变得“详细”起来。

各位童鞋,得准备好撸死一堆脑细胞了。

说到模型,从大的方面来讲,以太坊和比特币一样,肯定都是0615和0616两篇里描述的区块链模型。但是,对于交易的流转这一点来说,两者的模型大不相同。

比特币是UTXO(非花费输出)模型。

交易由输入和输出组成,一笔交易的输入对应上一笔交易的输出,上一笔交易在输出里构造一个锁定脚本,这个锁定脚本就相当于把比特币锁在这里了。

比如,A转给B四个比特币,在这笔交易的输出里,A用锁定脚本把四个比特币锁住了,谁能够提供一个解锁脚本,使得解锁脚本和锁定脚本合在一起执行后的结果为真(1)时,谁就拥有了这四个比特币。

通常锁定脚本“说”:谁的比特币地址等于指定的比特币地址,谁就获得这笔比特币。然后解锁脚本“回答”:我的是。然后执行后果然是,比特币就易主了。

但是,脚本并不一定要和比特币地址有关,你甚至可以构造一个锁定脚本,问:1+1等于几?答对了就给比特币。。。

所以,在比特币的UTXO模型里,比特币地址或者比特币账户的存在感不强,一个比特币地址拥有多少比特币,并没有直观地显示出来,需要将所有的UTXO的锁定脚本扫一遍,然后能解锁的就属于你的。

而且,比特币的UTXO模型还有一个特征:找零机制。比如,A地址转给B地址4个比特币,然后B要从这4个比特币里转3个给C,这时候,这4个比特币会全部转出去,其中3个给了C,另外一个回到了和B同一主人的地址D。

以太坊与比特币不同,在以太坊里,账户占主导地位。以太坊就是一个以账户状态为基础的状态机。我们先看看什么叫状态机。

状态机是一个常用的分析对象行为的工具和模型。说白了,就是一系列状态的转换,一个状态,在某个事件刺激下,进入另一个状态(也可以是原来那个状态)。但是,在没有事件的情况下,状态绝对保持不变。

相信大家都参加过军训,军训里的队列训练就是一个绝佳的状态机。集合完毕后,教官喊“立正”,状态变为立正,教官喊“稍息”,状态由立正变为稍息,教官喊“向右看”,状态又变成向右看。

这里,教官喊口令就是一个事件,大伙的立正、稍息、向右看等就是状态。教官没喊口令,状态不能变,变了会挨踢的。

以太坊的状态,就是所有以太坊账户状态的集合。A账户怎么样,B账户怎么样,C账户怎么样等等,所有这些账户的状态合起来,就是以太坊的世界状态。

事件是什么呢?当然是交易,因为只有交易才会让以太坊的账户发生变化。所以,以太坊是一个以交易驱动账户状态变化的状态机。我们后续的重点就是弄懂以太坊的账户和交易。

明天,我们先来看看以太坊的账户长什么样子。大家知道,比特币的账户属性比较简单,就包含一个“余额”,但以太坊的账户可没那么简单,咱们下篇见。

不投资毋宁死

自由,就是拥有选择的权利,而每一次选择都是一次投资。

谢谢阅读

✬如果你喜欢这篇文章,欢迎分享到朋友圈✬

评论功能现已开启,灰常接受一切形式的吐槽和赞美☺

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181004G0IPMP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券