导航:首页 > 以太坊区 > opcode以太坊

opcode以太坊

发布时间:2023-01-07 18:25:51

以太坊交易(tx) 分析

更多请参考: Github: https://github.com/xianfeng92/ethereum-code-analysis

其中 object 和 opcodes 是相对应的,比如 60 对应就是 operation PUSH1,合约编译后的字节码即为一组的 operation 。

合约部署其实就是实例化一个 contract 对象,并将 data 的值设给 Code属性 。

创建合约的tx中,input字段对应的是合约的字节码,即指令数组。

其中 input 字段对应所要调用的函数签名的前四个字节(771602f7)以及对应的参数(1,2)

其中 input 字段为所要调用的合约函数签名的前四个字节(72a099b7)

关于函数调用,Call会把对应的Code读出来,依次解析,Code中会把所有的public签名的函数标志(4字节)push到栈里。然后依据 input 中需要调用函数的签名标志(前4字节)来匹配 Code, 匹配之后跳转到对应的 opcode 。

② Gas 机制是如何运作的

以太坊是目前第二大公链,它和比特币不一样,以太坊上的可以实现的功能更多,如果比特币是一个可以进行加减乘除的计算器,那么以太坊就是一台功能完备的计算机。以太坊系统的复杂度超过比特币好几个数量级。

在以太坊中,用户可以自己写一个智能合约,然后把智能合约放到以太坊中执行。智能合约的执行需要消耗资源,而以太坊上的资源是有限的。

在计算机系统中,停机问题(https://zh.wikipedia.org/wiki/停机问题)目前还没有办法完全证明。这个问题简单来说就是没办法判断一个程序是否能够在有限的时间内结束运行。

如果一个用户提交了一个死循环程序到以太坊中,那么就会无限的执行下去,从而将以太坊网络击垮。而使用 gas 机制则可以解决这个问题,智能合约中,每段代码的执行都会消耗一定量的 gas,在用户提交交易的时候需要指定好。如果 gas 消耗完了,那么智能合约就必须停止,交易也会被撤销,如果智能合约执行完成, gas 还有剩余,就会退还给用户。

需要特别说明的是,即使交易失败,用户也需要支付 gas 费用,因为以太坊为这些错误的交易也付出了计算资源。

除了这点之外,gas 还可以用来激励矿工,用户提交交易所消耗的 gas 费用最后都会给到矿工,矿工会优先去打包那些提供了更高 gas 价格的交易,在以太坊中,如果希望自己的交易早点被打包,可以设置更高的 gas 价格。

g as 机制是以太坊系统的命脉。

gas 本质就是维护以太坊网络安全,这是从两个方面来做到的,一方面通过 gas 来衡量计算量,一方面使用 gas 来吸引更多的矿工,矿工的数量越多,以太坊网络就越安全。

gas 只能用于交易中,用户不会接触到 gas,gas 会在交易的提交的时候直接通过以太币来兑换。

智能合约中,每个操作都会消耗一定的 gas 。每个操作都对应一个 Opcode,下面是一些常见的 gas 消耗,完整的 gas 消耗说明看这里:https://github.com/crytic/evm-opcodes

以太坊中的交易最后会被确认,打包成区块,这样交易才算是完成,但是在一个区块中,可以打包的交易是有限的,以太坊通过 gas 来限制可以打包的交易数。这样就让被打包的机会成为了一个稀缺的资源。

用户提交一个交易后,gas 量可以看做是一个固定的值,矿工为了做到最大收益,就会选择那些 gas 价格更高的交易。

很多以太坊的用户经常吐槽 gas 费过高,其实这里的过高不是指 gas 本身过高,而是指 gas 对应的以太坊价格过高。

因为 Gas 的价格不是固定的,而是波动的,简单来说就是根据供需关系来决定的,如果同时需要用以太坊的用户多,那么Gas 的价格就贵,如果用户的人少,那么 Gas 的费用就会少。

以太币的最基本单位是 wei,1 ETH = 10 ^18 wei,而衡量 gas 价格的单位则是 gwei,1 ETH = 10 ^ 9 gwei。

在提交交易的时候,需要设定两个参数,一个是 gas 的最大消耗量(gas limited)和 gas 的价格,gas 的消耗量通常情况下会比较固定,不会有太大的变化,主要是 gas 的价格会波动很大。

在上面我们说到矿工会挑选那些 gas 费用比较高的交易进行打包。所以 gas 的价格设置得越高,那么总的 gas 费用就会越高。如果想让当前的交易尽快被确认,那么就需要设置一个当前相对来说比较高的 gas 价格。

其实对当前 gas 价格最清楚的就是那些矿工,所以矿工们也提供了一些服务,让用户可以实时地了解到当前 gas 价格的分布。比如 GasNow 就是一个比较常用的服务,现在很多钱包中都在使用这个来为钱包的用户提供 gas 价格建议。

如果你提交的交易不紧急,那么使用当前的平均 gas 价格就可以,如果需要提交紧急的交易,那么就需要设置更高的 gas 价格。

文 / Rayjun

阅读全文

与opcode以太坊相关的资料

热点内容
2017年数字货币暂停 浏览:208
比特币产生速率 浏览:384
btc黑话 浏览:198
哪个平台可以提比特币 浏览:477
以太坊今天得价格 浏览:169
个人通过网络收购玩家的虚拟货币 浏览:421
虚拟货币2000u托管 浏览:878
数字货币改变什么不同 浏览:450
9月4号twee数字货币 浏览:796
法定数字货币法 浏览:536
有一种虚拟货币还没交易 浏览:169
比特币低成本变现 浏览:313
数字货币与实物现金的转换 浏览:850
生死狙击萌新以太工坊买什么 浏览:149
哪个矿池的费率最低 浏览:195
g网买虚拟货币 浏览:154
水平摩擦力怎么算 浏览:568
比特币走势图日k线从哪里看 浏览:528
津巴布韦可以交易比特币 浏览:691
比特币对货币流通 浏览:972