公有链有什么必须要知道的概念?

(1)零知识证明
“零知识证明”zero-knowledge proofs,简写为ZKPs,指的是证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的协议。看上去非常复杂,但实现的方式很简单:A要向B证明他知道特定数独的答案,但又不能告诉B这个数独的解。B可以随机指定某一行、列或九宫格,A将这一行、列、九宫格里所有的数字按照从小到大的顺序写下来,其中包含了1-9的所有数字,就可以证明A的确知道这个数独题目的答案。
在这个过程当中,一旦A提前知道了B指定的行、列或九宫格,就可以在验证过程中作弊,所以B需要一个真正的随机数来确保这个验证方式是安全的。
在区块链中,节点之间利用零知识证明的方式就可以在不向验证者提供任何有用信息的情况下,使验证者相信这个区块是合法的。
(2)非对称加密算法
非对称加密算法也叫公开密钥密码学(英语:Public-key cryptography,是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
(3)公有链的“不可能三角”
指在公有链设计的过程当中,安全性、去中心化和高吞吐量三者无法同时实现,必须对其中一种进行妥协。
(4)拜占庭将军问题
拜占庭将军问题(Byzantine Generals Problem),是由莱斯利·兰波特在其同名论文中提出的分布式对等网络通信容错问题。
在分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动。但有时候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。拜占庭将军问题被认为是容错性问题中最难的问题类型之一。
具体来说,拜占庭将军问题是一个思想实验,即一组拜占庭将军分别各率领一支军队共同围困一座城市。各支军队的行动策略限定为进攻或撤离两种。因为部分军队进攻部分军队撤离可能会造成灾难性后果,因此各位将军必须通过投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离。因为各位将军分处城市不同方向,他们只能通过信使互相联系。在投票过程中每位将军都将自己投票给进攻还是撤退的信息通过信使分别通知其他所有将军,这样一来每位将军根据自己的投票和其他所有将军送来的信息就可以知道共同的投票结果而决定行动策略。
问题在于,将军中可能出现叛徒,他们不仅可能向较为糟糕的策略投票,还可能选择性地发送投票信息。假设有9位将军投票,其中1名叛徒。8名忠诚的将军中出现了4人投进攻,4人投撤离的情况。这时候叛徒可能故意给4名投进攻的将领送信表示投票进攻,而给4名投撤离的将领送信表示投撤离。这样一来在4名投进攻的将领看来,投票结果是5人投进攻,从而发起进攻;而在4名投撤离的将军看来则是5人投撤离。这样各支军队的一致协同就遭到了破坏。
由于将军之间需要通过信使通讯,叛变将军可能通过伪造信件来以其他将军的身份发送假投票。而即使在保证所有将军忠诚的情况下,也不能排除信使被敌人截杀,甚至被敌人间谍替换等情况。因此很难通过保证人员可靠性及通讯可靠性来解决问题。
假使那些忠诚(或是没有出错)的将军仍然能通过多数决定来决定他们的战略,便称达到了拜占庭容错。在此,票都会有一个默认值,若消息(票)没有被收到,则使用此默认值来投票。

公有链有什么必须要知道的概念?

扫一扫手机访问

发表评论