区块链相关算法整理
拜占庭算法
-
问题引入:n 个将军被分隔在不同的地方,忠诚的将军希望通过某种协议达成某个命令的一致(比如一起进攻或者一起后退)。但其中一些背叛的将军会通过发送错误的消息阻挠忠诚的将军达成命令上的一致。Lamport 证明了在将军总数大于 3m ,背叛者为 m 或者更少时,忠诚的将军可以达成命令上的一致。
-
现实问题:
- 计算机网络中,如何保证在信道不可靠的情况下,消息能够准确送达;
- 区块链上的成员,在已知存在造假者的情况下,如何保证所有人达成共识;
零知识证明
-
问题引入:数学家塔塔利亚和卡丹都宣称自己找到了三次方程的解法,他们需要向对方证明自己的确掌握了解法,而又不能告诉对方(否则就无法知道这个解法到底是谁发现的了)。
-
问题本质: 如何在保证信息的隐秘性的情况下,证明该信息的正确性;
-
解决方案: 两个数学家一起解 30 道三次方程,最终塔塔利亚解出了方程,卡丹失败。
1、工作量证明机制
如果要篡改区块链上的数据,需要拥有全链 51%以上的算力,这样的工作量使得造假成本大于收益;
2、互联网共识机制
以共识确保正确,无需甄别好坏;
3、智能合约机制
用程序代替合同,当约定条件达成,合同(程序)自动执行。金融活动从交换数据转变为交换代码;
4、互联网透明机制
账号全网公开,而户名隐藏