以太坊区块链系统中使用了MPT树结构,关于MPT树的内容这里不做过多介绍,想了解可以查阅百度或者书籍论文资料。
需要指出的是,以太坊区块头不是只包括一棵MPT树,针对三种对象,以太坊设计了三种树:交易树(Transaction Tree)、状态树(State Tree)和收据树(Receipt Tree)。下图展示了三棵树在区块头的存储情况,分别存储了三棵树的树根节点的散列值。
在以太坊中,区块链客户端需要具备以下功能:
- 验证某笔交易是否包含在特定区块中;
- 查询曾经某个地址(即账户)发出某种类型时间的所有实例(比如,判断一个众筹合约是否达成目标);
- 查询目前某个账户的余额;
- 判断一个账户是否存在;
- 查询在某个合约中进行的一笔交易的交易输出。
使用三种MPT树即可完成上述功能,其中交易树处理第一种业务,收据树处理第二种业务,状态树负责处理后三种业务。
交易树
①什么是交易
以太坊中,交易主要指一条外部账户【由人创建,可以存储以太币,由公钥和私钥控制的账户,区别于“合约账户”】发送到区块链上另一账户的消息的签名数据包,其中主要包含发送者的签名、接收者的地址以及发送者转移给接收者的以太币数量等内容。
②交易费用
为了防止用户在区块链公有链中发送过多无意义交易,浪费矿工资源,例如转账金额为0的转账交易,以太坊中每一笔交易都需要支付一定的费用,即交易