Gas
和云计算相似,占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)同样需要付出相应的费用。
以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。
Gas价格由运行合约的人在提交运行合约请求的时候规定,以确定他为这次交易付出的费用:Gas价格(用以太币计价) * Gas数量。
矿工收取相应的工作量费用。
引入gas来解耦。把市场的波动和计算的开销来解耦,也就是说以太币和gas之间是有汇率的,以太币涨没关系,gas价格下降就可以了。它要保证我做同样的计算,消耗的法币是一致的。防止出现这种情况:今天做一个加法需要十块钱,明天做一个加法需要一百块钱。
合约部署原理
部署架构
SOLC智能合约编译器将代码编译成成EVM字节码,然后将EVM字节码通过Geth的RPC接口发送到以太坊网络,经过全网验证后,同时写入到每个Geth管理的区块链中。
数据流
代码先经过SOLC编译变为了二进制码,然后通过一笔交易来创建智能合约,该笔交易包含了创建者账号、智能合约内容、智能合约的地址这几个关键信息。
部署过程中,需要通过交易来部署,同时数据要存储到区块链上,这些需要使用到GAS。
合约运行原理
区块链本身不能执行代码,代码的执行是在本地的EVM中。
可以理解区块链为一个数据库,而客户端从数据库中读取了存储的运行代码,并在本地运行后,将结果写入到了区块链这个数据库中。