《深入掌握以太坊核心技术》--01以太坊简介
- 区块链(公链)发展
- 以太坊
- 核心特性
- 发展阶段
- 特点
- 组成部分
- 重要概念
- 货币
- 以太坊和图灵完备
- 去中心化应用
- 代币(Token)
- 名词解释
区块链(公链)发展
以太坊
以太坊是一个开源的、基于区块链技术的分布式计算平台,它允许开发者构建和部署智能合约以及去中心化应用(DApps)。以太坊于2015年由Vitalik Buterin等人创建,并在区块链领域引起了广泛关注。与比特币等其他加密货币不同,以太坊的主要目标不仅是作为一种数字货币,而且还致力于提供一个更通用的平台,使开发者能够构建各种去中心化应用。
核心特性
- 智能合约:以太坊引入了智能合约的概念,它是一种能够在区块链上自动执行的可编程合约。通过智能合约,用户可以在不需要第三方信任的情况下进行可验证和可执行的交易。
- 去中心化应用(DApps):以太坊提供了一个去中心化的计算平台,使开发者能够构建和部署各种去中心化应用,这些应用可以在以太坊网络上运行,而不依赖于任何中心化的服务器。
- 以太币(Ether):以太坊的原生加密货币被称为以太币(Ether),它是以太坊网络中的燃料,用于支付交易费用和奖励参与网络安全的矿工。
- 共识算法:以太坊最初采用工作量证明(Proof of Work, PoW)共识算法,现在过渡到更环保和效率更高的权益证明(Proof of Stake, PoS)共识算法。
发展阶段
阶段 | 内容 |
---|---|
Frontier阶段 | 以太坊的初始阶段,从2014年以太坊白皮书发布开始,到2015年以太坊主网上线。 |
Homestead 阶段 | 以太坊的第一个正式版本,于2016年3月发布。Homestead阶段带来了一些改进和修复,以提高以太坊的安全性和稳定性。 |
Metropolis 阶段 | Metropolis是以太坊的第二个重要升级,分为两个子阶段:Metropolis Byzantium和Metropolis Constantinople。Metropolis Byzantium于2017年10月上线,引入了一些新特性和改进,包括更高的隐私和安全性。Metropolis Constantinople于2019年2月上线,继续增强以太坊的功能和性能。 |
Serenity 阶段 | 也称为以太坊2.0,是以太坊的下一个重要升级,旨在实现从基于工作量证明(PoW)到基于权益证明(PoS)的转变,以提高网络的可扩展性和安全性。Serenity阶段包括几个子阶段:Beacon Chain、Shard Chains和eWASM。Beacon Chain于2020年12月启动,标志着以太坊2.0的第一个阶段的开始。 |
特点
- 以太坊是“世界计算机”,这代表它是一个开源的、全球分布的计算基础设施。
- 执行称为智能合约(smart contract)的程序。
- 使用区块链来同步和存储系统状态以及名为以太币(ether)的加密货币,以计量和约束执行资源成本。
- 本质是一个基于交易的状态机(transaction-based state machine)。
- 以太坊平台使开发人员能够构建具有内置经济功能的强大去中心化应用程序(DApp);在持续自我正常运行的同时,它还减少或消除了审查第三方界面和交易对手风险
组成部分
组成 | 详解 |
---|---|
P2P网络 | 以太坊在以太坊网络上运行,该网络可在TCP端口30303上寻址,并运行一个名为DEVp2p(实际写作 ÐΞVp2p,拉丁字母 Ð、希腊字母柯西Ξ)的协议。 |
交易(Transaction) | 以太坊交易是网络消息,其中包括发送者(sender)、接收者(receiver)、值(value)和数据的有效载荷(payload)。 |
以太坊虚拟机(EVM) | 以太坊状态转换由以太坊虚拟机(EVM)处理,这是一个执行字节码(机器语言指令)的基于堆栈的虚拟机。 |
数据库(Blockchain) | 以太坊的区块链作为数据库(通常是Google的LevelDB)本地存储在每个节点上,包含序列化后的交易和系统状态。 |
客户端 | 以太坊由几种可互操作的客户端软件实现,其中最突出的是 Go-Ethereum(Geth) |
如图,目前客户端的占比(来源:Ethereum Mainnet Statistics)
重要概念
● 账户(Account):包含地址、余额和随机数,以及可选的存储和代码对象。
○ 普通账户(EOA):存储和代码均为空
○ 合约账户(Contract):包含存储和代码
● 地址(Address):一般来说,这代表一个EOA或者合约,它可以在区块链上接收或发送交易。更具体地说,它是ECDSA公钥的keccak散列的最右边的160位。
● 交易(Transaction):
○ 可以发送以太币和信息
○ 向合约发送的交易可以调用合约代码,并以信息数据为函数参数
○ 向空用户发送信息,可以自动生成以信息为代码块的合约账户
● gas:以太坊用以执行智能合约的虚拟燃料。以太坊虚拟机使用核算机制来衡量gas的消耗量并限制计算资源的消耗
货币
以太坊的货币单位称为以太(ether),也可以表示为ETH或者符号Ξ(希腊字母柯西)。
发行规则
● 挖矿前(Pre-mine,Genesis):为众筹发行了大约7200万以太币。这些币被称为“矿前”。众筹阶段之后,以太币每年的产量基本稳定,被限制不超过7200万的25%。
● 挖矿产出(Mining)
○ 区块奖励(block reward):每产生一个新区块就会有一笔固定的奖励给矿工,初始是5个以太币,未转为pos时为3个。
○ 叔块奖励(uncle reward):有些区块被挖得稍晚一些,因此不能作为主区块链的组成部分。比特币称这类区块为“孤块”,并且完全舍弃它们。但是,以太币称它们为“叔块”(uncles),并且在之后的区块中,可以引用它们。如果叔块在之后的区块链中作为叔块被引用,每个叔块会为挖矿者产出区块奖励的7/8。这被称之为叔块奖励。
○ 叔块引用奖励(uncle referencing reward):矿工每引用一个叔块,可以得到区块奖励的1/32作为奖励(最多引用两个叔块)
上面这样的一套基于POW的奖励机制,被称为以太坊的“幽灵协议”
● 从PoW转换为PoS后,股权证明机制将使用Casper协议,以太币发行率将大大低于GHOST协议下的发行率
目前以太坊已经不能进行传统意义上的挖矿了,而是进行质押挖矿,以太坊的质押挖矿是指将以太币锁定在以太坊 2.0 网络的验证者合约中,成为验证者并获取奖励的过程。质押者通过质押一定数量的以太币来参与网络的权益证明共识机制,以维护网络的安全性和效率。作为激励,验证者有权获得以太币作为奖励。这种机制旨在提高以太坊网络的安全性和可扩展性,并为参与者提供收益来源。质押挖矿是一种通过将加密资产锁定在区块链网络中,以换取奖励的方式参与网络的共识机制和安全维护。在以太坊中,质押挖矿是指将以太币锁定在以太坊 2.0 Beacon Chain 的验证者合约中,成为验证者并获取奖励的过程。质押者通过质押一定数量的以太币来参与网络的权益证明共识机制,以维护网络的安全性和效率。作为激励,验证者有权获得以太币作为奖励。
以太坊和图灵完备
- 1936年,英国数学家艾伦·图灵(AlanTuring)创建了一个计算机的数学模型,它由一个控制器、一个读写头和一根无限长的工作带组成。纸带起着存储的作用,被分成一个个的小方格(可以看成磁带);读写头能够读取纸带上的信息,以及将运算结果写进纸带;控制器则负责根据程序对搜集到的信息进行处理。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动纸带。
- 如果一个系统可以模拟任何图灵机,它就被定义为“图灵完备”(Turing Complete)的。这种系统称为通用图灵机(UTM)。
- 以太坊能够在称为以太坊虚拟机的状态机中执行存储程序,同时向内存读取和写入数据,使其成为图灵完备系统,因此成为通用图灵机。考虑到有限存储器的限制,以太坊可以计算任何可由任何图灵机计算的算法。
- 即以太坊中支持循环语句,理论上可以运行“无限循环”的程序,所以可能会出现死循环(这里使用GAS来避免这个可能)。
去中心化应用
- 基于以太坊可以创建智能合约(Smart Contract)来构建去中心化应用(Decentralized
Application,简称为DApp) - 以太坊的构想是成为 DApps 编程开发的平台
- DApp至少由以下组成:
- 区块链上的智能合约
- Web前端用户界面
代币(Token)
- 代币(token)也称作通证,本意为“令牌”,代表有所有权的资产、货币、权限等在区块链上的抽象
名词解释
名词 | 详解 |
---|---|
EIP | Ethereum Improvement Proposals,以太坊改进建议。 |
ERC | Ethereum Request for Comments,以太坊征求意见。一些EIP被标记为ERC,表示试图定义以太坊使用的特定标准的建议。 |
EOA | External Owned Account,外部账户。 |
Ethash | 以太坊1.0的工作量证明算法。 |
HD钱包 | 使用分层确定性(HD protocol)密钥创建和转账协议(BIP32)的钱包。 |
Keccak256 | 以太坊中使用的密码哈希函数。Keccak256被标准化为SHA-3. |
Nonce | 在密码学中,nonce用于指代只能使用一次的值。以太坊使用两种类型的随机数,账户随机数和PoW随机数。 |