编者按:本文来自财经网链上财经,作者:AlexanderSkidanov,编译:LornaQ,来源:medium,Odaily星球日报经授权转载。区块链分片的核心问题是链上的节点无法验证所有分片中的区块。因此,每当任一节点需要与特定分片交互时,他们通常无法下载并验证该分片的整个历史记录。然而,一个重大的潜在问题出现了:如果不能下载和验证一个特定的分片的整个历史记录,节点如何确定接收到的交易来自于有效区块。非分片区块链中不存在这样的问题。简单的应对策略
我们将首先讨论一个简单的解决方案,这个解决方案在许多协议都提到过,我们将进一步分析这个解决方案如何尝试解决它想要解决的问题。解决数据有效性的简单方案如下:假设整个系统有数千个验证器,其中不超过20%是作恶的,或者无效的。然后,如果我们对约200个验证器进行采样,假定超过1/3的节点失败率为零。值得注意的是:1/3是一个重要的门槛。拜占庭共识协议中指出,只要确保少于1/3的节点失败,无论是作恶还是违反协议的某一条,最后都将达成共识。假设诚实的验证器百分比,如果分片中的验证器为我们提供了一些区块,解决方案假定该区块是有效的,并且验证器建立在该分片的规范链基础上。他们开始验证时,验证器从前一组验证器中学习规范链。通过归纳,整个链是有效的,由于任何一组验证器都有产生分叉,解决方案也确定当前链是分片中唯一的链。如果假设验证器可能被破坏,上述简单的解决方案就会不起作用,这是个合理的假设。在含有1000个分片的系统中破坏单个分片比破坏整个系统的成本要低得多。因此,随着分片数量的减少,协议的安全性相应地减小。为了确定一个区块的有效性,我们必须确保,在记录中的任何一个节点,系统中的分片都不存在大多数验证者串通的情况;但是对于自适应对手,我们无法确保。正如我们在前一部分中所讨论的,串通验证器可以执行两种基本的作恶行为:创建分支和生成无效的块。恶意分叉可以通过交叉链接到信标链的区块来解决,信标链通常比分片链更具安全性。然而,生成无效的区块是一个具有挑战性的问题。数据验证
NirvanaMeta将与F8DAO展开关于建立互信新秩序社区自治合作:据官方消息,NirvanaMeta将同F8DAO展开合作,合作将围绕关于如何建立互信新秩序社区自治展开。F8DAO致力于建立一个财富共享、完全互信的新秩序自治组织。[2022/5/3 2:47:33]
如下图,分片#1已经被攻击,作恶者挖出了无效块B。假设区块B凭空捏造出来1000个token,并记录在Alice的账户上。接着,作恶者在区块B的基础上挖出有效区块C,然后在分片#2发起了跨分片交易,把这1000个token转到了Bob的账户。此事凭空造出来token在分片2上是完全有效的。解决上述问题的方案有:1.让分片#2的验证者检验发起这笔交易的那个区块。但由于区块C似乎完全有效,因此,此方案不适用于上述示例。2.分片#2的验证者可以大量检验发起这笔交易之前的区块。但是,通常对于接受交易的分片要验证的N个区块,恶意验证者可以在他们创建的无效块上创建N+1个有效块。比较好的解决方案是将分片按照无向图进行排列,每个分片都连接多个分片,跨分片交易只能在相邻的两个分片上进行。。如果要在不相邻的两个分片之间进行跨分片交易,这笔交易需要通过多个分片相互验证。在这个设计里,每个分片的验证者都要验证他们的分片以及与他们相邻的分片上的所有区块。假设有10个分片,每个分片相邻4个分片,不需要考虑两个以上的分片之间的交叉分片通信。分片#2不仅验证自己的链,还需要验证所有相邻的链,包括分片#1。所以,如果分片#1上的恶意分子试图创建无效块B,然后在B的基础上构建区块C,并发起跨分片交易,分片#2就可以通过验证分片#1上的所有历史记录,识别出无效区块B。虽然现在攻击一个分片不再是可行的攻击方法,但是如果攻击多个分片仍是个问题。下图中,如果对方成功攻击了分片#1和分片#2,用无效区块B生成的“资金”可与分片#3进行一笔跨分片交易。分片#3验证了分片#2上所有的区块,但是并未验证分片#1上的区块记录,那么仍无法检测到无效块B。解决这个问题的其中一个主要方案是采用fishermen机制。这个方法背后的原理:无论何时,为了关联信标链或是发起分片交易,链之间相互通信区块头信息,在一段时间内,任意诚实验证者都可以提供无效区块的证明。有各种结构可以非常清楚的证明某个区块是无效的,接收节点的通信成本要比接收整个区块的成本小得多。使用这种方法,只要有一个节点是诚实的,系统就是安全的。但是这种方法有两个缺陷:1.这段验证的时间需要足够长,以便让诚实节点识别挖出的区块,下载并进行完全验证。这段验证时间会极大降低跨分片交易的速度。2.会创造出一个新的攻击向量,恶意的节点可以故意发起大量无效的验证请求。解决这个问题的方案是让验证者在指定的账户里存入一些Token,待验证成功时再返还。这只是部分解决方案,由于恶意的节点向系统发起大量无效的验证请求带有无效区块可能仍然存在,这些攻击被称为恶意破坏攻击。针对这两个问题,目前还没有很好的解决方案,但是这个方案仍然是解决数据验证问题的一个主要方法。简洁的非交互知识论证
Netflix将推出关于QuadrigaCX首席执行官神秘去世事件的纪录片:金色财经报道,在线流媒体平台和制作公司Netflix将制作一部关于已故加密货币交易所QuadrigaCX创始人Gerald Cotten的纪录片。根据Netflix 9月23日的一条推文,该平台宣布《无人信任:追捕加密货币之王》将于2022年首映。据报道,Cotten于2018年12月死于克罗恩病的并发症,其是唯一知道该交易所冷钱包私钥的人。这导致加密领域的许多人最初怀疑Cotten伪造了他的死亡并带着资金潜逃,但从未有任何证据表明这一点。后来的一项调查显示,总部位于巴拿马的支付处理商Crypto Capital可能控制了许多资金。[2021/9/24 17:02:14]
解决攻击多个分片的第二种方法是使用某种密码结构,允许人们证明正确执行某个计算。例如zk-STARKs和其他一些共识协议,以及一些被广泛地用于私人支付的共识协议,其中最著名的是ZCash。这种共识协议存在的主要问题是计算速度非常慢。例如:CodaProtocol,使用zk-SNARKs专门证明区块链中的所有区块都是有效的,每次交易可能需要30秒来进行一笔交易证明。有趣的是,证明不需要由可信方来计算,因为不仅需要证明它所构建的计算的有效性,而且需要证明本身的有效性。因此,这种证明的计算可以在一组参与者之间进行划分,它比执行某些不可信计算更加简洁。除此之外,它还允许计算zk-SNARK的节点在特定的硬件上运行,而不会降低系统的分布式。除了性能外,zk-SNARK的局限性是什么?依赖于较少研究过的和较少时间测试的密码学原语;“Toxicwaste”是zk-SNARK依赖于一组可信的设置,其中一组人执行一些计算,然后忽略该计算的中间值。如果程序的所有节点都串通并保留中间值,则可以制造假证明;系统设计中引入了额外的复杂性算法;zk-SNARK仅适用于可能计算的子集,因此,具有图灵完备智能合约语言的协议将无法使用SNARK来证明链的有效性。数据的可用性
MXC抹茶:关于警惕不法分子冒充、滥用“MXC抹茶”名义的严正声明及风险提示:据官方消息,有用户反馈,近期市场上出现第三方平台擅自利用“MXC抹茶”品牌,伪造官网和APP,试图诱导用户注册登录以实施行为。对此,MXC抹茶相关负责人做出声明:
一、MXC抹茶一贯秉持对用户、对行业负责的态度,竭力采取有效防控措施以抵制各类违法违规行为。任何假借MXC抹茶及其旗下品牌、名义或冒充工作人员来诱用户的违规违法行为,均系未经MXC抹茶授权的恶意侵权行为。
二、请广大用户务必认真审阅平台规则及防诈风险提示、谨慎识别各类风险;任何有损MXC抹茶品牌声誉的行为,一经核实,MXC抹茶将严格追究其法律责任。
三、如您对外界宣称的与MXC抹茶相关的信息存有质疑,请务必第一时间通过官方客服邮箱service@mxc.com 进行核实确认;同时欢迎大家监督配合。[2021/1/19 16:32:36]
我们将要讨论的第二个问题是数据的可用性。通常,将特定区块链的节点分为两类:全节点,下载每个完整区块并验证每笔交易的节点,以及仅仅下载区块头的轻节点,并使用Merkle校样来处理他们感兴趣的状态和交易。现在,如果大部分主要全节点串通,则它们可以生成有效或无效的区块,并将其哈希值发送到轻节点,但不透露区块的全部内容。他们可以通过各种方式从中受益。如下图所示:假设有三个区块:前者A,由诚实的验证者生成;当前区块B,由验证者串通;下一个区块C,由诚实的验证者产生;假设你是商家。当前区块的验证者从先前的验证者那接收到区块A,计算出你接收钱的区块,并向你发送该区块头,其中通过Merkle证明包含你有钱的状态。确保交易最终确定,你就可以提供服务。但是,验证器永远不会将区块B的全部内容分发给任何人。因此,区块C的诚实验证器无法检索该区块,并且被迫停止系统或构建在区块A之上,从而剥夺了你作为商家的权利。当我们将相同的场景应用于分片时,全节点和轻节点的定义通常适用于每个分片:每个分片中的验证者下载该分片中的每个区块并验证该分片中的每笔交易,但验证系统中的其他节点,包括那些快照分片链状态进入信标链,只需要下载区块头。因此,分片中的验证者实际上是该分片的全节点,而系统中的其他参与者作为轻节点。对于我们上述的fisherman方案,诚实的验证者需要能够下载与信标链交叉链接的区块。如果恶意验证者交叉链接无效区块头,而从未分发区块,则诚实的验证者无法进行验证。监管权证明
动态 |奥克兰 IEEE安全与隐私研讨会接受IOHK关于侧链的研究:根据cryptoninjas消息,区块链研发公司IOHK宣布,其最近发表的关于侧链协议的论文已被奥克兰网络安全会议接受。该论文首次给出了侧链系统的正式定义,演示了如何在区块链之间安全地移动资产,并给出了适用于区块链验证的侧链构造。侧链被设想为改善区块链可伸缩性问题的机制,支持区块链协议之间无缝和高效的互操作性。到目前为止,还没有人尝试过一种可以证明是安全的构造。IOHK的研究还详细说明了“防火墙”的特性,以限制侧链故障对区块链的影响。[2019/1/11]
需要迫切解决的问题是一旦区块发布,是否区块就具可用性?一个名为公证人的解决方案是让分片之间公证人轮换的频次比验证者高,验证者的唯一的工作是下载一个区块,并证明他们能够下载。与验证者不同的是,公证人可以更频繁地轮换,因为他们不需要下载分片的整个状态。这种的方法的问题是,无法证明公证人是否能够下载该区块,因此公证人可以选择始终证明他们能够下载该区块而不尝试检索它。解决该问题方案是公证员提供一些证据,或者投入一定数量的Token来证明该区块已被下载。纠删码技术
哈萨克斯坦总统呼吁国际社会共同努力,制定关于加密货币的共同规则:哈萨克斯坦总统努尔苏丹·纳扎尔巴耶夫(Nursultan Nazarbayev)日前敦促国际社会共同努力,起草关于使用加密货币的共同规则。据TengriNews报道,5月17日,纳扎尔巴耶夫在“2018年全球挑战峰会”上表示:“我们有必要开始就加密货币制定共同规则。当前,大多数国家都在就加密货币适应当前金融体系结构的可能性进行及积极地探索。于此同时,我们也看到,各国在这一问题上采取的监管行动各不相同,容易造成混乱及效率低下。”[2018/5/19]
当特定的轻节点接收到一个区块的哈希值时,为了提高节点对该区块可用的信心,它可以尝试下载该区块的一些随机片段。这不是一个完整的解决方案,因为除非轻节点共同下载整个区块,否则恶意区块生产者可以选择保留未被任何轻节点下载的区块的部分,从而导致区块不可用。对此问题的解决方案是使用一种称为纠删码技术的结构,即使只有区块的某些部分可用,也可以恢复整个区块:Polkadot和以太坊Serenity都围绕这个想法进行了设计,为轻节点提供了合理地确信区块可用的方法。这两种方法都依赖于验证者,因此可能容易受到恶意攻击。长期可用性和结论
上述讨论的所有解决方案都证明了一个事实,即一旦一个区块发布,则该区块立即可用。区块随后可能由于各种原因变得不可用,例如:节点脱机、节点故意删除历史数据等等。一篇值得借鉴的解决方案是Polyshard,即使几个分片完全丢失了它们的数据,Polyshard使用纠删码技术让跨分片区块依然可用。不幸的是,他们的解决方案要求所有分片从其他分片那下载所有区块,合格过程成本高昂。由于预计系统中没有节点能够验证所有分片中的所有链,因此分片协议的安全性需要以这样的方式设计:即使某些分片中的某些以前的区块变得完全不可用,系统也是安全的。在设计安全协议时,数据有效性和数据可用性仍然是首先需要关注的问题。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。