主页 > imtoken钱包注册 > CoinEx研究院丨你必须知道的以太坊基本概念

CoinEx研究院丨你必须知道的以太坊基本概念

imtoken钱包注册 2023-10-20 05:10:36

以太坊智能合约编写_购买以太坊秒合约_以太坊智能合约是什么

作者:刘,CoinEx智能链(CSC)研发人员

本文将从什么是区块、什么是交易、什么是智能合约、ERC20转账的本质、ETH和ERC20转账的区别等方面系统地介绍ETH。

【什么是区块】

以太坊智能合约编写_以太坊智能合约是什么_购买以太坊秒合约

让我们首先讨论什么是块。 相信大家对区块还是有一定了解的,区块链就是一个区块像链条一样连在一起。

【ETH的区块是由什么组成的】

以太坊智能合约是什么_以太坊智能合约编写_购买以太坊秒合约

以下是我们作为 ETH 用户应该了解的 ETH 区块的一些组成部分。 比如区块的高度,唯一的Hash值,父块的Hash值,出块时刻的时间戳,挖出块的矿工地址,块的块大小,以及一共消耗了多少Gas等等,这些概念都很简单,看名字就知道是什么意思,这里就不赘述了。

接下来重点介绍挖矿收益和叔块地址的概念。

1.1 关于挖矿收益

首先是挖矿收益。 矿工花费大量的电费来计算下一个区块,以便在每个区块产生时获得奖励。 这些是真正的 ETH,然后矿工出售挖出的 ETH 利润。

购买以太坊秒合约_以太坊智能合约编写_以太坊智能合约是什么

这里,每个区块的奖励主要由三部分组成,即区块奖励、手续费收入和叔块奖励。

1.2 区块奖励

以太坊智能合约编写_购买以太坊秒合约_以太坊智能合约是什么

出块奖励就是每产生一个新的块,挖出这个块的矿工可以获得奖励(爆款奖励)。 这个收益的具体数额写在共识里面。 修改这个固定收益需要硬分叉升级。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

到目前为止,这个固定收益已经改变了三遍。 第一个是代号为“Frontier”的初始 ETH 主网版本。 从高度 0 开始,每个区块的奖励为 5ETH。

在437万个区块的高峰期,随着代号“拜占庭”的硬分叉升级,每个区块的奖励从5ETH减少到3ETH。

最新的变化是在 728 万个区块高度进行了“君士坦丁堡”硬分叉升级,每个区块的区块奖励从 3ETH 减少到 2ETH。 到目前为止,每个区块的区块奖励一直是 2ETH。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

二是手续费收入。 这部分的定义就简单多了,就是这个区块中所有交易手续费的总和。

1.3 叔块奖励

最后一部分是叔块奖励。 这里需要理解的是,每个块最多可以包含两个叔块,或者一个都不包含。

购买以太坊秒合约_以太坊智能合约是什么_以太坊智能合约编写

并且每包含一个叔块,就可以获得区块奖励的1/32。 以当前每个区块的区块奖励为2ETH,那么每包含一个叔块,就可以获得2的1/32,也就是0.0625ETH。 如果包含两个叔块购买以太坊秒合约,则为 0.125 ETH。

1.4 叔块地址

介绍完挖矿收益,我们来了解一下刚才提到的叔块的概念。 这里有一张图可以帮助你更清楚地理解叔块的概念。

以太坊智能合约编写_购买以太坊秒合约_以太坊智能合约是什么

以太坊智能合约编写_以太坊智能合约是什么_购买以太坊秒合约

ETH目前是PoW挖矿模式,可能会出现极短时间内两个矿工同时获得新区块的情况。 这时候有一个新的区块会因为慢一点或者节点连接不好而不能及时广播。 出去又虚无。

在BTC网络中,这个过时的新区块被称为孤块,BTC中的孤块是没有收益的。 但是ETH的出块速度远高于BTC,也就是孤立块出现的概率要高很多。 为了避免过多矿工辛辛苦苦挖出区块而成为无利可图的孤块,ETH 引入了叔块概念。

如图所示,在1个高度块之后生成了两个2个高度块,绿色块成为真正的2个高度块,而黄色块将面临被丢弃的危险。 这时候,后面的3个高度的块就会把这个黄色块作为自己的叔块包含进去。 蒯叔这个名字也很形象。 舅舅是他父亲的弟弟。 3 个高度块将因包含一个叔块而获得额外的叔块奖励。

