以太坊的基本概念理解及分析
首页以太坊希望成为一台“世界计算机”,以脱离现有的客户端-服务器模型,建立一种全球去中心化的计算基础架构,可以执行称为智能合约的(去中心化)程序。 从抽象的角度,以太坊是一个具备确定性但实际没有限制的状态机。以太坊的状态,就是所有以太坊账户状态的集合,如:A账户怎么样,B账户怎么样,C账户怎么样等等,所有这些账户的状态合起来,就是以太坊的世界状态。
关于状态机的完整描述 关于状态机的一个极度确切的描述是:它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态, 状态机停止。 完整状态机四要素 ①现态:是指当前所处的状态。 ②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 ③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。 ④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
所以,以太坊是一个以交易驱动账户状态变化的状态机,我们学习的重点就是弄懂以太坊的账户和交易。
以太币(ETH)作为一种效用货币来支付使用以太坊这个“世界计算机”所产生的花费
以太坊和比特币区别
与比特币支持的非常有限的脚本语言不同,以太坊被设计为可编程区块链,它的虚拟机可以执行任意和无限复杂的代码,以太坊的语言是图灵完备的,所以以太坊可以直接用作通用目的的计算机。
以太坊和通用计算机差异
以太坊是一个分布式状态机,状态转换是由共识规则控制的,状态是全局分布在一个共享的账本上。
构成以太坊的组件
1、点对点(P2P)网络
以太坊运行在Ethereum Main Network上,是通过一个通过TCP 30303端口寻址的网络,网络层运行的协议名为-D ΞVp2p
2、共识规则
以太坊黄皮书中参考标准进行精确定义
3、状态机
以太坊状态转换由以太坊虚拟机(EVM)来处理,执行字节码(智能合约程序往往使用高级语言,如solidity编程,然后编译后转换为字节码)指令
4、数据结构
以太坊封装了LevelDB(Leveldb是一个google实现的非常高效的kv数据库)接口,将区块链以数据库的方式保存在每一个节点上,区块信息中包含了交易和系统状态,经过哈希处理的数据保存在Merkle Partricia Tree数据结构内
5、共识算法及经济安全性
以太坊使用比特币的共识模型Nakamoto Consensus(中本共识),它使用顺序单一签名块,由PoW(工作量算法证明,不经济,消耗电力)加权重要性来确定最长链。目前ETH2.0将会采用PoS加权投票系统。期待2021年PoS共识的到来。
我们看一下 ETH2.0 升级的几个阶段: Phase 0:启动以 PoS 为共识机制的信标链 Phase 1:数据分片,引入分片链 Phase 1.5:ETH1(PoW 链)并入 ETH2(PoS 链) Phase 2:继续执行分片机制,各条分片链正式执行各项功能 我们可以看出,在 Phase 1.5 实施后,以太坊才不能继续挖矿,在 Phase 1.5 实施前,以太坊还是可以正常挖矿的。可以说,在 1.5 阶段前对矿工没有影响。
6、交易
以太坊交易是一个网络消息,这个消息包含交易的发送方、接受方、价值、数据载荷等
DApp及Web3
以太坊开启了通用目的区块链用于构建多种应用的道路,所以扩展为用于去中心化应用(DApp)的编程平台。 DApp是一个构建于开放的、去中心化的、点对点的基础设施之上的Web应用程序。构建至少要含要素:
- 智能合约
- Web前端用户界面
还可以包含其他去中心化组件:
- 去中心化存储协议(P2P形式)和平台
- 去中心化消息协议和平台
** 从2004年起web2.0的概念引起人们的关注,它描述了面向用户生成内容、响应式界面和交互式性的web革命,此时web2.0并非是一个技术标准,而是一个描述web应用特性的术语。 Dapp的概念正引导万维网走向下一次革命,在每一个web一个中都引入了带有点对点协议的去中心化能力。web3(Gaivn Wood博士提出)这个词用来描述这场革命,它代表Web应用的新的愿景和关注点:从集中化和统一管理的应用,到构建去中心化协议之上的应用。**