两万字深度长文!从原理到趋势,解剖风口上的区块链技术文| 川来源| 怪诞笔记,ID:xiaochuan_future编辑| 扑克投资家,转载请注明出处前言:区块链不是一项新技术,而是一个新的技术组合。
其关键技术包括P2P动态组网、基于密码学的共享账本、共识机制、智能合约等技术;科技史上大部分创新都是与生产力有关的,提升效率,让人做更少工作,让机器做更多工作;区块链带来的最主要的颠覆却是生产关系上的;互联网实现了信息的传播,区块链实现了价值的转移;区块链可以看作是“价值互联网”的基础协议,类似于“信息互联网”的HTTP协议,二者都是建议在TCP/IP协议之上的应用层协议;区块链并不是一个全能技术,在某些应用领域里相比传统技术并不具备明显的技术优势,因此创业者及投资机构都需要考虑技术适用性问题;区块链底层技术及协议层可能出现几家平台型公司;但大部分投资机会在于应用层,即基于行业应用的“区块链+”项目。
9月4日央行等7部委下发的《防范代币发行融资风险公告》将ICO定义为非法融资,不论机构和个人都不建议参与此类项目。
Part One:区块链基础知识&区块链和区块链技术“区块链就像一台魔法计算机,任何人都能够上传程序并自我执行,程序执行前和执行后的所有状态都公开可见,密码经济学为程序严格按照协议执行提供了机制保障。
”——Vitalik Buterin狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本(分布式数据库)。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
如何理解上述定义呢?1) 一个分布式的链接账本,每个账本就是一个“区块”;2) 基于分布式的共识算法来决定记账者;3) 账本内交易由密码学签名和哈希算法保证不可篡改;4) 账本按产生的时间顺序链接,当前账本含有上一个账本的哈希值,账本间的链接保证不可篡改;5) 所有交易在账本中可追溯。
&区块链特征区块链是一种共享的分布式数据库技术。
尽管不同报告中对区块链的介绍措辞都不相同,但以下4个技术特点是共识性的。
1) 去中心化(Decentralization):区块链由众多节点组成一个端到端的网络,不存在中心化的设备和管理机构,任一节点停止工作都会不影响系统整体的运作。
图2的左侧描述了当今金融系统的中心化特征,右侧描述的是正在形成的去中心化金融系统;2) 去信任(Trustless):系统中所有节点之间通过数字签名技术进行验证,无需信任也可以进行交易,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点;3) 集体维护(CollectivelyMaintain):系统是由其中所有具有维护功能的节点共同维护的,系统中所有人共同参与维护工作;4) 可靠数据库(ReliableDatabase):系统中每一个节点都拥有最新的完整数据库拷贝,单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。
区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。
简化起见,上图展示了6处保留数据库副本的节点;在3个交易序列中,前2个交易的数据和签名得到了所有6个节点的验证,但第三个交易的位置5没有通过验证,将被其它节点的“一致意见”更改。
&区块链分类以参与方分类,区块链可以分为公有链、联盟链和私有链;从链与链的关系来分,可以分为主链和侧链。
1) 公有链(Public Blockchain)公有链通常也称为非许可链(Permissionless Blockchain),无官方组织及管理机构,无中心服务器,参与的借点按照系统规格自由接入网路、不受控制,节点间基于共识机制开展工作。
公有链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。
在公有链中的共识机制一般是工作量证明(PoW)或权益证明(PoS),用户对共识形成的影响力直接取决于他们在网络中拥有资源的占比。
公有链一般适合于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B等应用场景,比特币和以太坊等就是典型的公有链。
2) 联盟链(Consortium Blockchain)联盟链是一种需要注册许可的区块链,这种区块链也称为许可链(Permissioned Blockchain)。
联盟链仅限于联盟成员参与,区块链上的读写权限、参与记账权限按联盟规则来制定。
整个网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入,共识过程由预先选好的节点控制。
由于参与共识的节点比较少,联盟链一般不采用工作量证明的挖矿机制,而是多采用权益证明(PoS)或PBFT(Practical Byzantine Fault Tolerant)、RAFT等共识算法。
一般来说,联盟链适合于机构间的交易、结算或清算等B2B 场景。
例如在银行间进行支付、结算、清算的系统就可以采用联盟链的形式,将各家银行的网关节点作为记账节点,当网络上有超过2/3的节点确认一个区块,该区块记录的交易将得到全网确认。
联盟链对交易的确认时间、每秒交易数都与公有链有较大的区别,对安全和性能的要求也比公共链高。
由40多家银行参与的区块链联盟R3和Linux基金会支持的超级账本(Hyperleder)项目都属于联盟链架构。
目前国内有影响力的区块链联盟——中国分布式总账基础协议联盟(ChinaLedger)、中国区块链研究联盟、金链盟(金融区块链联盟)等——也都在致力于开发联盟区块链项目。
3) 私有链(Private Blockchain)私有链建立在某个企业内部,系统的运作规则根据企业要求进行设定。
私有链的应用场景一般是企业内部的应用,如数据库管理、审计等;在政府行业也会有一些应用,比如政府的预算和执行,或者政府的行业统计数据,这个一般来说由政府登记,但公众有权力监督。
私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击,这个在传统的系统是很难做到的。
4) 侧链(Side chain)侧链是用于确认来自于其它区块链的数据的区块链,通过双向挂钩(TwoWay Peg)机制使比特币、Ripple币等多种资产在不同区块链上以一定的汇率实现转移。
所谓“多种资产在不同区块链上转移”其实并不会实际发生。
以比特币为例,侧链的运作机制是,将比特币暂时锁定在比特币区块链上,同时将辅助区块链上的等值数字货币解锁;当辅助区块链上的数字货币被锁定时,原先的比特币就被解锁。
侧链进一步扩展了区块链技术的应用范围和创新空间,使区块链支持包括股票、债券、金融衍生品等在内的多种资产类型,以及小微支付、智能合约、安全处理机制、真实世界财产注册等;侧链还可以增强区块链的隐私保护。
&区块链产业链区块链产业链主要包括基础网络层、中间协议层及应用服务层。
1) 基础网络层基础网络层由数据层、网络层组成,其中数据层包括了底层数据区块以及相关的数据加密和时间戳等技术;网络层则包括分布式组网机制、数据传播机制和数据验证机制等。
2) 中间协议层中间协议层由共识层、激励层、合约层组成,其中共识层主要包括网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要包括各类脚本、算法和智能合约,是区块链可编程特性的基础。
3) 应用服务层应用服务层作为区块链产业链中最重要的环节,则包括区块链的各种应用场景和案例,包括可编程货币、可编程金融和可编程社会。
Part Two:区块链核心技术区块链技术:指多个参与方之间基于现代密码学、分布式一致性协议、点对点网络通信技术和智能合约编程语言等形成的数据交换、处理和存储的技术组合。
&数据层:设计账本的数据结构1) 核心技术之:区块+ 链从技术上来讲,区块是一种记录交易的数据结构,反映了一笔交易的资金流向。
系统中已经达成的交易的区块连接在一起形成了一条主链,所有参与计算的节点都记录了主链或主链的一部分。
每个区块由区块头和区块体组成,区块体只负责记录前一段时间内的所有交易信息,主要包括交易数量和交易详情;区块头则封装了当前的版本号、前一区块地址、时间戳(记录该区块产生的时间,精确到秒)、随机数(记录解密该区块相关数学题的答案的值)、当前区块的目标哈希值、Merkle 数的根值等信息。
从结构来看,区块链的大部分功能都由区块头实现。
概括来看,一个区块包含以下三部分:交易信息、前一个区块形成的哈希散列、随机数。
交易信息是区块所承载的任务数据,具体包括交易双方的私钥、交易的数量、电子货币的数字签名等;前一个区块形成的哈希散列用来将区块连接起来,实现过往交易的顺序排列;随机数是交易达成的核心,所有矿工节点竞争计算随机数的答案,最快得到答案的节点生成一个新的区块,并广播到所有节点进行更新,如此完成一笔交易。
2) 核心技术之:哈希函数哈希函数可将任意长度的资料经由Hash算法转换为一组固定长度的代码,原理是基于一种密码学上的单向哈希函数,这种函数很容易被验证,但是却很难破解。
通常业界使用y =hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。
常使用的哈希算法包括MD5、SHA-1、SHA-256、SHA-384及SHA-512等。
以SHA256算法为例,将任何一串数据输入到SHA256将得到一个256位的Hash值(散列值)。
其特点:相同的数据输入将得到相同的结果。
输入数据只要稍有变化(比如一个1变成了0)则将得到一个完全不同的结果,且结果无法事先预知。
正向计算(由数据计算其对应的Hash 值)十分容易。
逆向计算(破解)极其困难,在当前科技条件下被视作不可能。
3) 核心技术之:Merkle树Merkle树是一种哈希二叉树,使用它可以快速校验大规模数据的完整性。
在区块链网络中,Merkle 树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得Merkle 树改变。
4) 核心技术之:非对称加密算法非对称加密算法是一种密钥的保密方法,需要两个密钥:公钥和私钥。
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,从而获取对应的数据价值;如果用私钥对数据进行签名,那么只有用对应的公钥才能验证签名,验证信息的发出者是私钥持有者。