这篇文章是用来帮助人们理解以太坊网络上的一些基本概念和体系,包括账户体系、gas、矿工在区块大小设置机制里的角色等。
什么是账户?
外部拥有账户 vs 合约账户
以太坊中有两种账户:
外部拥有账户(EOA)
合约账户
这个区别在即将到来的大都会升级中将会被抽象化。
外部拥有账户
一个外部拥有账户具有一下特性:
有一个以太币余额
可以发送交易(以太币转账或者激活合约代码)
通过私钥控制
没有相关联的代码
合约账户
一个合约账户拥有一下特性:
有一个以太币余额
有相关联的代码
代码执行是通过交易或者其他合约发送的call来激活
当被执行时 -- 运行在随机复杂度 (图灵完备性)-- 只能操作其拥有的特定储存,例如可以拥有其永久state -- 可以call其他合约
所有以太坊区块链上的行动都是由各账户发送的交易激活。每次一个合约账户收到一个交易,交易自带的参数都会成为代码的输入值运行。合约代码会被以太坊虚拟机(EVM)在每一个参与网络的节点上运行,以作为它们新区块的验证。
什么是交易和消息?
交易
"交易"这个术语在以太坊里被用来指代一个用来存储消息的被签名数据包在区块链上从一个外部拥有账户发送至另一个账户的过程。
交易包括:
这个消息的接收者
一个签名,用来证明发送者有意向通过区块链向接收者发送消息
价值域 - 从发送方转移到接受方的wei (ether/10^18) 的数量
一个可选的数据域,用来储存发送给合约的消息
一个GASLIMIT值,代表了这个交易的执行最多被允许使用的计算步骤
一个GASPRICE值,代表了交易发送者愿意支付的gas费用。一个单位的gas表示了执行一个基本指令,例如一个计算步骤
消 息
合约具有发送"消息"到其他合约的能力。消息是一个永不串行且只在以太坊执行环境中存在的虚拟对象。他们可以被理解为函数调用(function calls)。
一个消息包括:
明确的消息发送者