LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 新手一起学习区块链(二十四)——全节点钱包、轻钱包

新手一起学习区块链(二十四)——全节点钱包、轻钱包

2020-05-02 风轻云淡A 来源:区块链网络

根据区块链数据的维护方式和钱包的去中心化程度,我们可以把钱包分为:全节点钱包、轻钱包、中心化钱包。需要同步所有区块链数据,占用很大的内存,但是可以完全实现去中心化。轻钱包依赖比特币网络上其他全节点,仅同步与自己相关的数据,基本可以实现去中心化。

什么是区块链的全节点与轻节点?

在以太坊中什么用来存储区块数据的核心数据结构?

利用了一种叫做Merkle-Patricia Trie(MPT)是Ethereum用来存储区块数据的核心数据结构。

最简单理解是一个倒置的树形结构,每个节点可能有若干个子节点,在最底层,也就是叶子节点,把数据分成若干个小的数据块,计算出相应的Hash与之对应。

但是往上层看去,Merkle树并不是直接去运算根哈希,而是把相邻的两个节点的哈希合并成一个字符串,然后运算这个字符串的哈希,这样每两个哈希就能够得到了一个”子哈希“,而这个自哈希就是他们的父节点的哈希值。

于是以此类推

依然是一样的方式计算哈希值,可以得到数目更高级节点的新一级哈希,最终必然形成一棵倒挂的树,到了树根的这个位置,这一代就剩下一个根哈希了,我们把它叫做 Merkle Root。而在以太坊中,还对Merkle树做了相应的优化,在Merkle树的基础上进行前缀树的构建,因此也就通过前缀树能够快速查询相关的数据信息,但是这个专员今天不细讲,有兴趣的同学可以私下去研究一下。

因此通过Merkle树,其实我们可以做到几个事情:

1. 快速重哈希:其实就是说,能够在树节点变化的情况下,根据上次的计算机结果通过计算部分值就可以计算出一个新的Merkle Root。

2. 轻节点扩展:采用Merkle树,我们可以再公链的环境下,扩展一个轻节点。轻节点的特点其实就是,只需要存储Block Header,而不存储全量的交易列表等信息。通过Merkle证明来判断一笔交易是否在现在的区块链交易列表中。这样,其实造就了以太坊的轻节点能够运行在小容量的个人PC等终端设备上。

下面说回以太坊

在StateRoot,TxHashRoot和ReceiptHashRoot,分别取自三个MPT的计算结果:stateTrie, txTrie, 和receiptTrie的根节点哈希值。这样的话,比如说我们在进行Block的同步过程中,通过比对收到的TxHash,可以确认transactions列表是否同步完整,通过StateRoot来判断节点间状态是不是一致的。

因此在以太坊中,所谓全节点,其实就是同步所有区块链数据的节点,包括各种区块Body,交易列表等等相关信息。但也是因为节点全量数据都保存的情况,我们不需要相依赖中介去进行数据的验证。

而所谓的以太坊轻节点(轻客户端)

每当有区块出现在网络便下载区块头,而不是全量的情况状态,并发送客户端需要的特定状态的默克尔证明(Merkle proofs)的请求。同时在以太坊轻节点中使用分布式哈希表来追踪前缀节点,而不是直接采用LevelDB进行直接的存储。

今天的学习就到这里,谢谢你的阅读与支持!

—-

编译者/作者:风轻云淡A

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...