anyuan2002.com - vwin网

查找: 您的方位主页 > 网络频道 > 阅览资讯:区块链:最小可行区块链原理解析2

区块链:最小可行区块链原理解析2

2019-04-18 07:33:13 来历:www.anyuan2002.com 【

多方搬运和验证

接下来,Bob无意中发现John有一枚邮票,他实在很喜爱。他告知John他和Alice在运用的安全分类账簿,并问他是否乐意做个买卖,Bob把Alice欠他的余额作为付出手法搬运给John——即Bob从John那儿取得邮票,Alice之前欠Bob的金额将变成她欠John的。John赞同了,但现在他们有个问题。Bob怎样能以安全和可验证的办法把他的余额“搬运”给John?经过一番洽谈,他们想出一个奇妙的方案:

区块链:最小可行区块链原理解析2

Bob依照与之前相同的进程创立了一个新买卖,不过他先核算出他想要搬运的加密买卖的SHA-256校验和(一个仅有的指纹),然后将校验和嵌入新收据中“是什么”一栏。事实上,他在将之前与Alice的买卖与新的搬运收据链接起来,这样就把它的价值搬运给了John。

为了坚持事物的简略性,咱们假定全部的搬运都会“消费掉”被搬运买卖的悉数价值。要把这个别系扩展到使部分搬运成为或许并不难,但此刻没有必要考虑得那么杂乱。

跟着新买卖到位,John为了安全起见,做了一个加密分类账簿的副本(现在有三个副本)并运转了一些检查来验证它的完好性:

1.John提取了Alice和Bob的公钥,验证前三个买卖的实在性。

2.John证明晰Bob搬运的是一个“有用”买卖:

  • 待搬运买卖的地址是Bob。
  • Bob此前没有把这个买卖搬运给任何其别人。

假如全部检查都经过了,他们就完结买卖,咱们能够经过遍历分类账簿来核算新的余额:Bob有一个净零数余额,Alice有2个chroma的借额,John有2个chroma的贷额(由Alice供给)。这样John现在就能够把他的新分类账簿拿给Alice并要求她付出,即使Alice没有到会买卖,也没有问题:

  • Alice能够用Bob的公钥核实新搬运买卖的签名。
  • Alice能够核实搬运的买卖是对她和Bob一个有用买卖的引证。

以上搬运和验证进程是体系一个了不得的特点!留意要让它悉数能作业,咱们需求两个使能技能:一个是公钥基础设施的运用,使数字签名验证成为或许;另一个是收据账簿,使咱们能够检查完好的买卖记载以验证余额并链接从前的买卖来进行搬运。

John和Bob对这个奇妙的处理办法很满足,然后两人分头回家:Bob带着新邮票,John有了新的分类账簿。表面上看全部完美,可是他们刚刚把自己暴露在了一个极具应战性的安全问题之下……你发现了吗?

重复消费和散布式一致性

在与John完结买卖后不久,Bob意识到他们刚刚在他们的体系中引入了一个严峻的缝隙,假如他迅速行动,就能够运用这个缝隙:Bob和John都更新了他们的分类账簿来包括新的买卖,可是Alice和其他任何人都不知道买卖现已发作。成果是,没有什么能阻挠Bob挨近网络中的其别人,给他们展现旧的账簿副本,而旧的账簿副本里没有他和John的买卖!假如Bob压服他们进行买卖,就像他和John做的那样,他就能够“重复消费”同一个买卖,想进行多少次都能够!

区块链:最小可行区块链原理解析2

当然,一旦多人拿着新的分类帐簿要求Alice付出,诈骗行为将被检测到,但这现已杯水车薪了——Bob现已带着战利品跑掉了!

只需两个参加者的时分,不或许遭到两层消费进犯,由于要完结买卖,你要验证并一起更新两个分类账簿。 因而全部分类账簿始终坚持同步。可是当咱们再添加别的一个参加者时,咱们就引入了各参加者之间账簿不彻底和不一致的或许性,这就使两层消费成为或许。