以太坊智能合约是什么_以太坊智能合约编写_购买以太坊秒合约

同时,该叔块的矿工地址也将获得奖励。 具体奖励金额与区块高度和叔块高度有关。 乘以每个区块的区块奖励,最后除以8。以刚才图片所示的情况为例,叔块高度为2,区块高度为3,即2加8减3 ,乘以 2,最后除以 8 得到 1.75 ETH。 从这个公式可以看出,叔块最多只能是上述8个高度以内的块。

【什么是交易】

以太坊智能合约编写_购买以太坊秒合约_以太坊智能合约是什么

了解了区块,我们来认识一下交易。 交易是区块链去中心化账本中的特定记录。

它主要由交易的Hash、区块高度、时间戳、From和To地址以及交易涉及的ETH数量组成,其次是Input、Nonce、交易手续费等属性。

以太坊智能合约是什么_以太坊智能合约编写_购买以太坊秒合约

前三个Hash、height和timestamp比较好理解,看名字就知道是什么意思了。 因此,让我们关注以下概念。

2.1 发件人、收件人地址和 ETH 数量

作为一个去中心化的账本,转账是最基本的功能。 我们可以把每笔交易看成是一笔ETH的转账,一笔转账由发送方、接收方和转账金额组成。 这里对应的是From、To地址和ETH数量。

From地址是主动发出交易的地址。 To 地址可以是普通用户地址,也可以是合约地址。 如果是普通用户地址,交易就是简单的ETH转账。 如果是合约地址,那就是一个比较复杂的合约调用,最终的ETH数量就是本次ETH转账涉及的转账金额。

购买以太坊秒合约_以太坊智能合约编写_以太坊智能合约是什么

购买以太坊秒合约_以太坊智能合约是什么_以太坊智能合约编写

ETH作为支持智能合约的公链,发送交易时可以额外填写Input数据。 这里的Input data是调用合约时的调用参数。 当然,如果这是一个普通的 ETH 转账交易,那么 Input 为空。 理论上,这里Input的内容可以随意填写,只要前面部分数据能够正确调用合约即可。

以太坊智能合约编写_购买以太坊秒合约_以太坊智能合约是什么

开发项目时,有邀请返利功能。 为了尽量减少用户的感知,这是通过在发送Swap等交易和下单时,在正确的Input内容末尾添加用户的邀请码来实现的。 特征。

让我们介绍一下Nonce。 所谓Nonce就是From地址的交易顺序,本质上就是From地址发送的打包交易的总数。 From地址相同的交易,必须按照Nonce的顺序进行打包。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

这里有个问题,如果前面的Nonce不打包,后面的Nonce永远不会打包。 因为用户发送的交易手续费太低,交易很久没有打包,用户不断发送新的交易,然后用户就会疑惑,为什么我发送的交易手续费还没有以如此高的价格包装。 原因就在这里,用户之前的交易手续费太低,阻塞了所有后续的交易。 这时,应该加速或取消之前被阻止的交易,后续被阻止的交易将被依次打包。

这里提到的交易加速和取消功能也是通过Nonce实现的。 在交易打包之前,Nonce可以重复发送。 只要新发送的交易的 Gas Price 高于原来的交易,如果原来的交易被覆盖,通常新交易的 Gas Price 会比原来的交易高 10% 以上。 具体要求由节点配置决定。

2.2 如何计算交易手续费

在解释如何计算交易费用之前,我们先介绍几个基本概念。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

首先是Gas,这是EVM在执行指令时需要消耗的资源。 Gas Limit 和 Gas Used 分别表示用户发送交易时预计消耗的 Gas 数量,以及交易执行时实际消耗的 Gas 数量。 当交易未执行时,Gas Limit 已用完。 ,交易将失败。 最后是 Gas Price,表示用户愿意支付多少 ETH 购买 1 单位 Gas。

了解了这些基本概念之后,就可以搞清楚每笔交易的手续费是怎么来的了,计算方法也很简单,就是Gas Used乘以Gas Price。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

购买以太坊秒合约_以太坊智能合约是什么_以太坊智能合约编写

例如一笔ETH转账需要消耗21000个Gas,用户愿意支付120的价格,其中120的单位是Gwei,1Gwei是10的9次方ETH,那么用户需要完成这笔 ETH 转账交易支付 21000 乘以 120 除以 10 的 9 次方,即 0.00252 ETH。

需要注意的是,合约调用越复杂购买以太坊秒合约,Gas消耗越高,矿工会优先打包手续费较高的交易。

