ETH vs. BTC

ETH BTC
出块速度 ~15s ~10min
共识机制 GHOST 最长合法链
证明方式 工作量证明(Proof of Work) → (正在逐步转向) 权益证明(Proof of Stake) 工作量证明
挖矿设备 高内存(专门这么设计, 尽量不使用专用矿机) 高计算量(适合ASIC)
账户 account-based ledger transaction-based ledger
突出特点 智能合约

账户

ETH使用的是account-based ledger, 对应在区块链中会保存一颗状态树(后面详述). 状态树主要是记录了账户的余额等, 同时为了防止重放攻击(replay attack), 在区块链中还会记录转账者的转账次数.

ETH的账户有两种: externally owned account(外表账户/普通账户), 这种账户类似于BTC的账户, 基于公私钥机制进行管理; 另外一种是smart contract account(智能合约账户), 这是专门为了智能合约设计的账户. 智能合约账户也有对应的余额和交易次数, 同时还有自己代码code和变量取值storage, 但是智能合约账户不能主动发起交易, 只能作为交易的收账者.

状态树, 交易树 & 收据树

ETH有三棵树, 分别是状态树, 交易树和收据树.

状态树是使用了类似于Trie的方式构建merkle tree, 同时为了进一步压缩空间, 使用了压缩Trie, 在ETH中这种结构被称为Merkle Patricla Tree(MPT). 另外, 由于每个新建的区块涉及改变的账户个数很少, 因此进一步用了类似于可持久化的方式复用空间, 而且状态树中也包含了智能合约的状态, 里面的变量取值存储也能用了类似可持久化的结构.

除了状态树, 交易树和收据树也都是MPT, 交易和收据一一对应, 收据树是记录交易的运行结果.

此外, 为了能够快速高效查找某个元素是否在某大型集合内, 每个区块头都有一个bloom filter.

GHOST协议

GHOST协议主要解决的问题是, 在把出块时间减少的情况下, 如何很好地改进BTC的共识机制. 在短出块时间的情况下, BTC现有的共识机制的问题是orphan block是无收益的, 这会造成mining centralization会造成不成比例的优势.

GHOST协议的主要思想是承认叔父区块(7/8的奖励), 并对承认叔父区块的新区块给予(1/32)的奖励. 此外,

鼓励尽快合链 → 每个区块最多只允许两个叔父区块

不鼓励远古的叔父 → 合法叔父区块的距离有限制, 只有6种叔父区块.

ETH的区块奖励没有类似于BTC的四年减半的规定

为了防止交易冲突, 叔父区块的上的交易不会执行

以太坊中Ghost协议详解

交易费

在ETH中, 类似于BTC的交易费被称为gas fee.

gas是支付给矿工的, 创造交易需要gas fee, 运行智能合约也需要gas free.