在核算机科学语言中,两边分类账簿具有“强一致性”,超越两方的分类账簿则需求某种办法的散布式一致性以处理两层消费的问题。

这个问题最简略的或许的处理方案是要求分类账簿中列出的各方都有必要在每个新买卖发作时都在场,以便每个人能够一起更新他们的账簿。这个战略对小型的群组有用,但不能扩展到有许多参加者的状况。

散布式一致性网络的要求

咱们来想象一下,咱们想要将分类账簿扩展到全国际全部集邮者,这样任何人都能够用一种安全的办法买卖他们喜爱的邮票。显着,由于地理方位,时区和其他约束,要求每个参加者在每个买卖挂号的时分都在场是不或许完成的。咱们能树立一个不需求每个人都在场同意的体系吗?

1.地理方位算不上一个实在的问题:咱们能够把沟通搬运到线上。

2.时区问题能够经过软件处理:咱们不需求每个人手动更新分类账簿。相反,咱们能够树立一个软件,它能在每个参加者的核算机上运转并代表他们主动接纳、同意以及向分类账簿添加买卖。

事实上,咱们能够树立一个点对点(P2P)网络,担任分发新的买卖并取得每个人的同意! 但很可惜,说起来简略做起来难。例如,尽管P2P网络能够处理咱们的地理方位和时区问题,但试想即使只需一个参加者离线,会呈现什么状况? 咱们是不是要阻挠全部买卖,直到他们再次上线?

留意,“怎样”构建P2P网络自身便是一个巨大的课题:协议和信令,穿越防火墙和非授权终端体系(NAT),自我发动,优化传达更新的办法,安全性等。 也便是说,构建这样一个网络的底层机制也远超出咱们评论的规模……咱们把它作为一个操练留给读者。

区块链:最小可行区块链原理解析2

本来散布式一致性的问题在核算机科学中现已被深入研究过,而且现已提出了一些有期望成功的处理方案。例如,两阶段提交(2PC)和Paxos都使这样一种机制成为或许,即咱们只需求参加者的大多数法定人数(50%以上)就能安全地提交新的买卖:只需大多数人现已承受买卖,就能保证群组中剩余的人终究汇合在同一个买卖前史。

即使如此,单单有2PC或Paxos是不行的。比方,在每天都有新参加者参加而其别人不预先告知就消失的状况下,2PC或Paxos怎样知道咱们P2P集邮者网络中的参加者总数?假如有一个从前的参加者离线,他们是暂时仍是永久离线? 相似地,还有另一个咱们有必要考虑的更具应战性的“Sybil进犯”:没有办法阻挠一个歹意参加者创立许多档案,在咱们的P2P网络中获取不公平的投票权比例。

假如体系中的参加者数量是固定的,而且现已验证他们的身份实在有用(也便是说,这是一个可信网络),那么2PC和Paxos都会作业得很好。唉,但咱们不断改变的集邮者P2P网络并不是这样的状况。咱们走进死胡同了吗? 嗯,并不尽然……

这个问题有个显着的处理方案是从问题陈说中消除“散布的”部分。咱们能够不树立一个P2P散布式体系,而是树立一个全部集邮者的大局注册表,记载他们的帐户信息,对他们进行验证并(测验)保证没人能经过创立多个身份做弊,最重要的是,保证有一个同享的分类账簿副本!具体来说,咱们能够树立一个网站,这些买卖在网站上进行,网站将在它的集中式数据库里记载全部的买卖,以此保证买卖的完好性和正确排序。

以上是一个有用的处理方案,但咱们得供认,它不尽善尽美,由于它迫使咱们失去了分类账簿体系点对点的性质。它将全部的信赖置于一个单一的集中式体系,这就带来了一组全新的问题:什么是体系的正常运转时刻,安全性和冗余; 谁来维护体系,他们维护体系的动因是什么; 谁有办理拜访权限,等等。集中式带来了它自己的一系列应战。

