区块链--共识算法POW

首先我们通过介绍一个拜占庭将军问题(Byzantine Generals Problem),来进一步了解共识算法是要干什么。

故事:

拜占庭帝国,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有行。

其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。

于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。

所以想要吃到这块肥肉,最重要的是10个邻国的将军达成一致去进攻拜占庭帝国。这就是要解决10个相互不信任的个体,去获得最大利益的问题。

针对这个问题有几个比较初级的解决方案,像口头信息,书面协议等,这些我们就不讲了,直接到高级点的,就是比特币的共识算法pow。

工作量证明(Proof Of Work)

假如10个将军都发信息,很容易乱,因为每个人都收到另外9个人的信息,所以中本聪规定只有一个人可以发出发起进攻的信息,这个人是谁都可以,但是有一定的条件限制,这个条件就是“工作量”,就是说这个人必须完成一个计算工作才能发消息,谁先完成这个计算工作,谁就能发消息。

当某个将军计算出这个结果后就发出进攻的消息,其它将军看到后必须签名表示自己的身份,这里请注意,古代那个签名是很容易伪造的,所以中本聪引入了加密技术,就是非对称加密,它的好处:1.消息的私秘性。2.确认签名人身份。3.签名不可伪造不可篡改。

非对称加密

非对称加密算法是由非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是公钥和私钥.

公钥和私钥一般成对出现, 如果消息使用公钥加密,那么需要该公钥对应的私钥才能解密; 同样,如果消息使用私钥加密,那么需要该私钥对应的公钥才能解密.非对称加密的作用是:保护消息内容, 并且让消息接收方确定发送方的身份.

假如张将军想给将军李发送消息,为防止消息泄露,张将军只需要使用李将军的公钥对信息加密,而李将军的公钥是公开的,李将军只需要用只有他自己只的私钥解密即可。李将军想要在信件上声明自己的身份,他可以自己写一段”签名文本“,并用私钥签名,并广播出去,所有人可以根据李将军的公钥来验证该签名,确定的李将军的身份。

哈希现金(Hashcash)

这个就是大家要完成的计算,找一个随机数,计算机只能用穷举法来找到这个随机数,谁也不能确定找到,随机是公平的,并且这个随机的数学逻辑是大家都认可的。

奖励机制

中本聪设计是每有一个人算出这个随机数,就奖励一定数量的比特币,这个机制是自动运行的。这个奖励机制促使了大家一起来做这个计算,工作没有白做。

总结:

共识算法主要是解决由谁来创建区块,如何维护区块链的统一性。

在本文中工作量证明解决了一致性问题,非对称加密技术解决了信任问题。

猜你喜欢

转载自my.oschina.net/sunqichao/blog/1632798