通信中的强权统治和无政府主义

2017-10-30  本文已影响8人  siriusing

在通信系统中,主要分:有中心通信和无中心通信。传统的服务器-客户端模式大都是基于中心服务器的通信模式。

1.0基于中心服务器的通信

基于中心服务器的通信

最常见的就是日常的网站服务器和个人pc的关系,如支付宝和买卖双方的关系等。

1.1 无休止的两人确认

问题:假如系统中,有两个人,A,B。A想借给B 100块,

无休止的两人确认

1.2 引入第三方

如果引入第三方:

引入第三方

1.3 买家-淘宝-支付宝-银行

再详细一点,我们来看看淘宝上买东西,直接支付到银行的流程

小明在淘宝上买了件100¥的东东

这里实际上淘宝到支付宝的工作是创建了单号来标识这个转账过程。

考虑链路的不安全
如果银行拿了钱不回答,支付宝可以主动查询

支付宝主动查询
这里支付宝还要和银行进行对账,而对账周期是不一样的,
可能是今天对昨天的账。小型支付体系是按月对账。

1.4 程序员视角

在实际开发中,我们只需要了解到支付宝的那一层:

支付宝给的开发接口:

支付宝支付

2.0 无政府主义和区块链

2.1 类两军问题

两军问题

如图所示,白军驻扎在沟渠里,蓝军则分散在沟渠两边。白军比任何一支蓝军都更为强大,但是蓝军若能同时合力进攻则能够打败白军。他们不能够远程的沟通,只能派遣通信兵穿过沟渠去通知对方蓝军协商进攻时间。是否存在一个能使蓝军必胜的通信协议,这就是两军问题。

其实就是无休止的两人确认

无休止的两人确认

这种问题放在通信上,如TCP/IP的三次握手

三次握手和四次挥手

事实上客户端并不知道service收到了他的ack=x+1,但是在成本可控的情况下还是认为service收到了。

借助可靠通道达到一致

那么,是否能够找到一个理论方法来真正的破解两军问题呢?答案是有的,量子通讯协议,笔者并没有能力弄清这个颇为高深的问题。据我的理解,处于量子纠缠态的两个粒子,无论相隔多远都能够彼此同步,光是直观的来看,这个效应可以用来实现保密通讯。

但是由于测不准原理,一测量粒子状态就会改变其状态,所以通讯时还必须通过不可靠信道发送另一条信息。尽管这个“另一条信息”是不可靠的,但是由于已经存在了一条绝对可靠的信道(量子纠缠),保证了另一条信道即使不可靠也能保证消息是可靠的,否则至少被窃取了一定能够被发现。

因此我们可以相信,至少理论上两军问题是可解的,即存在一种方法,即使利用了不可靠的信道,也能保证信息传递的可靠性。

2.2 拜占庭将军问题

11位拜占庭将军去打仗, 他们各自有权力观测敌情并作出判断, 进攻或撤退, 那么怎么让他们只用传令兵达成一致呢?
  一种很符合直觉的方法就是投票,每位将军作出决定后都将结果"广播"给其余所有将军, 这样所有将军都能获得同样的11份(包括自己)结果, 取多数, 即可得到全军都同意的行为.但如果这11位将军中有间谍呢? 假设有9位忠诚的将军, 5位判断进攻, 4位判断撤退, 还有2个间谍恶意判断撤退, 虽然结果是错误的撤退, 但这种情况完全是允许的. 因为这11位将军依然保持着状态一致性.

暂时从战争故事中抽离出来, 分布式数据库最糟糕的问题绝对不是写入或者读取失败, 而是状态不同步, 还感知不到. 这个的后果就是correctness不能保证, 那程序就没有任何意义了.2个间谍怎么破坏状态一致性呢? 他们跟5位判断进攻的将军说, 我们支持进攻, 那么这5位将军统计发现7位支持进攻, 4位支持撤退, 将发动进攻. 又跟4位撤退的将军说, 我们支持撤退, 一统计, 5票进攻, 6票撤退, 立马撤退. 这场战争必输无疑了.避免这种状态不同步的问题, 我称之为"广义拜占庭将军问题".

解决方法比较复杂,可以写一篇论文。

