区块链:深入了解以太坊:数据到底是如何存储在以太坊网络的?_bcd比特币钻石最新消息

本文来自:巴比特,作者:vasa,编译:nuszjj,星球日报经授权转发。此文我们会深入讨论以太坊数据存储层。我们会介绍区块链“状态”的概念。同时也会讨论Patricia前缀树结构背后的理论,使用谷歌的leveldb数据库演示以太坊前缀树的具体实现。在存储层中,我们存储的是什么?

首先我们需要理解为了让区块链系统运行,我们需要存储的东西。让我们简单地看下关于Alice给Bob转账10美金的例子。我们可以看出,通过执行转账可以改变其中的状态。我们必须要追踪余额以及不同人的其他细节,还有在区块链之间发生的细节。不同的平台会有不同地处理方法。我们可以看出,比特币和以太坊是如何处理的。比特币比特币的状态是通过UTXO来实现的。比特币价值转移是通过转账实现的。更特别地是,比特币用户可以通过创建转账花费1个或多个UTXO,并且将他们的UTXO作为转账输入。UTXO模型让比特币和以太坊不同。我们可以看这些例子来理解其中的区别。首先,比特币UTXO不能部分花费。如果比特币用户花费0

);有趣地是,一旦转账发生了,以太坊中的账户只是添加到状态树中。例如,使用“gethaccountnew”创建新的账户不会包含在状态树中包含那个账户;甚至在很多区块被挖出后。但是,如果成功的转账是记录在账户中,然后只有它会出现在状态树中。这是很聪明的逻辑,因为会保护欺诈者无法连续创建新的账户以及使得状态树堵塞。对数据解码你已经注意到,查询leveldb可以回复解码的结果。这是由于,以太坊使用了自己特定的“修改版的MPT”,用来和leveldb进行交互。以太坊Wiki提供了设计和部署以太坊MPT和RLP解码的信息。简单地说,以太坊已经在前缀树数据结构扩展。例如,修改版的MPT包含一种通过“extension”节点,来创建快捷方式的方法。在以太坊中,单个的修改版的MPT节点是:?空的字节?包含17个对象的数组?包含2个对象的数组?包含2个对象的数组(对应扩展)以太坊前缀树是通过固定的规则来设计和创建的,最好的检测方法是使用电脑代码。接下来的例子使用了ethereumjs。Ethereumjs很容易安装和使用;它是完美地可以快速对接到以太坊leveldb数据库。下面的代码会以可读的形式返回账户的正确余额。//MozillaPublicLicense2

)结论

我们已经表现出以太坊有能力来管理状态。这种超前的设计有很多好处。可移动性假设移动设备和物联网设备是很普遍的,未来电商就取决于安全,稳定和快速的移动应用。我们认知到了可移动性的优势,我们也知道区块链大小的逐渐增加是难以置信的。将整个区块链存储在移动设备是不可能的。快速,并且不会损失安全性以太坊状态的设计以及对于修改版的MPT的使用,提供了很多机会。以太坊前缀树上的每个功能都使用了加密哈希。而且,前缀树根据节点的特殊加密哈希可以用来证明前缀树没有被欺诈。例如,任何对于前缀树的修改,都会完全改变根部哈希。这个加密功能会为轻客户端提供一个机会,从而可以快速地访问区块链。也就是说,账户“0x…4857”是否有足够的资金来完成对于区块高度“5044866”的转账?速度限制以太坊描述了个很有趣的问题,就是存储账户的概念。想象这种场景,两个用户都可以每天从账户中拿出全部余额的1%。这个观点只在未来规划中提到,但是它却获得了很多兴趣,因为理论上来说,它可以作为以太坊基础协议层的一部分。也许你想起了我们之前讨论的比特币UTXO。UTXO对于区块链数据是盲目的,比特币区块链没有存储用户的账户余额。因此,比特币的底层协议层基本上不可能完成任何类型的每日速度限制。消费者的信心我们看到了关于轻客户端的很多开发,更为特别地是,安全、稳定、快速的移动应用,可以和区块链技术交互。电子商务的区块链成功部署,一定会支持速度,安全和可用性。这能够提高消费者的信心,同时也通过聪明的设计,提供更高的可用性,安全性和性能,进而提高了主流的接受能力。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

FTX区块链:为什么区块链没那么简单?_STA

本文来自:蓝狐笔记,作者:JimmySong,编译:Joey,星球日报经授权转发。围绕区块链的炒作是巨大的。会听到一系列的夸大宣传,区块链将会:1.解决收入不平等。2.保证所有数据永远安全.

[0:15ms0-5:650ms