spv公司是什么意思_ CSW | 简单支付验证(SPV)

原文标题《SimplifiedPayment Verification》,2019年10月9日首发于craigwright.net

在比特币白皮书中,我详细说明了如何在不运行完整网络节点的情况下验证支付。确定的规范和定义很重要: 白皮书第5节定义了比特币中的节点;更重要的是,作为一个节点,你需要挖掘交易。SPV 或简单支付验证是比特币扩容的一个关键方面。在我发布白皮书时,我认为这是相当清楚和明确的,但人们似乎忽视或误解了所有方面。事情的真相是,没有人意识到 SPV有多么简单。但是它至关重要,因为没有SPV,区块链就不可能扩容,更重要的是,SPV关系比特币的点对点。目前,脱离比特币的衍生系统,比如 BTC,根本不是点对点的。

根据定义,“点对点”是指个人之间或其他主体之间的直接交换。因此,消费者爱丽丝,希望从商人鲍勃那里购买商品,她会直接向鲍勃发送一笔交易。鲍勃验证它,并把它发送到区块链以作清算和结算。这个过程是点对点的。网络中的矿工或节点充当分布式的中介。不需要直接信任任何一个中间人,这与当前的任何系统都有很大的不同。温斯顿·丘吉尔支持重新引入金本位制,尽管价格水平有些低,但它可以阻止议会中的无赖为了政治目的而改变价值。一个分布式系统可以获得一种方法阻止这些无赖寻求改变货币供应量,同时又不会把它们变成可信任的第三方。

系统中的用户只需要维护一个区块头的副本,以便与交易进行对比。目前,区块头的大小在50MB以下。许多图像文件都超过这样的水平。从现在起的十年内,增长只会是线性的。所以,我们有一个按摩尔定律指数增长的系统,而资源是线性数量的。现在有少数系统不能在内存中保存区块头。

网络节点或矿工为用户提供最长的工作量证明链。用户可以实现一个贝叶斯系统,以确保他们有最长链。不是检查一个矿工,而是查询多个随机节点。通过这样做,就有可能确保非常简单,无需太多带宽,同时有最长路径。

只要诚实节点控制网络,系统中的验证就是可靠的。需要重点指出的是,网络矿工是在法律范围内行动的。网络节点涉及投资。今天,即使是小型矿工也在他们的系统上投资了数亿美元。更重要的是,矿工有地理位置,不易移动,这使他们受到法律的约束,不诚实的矿工将承担损失。比特币从来没有被设计成一个在现实世界之外行动的系统。事实上,诚实这个词在白皮书中被提及15次的原因是,它直接与法律有关,比如英国2006年反欺诈法。

其结果是,一旦比特币达到任何规模化水平,它就处于法律的监管之下。从博弈论讲,矿工的博弈包括由于面临损失,攻击者将最小化。我在白皮书的早期草稿中写道,交易只有在被回滚时才变得脆弱。之所以如此,是因为比特币并非被设计成一个脱离法律控制的系统。这是一个支持诚实交易的系统,允许抓获和扣押可能与犯罪活动有关的交易。

一个取得网络优势的攻击者只有在能够持续取得网络优势的情况下才能在网络节点下工作。这一点很快就会被注意到。现有的矿工可以在几秒钟内确定“双重花费”。在最坏的情况下,一个建立了六个区块深度链的攻击者矿工将在一个小时左右被确定,此时他所有的将被完全拒绝。那些试图创建犯罪系统的人神化比特币可以在法律之外运作,这是一个虚假的、恶意的谎言,很容易被识破。随着政府、监管机构和执法部门开始觉醒,并看到比特币的真正设计,他们将开始理解这个系统是法律友好的。它有助于追踪交易,在为小额现金转账提供高度隐私的同时,又能不可篡改地记录洗钱和犯罪行为。

一个客户SPV钱包

SPV用户应该维护他们收到的交易副本。交易的规模很小,不会占用太多空间。当用户收到付款时,他们应该维护发送给他们的交易副本,这样就可以根据一个特定区块的 Merkle 树进行验证,并简单地支付到下一个点。

如果我们假设 Alice 已经通过下图中与 Tx3相关联的足够深度区块中的输入交易获得了支付,那么她现在可以在区块路径中保存这些信息,以便在花钱时简化验证。

扩展该场景,我们可以看到 Alice 能够保存每个输入交易,这成为她希望可以在自己的计算机上花费的金钱。它们都被当作数字硬币处理。通过签名或满足输出脚本的其他条件,Alice 现在可以将硬币转移到新的输出以支付给 Bob。

Alice给Bob发送的副本包括Tx1和Tx2,而输入Tx3是在下面的交易中作为花费支付给Bob的。鉴于也发送了 Merkle 路径,Bob 可以非常快速地验证每个交易的哈希,并确保它跟随了区块头和验证。如果输入交易存在于区块链中,Bob 可以信任它们。当然,他可以自己选择再次验证输入交易。他刚刚从 Alice 那里收到了包括 Tx1和 Tx2的副本。

为了验证一个交易,并确保它存在于 Merkle 路径和经过了区块头验证,Bob 只需获取每个交易的哈希,这是 Alice 提供给他的支付交易的输入。为此,Bob 计算了这两个交易的哈希值:

