Posted by on 2017年4月10日

[隐藏]

最近由于工作需要,对区块链(Blockchain)做了一些比较简单的调研,于是我决定自己动手整理一下区块链相关的知识,便成了这篇小文。

区块链涉及的知识比较庞杂,包络分布式系统、密码学、博弈论、网络安全、网络协议等知识。对其应用层面的理解又会涉及经济学、金融学等方面的知识,因而要真正理解区块链其实是有一定困难的。要彻底说清楚区块链就更加困难。本文只是对区块链相关知识做了个梳理和介绍,希望能够给对区块链感兴趣的朋友有一些帮助。

其实在整理这篇文章的过程中,我发现区块链的核心是分布式系统(Distributed System)和密码学(Cryptography)。这两个领域中,分布式系统与我感兴趣的机器学习(Machien Learning)有些许关系,毕竟都在数据科学(Data Science)的技能树上。但是他们又确实离机器学习有点远。Prof.Zhao的一句话确实让我感受很深:“做研究要有深度,但是还要有一定的广度”。是的,有些知识触类旁通,既然和感兴趣的方向有关联,做些调研也并不是浪费时间的事情。

1.前导

区块链有三大核心技术:
1. 分布式数据库:提供了完整的历史数据(追本溯源);时间戳技术(记录无法篡改和伪造);分布式系统一致性(系统的永续性和可容错性)。
2. 非对称密码学:区块链技术的信任机制是建立在数学原理基础之上。这使得人们无需了解对方的基本情况仍然可以进行信任的价值交换,从而提高了系统的运营效率。
3. 可编程的智能合约脚本:脚本本质是众多指令的列表。在区块链中,脚本通常需要价值接收者具有公钥和签名。随着具体情形要求,脚本可以灵活变通生成其他运行条件,例如需要多重私钥等等。这让区块链技术可以处理一些无法预见的交易模式,不会在未来的应用中过时。

1.1.数字货币

数字货币(Digital currency, see Wikipedia)顾名思义是基于数字信息技术的货币,与实体货币相对。可以分为虚拟货币(Virtual currency)和加密货币(Cryptocurrency)。这个时候你一定会问,那么数字货币和实体货币有什么关系呢?

我们可能需要思考一下什么是货币(Currency)。通俗来讲,货币就是钱,是可以流通的、用于价值交换的媒介。价值交换的过程,我们通常称之为交易(Transaction)。而交易可以以账本为记录,那么账本账目的变化可以作为交易的依据。假设交易双方足够互相信任,完全可以在交易过程中免去货币,只做账本的更改。而账本可以数字化,基于数字化账本的交易媒介,我认为可以称其为数字货币。

1.1.1.货币的功能

货币本质是商品,可以用于价值交换。只是在漫长的货币演变史中国,出于对方便安全的需要,才渐渐出现了受大众承认的纸币以及硬币。但是只有受政府承认的货币才能称之为法定货币(Fiat Money)。

The main functions of money are distinguished as: a medium of exchange; a unit of account; a store of value; and, sometimes, a standard of deferred payment. Any item or verifiable record that fulfills these functions can be considered as money. -From Wikipedia "Money"

我们可以看出,只要能够满足“交易媒介、记账单位、储藏价值和延时付款标准”的都可以称之为货币。但是如今终究还是法定货币系统,诸如比特币的数字货币只能作为商品货币,像白银黄金一样。投资需谨慎。由于我们更关注的是区块链技术,在此不多赘述比特币等数字货币。

1.1.2.双重支付问题

双重支付(Double-spending)是一种失败的数字货币方案。现实货币的价值交割可以通过物理上的交割轻易完成,但是由于数字货币的零复制成本特性,很难真正完成价值交割。假如货币持有者将同一份电子货币同时交割给不同的接受者,那么这种交易被称之为“双重支付”。目前的“Double-spending”的解决方案包括:
1.在线中央可信第三方,即一个安全可靠的第三方记账机构,如各大银行的网上银行业务、支付宝等。前段时间的互联网金融(FinTech)主要集中在一块。
2.去中心化系统,如比特币(Bitcoin)。

