以太坊可以被从上到下分为六层。不同于比特币的是,以太坊中有智能合约的概念,而比特币中只有一些简单的交易脚本,所以有些文章将以太坊分为了五层,也是受了比特币的影响。
第一层为应用层
其中包括IDE、插件、API、框架、DAPP、The DAO。
让我们来详细解释一下这些名词的含义。
IDE
集成开发环境(Integrated Development Environment)
简单来说就是让你在上面写代码,编程序用的。
基于网络页面上的集成开发环境
其中比较常用的有:Remix、ChainIDE、Replit、Tenderly Sandbox、EthFiddle.
基于桌面上的集成开发环境(需要下载使用的集成开发环境)
大多数成熟的集成开发环境都包含增强以太坊开发环境体验的插件。至少,他们能为智能合约提供语法突出显示。
其中比较常用的有:Visual Studio Code、Atom、JetBrains、Remix Desktop.
插件
我觉得就是插件钱包之类的东西吧,如MetaMusk.
API
应用二进制接口(Application Programming Interface)
他是一组预先定义的规则和协议,用于构建和集成软件应用程序。API使不同的软件系统能够相互通信,共享数据和功能。
框架
以太坊框架是指一系列工具和库,它们为开发者提供了构建去中心化应用程序(DApps)所需的基础设施。这些框架通常包括智能合约的开发、测试、部署工具,以及与以太坊区块链交互的客户端API。
在以太坊生态系统中,有几个流行的开发框架,例如:
- Truffle: 提供了一个开发环境、测试框架和资产管道,是以太坊开发者常用的工具之一。
- Hardhat: 是一个专为以太坊开发设计的环境,它允许开发者管理复杂的项目,并提供了强大的插件系统。
- Foundry: 是一个快速、便携、模块化的以太坊应用程序开发工具包,适用于各种规模的项目。
- Brownie: 是一个基于Python的开发环境和测试框架,适用于智能合约和去中心化应用程序的开发。
DAPP
DAPP是Decentralized Application的缩写,即去中心化应用程序。
去中心化应用程序的后端代码(智能合约)运行在一个去中心化的网络上,而非中心化的服务器。他们使用以太坊区块链网络作为数据存储端,并且用智能合约实现app的业务逻辑。
一个智能合约像是一套设立在区块链上的规则,所有人都可以准确地观察和运行这套规则。设想一下,有一台自动贩卖机:如果向它提供足够的资金和正确的选择,你将得到你想要的货品。正如自动贩卖机一样,智能合约可以像你的以太坊帐户一样存储持有资金。这允许代码之间协议和交易。
一旦去中心化应用程序部署到以太坊网络,你将无法更改他们。去中心化应用程序之所以可以被去中心化就是因为他们被合约中的逻辑所控制,而不是公司或者个人。
The DAO
第二层为合约层
PS:这一层使比较有争议的一层,因为比特币网络中没有智能合约的概念,只有一些很简单的交易脚本。所以有些文章把区块链分为五层,也是受了比特币网络的影响。
其中包括智能合约和虚拟机.
智能合约
智能合约是以太坊应用程序层的基石。 它们是存储在区块链上的计算机程序,遵循“如果...那么...”(IFTTT) 逻辑,并且保证按照其代码定义的规则执行,智能合约一旦创建就无法更改。
网上也有一个练习solidity代码的网站,叫CryptoZombies,我把链接放在下面啦.
#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies
虚拟机
EVM 的物理实例不能像人们指向云或海浪那样描述,它是真实存在并由数以千计运行以太坊客户端的计算机共同维护的一个实体。
以太坊的智能合约主要是运行在虚拟机上的。
第三层为激励层
其中包括以太币、发行机制、分配情况。
以太币
以太币(ETH)是以太坊网络的原生加密货币。它不仅是一个价值转移的媒介,也是在以太坊平台上进行交易和智能合约操作所必需的“燃料”。以太币的设计目的是为了促进和支付网络上的计算和交易费用。
以太币的主要特点包括:
- 支付交易费用:在以太坊网络上发送交易或执行智能合约时,需要支付以太币作为矿工费。
- 激励网络参与者:矿工和验证者通过挖矿和质押以太币来维护网络安全,并因此获得以太币作为奖励。
- 可编程性:以太币可以通过智能合约进行自动化的、可编程的交易,支持复杂的金融操作。
目前比较流行的交易加密货币的网站有Gate.io、币安等。
购买/出售比特币、以太币 | 加密货币交易所 | Gate.io (gateex.org)
币安——比特币、以太币以及竞争币等加密货币的交易平台 (binance.com)
发行机制
以太币(ETH)的发行机制是设计来支持以太坊网络的运行和安全性。以太币最初是通过2014年的预售产生的,之后主要通过挖矿的方式发行。与比特币的每四年减半不同,以太币的发行没有固定的上限,但有一定的年度发行率。在以太坊网络转向权益证明(PoS)机制后,新的以太币是作为对验证者执行网络共识相关活动的奖励而产生的。
ps:POS机制我们会在后面提到。
分配情况
以太币(ETH)的分配情况是根据以太坊网络的设计和治理规则来决定的。在以太坊的早期阶段,ETH是通过预售给初始投资者的方式分配的。此后,新的以太币主要通过挖矿过程产生,并作为奖励分配给矿工。随着以太坊网络从工作量证明(PoW)转向权益证明(PoS)机制,新的以太币现在作为对验证者执行网络共识相关活动的奖励而产生。
第四层为共识层
其中包括PoW、PoS、奖励机制.
PoW(Proof of Work)
以太坊在2022年终结了工作量证明(PoW)并开始采取权益证明(PoS),但不妨在这里说说工作量证明是啥。
工作量证明需要矿工用算法解决密码难题,率先解决密码难题的矿工可以获得奖励(加密货币)。但这样就需要大量的硬件去计算,这样做的坏处在于耗电量极大、对设备的要求较高、容易对环境造成污染等问题。况且这种算法主要是依靠计算量来获得奖励,就容易导致矿工联合在一起组成矿池,将奖励平分给每一位矿工,这样做的后果容易让去中心化变为中心化(矿工联合在一起组成强大的算力掠夺资源),只要掌握了整个系统的51%的算力资源就可以控制整个系统。
这里有一篇从区块链原理详细说明PoW共识机制的文章,感兴趣的可以去看一下。
区块链共识机制技术一——POW(工作量证明)共识机制_pow共识-CSDN博客
PoS(Proof of Stake)
PoS与PoW有一个很本质的区别是:PoS铸造区块而不是挖区块。
PoS通过选举的模式,任意节点被随机选择来验证下一个区块,被选中的验证者可以获得该区块内的交易费用。但节点需要在网络中存入一定数量的货币作为权益,可以理解为保证金。
这里有一篇从区块链原理详细说明PoS共识机制的文章,有兴趣的可以去看一下。
区块链共识机制技术二——POS(权益证明)共识机制_pos共识机制-CSDN博客
然后这里有介绍PoW与PoS不同之处的一个视频
Proof-of-Stake (vs proof-of-work) (youtube.com)
奖励机制
普通区块奖励:
- 固定奖励5ETH,每个普通区块都有
- 区块内包含的所有程序的Gas花费的总和
- 如果普通区块包含了叔块,每包含一个叔块可以得到固定奖励5ETH的1/32,也就是0.15625ETH。
叔块奖励:
叔块的奖励计算有些复杂,公式为:
叔块奖励 = ( 叔块高度 + 8 - 包含叔块的区块的高度 ) * 普通区块奖励 / 8
以太坊(Ethereum ETH)的奖励机制 - 知乎 (zhihu.com)
第五层为网络层
其中包括以太坊节点、以太坊网络、以太坊客户端.
以太坊节点、网络、客户端
第六层为数据层
其中包括RLP、交易、区块、MPT、数据库、账户.
RLP
RLP(Recursive Length Prefix)递归长度前缀编码。主要用于以太坊中数据的网络传输和持久化存储。
交易
以太坊交易是指由外部持有帐户发起的行动,换句话说,是指由人管理而不是智能合约管理的帐户。
区块
区块是指一批交易的组合,并且包含链中上一个区块的哈希。
MPT
MPT(默克尔压缩前缀树) 全称是 Merkle Patricia Trie 也叫 Merkle Patricia Tree,是 Merkle Tree 和 Patricia Tree 的混合物,是以太坊中用来组织管理账户数据、生成交易集合哈希的重要数据结构。
详解以太坊默克尔压缩前缀树-MPT :: 以太坊技术与实现 (learnblockchain.cn)
数据库
以太坊采用LevelDB作为底层数据库,它是一个google实现的非常高效的kv数据库。 key和value均为任意长度的字节数组。 数据库提供了基本的接口操作包括Put ()、Delete ()、Get ()、Batch (),支持批量操作的原子性。
以太坊介绍(二):区块链数据的存储和更新 - 知乎 (zhihu.com)
账户
以太坊有两种帐户类型:
- 外部所有的帐户 (EOA) – 由任何拥有私钥的人控制
- 合约帐户 – 部署到网络上的智能合约,由代码控制。
这两种帐户类型都能:
- 接收、持有和发送 ETH 和 token
- 与已部署的智能合约进行交互