让咱们回忆一下在P2P规划中遇到的一些问题:

  • 保证每个参加者始终坚持更新状况(强一致性体系)会发生很高的和谐本钱,影响可用性:假如单个点不可达,整个别系都无法提交新买卖。
  • 在实践中,咱们不知道P2P网络的大局状况:参加者人数,个别是暂时离线仍是决议脱离网络等。
  • 假定咱们能够处理上述约束,体系依然或许遭到Sybil进犯,歹意用户能够假造许多身份行使不公平的投票权。

不幸的是,处理上述全部约束是不或许的,除非咱们放松一些要求: CAP定理告知咱们,咱们的散布式体系不能有很强的一致性,可用性和分区容忍性。因而在实践中,咱们的P2P体系有必要在(更)弱一致性的假定下操作并战胜它或许带来的影响:

  • 咱们有必要承受一些分类账簿不同步(至少是暂时不同步)。
  • 体系终究有必要收敛于全部买卖的全体序(线性一致性)。
  • 体系有必要以可猜测的办法处理分类账簿抵触。
  • 体系有必要强制履行大局不变量——例如,没有重复消费。
  • 体系应该免受Sybil和相似的进犯。

维护网络免受Sybil进犯

在散布式体系中完成一致性,比方经过对每个参加者的投票计数,会呈现许多关于各节点“投票权”的问题:答应谁参加,某些节点是否有更多的投票权,是否每个人都相等,以及咱们怎样强制履行这些规矩?

为了坚持简略,咱们假定每个人的投票是相等的。第一步,咱们能够要求每个参加者用私钥在他们的投票上签名,就像在他们的买卖收据上签名相同,并将投票传到达他们的节点上—— 在投票上签名保证了别人不能代表他们投票。然后咱们能够拟定一个规矩,只答应提交一票。假如同一个钥匙签名了多个投票,那么全部的投票都报废——现已下定决心! 到目前为止还好,现在难的部分来了……

区块链:最小可行区块链原理解析2

最开端咱们怎样知道答应哪个特定的节点参加?假如只需求一个共同的私钥来签名投票,那么歹意用户能够简略地生成无限的新密钥充满网络。底子问题是,当生成和运用假造身份很廉价时,任何投票体系都很简略被推翻。

为了处理这个问题,咱们需求使提交投票的进程变得“贵重”。或许进步生成新身份的本钱,或许提交投票的进程有必要发生足够高的本钱。为了让问题更清晰,咱们来想几个实际国际的比方:

  • 你在当地政府推举中投票时,会要求你出示身份证件(例如护照),而假造身份证件的本钱很高(期望如此)。理论上,没什么能阻挠你生成多个假造的身份证件,但假如本钱足够高(假造的钱银本钱,被抓的危险等),那么运转Sybil进犯的本钱将远大于其收益。

  • 或许,假定提交投票给你带来了一些其他本钱(例如付出费用)。假如本钱足够高,那么再次的,运转大规模Sybil进犯的妨碍也增强了。

留意,上述比方都不能彻底“处理”Sybil进犯,但它们也不需求被彻底处理:只需咱们将进犯的本钱进步到大于成功损坏体系所能得到的值,那么体系便是安全的,会依照预期运转。

留意,咱们所运用的“安全”的界说是很宽松的。体系依然会遭到操作,切当的投票计数会遭到影响,但要害是歹意参加者不能影响终究的成果。

参加所要求的作业量证明

任何用户都能够经过生成新的私钥—公钥对来容易地(而且花很少的钱)在咱们的P2P网络中生成新的“身份”。相同,任何用户都能够用他们的私钥签名投票并将其发送到P2P网络——这也很廉价,咱们的收件箱中许多的垃圾邮件清楚地说明晰这一点。 因而,提交新的投票很廉价,歹意用户能够容易地竭尽或许多的投票吞没网络。