【什么是智能合约】

以太坊智能合约编写_以太坊智能合约是什么_购买以太坊秒合约

3.1 以太坊虚拟机

在介绍智能合约之前,我们需要了解EVM,即以太坊虚拟机。 我们知道ETH是区块链,是一个去中心化的项目,所以EVM可以理解为运行在ETH这个去中心化项目上。 中的一台超级计算机,负责向用户收取 Gas,然后执行存储在区块上的代码。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

这里所说的存储在区块上的代码就是智能合约。

ETH 可以实现各种逻辑。 比如CoinEx去年投资的OneSwap,就是一个基于ETH的去中心化交易所。 在计算机世界中,想要实现各种逻辑,就需要编写各种代码,而这里的代码就是智能合约。

3.2 智能合约

智能合约存储在区块上,智能合约的地址相当于存储在区块上的代码的调用入口。 通过合约地址,可以方便的通过交易调用你想调用的智能合约,实现预期的功能。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

我们这里拿手机来打个比方。 BTC网络相当于一台功能机器。 从最初的设计来看,它只能实现转账等特定功能,而ETH网络相当于一部智能手机,可以通过不同的智能合约来实现。 各种功能,这里的智能合约相当于ETH智能手机上的APP。

【ERC20转账本质】

购买以太坊秒合约_以太坊智能合约是什么_以太坊智能合约编写

以太坊智能合约编写_以太坊智能合约是什么_购买以太坊秒合约

我们知道,一个ERC20 Token其实就是一个智能合约,ERC20就是指这一类智能合约的通用规范。 那么现在让我们从智能合约的角度来理解ERC20转账的本质。

刚才说了,智能合约本质上是存储在区块上的代码,所以我们先来看一下ERC20合约的代码。 这里我们只截取转账部分的逻辑。 代码很简单,相信非技术的朋友也能看懂。

以太坊智能合约是什么_以太坊智能合约编写_购买以太坊秒合约

首先我们看到第二行,这里定义了一个Event,中文名称为event,它的作用是告知用户这段代码发生了什么。 这里定义的是一个Transfer事件,顾名思义,它代表了一个transfer行为的发生。 Transfer事件有3个参数,分别用于告知用户转账的发送方地址、接收方地址和转账金额。

购买以太坊秒合约_以太坊智能合约是什么_以太坊智能合约编写

再往下就是ERC20合约转账功能的完整实现。 这个转账函数只有接收方地址和转账金额两个参数,没有发送方地址,因为发送方地址不需要特别声明。 这个传递函数的调用者是发送者地址,也就是代码中的msg.sender。

首先这个函数会判断发送方的余额是否足够,并且要求转账金额不能为负数,必须是大于0的数字,否则返回False表示转账失败。

判断条件通过后,转账逻辑正式开始。 逻辑很简单。 首先从发送方余额中减去转账金额,然后将转账金额添加到接收方余额中即可完成。 ERC20 转账本质上就是这么简单,发送方的余额减去转账金额,接收方的余额加上转账金额。 然后发送这个转账事件,最后返回True表示转账成功。

我们来看看ERC20合约的transfer function是如何调用的。 还记得刚才我们介绍交易的时候提到过,如果交易是合约调用,那么交易的To地址就是被调用合约的地址。 交易中还有一个Input属性,就是调用合约时的调用参数。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

上图是ERC20转账函数的一个调用参数,可以分为三部分,我这里用红线隔开。 第一个短字符表示传递函数的摘要。 一个智能合约可能有多个功能,每个功能的总结都不一样。 因此,可以通过该摘要指定合约中的不同功能。 下面的长串代表一个地址,也就是传递函数的第一个参数——接收者的地址。 最后一长串代表一个数字,就是转账的金额。

下图是浏览器根据上面输入的原始数据解析出来的,帮助用户清楚的看到这个交易调用了哪些函数,每个参数是什么。

以太坊智能合约是什么_购买以太坊秒合约_以太坊智能合约编写

此次ERC20转账交易打包成功后,在交易明细中可以找到这样的转账事件。 通过这个Transfer事件,我们可以看到以619结尾的地址向以9b0结尾的地址转了这么多币。 这里显示的数字也需要除以Token的精度,才是真正的转账金额。 这个Token是ONES,精度是18位,所以这个数代表7200个ONES

最后我们可以通过这个Transfer事件来分析最终的ERC20转账记录,即一个以619结尾的地址向一个以9b0结尾的地址转了7200个ONES。