Cashbox研发工程师讲解SPV钱包开发重难点(一)

2020-11-18 10:17 栏目:经验之谈 来源:网络整理 查看()

你好,我是垫底组的艾尔文。在微信官方账号的上一次介绍中,Cashbox会添加一个完全分散的SPV钱包。我在项目中的主要任务是比特币分散钱包的开发。接下来我将从技术背景和实现两个方面介绍比特币的SPV钱包。

什么是SPV

首先,介绍了特殊目的公司的概念。也许不熟悉区块链的开发者不熟悉什么是SPV。SPV全称是简单的支付认证。要充分理解SPV的概念,首先需要了解BTC的P2P结构。

比特币的网络结构是P2P网络,也就是对等网络。每一项比特币服务都被称为比特币节点。一个完整的比特币节点包括四个功能:路由、区块链数据库、挖掘和钱包服务。完全具备这四种功能的节点也称为全节点。比特币主要靠这整个节点来维持运行。每个节点都参与整个网络的路由功能,也可能包括其他功能。每个节点都参与验证和传播事务和块信息,并发现和维护与对等节点的连接。

有些节点保存了区块链的完整和最新副本,这些节点称为“完整节点”。所有节点都可以独立验证所有事务,无需任何外部参考。与整个节点相对的是SPV节点。SPV节点最大的特点是不需要存储完整的区块链数据库,只需要存储区块链数据头。根据比特币块头的设计,SPV存储的数据大小仅为完整区块链的千分之一。到目前为止,一个比特币主网的块数据大小已经超过300G,而使用SPV技术的节点只需要使用几百m的数据。

因此,在存储空间有限的设备上,SPV将是一个更好的选择。随着区块链的普及,大量用户会使用手机来运行区块链钱包,显然不是用户在手机上运行300g以上所有节点的最佳选择。SPV技术的使用使得手机上使用完全分散的比特币钱包成为可能。我们把这个运行SPV节点的应用叫做轻钱包。

分散

在介绍完SPV的概念之后,我们来谈谈完全分权。权力下放一直是区块链的核心理念。在实现Cashbox分散钱包的过程中,我们还研究了其他开源技术钱包,发现了一个最重要的特点:不够分散。目前,区块链的用户账户数据模型主要分为两类,一类是以以太网为代表的账户模型,另一类是以比特币为代表的UTXO模型。账户模型大致相当于一个银行账户,UTXO模型也叫未使用交易输出(Unpendent Transaction Output),是一个未使用的输出,可以简单理解为未使用的集合。由于UTXO模型的复杂性,在我们得到一个用户地址后,很难验证用户的UTXO。所以大多数钱包都有自己的后端。这个后端的主要功能是解决UTXO验证困难的问题。后端对应一个完整的区块链数据,这样后端可以方便地索引事务和查询UTXO。另一方面,这个完整的后端对应一个比特币全节点,广播交易的功能也交给后端。从这个意义上说,传统钱包不够分散,不符合SPV的概念。就是把一个分散的比特币做成一个集中的服务。这个模型中有太多的功能需要依赖自建后端。

Cashbox研发工程师讲解SPV钱包开发重难点(一)

我们使用SPV分散钱包,钱包存储大约200兆字节的块数据头。在分散钱包中,我们启动了比特币的P2P网络,利用比特币网络协议直接访问比特币网络获取所需信息。不需要完整的后端支持。大多数传统钱包需要将交易相关信息传输到后端,然后才能筛选UTXO和广播交易。但是由于SPV节点的存在,我们的钱包可以直接从钱包中继承,不需要和我们进行数据交互就可以在用户手机中实现。这个概念非常符合分权的思想。而且在使用钱包的过程中,因为不需要与我们的后端有任何链接,用户根本不用担心泄露自己的隐私。用户最重要的私钥也存在于他的手机里,即使需要广播交易,他也只是直接访问比特币P2P网络。这确实符合区块链完全分权的想法。

这一期侧重概念,下一期再看。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发