区块链是什么,如何简单易懂地介绍区块链?https://www.zhihu.com/question/37290469
拜占庭将军问题深入探讨http://www.8btc.com/baizhantingjiangjun/comment-page-1#comment-94485
如何理解拜占庭将军问题?https://www.zhihu.com/question/23167269

2.3 区块链

2.3.1建立一个去中心化的系统。

在人群中

A借了B100¥,A大喊,"我是A,我借了B100¥"
B大喊:我是B,A借给我100¥
大家听到了,拿个小本本记住

image.png

这是个去中心的系统,如果B赖账了,只要问一下吃瓜群众,假定吃瓜群众绝对诚实可靠,他们会一致给出结果:A借给B 100¥。

到这里,其实系统里记录的是不是100¥已经不重要的了,可以是任何东西。比如,查克拉。A借给B100¥,吃瓜群众和A,B也许都不知道是什么鬼东西,然而他们记录了下来。就行了。

时光荏苒,我创造的查克拉已经在系统中流通起来了,得到大家的认可,整个系统只有有限个查克拉,然后有人动了坏主意。自发在人群中高喊:我有十个查克拉。大家不加甄别的记录下来怎么办?这样查克拉的权威性就没有了,大家都可以自己造。

为了甄别,对每一句喊话我们都做标记,第一句喊话:我造了10个查克拉,我们记为原始块,记录hash,然后对于接下来的每一次对这次原始块的流通(喊话)都要加上一个指针,指向上一句话,结果就是一个单链表

image.png

这里基本的比特币模型就建立了

2.3.2奖励机制

然后,为了鼓励吃瓜群众帮助记账
第一个记录的小朋友可以得到一笔奖励金,比如一个查克拉,这是系统对你辛苦记账的奖励。你记录好了,就对整个系统广播:我记录好了。

当这个规则定下以后,这个系统中一定会出现一批人,他们开始竖着耳朵监听周围发出的声音,以抢占第一个记账的权利。对的,你脑海中是不是又浮现出了“比特币挖矿”的字眼?

2.3.3 唯一正确

在这个系统中,如果我和另一个人C几乎同时地喊出一句:“为了艾泽拉斯!”。由于听众所处的位置不同,一定会有人先听到我说的那句话,而另外一些人则先听到C的那句话,如果我们规定只能有一个人说出这句话,那到底这句话是谁说的?如果不加任何条件,那么上述的情况一定会这样发展:一部分人认为这句话是我说的,在听到这句话之后开始记账,之后他们所做的所有事情都是基于这个事实,并且随着这个信息一次次的传下去,这条信息链会越来越深;而另外一群认为是C先说这句话的人,也会按照这样的趋势发展。这样,原本是一条唯一的信息链,在我们喊出“为了艾泽拉斯”这句话之后,分叉了!?

image.png

这会导致怎样的情况呢?按照我们的设想,应该每个人的小本本上记录的东西都是一样的,都是一条可以把所有信息串联起来的链条。但是在这一刻,他们小本本上记录的东西不一样了!这还玩毛啊?以后还怎么确定交易和信息的真实性!?

为了解决这个问题,我又追加了新的规则:,每个人至少需要10分钟才能写完,而且由于每个人完成的时间是不一致的,写完这句话所用的时间也不同,因此一定会有人先写完然后高呼“我写完了!那句话是LaiW3n喊的!”,这样其它正在写这句话的人便会停笔,然后在小本本上重新开始写“那句话是来文写的,上一句的编号是xxx”。

区块链是什么,如何简单易懂地介绍区块链?https://www.zhihu.com/question/37290469
拜占庭将军问题深入探讨http://www.8btc.com/baizhantingjiangjun/comment-page-1#comment-94485
如何理解拜占庭将军问题?https://www.zhihu.com/question/23167269

2.3.4区块链的定义

某度上的教科书式定义大家自行查找。
给出知乎上某大牛的理解:

1, 区块链是一个放在非安全环境中的分布式数据库(系统)。

2,区块链采用密码学的方法来保证已有数据不可能被篡改。

3,区块链采用共识算法来对于新增数据达成共识。

具有以上三个性质的系统,就是区块链。

以太坊

http://ethfans.org/wikis/%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%99%BD%E7%9A%AE%E4%B9%A6

以太坊
上一篇下一篇

猜你喜欢

热点阅读