对于第1种方案,在很多场景中很难找到这样的可信第三方,因此这类解决方案并不是特别方便。而对于第2种方案,货币如何防伪会成为关键问题。比特币是通过密码学原理解决了防伪问题,但是其价值是通过计算力来保证,而不是经济学上的货币价值的衡量标准。因此比特币很难被大多数人承认,而比特币的出现本身对于经济学是一种冲击。

今天我们更关心的并不是比特币,而是最开始出现在比特币中的一项技术--区块链(Blockchain)

1.2.分布式系统

A distributed system is a model in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal. Three significant characteristics of distributed systems are: concurrency of components, lack of a global clock, and independent failure of components.

分布式系统是联网计算机上的组件通过网络相互链接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同目标。分布式系统三个重要特征是:组件的并发性、缺乏全局时钟、组件故障的独立性

--From Wikipedia "Distributed Computing"

分布式系统几个主要的架构有:1. client–server;2. three-tier;3. n-tier;4. peer-to-peer。分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。并行计算和分布式系统经常被一起提及,希望之后有机会针对这个专门写一篇。而我们今天要讨论的区块链本质上是一种新型的分布式数据库。可参见【13】。想深入了解的朋友可以阅读George Coulouris 的《分布式系统概念与设计》

1.2.1.分布式一致性问题

分布式系统由于其特点会遇到一些常见的问题,其中最常见的就是一致性(consensus)问题。分布式一致性(consensus)是指对于系统中的多个服务节点,假设他们初始值一致,给定一系列操作,在一致性协议保障下,试图使得它们对处理结果达成一致【12】。什么意思?我们想象一下,很多个节点,不同的节点可能由于种种问题,数据并不相同,但是出于一致性的需要,我们想要让这些节点上的数据最终是相同的。该怎么办?这个问题就是“分布式的一致性问题”。

一致性问题的“强”描述如下:假设有一组处理器,每个都有初始值:
1. 可终止性(Termination):在有限时间内,所有无故障的进程最终会有一个结果;
2. 一致性(Consensus/Agreement):所有无故障进程会得到一致性的结果;
3. 合法性(Validity):一个进程做出的决定必须基于其他进程;
任何有这三个性质的一致性算法都可以说是能够解决“分布式一致性问题”的。而我们时常更关心的是一致性问题的“弱解”,即允许部分进程存在故障。

1.2.1.1.FLP不可能性原理

FLP 不可能原理:在网络可靠,存在节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。【14】

FLP不可能性原理,可以看做分布式领域的“测不准原理”【14】,最早由Fischer, Lynch and Patterson【15】三人于1985年提出。FLP不可能着重关注基于异步模型(asynchronous model)的一致性问题的“弱解”情况。FLP不可能原理可以概括如上所示。

1.2.1.2.CAP原理

对于一个分布式计算系统来说,不可能同时满足以下三点:
1.一致性(Consistence) :等同于所有节点访问同一份最新的数据副本
2.可用性(Availability):每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据
3.分区容错性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
根据定理,分布式系统只能满足三项中的两项而不可能满足全部三项

来自维基百科“CAP理论”

分布式计算领域一个重要的理论CAP理论如上所述,也就是说,当网络出现分区时,分布式系统很难兼顾一致性和可用性。

1.2.1.3.一致性算法

Paxos算法是Leslie Lamport于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。--维基百科“Paxos算法”

分布式系统一致性协议实际上只有一种,那就是Paxos。其他算法都是Paxos算法的延伸。而Paxos族算法包括:Basic Paxos, Multi-Paxos, Cheap Paxos, Fast Paxos, Byzantine Paxos等。这个部分非常有意思,详见我的另一篇文章《区块链初探-一致性算法》

1.3.密码学问题

密码学(Cryptography)是一个很古老的学科,可分为古典密码学和现代密码学。现代密码学不只关注信息保密问题,还同时涉及信息完整性验证(消息验证码)、信息发布的不可抵赖性(数字签名)、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。/p>

由于这部分非常庞杂,详见我的另一篇文章《区块链初探--密码学问题》

