http://www.7klian.com

欺诈证明和SPV(轻量级)客户-说起来容易做起来难吗?

4. 证明无效区块的头包括与不存在的输入相对应的叶节点;

SPV客户端的安详和隐私问题
TransitionRoot(stateRoot,tx,Witnesses) = stateRoot or Error
纠删码
Value = 1 if unspent or 0 if spent
比特币可以抵制拒绝处事(DoS)进攻。然而SPV客户的环境并非如此。这大概是一个问题,假如恶意警报节点垃圾邮件与虚假欺诈证据。一个发起的办理方案是付出通道,原因是:
全节点与SPV客户端
2017年8月,发明比特币Merkle树设计的弱点,低落了SPV客户的安详性。这一弱点可以让进攻者操作SPV钱包模仿向受害者付出任意金额,并诱使受害者接管其为有效金额。比特币Merkle树不区分内部节点和叶节点,因此可以被进攻操纵,该进攻可以将生意业务从头表明为节点,而将节点从头表明为生意业务。这个弱点是由于内部节点没有牢靠模式,只需要64字节的长度就可以。
在这种环境下,可以使SPV客户端知道块中的任何无效,而且不能对UTXO集说谎。
1. 无效区块的头;
2. 缺少证明树节点的事务;
3. 关于丢失的证明树节点的事务中的哪个输入丢失的指示;
3. 所有未利用的生意业务输出(UTXO)。
在原始比特币白皮书中,中本聪意识到了配景技能中描写的范围性,并引入了简化付出验证(SPV)的观念。在原始比特币白皮书中,中本聪意识到了配景技能中描写的范围性,并引入了简化付出验证(SPV)的观念。它仅下载具有最长事情量证明链的块头,这是通过得到将事务链接到块的Merkle分支来实现的。链中存有Merkle根以及包括Merkle根的区块之后添加的区块,证实了该链的正当性。

2. 曾经发送过的每笔生意业务;
假如旧区块中不存在输入,则生意业务无效

欺诈证明:通过不厚道的大都手段最洪流平地提高轻客户端安详性和扩展区块链
3. 无效生意业务在无效区块内的证明;
2. 生意业务的输入和输出是否在UTXO会合。
2. 前状态根;
4. 见证人(事务会见/修改状态的所有部门的Merkle证明);
以下是按照现有比特币协议中的特定欺诈案件证明欺诈所需的证据范例:

通用欺诈证明(发起的改造)
弱Bloom过滤器与Merkle树设计
2. 无效生意业务;
另外当SPV客户端同步时,由于处理惩罚负载(80 GB磁盘读取),SPV客户端面对着针对完整节点的拒绝处事进攻的风险,而且完整节点自己可以通过向请求返回NULL筛选器响应来导致SPV客户端拒绝处事。Peter Todd 恰内地证明白SPV拒绝处事的风险。

在此系统中,当检测到无效块时,完整节点将需要向SPV客户端提供警报(称为欺诈证明)。然后SPV客户机将被提示下载完整的块,并提醒事务确认纷歧致性。无效的区块不必然具有恶意的意图,而大概是由于其他记帐错误(无论是偶尔照旧恶意的)。
2. 无效生意业务;
除了Bloom过滤器之外,SPV客户机还依赖Merkle树-二元布局,个中包括块(apex)和事务(leaf)之间所有散列的列表。利用Merkle树,只需要查抄块的一小部门(称为Merkle根)即可证明生意业务已被网络接管。

在此提议中,有效的欺诈证明结构将包罗:

SPV客户端将相信矿工或节点汇报他们的一切,正如Peter Todd在下面显示数百万比特币的Android客户端截图中所证明的。向钱包发送了210万个BTC输出的生意业务。Peter Todd修改了其节点的代码,以欺骗比特币钱包,因为钱包无法验证代币数量(代码可以在其GitHub存储库的“Quick-n-dirty hack to lie to SPV wallets”分支中找到)

 先容
在案例(1)中,区块是有效的,轻型客户端可以接管它。在案例(2)中,估量其他节点将快速结构和转发欺诈证明。在第(3)种环境下,还期望其他节点快速结构并中继一种非凡的欺诈证明,表白纠删码的结构不正确。
3. 证明无效区块的头部包括无效事务;
SPV客户端包括:
3. 对姑且采矿失败具有较强的抵挡力(因为它们利用了较长的“保存期”);
缺少证明树项
改造之处
在这种环境下,欺诈证明包罗:
停止2018年6月,的巨细约为173GB。这使得每小我私家险些不行能运行完整的比特币节点。用户必需利用轻量级/简化付出验证(SPV)客户端,因为由于运行一个完整的比特币节点所需的计较本领,带宽和本钱,并不是每小我私家都可以运行完整的节点。

就Tari而言,好像需要研究通用的防欺诈提案或雷同提案,因为毫无疑问,协议/网络的最终用户将主要利用轻型客户端。然而,由于这些欺诈证明是基于至少一个厚道节点的假设事情的,对付数字刊行人(大概是一个或多个),因此欺诈证明在这种假设下是不行行的,因为数字刊行人大概是独一的节点。

欺诈证明要求比拟特币协议举办变动
什么是欺诈证明?
也暗示为此函数:
由于违反无状态条件而导致的无效生意业务(正确的语法,满意的输入剧本条件等)
Merklix Trees
transaction(state,tx) = State or Error

