信阳建设监理协会网站,机关网站源码,wordpress 演示,织梦网站 数据库1. 引言
SNARKs 经常被视为“解决”扩容问题的灵丹妙药。虽然 SNARKs 可以提供令人难以置信的好处#xff0c;但也需要承认其局限性——SNARKs 无法解决区块链目前面临的现有带宽限制。
本文旨在通过对 SNARKs 对比特币能做什么和不能做什么进行#xff08;相对#xff09…1. 引言
SNARKs 经常被视为“解决”扩容问题的灵丹妙药。虽然 SNARKs 可以提供令人难以置信的好处但也需要承认其局限性——SNARKs 无法解决区块链目前面临的现有带宽限制。
本文旨在通过对 SNARKs 对比特币能做什么和不能做什么进行相对简单的概述来揭开 SNARKs 的神秘面纱。将研究其与比特币相关的功能如何简明扼要地概括为非交互式见证聚合 (Non-Interactive Witness AggregationNIWA)。如果了解比特币的工作原理将能够理解本文。
值得注意的是SNARKs 仍然是一个非常活跃的研究领域。许多 SNARKs 变体要么效率不够高无法证明复杂的语句要么证明大小过大要么需要可信的设置。话虽如此多年来已经取得了很大进展预计未来十年将继续看到改进。本文是为了期待这样的改进而写的即使它今天可能并不实用。【本文写于2020年目前SNARKs技术已走向实用。】
2. 何为SNARKs
SNARKs 是一种结构它允许在给定规则集和起点的情况下高效地验证结果。导致结果的输入不会被透露“零知识”。
以简单的国际象棋示例来解释。
国际象棋示例
规则国际象棋规则集开始棋盘的起始位置 A结果棋盘的新位置 B
证明游戏从位置 A 有效过渡到位置 B 的常规方法是简单地揭示所有动作并检查它们是否有效。SNARKs 可以做同样的事情但更好
无需透露移动集合私密数据更少验证在计算上更高效
尽管创建 SNARKs 的计算成本往往很高。然而在许多人希望验证相同结果的系统中如区块链这仍然是值得的。只有一个人需要付出努力来创建该 SNARK从而提高每个人的验证效率。
区块链示例
规则全节点软件开始A 时刻的区块头和 UTXO 集合哈希值结果B 时刻的区块头和 UTXO 集合
与国际象棋示例类似验证转换的常规方法是从时间 A 的 UTXO 集所有未使用的交易开始接收所有区块并一直更新 UTXO 集直到到达时间 B。使用 SNARKs不需要这些数据来证明有效性。事实上如果将时间 A 设置为创世区块空的 UTXO 集将时间 B 设置为现在则可以在不接收任何历史数据的情况下验证整个链。
需要注意的是对于时间 B需要整个 UTXO 集而不仅仅是 UTXO 集哈希。虽然这些数据对于证明有效性并非严格必需但也关心可用性。如果只有 UTXO 集哈希那么虽然你知道存在有效状态但实际上并不知道该状态是什么。这意味着你无法花费任何coins因为无法证明特定 UTXO 是集合的一部分的数据。在国际象棋类比中会有新棋盘位置的哈希但实际上不知道该位置是什么因此无法继续玩游戏。
请注意无论是谁制作了 SNARKs大概是矿工都会拥有这些数据因为首先需要这些数据来创建 SNARK但他们可能会选择向你隐瞒这些数据。
3. SNARK UTXO链
为了保证每个人都能使用自己的coins更新 UTXO 集所需的所有数据都必须与每个区块进行通信。需要知道哪些 UTXO 已被使用输入哪些是新添加的输出。这就是所谓的non-witness data非见证数据。
转换的有效性可以通过单个 SNARK 来验证从而取代所有witness data见证数据脚本、签名并且几乎不占用带宽。输入和输出之间的关系并不明显——一个区块看起来就像一个大的 Coinjoin 交易。大部分数据将是非见证数据。
与普遍看法相反SNARKs 无法解决轻节点或non-federated非联合侧链背后的根本问题因为必须始终下载非见证数据。如果非见证数据缺失全节点具有拒绝有效 SNARK 的关键能力而如果轻节点忽略了下载非见证数据它可能会错误地认为缺少数据的链有效。如果矿工隐瞒哪怕一条非见证数据除了那些特定的矿工之外没有人能够创建具有有效 SNARKs 的新区块从而将其变成一个许可系统。
4. SNARKs 消耗witnesses见证
UTXO链的 SNARK 或许可以概括为实现以下功能 非交互式见证聚合 (Non-Interactive Witness AggregationNIWA) 在此广泛使用“见证”一词。
在比特币中见证是交易内部的数据用于证明是否允许创建特定的 UTXO。但随着时间的推移当 UTXO非见证数据被使用时它就会成为自己的见证。当 1 BTC 从 Alice 发送给 Bob 再发送给 Carol 时Bob 的交易就是 Alice 向 Carol 转账的见证。 同样自创世以来的所有已使用交易都是当前 UTXO 集的见证。
还要注意SNARKs 本身就是见证。如果每笔交易都由 SNARKs 验证也可以 NIWA 这些 SNARKs 成每个区块的单个 SNARK。而且由于输出在被使用时就成为见证甚至可以将未确认但已使用的输出放入内存池中并聚合它们。Alice 到 Bob 再到 Carol 变成 Alice 到 Carol实现非交互式Transaction cut-through交易直通。当单个 UTXO 带有许多分支链下交易如闪电通道工厂的情况被强制上链时这可能特别强大。
5. 小结
本文总结了 SNARKs 对于具有NIWA UTXO链的核心功能。任何见证数据都可以通过 SNARKs 非交互式聚合。剩余的非见证数据直接反映了系统的状态——UTXO 集。虽然 SNARKs 可以实现一些很棒的功能如允许仅通过下载 UTXO 集和单个 SNARK 即可从创世开始追赶或者将未确认交易序列非交互式聚合为单个交易但仍然需要发布每个新区块的所有非见证数据以允许所有节点更新其 UTXO 集。因此SNARKs 无法解决UTXO链的基本带宽限制。 NIWA 在行动。SNARKs消耗见证同时也是自己的见证。SNARK 消耗 SNARK。
参考资料
[1] Ruben Somsen 2020年10月博客 SNARKs and the future of blockchains