精通以太坊1:什么是以太坊
1.1什么是以太坊?
以太坊通常被称为“世界计算机”。
1》从计算机科学的角度来看,以太坊是一个具备确定性但实际上却没有边际的状态机。他有两个特点:具有一个全球范围可访问的单体状态;还有一个执行状态更改的虚拟机。
2》从更实际的角度看,以太坊是一个开源的,全球去中心化的计算基础架构,可以执行称为智能合约的程序。它使用区块链同步和保存系统状态,借助以太币这种数字货币来计量并控制程序执行的资源开销
3》以太坊平台使得开发者可以构建强大的去中心化应用,并且内建了经济·性的功能。在提供高可用性,可审计性,透明和中立等特性的同时,减少或消除了审查,第三方介入和对手方风险。
1.2以太坊与比特币的比较
共同点:
一个连接参与各方的点对点网络
一个用于同步状态的拜占庭容错共识算法(工作量证明)
使用数字签名和哈希等密码学原理
一种数字货币
不同点:
目的不同:
以太坊的主要目的不是成为数字货币的支付网络。虽然以太币本身对于以太坊的构成和运营是不可或缺的,但是以太币的主要目的是作为一种效用货币来支付使用以太坊这个“世界计算机”所产生的花费
结构不同:
比特币的脚本语言非常有限。以太坊被设计为通用可编程区块链,它的虚拟机能够执行任意和无限复杂的代码。比特币的脚本语言被故意限制为对简单的支付条件的真/假判断,以太坊的语言是图灵完备的,这意味着以太坊可以直接用作通用目的的计算机。
1.3区块链的组件
一个公链(公共公开的区块链)通常包含以下组件:
》一个连接参与各方的点对点网络,用于传播交易和区块数据包,基于标准的"gossip"协议
》以交易形式体现的消息,代表状态的转换
》一组共识规则,用于管理构成交易的内容以及实现有效的状态转换
》一个状态机,根据共识规则处理交易
》一组串联在一起的,由加密算法保证其安全的区块,这些区块是所有已验证和已接受的状态转换的记录日志
》一个共识算法,用于在区块链上实现控制的去中心化,这类算法通过强制参与者之间的合作以实现共识规则的有效执行
》在博弈论上合理的激励方案(例如:工作量证明,区块奖励),以在开放环境中经济地保护状态机
》上述一个或多个开源软件实现(“客户端”)
由于去中心化的软件实现中没有服务器端这个概念,所以这些组件基本都包含在一个单独的客户端软件中。例如:在比特币中,BItcoin core 开源项目开发了比特币客户端的参考实现,名为 bitcoind.
相比参考实现,以太坊拥有一个参考标准-----采用数学方式描述整个系统的黄皮书。现有的很多以太坊客户端,都是根据黄皮书的参考标准实现的。
过去,我们使用区块链来代表上述所有组件,这是对实现以上特点的技术的笼统描述。今天,市场上存在大量具有不同属性的区块链项目。我们需要一些修饰语来帮助我们理解区块链的特点:比如:开放,公共,全局,去中心化,中立和抗审查性,以识别和理解这些区块链组件背后浮现出的重要特性。
1.4以太坊的诞生
比特币的诞生,让人们有意识的想在更多领域推广这套体系。但是:他们要么在比特币的基础上添砖加瓦,要么就要从头开始实现一个新的区块链。在比特币的基础上构建,意味着必须接受比特币的网络的种种限制。比特币对数据存储的类型以及规模有特殊的要求,这就限制了在比特币上进行广泛应用的可能。
13年,俄罗斯程序员,比特币狂热爱好者,Vitalik Buterin(V神)开始思考未来如何扩展比特币和Mastsercoin(一个基于比特币之上的协议,提供初步的智能合约)。10月,v神向Mastecoin团队提出了用于替代Mastercoin专用合约语言的更灵活和脚本化的(但还不是图灵完备的)合约机制。
12月,v神分享了一份白皮书,描述了:以太坊背后的思想:一个图灵完备的通用目的的区块链。
13年12月,vitalik 和 Gavin Wood提出了以太坊的愿景:
使用类似以太坊这样的通用目的的区块链技术,开发者不必构建点对点网络,区块链,共识算法等基础设施,就可以开发自己的应用。以太坊平台的目的就是把这些细节抽象出来,提供一个确定性的,安全的编程环境,用于去中心化的区块链的应用程序。
以太坊的创始人花了数年时间构建和完善这个愿景,2015年7月30日,第一个以太坊区块链被挖矿成功。“世界计算机”开始为全世界提供服务。
1.5以太坊的四个开发阶段
以太坊的开发计划分为四个不同阶段,每个阶段都会发生重大变化。阶段以硬分叉的方式发布,硬分叉意味着这次发布所做出的改变将无法后向兼容之前的旧版本
Frontier阶段
Homestead阶段
Metropolis阶段
Sernity阶段
除了开发阶段规划性硬分叉,还有在运行过程中出现的问题进行解决的过渡性硬分叉。
以太坊所有的硬分叉时间轴:
区块高度:0
Frontier:以太坊的初始阶段,持续时间为 15年7-30----16-3月
区块高度为:200000
Ice Age:(冰河时代)引入指数难度增加的硬分叉,以便在准备就绪时激励过渡到权益证明(PoS)
区块高度:1150000
Homestead:(家园阶段)以太坊第二阶段,于 ,16年3月发布
区块高度:1192000
DAO:一次硬分叉,用于补偿被攻击的DAO合约的受害者,并导致“以太坊”和以太坊经典“分成两个相互竞争的系统
区块高度:2463000
Tangerine Whistle:一次硬分叉,用于改变某些I/O密集型操作的gas计算,并消除能利用这些操作的低gas成本的拒绝服务(Dos)攻击
区块高度:2675000
Spurious Dragon:一个用于解决更多DOS攻击途径的硬分叉,以及另一次状态清除。同时也提供了针对重放攻击的保护机制
区块高度:4370000
Metropolis Byzantium:(大都会–拜占庭)这是以太坊第三阶段,2017年10月推出
拜占庭是大都会计划的两个硬分叉的第一个,之后还有一个大都会阶段规划的硬分叉
Constaninople(君士坦丁堡)。
在大都会阶段之后,还有以太坊部署的最后阶段,代号为 Serenity(宁静阶段)
1.6以太坊:一个通用目的的区块链
最初的区块链,也就是比特币的技术体系,是用于跟踪比特币及其所有权状态的。可以把比特币看作一个分布式的共识状态机,交易导致一次全局范围的状态转换,改变了比特币的所有权。状态转换受共识规则所限,在若干个区块被挖矿之后,允许所有的参与方(最终)对系统的状态达成一致的共识。
以太坊也是一个分布式状态机,但是不同于比特币所有权的状态,以太坊跟踪的是一个通用目的的数据存储的状态转变。通用目的的意思是任何可以表示为键值元组的数据。基于键值的数据存储可以保存任意复杂的内容,通过一些键来引用。比如;保存本书的信息可以用书名来引用。在一些通用计算机中的 RAM数据存储模型就是采用同样的方式。以太坊拥有一个保存代码和数据的存储器,使用区块链来跟踪这个存储器随着时间的变化。就像通用目的存储程序的计算机一样,以太坊可以把代码加载进状态机,然后运行这些代码,并把状态转换的结果保存在区块链上。以太坊相比通用计算机的两个主要差异体现在:状态转换是由共识规则所控制的,状态是全局分布在一个共享的账本之上。
如果能够基于共识规则来创建一台全局计算机,那么可以追踪任意复杂的状态变化并对状态机进行编程.以太坊的功能。
1.7以太坊的组件
点对点(P2P)网络
以太坊运行在Ethereum Main NetWork 上,这是一个通过TCP30303端口寻址的网络,网络层运行的协议名为 -D三Vp2p
共识规则
以太坊的共识规则,由以太坊黄皮书中的参考标准进行精确定义
交易
以太坊交易是一个网络消息,主要包含交易发送方,接收方,价值和数据载荷
状态机
以太坊的状态转换由以太坊虚拟机(EVM)处理,这是一个基于栈的虚拟机,执行bytecode(字节码指令)。被称为“智能合约”的EVM程序采用高级语言(solidity)编写,并编译为通过EVM执行的字节码
数据结构
以太坊的区块链以数据库(Google的LevelDB)的方式保存在每一个节点之上,区块链内包含了交易和系统的状态,经过哈希处理的数据保存在Markle Patricia Tree数据结构之内
经济安全性
以太坊当前使用名为 Ethash的工作量证明算法,这个算法迟早将被放弃,并切换到Pos
客户端
以太坊有多个可以相互交互的客户端软件实现,其中最广泛使用的是 Go-Ethereum(Geth)和Parity
1.8名词拓展
图灵完备:
来源:CSDN
作者:大鸟蜀黍
链接:https://blog.csdn.net/tlkj6868xds/article/details/104503287