可是,假如将以上其间一个进程变得贵重,使你不得不消耗更多的精力、时刻或金钱,状况会怎样呢? 这便是需求作业量证明背面的中心思维:

1.作业量证明进程关于发送者来说应该是“贵重的”。

2.别人验证作业量证明的进程应该是“廉价的”。

这样一种办法有许多种或许的履行办法,可是为了到达咱们的意图,咱们能够再次运用之前遇到的暗码散列函数的特点:

区块链:最小可行区块链原理解析2

1.很简略核算任何给定音讯的散列值。

2.生成具有给定散列值的音讯很贵重。

咱们能够在咱们的体系中施加一个新规矩,要求每个签名投票有必要具有以特定子串开端的散列值,即需求部涣散列抵触,比方两个零的前缀。假如这看起来彻底是恣意的,那是由于它确实是恣意的——跟着我的思路。咱们经过几个进程来看看这是怎样收效的:

1.咱们假定一个有用的投票陈说是个简略的字符串:”I vote for Bob” (“我投票给Bob”)。

2.咱们能够用相同的SHA-256算法来为咱们的投票生成一个散列值。sha256(“I vote for Bob”) → b28bfa35bcd071a321589fb3a95cac…

3.生成的散列值无效由于它没有以咱们要求的两个零子串最初。

4.咱们修正一下投票陈说,附加一个恣意字符串再试一下: sha256(“I vote for Bob – hash attempt #2”) → 7305f4c1b1e7…

5.生成的散列值也不满足咱们的条件,咱们更新值,一次又一次地测验…… 155次测验之后咱们终究得到了:

  • sha256(“I vote for Bob – hash attempt #155”) → 008d08b8fe…

上述作业流程的要害特点是,每次咱们修正完输入,加密散列函数(在这种状况下是SHA-256)的输出是彻底不同的:当咱们添加计数时,前一次测验的散列值并不能泄漏下一次测验所得到的散列值的任何信息。因而,生成有用投票并不仅仅是个“难的问题”,咱们能够把它比方成彩票,每次新测验都会给你一个随机的输出。一起咱们也能够经过更改所需前缀的长度来调整彩票的赔率:

1.SHA-256校验和中的每个字符都有16个或许的值: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f.

2.为了生成有两个零前缀的有用散列,发送者均匀需求256 (162)次测验。

3.即将求变为5个零均匀会需求1,000,000 (165) 屡次测验……要害是,咱们能够容易进步本钱,让发送者找到一个有用散列需求消耗更多CPU周期。

咱们能够在一个现代CPU上核算多少个SHA256校验和?它的本钱取决于信息巨细,CPU 架构和其他变量。假如你对此感到猎奇,能够翻开控制台,运转一个基准测验程序:

$> openssl speed sha.

终究成果是,生成有用投票关于发送者来说是“贵重的”,但关于接纳者验证依然是微乎其微的:接纳者散列买卖(一次运算)而且核实校验和中包括所需的散列抵触前缀……太好了,那么这对咱们的P2P体系有什么用呢?上述作业证明机制使咱们能够调整提交投票的本钱,从而使损坏体系的总本钱(即冒充足够多的有用投票来保证特定成果)高于进犯体系能够取得的价值。

留意,“生成音讯的高本钱”在许多其他环境中是个有用的特点。例如,垃圾邮件能够运作恰恰是由于生成信息特别廉价。假如咱们能够进步发送电子邮件的本钱——例如,要求作业量证明签名——那么咱们能够经过使本钱高于赢利来打破垃圾邮件的商业模式。

下一篇文章咱们将会介绍《区块链:最小可行区块链原理解析3》

 
 

本文地址:http://www.anyuan2002.com/a/question/100401.html
vwin娱乐场
Tags: 最小 原理 区块
修改:vwin网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部