引介 | 简要比较以太坊和比特币的数据结构

admin 2024-01-22 26次阅读

引介:以太坊为什么是第二代区块链?2017 年末,当我开始了解区块链的时候,我注意到以太坊非常受关注。我总是看到别人说:比特币是第一代区块链,而以太坊是第二代区块链。读了许多关于比特币与以太坊间对比的文章之后,我明白了 “为什么”:比特币是一种使用有限脚本语言来构建去中心化支付系统的加密货币,但是以太坊不仅如此。以太坊不仅仅是一种加密货币,还是一种全球化去中心计算基础设施,能够执行智能合约与程序代码(使用多种编程语言编写)进而控制数字资产。在以太坊平台之上,开发者可以自行构建去中心化应用(dApp)。我对去中心化应用开发(dApp)非常感兴趣imToken,因此我并没有花很多时间阅读以太坊黄皮书,去理解其具体构建原理(“How”)。

我在 v 期间开始阅读以太坊黄皮书的时候,我不仅明白了为什么以太坊是第二代区块链,而且被这些最终将奇妙观念化为现实的伟大思想打动。

比特币钱包和以太坊钱包

让我们深入了解一下几个主要的部分:数据结构比特币使用了 树(由密码学哈希值组成的二叉树),而以太坊使用了改良的 树。如果你想更深入地了解,可以观看该视频。插播: 不支持下标格式,如果你想阅读本文含有黄皮书中某些符号的版本,请查看该文档。区块

区块链比特币以太坊

让我们来看一下以太坊区块结构。

区块链比特币以太坊_比特币钱包和以太坊钱包_以太坊和比特币区块链钱包

-来源:解读以太坊黄皮书-区块包含:区块头:请注意以太坊和比特币区块链钱包,比特币区块头中只有 1 棵 树,以太坊区块头中有 4 棵(State Trie - 状态树, Trie - 存储树, Trie - 交易树 & Trie - 收据树)。以太坊区块头包含:

:父块区块头哈希值。

:当前区块的叔块列表的哈希值。

:矿工用于接收交易费的以太坊的地址。

:在本区块及其交易执行完成后,状态树的根节点哈希值。

:由区块交易列表中全部交易构成的交易树的根节点哈希值。

:由交易列表中每笔交易的收据构成的收据树的根节点哈希值。每一条交易收据(BR 数组中的第 i 项对应第 i 笔交易的收据)都存储在键值索引的收据树中,树的根节点哈希值存储在区块头中。这对生成零知识证明或是索引与搜索都非常有用。交易收据 R 是以下四项的元组:

Ru:交易执行后包含该交易收据的区块累计消耗 gas 量。

Rl:交易执行期间所产生的日志集合。

Rb:依据日志信息构建的 Bloom 过滤器。

交易状态码。

:该字段用于存储以太坊事件(Event),可依据日志记录器地址或日志主题进行索引。

:本区块的难度水平,根据前一个区块难度水平及时间戳计算得来。

:所有先前区块的个数(即本区块区块号),创世区块的 字段为 0;

:当前区块允许的最大 gas 消耗量。

:当前区块内所有交易所消耗的 gas 总量。

:区块初始化时的 Unix 时间。

:可供矿工添加任意数据的字节数组

:用于验证区块是否被正确处理的哈希值。

nonce:用于验证区块是否被正确处理的哈希值。(功能与 相同)

区块体包含:

叔区块头(Ommer Block )列表

交易序列:本区块中交易列表。

整体有效性:要确定一个区块的有效性,当且仅当其满足以下几个条件:区块的叔区块列表哈希、交易区块哈希以及给定交易内部一致

打包区块的过程包括四个阶段:

一个区块必须指定一个父区块,并且必须指定 0 个或多个叔区块

区块 B 中包含的叔区块必须具有以下性质:

a. 区块 B 的叔区块必须是区块 B 第 k 代祖先区块的直接子块,其中 2