1 / 14
文档名称:

【以太坊】深入探索以太坊世界状态,Part-1.docx

格式:docx   大小:137KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

【以太坊】深入探索以太坊世界状态,Part-1.docx

上传人:小雄 2021/8/22 文件大小:137 KB

下载得到文件列表

【以太坊】深入探索以太坊世界状态,Part-1.docx

文档介绍

文档介绍:首先,比特币的UTXO不能被拆分消耗。如果一个比特币用户想要花费 (他手上只有一个价值1比特币的UTXO ),他必须显式地 (转给自己)作为找零。如果他们没有设置 自我找零,。
Alice
第二点,在一个最底层的角度来说,比特币并不保存用户的账户余额。在 比特币中,用户仅仅在某一给定时间点掌握着一到多个UTXO的私钥。
尽管数字钱包设计得好像比特币区块链能自动保存和管理用户的余额等 等,但实际上不是这样的。
用户的账户余额在比特币网络中是一种抽象的概念,事实上一个用户的余 额是他所控制的每一个UTX。(用户保管着对应的私钥)价值的和。用 户所使用的私钥能对每一个UTXO进行签名和消费。
Bitcoin Core - Wallet
荷 Overview 令 Send 含 Receive B Transactions
Balances
Available: BTC
Pending: BTC
Total: BTC
UTXO系统在比特币网络中运行良好,某种程度上要归功于数字钱包能完 成绝大多数与交易相关的工作,包括但不限于以下几点:
a) 操作UTXO
b) 保存私钥
c) 设置交易费用
d) 提供找零地址
e) 统计UTXO (显示可用余额、转帐中的数额以及总余额)
有趣的是,一个非确定性钱包(如上图中的比特币核心钱包)的备份仅仅 提供UTXO的快照(在该时间点)。只要用户执行了任何交易(发送或 接收),他们所生成的原始备份就过期了。
总结来说,我们知道:
・比特币区块链不保存账户余额
•比特币钱包保存UTXO的私钥
・当被包含在某一条交易中时,整个UTXO就被使用掉了(在有些找 零场景中,原来UTXO中的价值会被新的UTXO承载)
和上述比特币网络不同,以太坊世界状态已经能管理账户余额以及更多信 息了。以太坊中的状态并不是一种抽象的概念,它是以太坊的基础层协 议。正如黄皮书[1]中所提及的,以太坊是一个基于交易的"状态”机。 基于所有交易的状态机概念就这样被构建出来。
让我们从头开始捋一捋,和其他区块链一样,以太坊区块链是由创世区块 开始的。从这个起点开始(创世状态在0区块高度),诸如交易、合约 以及挖矿的活动会持续不断地改变以太坊区块链的状态。在以太坊中,账 户余额(存储在状态树中)随每一次交易进行所发生的改变就是这样一个 例子。
值得留意的是,像账户余额这样的数据并不直接保存在以太坊区块链的区 块中。区块中只保存交易树、状态树和收据树的根节点哈希值。其存储结 构如下图所示。
从上图中可以注意到,存储树(所有智能合约数据存储的位置)的根节点 哈希实际上指向了状态树,从而间接指向了区块链。接下来我们将深入探 讨这一部分更细节的内容。
以太坊中存在两种截然不同的数据类型:永久数据和暂存数据。交易就是 永久数据的一个例子。一旦一个交易被确认,它就将永久地被记录在交易 树结构中,并且无法篡改。而某一个特定以太坊账户的余额则是暂存数据 的例子。账户地址的余额存储在状态树中,并且每当接收到和该账户有关 的交易时,该余额都会改变。将挖矿确认后的交易这样的永久数据和账户 余额这样的暂存数据分开管理是有意义的。以太坊使用前缀树这种数据结 构(上图所示结构)来管理数据,那么接下来我们介绍一下什么是前缀 树。
前缀树
前缀树是众所周知用于存储有序字符串的一种数据结构。以太坊特别采用 了一种被称为"检索用文字数字编码的信息的实用算法"(Practical algorithm to retrieve information coded in alphanumeric ,缩写为 PATRICIA ,下文音译"帕特里夏”)。帕特里夏树的主要优势在于它简 缩的存储。接下来我们对比标准(传统)前缀树和帕特里夏前缀树之间工 作原理的不同。
w
-\o表示空指针-
在前缀树中添加单词的规则
我们跟随着所加入单词的搜索路径来看。如果我们(在搜索过程中)遇到 了一个空指针,就构建一个新节点;当成功将单词加入到前缀树中后,我 们再创建一个空指针(终止符)。
当需要加入一个被其他长单词所包含的短单词时,我们就直接把所有的字 母放进去并加入一个空指针(终止符)。
从前缀树中删除单词的规则
我们从前缀树中搜索一个表示字符串(我们所要删除的单词)的叶子(分 支末端节点)。紧接着删除从叶子末端节