UCK区块链微课堂——解读SPV钱包和分层定性钱包,窥探钱包技术痛点_什么是SPV钱包轻钱包

时间:2021年05月10日 00:25:00
前言:

上篇文章我为大家讲解了什么是数字货币的钱包系统,并用比特币的钱包为例,向大家分析了核心钱包的优劣势。

核心钱包的优势在于其强大的安全性,劣势我在上篇文章的末尾处也为大家解释的很清楚,没看的可以回去补补课,为了弥补核心钱包的劣势,轻钱包就被研发出来,包括SPV钱包与分层定性钱包,详细解读如下:

SPV钱包——来自梅克尔树的验证

有些时候,我们进行支付只是想通过一个验证,知道支付已成功即可,至于完整的交易验证(需要在完整的账本数据上校验)可以交给核心节点来负责,如此一来,钱包的部分功能就能剥离出来,这便是SPV钱包。

SPV钱包的大致过程如下:

(1)下载完整的区块首部数据,而不是所有的区块链数据,这样可以极大的减少需要获取的账本数据量,区块首部包含区块的梅克尔根,SPV方式需要靠它来实现。

(2)当验证某笔支付交易时,计算出这笔交易事务的哈希值txHash。

(3)找到txHash所在的区块,验证其所在区块的区块首部是否包含在账本数据中。

(4)获得所在区块中计算梅克尔根所需要的哈希值。

(5)计算出梅克尔根。

(6)计算结果与所在区块的梅克尔根相等,则支付交易存在。

(7)根据该区块所处的高度位置,还可以确定该交易得到了多少个确认。

不难看出,SPV原理的钱包是使用梅克尔树来验证支付是否真实发生,只不过支付验证所做的事情很少,只能看到当前的支付交易是否被发起而已,无法保证这笔交易事务最终会进入主链,想要进入主链,必须等待核心节点进行全面的交易验证,还需要矿工将数据打包到区块,整个过程可能会发生失败,SPV钱包用提高便捷性的代价牺牲了安全性。

分层定性钱包——与比特币一样的随机性

分层确定性钱包(Hierarchical Deterministic Wallets,有时也简称为HD Wallets)具有以下特点:

(1)用一个随机数来生成根私钥,与比特币钱包生成私钥性质一样;

(2)用一个确定的、不可逆的算法,基于根私钥生成任意数量的子私钥。

我们仍需要用比特币来举例,比特币中使用的SHA256就是一个确定不可逆的算法,可以用SHA256设计出一个HD模型:SHA256(seed+n),算作类型1确定性钱包。

严格来讲,分层确定性钱包是确定性钱包的一种,分层确定性钱包分为Type1、Type2、BIP32规范等类型,这些都是为了实现同一目标,基本原理都是一致的。

至于分层,利用主私钥生成逐层的私钥,公钥也是如此。而生成的密钥,可以作为根来继续生成子密钥,这就是分层。

值得一提的是,由公钥生成子公钥,无需私钥参与。具体如下:

(1)只需要备份主私钥即可,新增地址无须再次备份私钥;

(2)可保证主私钥冷储,增加复数地址,只需主公钥即可;

(3)审计便捷,只需提供主公钥或某分支的子公钥,即可查看下级数据且保证其不能被交易;

(4)可配合权限,设定不同层级的权限,查看余额还是能交易等。

凡事都有两面性,便捷性的提升,换来的是安全性的下降,此类钱包由于私钥间具备固定关系,随机性下降,当私钥暴露时,只需使用主公钥进行关联分析,就可能导致整个树状密钥结构的泄露。

后记

对比核心钱包与轻钱包,我们不难发现二者之间的优势与劣势。

核心钱包拥有较高的稳定性与安全性,但操作起来及其不便利,费时又费事,而轻钱包利用精简交易流程来获取极大的便利性的同时,牺牲部分的安全性。

在不同的交易中选择不同的钱包来交易,又或者多种钱包混合使用,也许可以让效益最大化,但我们仍不难发现,如此以来用户操作时将非常繁琐。

未来的钱包技术的发展趋势一定结合多种优势于一身,还附带其他额外的附加功能,而我们UCK在钱包技术的研发上也颇有建树,且走在行业的最前沿。

UCK将掀起一场钱包技术的革新,就让我们拭目以待吧。