set
和 get
可以用来变更或取出变量的值。address
类型是一个160位的值,且不允许任何算数操作。这种类型适合存储合约地址或外部人员的密钥对。外部账户的地址是由公钥决定的,而合约账户的地址是在创建该合约时确定的(这个地址通过合约创建者的地址和从该地址发出过的交易数量计算得到的,也就是所谓的“nonce”)
无论帐户是否存储代码,这两类账户对EVM来说是一样的。
每个账户都有一个键值对形式的持久化存储。其中 key 和 value 的长度都是256位,我们称之为 存储 。
此外,每个账户有一个以太币余额( balance )(单位是“Wei”),余额会因为发送包含以太币的交易而改变。
gas price 是交易发送者设置的一个值,发送者账户需要预付的手续费= gas_price * gas 。如果交易执行后还有剩余, gas 会原路返还。
无论执行到什么位置,一旦 gas 被耗尽(比如降为负值),将会触发一个 out-of-gas 异常。当前调用帧(call frame)所做的所有状态修改都将被 回滚。
译者注:调用帧(call frame),指的是EVM的运行栈(stack)中当前操作所需要的若干元素。