在之前比特币本质其实是UTXO的文章中介绍了比特币的不是一个基于账户的概念,而且UTXO。但是在以太坊中,就是基于账户的概念了。
什么是以太坊
- 以太坊是一个开源的有智能合约功能的公共区块链平台。
- 通过其专用加密货币以太币提供去中心化的虚拟机(EVM)来处理点对点合约。
- 拥有图灵完备的计算机语言。
和比特币最大的区别是什么?
以太坊是基于账户,一种是外部账户(私钥控制),另外一种是合约账户(合约代码控制),即智能合约被看成一个特殊账户,用户可以对该账户进行交易,实现对该账户中的属性和方法的调用,而比特币是基于UTXO,无账户概念。
如下为以太坊框架图:
智能合约
智能合约并不是什么新的东西,早在1995年律学者尼克·萨博提出:一个智能合约是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。
例如信用卡自动还款功能,其实也是一个智能合约,得到用户的授权后在指定时间自动执行,但是这是中心化的。而区块链上智能合约一旦写在链上就不能被更改,而且代码是开源的,实现去中心化。
区块链中智能合约指是合约账户中的代码,任何人都可以编写一份合约代码,并且部署到以太坊。而部署和执行智能合约的方法,需要向网络支付gas费用。
gas
gas可以理解为交易的手续费,矿工可以根据gas的大小选择打包的交易,而每笔交易都会包含一个gas limit(startGas),表示这笔交易最多接受的gas费。因为gas消耗只是一个大致估算,许多用户会支付超额的gas来保证交易被快速打包,超过gas limit的部分会被退回。
- gas的作用:
它确保一个交易支付了适当的费用给以太网络。 执行的每个操作(或合同执行)交易都要求支付其相应的费用,这样才能确保网络不会因为进行大量密集的工作而陷入僵局。 - 为什么比特币没有gas:
这是一个不同于比特币交易费用的策略,比特币交易费用仅基于交易的千字节大小。 由于Ethereum允许运行任意复杂的计算机代码,所以很短的代码实际上可以导致大量的计算工作正在完成。
gas费用 = gasUsed(该交易消耗的gas总数量) + gasPrice(该交易中单位gas的价格,一般gwei为单位)
区块的gas limit则是单个区块允许最多的总量,用这个来决定单个区块能打包多少笔交易。比如有5笔交易的gas limit分别是10、20、30、40、50,而区块的gas limit 是100,则矿工可以选择10、20、30、40打包,也可以选择10、40、50打包。如果尝试超过区块的gas limit打包,则会被网络拒绝,提示“交易超过区块gas limit”。
一个区块的gas limit为4712357 gas,则表示一个区块大约打包224笔交易(gas limit 为 21000)。