通过这种方法,付出通道的利用可以辅佐鼓励整个节点宣布欺诈证据。
1. 无效区块的头;
由于已耗费输入而导致无效的生意业务
Key = UTXO ID
结论,意见和发起
SPV实施示例
其他发起的防欺诈改造
为了办理这些问题,引入了一个新的观念,称为提交Bloom过滤器,以提高SPV客户端的机能和安详性。在这个观念中,可以用BIP37取代,它利用包括小块整体块巨细的过滤器建设每个块的输入,输出和生意业务的Bloom过滤器摘要(BFD)。

配景
对付比特币区块链,将整个区块链暗示为键值存储稀疏Merkle树意味着:

论轻量比特币客户端Bloom过滤器的隐私条款
4. 包括原始支失事务的区块的头;
为了节减块空间,可以解除后状态根。然而这确实增加了防欺诈的局限。这在假设SPV客户机毗连到至少一个厚道节点的环境下事情。
欺诈证明是一种通过提供完整节点的机制来证明链无效的机制来提高SPV客户端安详性的要领,而岂论其拥有的事情证明数量。欺诈证明也大概有助于比特币扩展争论,因为SPV客户端更易于运行,因此可以办理比特币可扩展性问题。

比特币有两种众所周知的SPV实现:bitcoinj和elecrum。后者举办SPV级别验证,将多个elecrum彼此较量。它的安详性与bitcoinj很是相似,但由于bitcoinj实现了Bloom filters,它大概具有更好的隐私性。
由于生成的输出值不正确,生意业务无效
2. 无效生意业务;
1. 生意业务;
2. 要么只是一个没有生意业务的区块头。
在这种环境下,欺诈证明将包罗:
1. 生意业务在区块中。
BIP37 SPV的 Bloom过滤器没有相关的隐私成果。它们会泄漏诸如用户的IP地点、多个地点是否属于单个所有者等信息(假如不利用Tor或虚拟专用网络(vpn))。
5. 证明证明树包括两个相邻叶节点;
5. 叶子节点引用的区块(假如存在);
5. 原始支出生意业务;
欺诈证明大概很巨大,很难实施。然而它们对付区块链的可伸缩性以及SPV客户端的安详性和隐私性好像是须要的,因为不是每小我私家都可以或应该运行完整的节点来参加网络。当前的SPV实现正致力于提高这些SPV客户端的安详性和隐私性。另外,对付当前的区块链,将需要举办硬分叉或软分叉,以将数据容纳在块头中。
现有比特币协议中大概存在的欺诈证明
在这种环境下,欺诈证明由区块自己构成。
1. 每个区块;
1. 具有与客户有关的生意业务数据的区块头,包罗计较Merkle根所需的其他生意业务;

欺诈证明是SPV客户端安详的构成部门。可是SPV客户端中的其他组件并非没有问题。
因此一个完整的节点将发送一个轻型客户机/SPV这个数据来证明一个有效的欺诈证据。SPV将计较此函数,假如状态根的转换根与块中的状态根差异,则拒绝该区块。

可见,对差异的欺诈证明要求差异的欺诈证明布局会变得很贫苦。Al-Bassam等人,针对大大都环境提出了一个通用的欺诈证明布局。他们的主张是将整个区块链归纳综合为一个状态转换系统,,并利用稀疏的Merkle树将整个状态暗示为Merkle根,每个事务城市改变区块链的状态根。这可以通过以下函数来简化:
比特币区块链的另一个发起的欺诈证明改造是通过利用Merklix树举办分块和验证。Merklix树本质上是利用无序集的Merkle树。这也假设每个分片至少有一个厚道节点。利用Merklix证明,可以证明以下内容:

2. 促进微生意业务;
利用所有事务建设第二个Bloom过滤器,并举办二进制较量以确定匹配的事务。这个BFD答允SPV客户端缓存过滤器,而无需从头计较。它还通过答允SPV客户端通过任何带外要领下载块数据来引入半信任的Oracle,以提高SPV客户端的安详性和隐私性。
2. 整个扩展数据可用,纠删码正确构建,但该区块无效。
在这种环境下,欺诈证明包罗:
1. 以近乎即时的速度运行,从而可以快速提醒欺诈证据;
3. 后状态来源;
1. 整个扩展数据可用,纠删码正确构建且该区块有效。
假如输入不存在,生意业务无效
SPV客户如何事情
1. 无效区块的头;
暴力进攻尤其会影响自动接管SPV证明的系统,而且进攻用度或许只需要约莫300万美元。一个有效的办理方案是确保SPV钱包/客户端永远不会接管任何内部64位节点作为有效事务。
1. 无效区块的头;
3. 无效区块的Merkle树,个中包括证明树中存在无效事务所需的最少节点数。
按照付出渠道欺诈证明提议,该提议发起对发出警报/欺诈证据的节点举办某种形式的鼓励,好像必需呈现某种欺诈证明提供者和消费者市场。
完整的比特币节点包括以下具体信息:
rootTransition(stateRoot, tx, witnesses) != stateRoot
在这种环境下,欺诈证明由整个区块链构成。
SPV客户端利用Bloom过滤器吸收与用户相关的事务。Bloom过滤器是一种概率数据布局,用于通过利用布尔值答复更快地查抄荟萃中元素的存在性。

按照提出的办理方案,利用纠删码时,对付SPV客户端,以下三个条件之一将创立:
以下欺诈证据将要求变动比特币协议自己。
付出通道

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。