2.什么是区块链

区块链(Blockchain, see Wikipedia)本质上是分布式数据库(Distributed database),最早作为比特币网络的分布式记账本平台出现【11】。究其本质,区块链是端对端网络(Peer-to-peer network)和分布式的时间戳服务器(Distributed timestamping server)的线性链表。

2.1.区块链技术架构

区块链的技术架构目前并没有一个统一的标准,虽然如此但大致上是有共识的【16-18】。可以参照开放式系统互联通信参考模型(Open System Interconnection Reference Model,OSI)定义区块链架构如下:

区块链特点:
1. 去中心化、去信任化
2. 不可撤销、不可篡改

区块链基本原理:
1. 交易(Transaction):对去中心账本数据的修改;
2. 区块(Block):一段时间内发生的交易和状态,即对当前账本状态的共识;
3. 链(Chain):由一个个区块按照发生顺序串联而成,即状态改变日志;

2.2.区块链发展

区块链三个阶段【10】

Blockchain phases Description
Blockchain 1.0 Currency
Blockchain 2.0 Contract
Blockchain 3.0 Society

2.3.去中心化账本

去中心化的数字账本(decentralized digital ledger):即时消息传递(ad-hoc message passing)和分布式网络(distributed networking)。
去中心化账本特点:
区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。
不可撤销数据
价值交换协议(a value-exchange protocol)
技术上是哈希链嵌套着哈希链
每个区块记录着区块链上前一区块的有效交易批次号,该批次号以哈希码记录在梅克勒树(Merkle tree)上。
根据可信度挑选主链上的区块
每个peer有着最高评分版本的数据库
数据库的复制&信任

2.4.时间戳方案

时间戳方案(time-stamping schemes):工作证明系统(proof-of-work system, POW system,通过要求服务请求者进行某些工作(一般为电脑的计算)来阻止服务攻击和其他服务滥用(如网络上的垃圾邮件)的经济措施)

2.5.应用场景

区块链应用场景:
医疗记录(medical record)
数据溯源(proving data provenance)
交易处理(transaction processing)
征信和权属管理(royalty collection and management of copyrights )
资源共享

3.智能合约

3.1.什么是智能合约

智能合约(Smart Contract, see Wikipedia)

以区块链为技术基础的智能合约大体分三类【1】:一是“智能合约代码”,也就是常说的区块链代码。二是“智能法律合同”,即被用来指代该技术的特定应用,如用区块链来补充或代替现有法律合同的方式,成为智能合约代码和传统法律语言的整合,如Eris Industries双集成系统、Primaverade Fillipi加密账本交易法律框架和区块链联盟R3的智能合约系统Corda就是遵循该基本思路。三是“智能替代合约”,即用智能合约代码创建有商业价值的全新合同形式,如M2M(机器对机器)商业模式。智能合约的作用机理图如图1所示。如今国内外的智能合约研究进展可以概括为表1。

图1 智能合约运行机制

表1 国外主要智能合约项目及研究进展【1】

研究机构 智能合约项目 研发时间 项目介绍及进展
IBM 区块链智能合约系统 2015年9月 系统最终以开源软件形式发布,方便企业保存合约并保护合约内容的隐私性。
RSK Rootstock智能合约系统 2015年12月 点对点的开源智能合约平台,2016年5月已运行私人测试网络,预计12月发布开源代码的合约平台。
R3联盟 Corda智能合约系统 2016年2月 非区块链的分布式账本应用,记录了智能合约代码和人类语言法律文件的清晰联系,管理金融协议。
Linux 超级账本(Hyperledger) 2015年 区块链数字技术和交易验证的开源项目,主要运用于金融行业,荷兰银行利用该协议进行技术研发。
以太坊基金会 以太坊智能合约系统 2014年1月 下一代智能合约和去中心化应用平台,得益于智能资产可用来编程、开发智能合约协议。

3.2.智能合约常见安全问题

