区块链技术学习笔记

一、区块链技术是一个解决了拜占庭将军(百度百科拜占庭将军问题)节点的分布式数据系统!这是它最大的不一样,也致使了这个技术存在诸多限制。程序员

为了方便理解,先插个话题。作服务器端开发的程序员,都对zookeeper不陌生,咱们解决分布式ACP问题时,寻找一致性解决方案时都会想到它。zookeeper实际使用了paxos的简化版算法(本文不展开,请参考我以前写过的两篇文章:paxos分布式一致性算法–讲述诸葛亮的反穿越 以及paxos算法如何容错的–讲述五虎将的实践)。想搞明白比特币(成于区块链技术)的算法,应先弄明白paxos算法(便于对比),目前商用的方案中,咱们都假定服务器内网是不能被攻破的,因此,咱们主要解决的是网络传输的不可靠,包括丢包、重发、延迟等问题,以及服务进程的bug致使的服务宕机、重启等。若是内网被攻破,黑客恶意的在某个节点(服务器)伪造网络包,向正常节点发送有问题的数据包,这种场景一般是不考虑的。显然这很合理,企业内网间若是还作大量的安全验证,性能消耗就太大了,基于成本使得商业目标几乎没法达成。
算法

而公有区块链则是不一样的,好比目前最成功的比特币,它使用了POW工做量证实算法,这个算法容许网络中存在拜占庭节点!也就是说,网络中即便存在做恶的节点,只要这些做恶的节点小于总节点计算能力的50%,就还能保持一致性!固然这个一致性作得也不怎么样,可能存在分叉好一段时间(1小时甚至更高,其一致性的大小只能得到几率),并且数据的回滚很是糟糕。安全


二、区块链技术的另外一个核心特色是全量账本。即,每个节点都保持着全网数据!即,每一个节点、每台电脑上都保存着全部的数据。多么恐怖的代价!每台电脑的存储容量是有限的,以网络中最差的那台电脑容量为限制,几十个G就差很少了。存储的浪费是很惊人的!因此,别期望非数字账户的核心数据也能放到区块链网络上,或者仅放个索引,指向如今的网络存储设施。服务器

固然,区块链的核心优点也是全量账本,最好的也是最坏的!由于,每一个节点都维护全量数据,因此,全部节点本质上都是对等的!即,或许这个区块链网络中既有银联的超级服务器,也有我的开发者的公有云小主机,但你们的数据是相同的,谁也不能说数据出问题了必须以个人为准!网络

所以,全量账本解决了社会信任问题!特别对于金融供应链来讲,本来的中心化服务企业可能你们都很难接受,而基于区块链技术后,小企业的顾虑没了,大企业考虑作大这个联盟可能更有利于谈判从而作大蛋糕!分布式


全量账本还带来一个反作用,就是数据透明,没有隐私!!!这对不少人来讲是不可接受的。每个节点都有全部人的数据,你敢把你什么时候何地消费了多少钱放在上面吗???
性能


三、区块链技术还有个特色,就是全部的交易记录都是不可修改、不可删除的!这是其算法决定的。因此,这对于公益、扶贫、反腐等是颇有吸引力的,蚂蚁金服目前也只敢在公益上用用区块链技术。区块链


四、区块链技术底层使用了P2P网络技术,大量使用反对称加密技术(相信程序员们没有不知道SSL的)来验证基于公网的消息可靠性,基于哈希算法实现了如快速验证数据未被篡改等诸多特性(POW的工做量证实算法,核心就是哈希算法)。基于多种分布式网络的一致性算法。因此,区块链使用了一堆老技术,实现了新的理念!特别是对公有链和联盟链,这种思惟方式打造了技术上的社会信任体系!(私有链从这个角度来讲没有任何意义!)ui


五、比特币的火爆缘由,我认为,除了区块链技术自己的以上特性外,更多的是它的激励机制:挖矿奖励。即,确认出全网前1个小时左右全部交易的节点获取50比特币奖励(因为比特币总数固定,因此奖励额持续降低中)。这利用了人性的特色,而只要愈来愈多的人承认这个想象共同体,其价值就会出现。加密

固然,POW算法才是程序员们最感兴趣的。所谓工做量证实算法,就是全网的全部节点(电脑),都在拼命的消耗本身的计算力(其实就是消耗钱,包括买机器、显卡的钱,电费、房屋租金等等),以此证实我是乐意合做的。很难懂?

其实很简单:第一,所谓消耗计算力,就是挖矿,全部节点都在不停的挖矿,拼命的用CPU和GPU在运算哈希值,试图抢得新比特币奖励。

第二,为何消耗了计算力,就能证实我是乐意合做的呢?

先说一个心理学上的囚徒困境。想必你们港产黑帮片看得多吧?警察抓到2个相关的嫌犯时,最怕他们经过其余人、手机等设备互相联络上。若是联络不上,根据囚徒困境原理,双方都会基于为本身得到最大利益从而出卖对方。可是,一旦他们互相间能够沟通时,其中一个多半会经过描述一种对他很是不利的场景(你们能够想象,好比说:若是我出卖了你,必定会XXXX。固然经过言语没有效果,都会描述一种客观事实),向另外一个嫌犯证实本身不会背叛他。接着他们就创建了一种信任关系,警察就很难有成果。

因此,先证实对本身不利,将有利于你们能够合做,创建起信任关系。而POW就是认为,51%的计算力都来自于向往合做的好的节点,少数服从多数。而全部节点都在消耗计算力,就是在证实本身是愿意付出的。

因此,一旦出现一家机构掌握了比特币全网51%的计算能力,结果就是灾难性的!


六、联盟链目前看是区块链技术商用的最好方式。特别是跨国银行间的汇款等操做!信任问题,在跨越国家、法律、文化等多领域时才会剧烈地凸显出来,区块链的用武之地!