以太坊的数据到底是如何存储在以太坊网络的?
首先我们需要理解为了让区块链系统运行,我们需要存储的东西。让我们简单地看下关于Alice给Bob转账10美金的例子。
我们可以看出,通过执行转账可以改变其中的状态。
我们必须要追踪余额以及不同人(状态)的其他细节,还有在区块链之间发生的细节(转账)。不同的平台会有不同地处理方法。我们可以看出,比特币和以太坊是如何处理的。
比特币
比特币的状态是通过UTXO来实现的。比特币价值转移是通过转账实现的。更特别地是,比特币用户可以通过创建转账花费1个或多个UTXO,并且将他们的UTXO作为转账输入。
UTXO模型让比特币和以太坊不同。我们可以看这些例子来理解其中的区别。
首先,比特币UTXO不能部分花费。如果比特币用户花费0.5个比特币(使用他们仅有的UTXO,价值1比特币),他们需要特意地发回0.5个比特币。如果他们不发送这部分,那么这个0.5比特币就会丢失,并且给到挖出转账的矿工。
其次,在最基本的层面,比特币没有包含用户账户余额。通过比特币,用户可以简单地持有私钥,在任何时间点都可以进行一个或者多个UTXO。数字钱包看起来像是让比特币区块链能够自动地存储和管理用户账户余额,其实不是这样。
比特币的UTXO系统工作的很好,这是由于数字钱包能够完成大多数转账任务。其中包括,但是不限于:
a) 处理UTXO
b) 存储秘钥
c) 设置转账费用
d) 提供返回地址
e)描述UTXO状态(展示可行性,待转账以及全部的余额)
UTXO模型中的转账可以类比为纸币转账。每个账户都会追踪钱包添加的账单(UTXO)。当我们想要花钱的时候,我们会使用一个或者多个账单(现在的UTXO),这已经足够来承担花销,或许还会得到一些找零。(新的UTXO)。每个账单只能花费一次,一旦消费,UTXO就会从资金池移走。
总结下来,我们知道:
• 比特币区块链不会持有账户余额
• 的秘钥
• 如果包含在转账中,完整的UTXO会被消费(有时候,部分会得到新的UTXO作为找零)
以太坊
和以上的信息相反,以太坊的状态能够管理账户余额,以及更多信息。以太坊的状态并不是个抽象的概念。它是以太坊底层协议的部分。根据黄皮书中的描述,以太坊是一个基于转账的状态机器;基于状态机器的转账技术能够被创建。
我们从头开始来讲述。和其他区块链一样,以太坊区块链也是从创世区块开始的。从那时候起,例如转账,合约和挖矿之类的事情,都会陆续改变以太坊区块链的状态。在以太坊中,举例来说就是账户余额(存储在状态树中),这会随着转账而改变,同时和账户相关连。
重要地是,例如账户余额之类的数据并不是直接存储在以太坊区块链的区块中。只有根节点哈希的转账,状态数据和回执数据是直接存储在区块链上的。可以根据下图看出。
也许你也注意到了,从上面的图表中,存储树的根节点哈希(所有的智能合约数据存储在其中)其实都是指向状态树的,从而指向区块链。接下来,我们会讨论更多细节。
以太坊中有两种不同的数据类型:永久数据和暂时数据。永久数据的例子就是转账。一旦转账确认,就会在区块链中记录;然后就再也不可以更改。暂时数据的例子就是特定以太坊账户地址的余额。账户的余额就会存储在状态树中,并且当有特定账户转账的时候,就会改变。永久数据是有意义的,就好像挖矿转账,暂时数据,就例如账户余额,应该被分开存储。以太坊会使用数据树结构来管理数据。
以太坊的数据记录就好像在银行。类似使用ATM机器和存储卡。银行会追踪每个借记卡来确保在在完成转账之前,有足够的余额。
UTXO和账户方案之间的对比UTXO模型的好处:
• 扩容性 – 因为可以同时处理多个UTXO,所以能够完成同步转账并且鼓励扩容创新。
• 隐私 – 尽管比特币并是不完全的匿名系统,但是UTXO可以提供更高层次的隐私性,只要用户使用为每个转账提供新的地址。如果有需要提高隐私性,更多复杂的结构,例如环形结构,也可以考虑使用。
账户/余额模式的好处:
• 简单化- 以太坊使用的模型,可以帮助开发者来进行复杂的智能合约,特别是需要状态信息或者包含多方的。
举例来说,追踪状态的智能合约,并且基于它处理不同的任务。UTXO的无状态模型会让转账包含状态信息,而且这也不必要地符合合约的设计。
• 效率- 除了简单化,账户/余额模型更加有效,因为每个转账都只需要来验证发出金额的账户是否有足够的余额来支付转账。
账户/余额模型的缺陷是双花攻击。可以增加递增的随机数来抵消这种类型的攻击。在以太坊中,每个账户都有空开可见的随机数,每次进行转账的时候,随机数就会增加。这可以帮助防止同样的转账会进行两次。(注意,这个随机数并不是工作量证明中的随机数,这是个随机数字)
和大多数计算机架构相同,这两个模型都有自己的好处和坏处。有些区块链,例如超级账本,也应用了UTXO,因为他们从比特币区块链中获得创新。接下来,我们来看看更多的基于这两个模型的技术。
以太坊中的数据树结构是什么?我们来深入看看,状态,存储和转账的树结构是怎样的。
状态前缀树- 是唯一和独特的。
在以太坊中,只有唯一的网络状态前缀树。
这个网络状态前缀树会实时更新。
网络状态前缀树包含秘钥和每个账户的价值对,这些是在以太坊网络上。
秘钥是单个160字节的认证器(以太坊账户的地址)。
网络状态前缀树的“数值”是通过对以太坊账户以下账户细节的编译得出的:
-随机数
-余额
-storageRoot
-codeHash
状态前缀树的根节点(某个时间点,整个网络状态前缀树的哈希)是用来保证状态前缀树的安全和唯一;网络状态前缀树根节点是基于整个内部网络状态前缀树数据进行加密。
存储前缀树,智能合约数据存储的地方
存储前缀树是智能合约数据存储的地方。每个以太坊账户都有自己的存储前缀树。存储前缀树根节点是256字节的哈希值,作为storageRoot的数值存储在网络状态前缀树。
转账前缀树- 每个区块都有一个
每个以太坊区块都有自己独立的转账前缀树。一个区块会包含很多转账。区块中的转账顺序当然是由矿工来决定的。对于转账前缀树中的特殊转账路径,是通过这个转账在区块中的位置因子。挖矿区块不会更新;转账在区块中的位置不会改变。这意味着一旦你在区块转账前置树中定位了转账,你可以返回到同样的路径来获得同样的结果。
免责声明:以上内容(如有图片或视频亦包括在内)均为平台用户上传并发布,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。 本站尊重他人的知识产权、名誉权等法律法规所规定的合法权益!如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到qklwk88@163.com,本站相关工作人员将会进行核查处理回复
推荐阅读
-
以太坊创始人为什么要创建以太坊?以太坊创始人有什么成就?
为什么以太坊的创建非常重要?以太坊是什么?为什么以太坊的创建非常重要?我们必须回到2014年,回到VitalikButerin单...
-
中本聪创造了比特币有什么意义?中本聪创造比特币的初衷是什么?
比特币是一种去中心化的数字货币,由中本聪于2008年创造。自推出以来,比特币在全球范围内引起了广泛关注和讨论。很多人认为,中本聪创...
-
探索区块链技术的跨学科研究:法律、社会学与区块链的交叉研究
摘要:本文将探讨区块链技术与其他学科的交叉研究,特别关注法律和社会学领域。区块链作为一项创新的分布式技术,对社会和法律体系产生了深...
-
区块链行业的杰出创始人和领袖人物——推动行业发展的关键力量
摘要:本文将介绍区块链行业中的其他杰出创始人和领袖人物,他们对区块链技术的发展和应用做出了重要贡献。这些领袖人物通过创新思维、行业...
-
以太坊基金会:推动以太坊发展的角色与使命
摘要:本文将探讨以太坊基金会在推动以太坊发展中扮演的重要角色与使命。作为以太坊生态系统的核心组织,以太坊基金会致力于支持和推进以太...
-
以太坊的发展历程及重要里程碑(介绍以太坊的发展历程和重要事件)
摘要:本文将介绍以太坊的发展历程和重要事件,探讨这个领先的智能合约平台如何在区块链领域发挥了重要作用。通过回顾以太坊的发展过程和里...
-
除了V神,谁是以太坊的创始人?
导言:以太坊(Ethereum)作为目前最知名的智能合约平台之一,由一个杰出的团队创立。尽管大家广泛知晓以太坊的创始人V神(V...
-
区块链网络:是否能够实现重启?
导言:区块链作为一项革命性的技术,已经在各个领域展现出了巨大的潜力。然而,与其他技术一样,区块链网络也可能遇到问题,导致需要进...
-
区块链技术如何提高数据安全性?探讨区块链在数据隐私和安全方面的优势和挑战
摘要:本文将讨论区块链技术在数据隐私和安全方面的优势和挑战。区块链作为一种分布式账本技术,具有去中心化、不可篡改和透明等特点,为数...
-
区块链超级账本对于金融行业的影响(探讨区块链超级账本在金融领域的应用和优势)
摘要:本文将探讨区块链超级账本在金融行业中的应用和优势。作为一种创新的分布式账本技术,区块链超级账本为金融机构带来了多项优势,如安...