智能合约常见的安全问题包括:开发技术以及监管标准不统一、风险管理及危机应对场景不完善、涉及的法律责任界定不明确等。由于缺失大量可靠的实践数据进行验证测试,而如今区块链中智能合约涉及的交易量巨大,尚需更多的实践数据来对其系统稳定性等进行测试,以发现潜在的代码漏洞。例如2016年6月DAO遭遇黑客攻击,黑客利用DAO智能合约代码中一个递归调用函数的漏洞盗取了用户资金累计360万个以太币,近6000万美元。基于区块链技术的去中心化的智能合约将应用于越来越复杂的场景,其程序代码的复杂性和技术难度也将随之增加。因此智能合约代码风险尤其需要引起重视。

4.了解更多

Blockchain Protocol Analysis and Security Engineering 2017 Conference@Stanford: https://cyber.stanford.edu/blockchainconf
Collection of TED on Blockchain: https://www.ted.com/topics/blockchain
The Media Lab Digital Currency Initiative @MIT (A.K.A.: DCI@MIT): http://dci.mit.edu/

5.参考资料

1. 刘德林. (2016). 区块链智能合约技术在金融领域的研发应用现状, 问题及建议. 海南金融, (10), 27-31.
2. Kosba, A., Miller, A., Shi, E., Wen, Z., & Papamanthou, C. (2016, May). Hawk: The blockchain model of cryptography and privacy-preserving smart contracts.
3. Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Gollamudi, A., Gonthier, G., Kobeissi, N., ... & Zanella-Béguelin, S. Short Paper: Formal Verification of Smart Contracts.
4. Swamy, N., Hriţcu, C., Keller, C., Rastogi, A., Delignat-Lavaud, A., Forest, S., ... & Zinzindohoue, J. K. (2016, January). Dependent types and multi-monadic effects in F. In ACM SIGPLAN Notices (Vol. 51, No. 1, pp. 256-270). ACM. In Security and Privacy (SP), 2016 IEEE Symposium on (pp. 839-858). IEEE.
5. Luu, L., Chu, D. H., Olickel, H., Saxena, P., & Hobor, A. (2016, October). Making smart contracts smarter. In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (pp. 254-269). ACM.
6. Pettersson, J., & Edström, R. (2015). Safer smart contracts through type-driven development (Doctoral dissertation, Master’s thesis, Dept. of CS&E, Chalmers University of Technology & University of Gothenburg, Sweden).
7. Smart Contract Security: https://blog.ethereum.org/2016/06/10/smart-contract-security/
8. 区块链技术发展现状与展望, 袁勇, 王飞跃: http://html.rhhz.net/ZDHXBZWB/html/20160401.htm#outline_anchor_15
9. 从概念到底层技术,一文看懂区块链架构设计: https://cnodejs.org/topic/58044db0487e1e4578afb57e
10. Swan, M. (2015). Blockchain: Blueprint for a new economy. " O'Reilly Media, Inc.".
11. Nakamoto, S. (2008). Bitcoin: A peer-to-peer electronic cash system.
12. 区块链技术指南 yeasy@github: https://github.com/yeasy/blockchain_guide
13. Blockchains vs centralized databases: http://www.multichain.com/blog/2016/03/blockchains-vs-centralized-databases/
14. A Brief Tour of FLP Impossibility: http://the-paper-trail.org/blog/a-brief-tour-of-flp-impossibility/
15. Fischer, M. J., Lynch, N. A., & Paterson, M. S. (1985). Impossibility of distributed consensus with one faulty process. Journal of the ACM (JACM), 32(2), 374-382.
16. How Formal Analysis and Verification Add Security to Blockchain-based Systemshttps://cyber.stanford.edu/sites/default/files/shinichiromatsuo.pdf
17. The Four Layers of the Blockchain:https://medium.com/@coriacetic/the-four-layers-of-the-blockchain-dc1376efa10f
18. The 10 Layers of a Blockchain:http://cdn2.hubspot.net/hubfs/1935908/10%20Layers%20of%20a%20Blockchain%20Infographic-CIO%20Innovation%20Summit%202016.pdf

Posted in: Academic 無涯齋
48 views
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Comments

Be the first to comment.

Leave a Reply

返回顶部