Hash;及

Hash。

使用这两个值,以及 Alice 刚刚提供的 Merkle 路径,Bob可以简单快速地计算出完整的区块头值,并确保区块头中的路径是正确的。如果哈希和他保存的区块头的Merkle 树相匹配,那么 Bob 肯定知道 Alice 已经给了他一个有效的交易。他知道区块链中交易的存在已经被比特币矿工验证,现在已经有工作量证明可以确定区块链中交易的存在。

spv公司是什么意思

SPV系统如下图所示:

spv公司是什么意思

客户SPV钱包

请注意,Alice 不只是在系统中维护她的私钥。她还要保存 Merkle 路径和试图花费的输入交易。Alice不需要维护对区块链的访问以便花费她的钱。因为Alice知道她是唯一能够花掉她的钱的人,她甚至可以采取行动,在没有以任何方式连接到区块链的时候使交易有效。Alice不需要担心任何更改交易或输出的有效性,因为 Bob不能更改它们。如果 Bob 试图更改交易,导致更改不被合并,那么整个交易将无效。结果是,Bob 要么把他从 Alice 那里收到的付款提交给区块链进行结算,并将更改支付给 Alice,要么他收不到付款,在这种情况下 Alice 根本不需要担心她的更改。

请注意客户SPV 钱包的以下特点:

1. TXs ——预加载的完整交易数据,其中包含 Alice 的可用未花费交易输出。完整的交易数据和 Merkle 路径一起构成了 Merkle 证明 ,Alice 的的花费交易是有效的。对完整交易进行哈希将生成 TXID,它是新交易输入数据的一部分。

如果Alice不存储这些信息,Bob将需要检查区块链,这将延迟进程。当然,Bob 可以对非SPV交易收取一定的费用,因为他必须到矿工那里下载完整的交易,而矿工也可以对选定查询需要快速回复的商家收取一定的费用。

2. 私钥/公钥——钱包必须有权访问一组私钥来签署 TX 输出和公钥,以便在进行交易时指定变更地址。

3.Merkle 路径——包含 TXs 的每个交易的 Merkle 路径。Merkle 路径将被商家的销售点钱包用于验证 TXs 是否有效。请注意,钱包提供的 Merkle 证明并不能防止“双重花费”,而是作为一种快速失败机制来对抗垃圾邮件攻击。

4.最低限度的处理—— SPV 钱包需要签署未花费的交易,以便花费它们。为了这样,需要离线钱包能够实现 ECDSA 签名,或者换句话说,拥有足够的处理能力来执行椭圆曲线点乘和计算哈希函数。

5. 区块头—客户钱包可能希望包括区块头,以便验证销售点SPV钱包的收付已经处理。这样做还需要在与销售点钱包交互之后存储 txid 和 Merkle 路径。

保护隐私,确保扩容能力

作为商人,Bob把交易发送给区块链,而不是Alice发送;比起她自己发送,她有更多的隐私。Bob和Alice已经在交换了,所以Bob知道Alice的一些信息。当 Bob 发送交易时,由于他可能是一个有很多交易的商人,他的 IP 地址是公开的,而不是 Alice 的。Alice 不需要使用 Tor 来吸引注意力;她可以交易,她知道只有 Bob 能够看到她的交易。因此,Alice透露的信息要少得多,可以大到在整个世界中保护自己的隐私。

链上分析和记录 IP 地址将不会暴露Alice的交易。Bob保留着一项记录,但不是公开的。

在接下来的文章中,我将开始详细介绍如何实现这样的解决方案,以及它如何帮助比特币扩容。事实上,没有 SPV 的实现,比特币既不可能是点对点的,也不可能是有规模的。

Bob可以迅速检查Alice支付给他的任何硬币的有效性。他可以检查作为一个未花费的交易是否存在于 UTXO集里,并且可以快速验证在区块链中的输入位置,因为 Alice 已经给了他路径。硬币的位置越深,则改变路径所需的工作量证明就越大 Bob 接受它就越安全。如果Alice收到硬币并花费它仅仅发生在验证后一小时之内,仍然是非常安全的。Bob不需要下载整个区块链。即使他运行自己的节点,也不会得到任何东西。只有矿工改变区块链。由于Bob已经收到了Alice的输入硬币,他可以检查它是有效的,并且可以检查她已经正确地形成了输出硬币给Bob,这就是他需要验证付款本身的全部。接下来,如果 Alice 将硬币相关的 Merkle 路径交给了 Bob,她现在就可以确信, Bob可以通过输入交易的哈希来快速验证,并通过验证她给出的 Merkle 路径来检查它在哈希头的位置。

这一直是我设想的比特币的交易方法,允许在没有第三方的情况下进行点对点交易。如果没有它,实现所有系统作为一个完整的网络节点运行的要求,以及系统的简单性就会丧失,系统也不能再扩容。通过运行 SPV,用户可以快速和简单地验证他们自己的交易,而且他们可以通过存储最少量的信息来做到这一点。

在接下来的文章中,我将继续详细介绍SPV涉及的过程,并解释如何将比特币扩容到每秒数以百万计的交易,而不是少数几个交易。

大家都在看

相关专题