轻节点如何验证交易的存在

一、 轻节点和全节点

每一个区块包括区块头和区块体,区块体内包含着这个区块中囊括的交易,而区块头只需要维护所有交易经过merkle tree计算而得的root hash值就可以了。

轻节点就像我们的手机,只需要维护区块链中区块头的信息。

而全节点需要维护所有区块中的信息,大多数全节点是矿机。

二、 如何进行交易验证

当轻节点想要确定这个交易是否在区块中时,它首先收到交易对手发给它的数据区块以及路径节点。

轻节点首先需要验证,数据区块中是否存在发生的交易;

其次,轻节点将顺着数据区块,经过路径节点步步计算得到区块头的hash值。注意这里的hash值很难伪造,这保证了这个方法的可行性。

轻节点收到计算得到的区块头中的root hash值与自己维护的区块头信息进行匹配,则完成了验证。

三、 如何验证交易不存在

通过上面的方法,虽然可以验证交易存在是否合法,但是如果我们想主动验证某个交易是否存在,该怎么办呢?

一个方法就是穷举数据块,可以想象这个过程将消耗很大的计算量。

proof of non-membership提出,在数据区块构成merkle tree的时候,数据区块将根据每一个区块的hash值进行排列,这样当我们想验证某个交易是否存在时,我们对这个交易的数据求hash,然后按照大小进行寻找。当得到这个hash值相邻的两个区块时,我们对其进行merkle proof向上求解,当得到root hash时,证明这个交易确实不存在。

posted @ 2020-03-01 09:39  金思远  阅读(1107)  评论(0编辑  收藏  举报