风险提示:理性看待区块链,提高风险意识!
以太坊和EVM是什么关系?
首页 > 币界资讯 > 币种知识 2020-11-26 11:52:41

EVM是图灵完备的以太坊虚拟机,可以完成以太坊网络上的所有交易处理。与此同时,它还是一个完整的256位虚拟机,用于执行任意EVM字节码。

字节码

字节码是高级智能合约语言被编译成的机器代码,它看起来像这样(以下省略大量数字):

image.png

这些代码并不能被人类理解。如果你有空闲时间,可以对其进行反向工程,你会发现针对字节码进行反向工程的意义并不大。此外,如果你没有合约的高级源代码和应用程序二进制接口(ABI),那么你不应该与区块链上的合约进行交互。

部署与运行字节码

上面展示了我们之前在关于智能合约的文章中部署的HelloWorld.sol Solidity智能合约的部署字节码。部署字节码是包装在辅助代码中的运行字节码,以帮助合约成功部署。合约部署成功后,运行字节码将单独驻留在其新的合约地址中。

EVM程序集

Solidity编译器可以以人类可读的格式打印出HelloWorld.sol合约的EVM程序集:

/ "HelloWorld.sol":109:871 contract HelloWorld //定义合约....../ mstore(0x40, 0x80) /"HelloWorld.sol":231:395constructor() // 构造函数,可选,在部署时执行一次,无法再次调用....../callvalue / "--CODEGEN--":8:17 / dup1/ "--CODEGEN--":5:7 / iszero tag_1 jumpi/ "--CODEGEN--":30:31 / 0x00/ "--CODEGEN--":27:28 / dup1 / "--CODEGEN--":20:32 /revert / "--CODEGEN--":5:7 / tag_1:/ "HelloWorld.sol":231:395 constructor() // 构造函数,可选,在部署时执行一次,无法再次调用....../ pop / "HelloWorld.sol":362:388 greeting ="Hello, World." / 0x40 dup1 mload swap1 dup2 add 0x40 mstoredup1 0x0d dup2 mstore 0x20 add 0x48656c6c6f2c20576f726c642e00000000000000000000000000000000000000dup2 mstore pop /"HelloWorld.sol":362:370 greeting / 0x00/ "HelloWorld.sol":362:388 greeting = "Hello,World." / swap1 dup1 mload swap1 0x20 add swap1 tag_4 swap3 swap2swap1 tag_5 jump // in tag_4: pop /"HelloWorld.sol":109:871 contractHelloWorld // defining the contract... / jump(tag_6) tag_5: dup3 dup1sload 0x01 dup2 0x01 and iszero 0x0100 mul sub and 0x02 swap1 div swap1 0x00mstore keccak256(0x00, 0x20) swap1 0x1f add 0x20 swap1 div dup2 add swap3 dup30x1f lt tag_8 jumpi dup1 mload not(0xff) and dup4 dup1 add or dup6 sstorejump(tag_7)

-------------------------------分割线-------------------------------

image.png

这个EVM程序集被截断了。它实际上很长。这比原始字节码更容易解释。

EVM指令集快速入门

指令集包含许多我们称之为操作码的操作。每个操作码都是一个计算步骤,需要花费特定的gas成本。举个例子:某些操作码的gas成本为0,比如跟停止执行相关的操作码。例如,0x00 STOP操作码停止执行的gas成本为0;终止交易的操作码通常不消耗任何gas费用。其他一些会强制EVM终止事务的操作码是无效操作码,无效的跳转目标(EVM仅在落在有效的跳转目标上时才能够跳转到任意位置)以及栈下溢。

关于EVM性能的说明

在主网中,EVM执行字节码的速度通常比其他虚拟机慢。这么做的原因是,每个操作都必须由网络中的每一个完整节点执行,以实现无需信任的环境。这是设计使然,EVM旨在实现整个网络的去中心化共识。因此,与中心化网络相比,EVM计算速度较慢且成本较高。但其好处在于,以太坊网络几乎具有不变性,大大提高了容错能力,并且停机时间为零。

此外,EVM的gas计量机制可确保矿工将交易包括在区块中,从而获得奖励。这种计量机制还可以防止程序永远循环。因为到最后,交易一旦超过其gas限制,其将立即停止并回滚所有沙盒性质的状态更改。交易失败所导致的唯一状态变化是发送方的随机数增加1,而直到交易失败为止的所有gas成本将全部支付给矿工。

上一篇: 以太坊的投资价值在哪里?
下一篇: 以太坊2.0将至,市场参与价值高吗?
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥267,134.58
37,429.01 USDT
-0.61%
ETH以太坊
¥14,688.93
2,058.11 USDT
-0.67%
USDT泰达币
¥7.19
1.01 USDT
+0.23%
BNB币安币
¥1,649.81
231.16 USDT
-0.93%
XRP瑞波币
¥4.36
0.61020 USDT
-2.23%
USDC
¥7.13
0.99970 USDT
+0.03%
SOLSolana
¥408.99
57.31 USDT
-1.86%
OKBOK币
¥410.75
57.55 USDT
-1.03%
ADA艾达币
¥2.76
0.38690 USDT
-1.12%
DOGE狗狗币
¥0.55900
0.07833 USDT
+0.44%
热搜币种
更多
币种
价格
24H涨跌幅
Terra Classic
¥0.00
9.718E-5 USDT
+25.98%
FTX Token
¥28.15
3.9694 USDT
-3.23%
Gala
¥0.19
0.026796 USDT
+0.44%
dYdX
¥23.93
3.3746 USDT
-5.06%
Conflux
¥1.12
0.1581 USDT
-2.59%
PancakeSwap
¥16.44
2.3184 USDT
-3.43%
寿司
¥8.28
1.1679 USDT
-3.45%
Yield Guild Games
¥2.65
0.3739 USDT
-3.78%
Filecoin
¥32.49
4.5811 USDT
-3.51%
Solana
¥406.38
57.3053 USDT
-1.86%
Uniswap
¥43.38
6.1172 USDT
+0.13%
奇亚
¥181.73
25.6258 USDT
-1.32%
最新快讯
更多
3个鲸鱼过去24小时累计向CEX存入717万枚BLUR
2023-11-27 10:14:23
某地址自万圣节以来已囤积8674枚BTC
2023-11-27 10:09:55
近24小时BLUR下跌期间三鲸鱼向交易所存入总计约717万枚BLUR
2023-11-27 10:07:39
Bithumb将新增MOC和RVN韩元交易对
2023-11-27 10:02:07
日本国税局:2022财年发现548起加密税务违规案件,总额超1.26亿美元
2023-11-27 09:48:45
Santiment:在行情反弹之前,占总供应量3.54%的USDT和占总供应量0.72%的USDC转移到交易所
2023-11-27 09:48:35
黄立成于20分钟前再次加仓116.5万枚BLUR
2023-11-27 09:40:15
下载币界网APP