[原]区块链技术学习笔记

标签: | 发表时间:2017-07-04 03:51 | 作者:russell_tao
出处:http://blog.csdn.net/russell_tao

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

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

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


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

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

因此,全量帐本解决了社会信任问题!特别对于金融供应链来说,原本的中心化服务企业可能大家都很难接受,而基于区块链技术后,小企业的顾虑没了,大企业考虑做大这个联盟可能更有利于谈判从而做大蛋糕!


全量帐本还带来一个副作用,就是数据透明,没有隐私!!!这对很多人来说是不可接受的。每一个节点都有所有人的数据,你敢把你何时何地消费了多少钱放在上面吗???


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


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


5、比特币的火爆原因,我认为,除了区块链技术本身的以上特性外,更多的是它的激励机制:挖矿奖励。即,确认出全网前1个小时左右所有交易的节点获取50比特币奖励(由于比特币总数固定,所以奖励额持续下降中)。这利用了人性的特点,而只要越来越多的人认可这个想象共同体,其价值就会出现。

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

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

第二,为什么消耗了计算力,就能证明我是乐意合作的呢?

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

所以,先证明对自己不利,将有利于大家可以合作,建立起信任关系。而POW就是认为,51%的计算力都来自于向往合作的好的节点,少数服从多数。而所有节点都在消耗计算力,就是在证明自己是愿意付出的。

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


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

作者:russell_tao 发表于2017/7/4 9:49:01 原文链接
阅读:10 评论:0 查看评论

相关 [技术 学习 笔记] 推荐:

[原]区块链技术学习笔记

- - 陶辉的专栏
1、区块链技术是一个解决了拜占庭将军(百度百科 拜占庭将军问题)节点的分布式数据系统. 这是它最大的不同,也导致了这个技术存在诸多限制. 做服务器端开发的程序员,都对zookeeper不陌生,我们解决分布式ACP问题时,寻找一致性解决方案时都会想到它. zookeeper实际使用了paxos的简化版算法(本文不展开,请参考我之前写过的两篇文章: paxos分布式一致性算法–讲述诸葛亮的反穿越 以及 paxos算法如何容错的–讲述五虎将的实践).

shell 学习笔记

- tiger - 游戏人生
将脚本目录加到 PATH 中. 在 dash 中如何进行字符串替换. 将 rst 格式文档转换为 blog 可用的 html 代码. shell 脚本虽然不是非常复杂的程序, 但对于首次接触的我来讲, 多少还是有些忌惮. 不过, 接触任何新事物都需要勇敢面对, 逐步树立信心. 我是冲着把脚本写好去的, 所以, 我的目标是能够写出友好, 健壮, 优美的脚本..

OAuth学习笔记

- 宋大妈 - FeedzShare
来自: 标点符 - FeedzShare  . 发布时间:2011年08月29日,  已有 2 人推荐. OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.

Vim学习笔记

- 临池学书 - C++博客-首页原创精华区
最近在学习Vimtutor中的相关内容,Vim的使用博大精深,很多命令一旦不使用就会忘记,下面把其中的没有使用到的相关命令做一个简单的总结,供以后复习使用. 至于常见的保存,插入等等命令,则不予记录,在以后的使用中加深练习即可. To change until the end of a word, type  ce (ce + 修正的单词).

jQuery学习笔记

- - ITeye博客
什么是jQuery,它能为我们做什么. jQuery是一个javascript类库或称之为javascript框架. 无需刷新页面从服务器获取信息. 简化常见的javascript任务. 为什么会如此流行或说得到大量用户群的支持:. 多重操作集于一行(避免使用临时变量或不必要的重复代码). jQuery利用了CSS选择符的能力,在DOM中快捷而轻松地获取元素或元素集合.

HTML学习笔记

- - CSDN博客推荐文章
超文本标记语言( 英文:HyperText Markup Language,HTML)是为“ 网页创建和其它可在 网页浏览器中看到的信息”设计的一种 标记语言. HTML被用来结构化信息——例如标题、段落和列表等等  点击打开链接. w3schools  点击打开链接 {语法大全,超赞.

JdbcTemplate学习笔记

- - SQL - 编程语言 - ITeye博客
1、使用JdbcTemplate的execute()方法执行SQL语句. 2、如果是UPDATE或INSERT,用update()方法.    JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等. spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现.

Activiti学习笔记

- - 企业架构 - ITeye博客
第一个Activiti的HelloWorld. 获取核心ProcessEngine对象 2. 根据需求,获取对应的服务实例 3. 使用服务方法,做事情 * * @author Administrator * */ public class HelloWorld {. // 加载核心API ProcessEngine.

Disruptor 学习笔记

- - 开源软件 - ITeye博客
Disruptor 是一个高性能异步处理框架,也可以认为是一个消息框架,它实现了观察者模式. Disruptor 比传统的基于锁的消息框架的优势在于:它是无锁的、CPU友好;它不会清除缓存中的数据,只会覆盖,降低了垃圾回收机制启动的频率. Disruptor 为什么快. 通过内存屏障和原子性的CAS操作替换锁.