区块链技术简介
本文主要针对Batman成员的讲解做出总结,介绍区块链技术的前景及应用。同时,若想了解区块链与智能合约相关论文,请参考本站博文物联网的区块链与智能合约。
为什么要学习区块链?
我们知道,互联网的进化之路在必然性、适应性和偶然性三个因素交织共同作用下,很难也不会处于完美的“分散、失控、自组织”状态下直线前进,更接近于螺旋状反复修正的路线。如互联网的初始阶段(NET1.0)是处于“分散、失控、自组织”的原始发展状态,并逐步由若干个有限分布的小网络逐步扩张成一个全球认同和接入的网络,同时也涌现了如FTP/BBS/GOPHER/WEB等丰富的网络应用。之后,以YAHOO的出现为标志,互联网进入以“集中”为特征的新阶段(NET2.0),在这个阶段逐步地引入商业化,并因为商业资本的逐利本性导致用户和流量由分散到很多小网站逐步趋向集中于少数大平台直至形成“垄断”。
互联网当前仍处于我们认为的NET2.0阶段,此阶段的互联网总体用户数和流量都得到了明显的指数级发展,但因为进化的适应性和偶然性,这个阶段实际上是偏离了初期的“分散、失控、自组织”状态而转向到资本利益主导的“集中、控制、被组织”的道路,如果这个偏离持续下去,互联网将进入“集中、控制、稳定”的死胡同,其进化将停滞。但非常幸运地是,2009年比特币(Bitcoin)横空出世,其底层的区块链(Blockchain)技术将此前的P2P、数字现金、非对称加密等技术巧妙地融合,在历史上第一个实现了“组织形式上去中心化、业务逻辑上却能保持完美一致性中心化”的创新特性,堪称“革命”。
区块链技术不只能用来“炒币”,相反,由于智能合约等的出现,其优势逐渐被人们认识到。区块链可以使原本仅能在安全中介环境下运行的程序,现在能在一个分布式的、不考虑中央授权的环境下,实现同样的功能,而这在以前是不可能的。NET 3.0是否会以区块链为代表?我们拭目以待。
区块链技术概况
背景
互联网上的贸易,几乎都需要借助可资信赖的第三方信用机构来处理电子支付信息,如支付宝付款依赖于其服务器的正常运行。这类系统仍然内生性地受制于“基于信用的模式”。区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。它基于密码学原理而不基于信用,使得任何达成一致的双方直接支付,从而不需要第三方中介的参与。
区块链是比特币的基础支撑技术,首次出现在中本聪(Satoshi Nakamoto)发表的“Bitcoin: a peer-to-peer electronic cash system”论文中。文中详细描述了如何建立一套全新的、去中心化的、不需要信任基础的点到点交易体系的方法,其可实现性已经被自 2009 年运行至今的比特币所证明。
比特币简介
由于区块链伴随着比特币诞生,这里对比特币进行介绍,
在银行系统的数据库里记录着跟我们身份ID对应的财产,称这样的记录为账本。如张三的卡10月1日转入1万元, 余额10万元。比特币系统可以类比为这样的账本,不同银行由单一的组织负责记录,比特币的记账由所有运行系统的人(即节点,可以简单理解为一台电脑)共同参与记录,每个节点都保存(同步)一份完整的账本。同时使用简单多数原则,来保证账本的一致性。举个例子:如果有人在自己电脑上把自己的余额从1万元改为1百万元,他这个账本和大多数人的账本不一致,就会被比特币系统认为是无效的。
任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功能:
- 钱包,允许用户在区块链网络上进行交易
- 完整区块链,记录了所有交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法性
- 矿工,通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖励
- 路由功能,把其它节点传送过来的交易数据等信息再传送给更多的节点
下面重点介绍交易。交易是将比特币从交易输入移至输出。输入是指钱币的来源,通常是之前一笔交易的输出。交易的输出则是通过关联一个密钥的方式将钱赋予一个新的所有者。目的密钥被称为是安全锁(Encumbrance)。这样就给资金强加了一个要求:有签名才能在以后的交易中赎回资金。一笔交易的输出可以被当做另一笔新交易的输入,这样随着钱从一个地址被移动到另一个地址的同时形成了一条所有权链。
如图,比特币交易过程可分为以下五步:
- 所有者A利用他的私钥对前一次交易(比特币来源)和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。B以公钥作为接收方地址。
- A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中。对B而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用。目前一笔比特币从支付到最终确认成功,得到6个区块确认之后才能真正确认到帐。
- 每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新比特币会在此过程中产生)。求解这个难题的过程也叫做“挖矿”,节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的Hash值以及交易单三部分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解。注意解并不唯一。
- 当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对。时间戳用来证实特定区块必然于某特定时间是的确存在的。比特币网络采取从5个以上节点获取时间,然后取中间值的方式作为时间戳。
- 全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。每个区块的创建时间大约在10分钟。随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短、随算力减弱而延长。其原理是根据最近产生的2016个区块的时间差(约两周时间),自动调整每个区块的生成难度(比如减少或增加目标值中0的个数),使得每个区块的生成时间平均是10分钟。
意义、特征与分类
有了以上知识作基础,现在我们尝试为区块链下定义:区块链是一个分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。它可以被存储为flat file(一种包含没有相对关系记录的文件),或是存储在一个简单数据库中。比特币核心客户端使用Google的LevelDB数据库存储区块链元数据。区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块。区块链经常被视为一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在其他区块之上。
从数据的角度来看,区块链是一种几乎不可能被更改的分布式数据库。这里的“分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录(即由系统参与者共同维护);而从技术的角度来看,区块链并不是一种单一的技术,而是多种技术整合的结果。这些技术以新的结构组合在一起,形成了一种新的数据记录、存储和表达的方式。它有如下四个特征:
- 开放,共识。任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。
- 去中心,去信任。区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。
- 交易透明,双方匿名。区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。
- 不可篡改,可追溯。单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。
区块链可分为以下三类:
- 公有链。无官方组织及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络、不受控制,节点间基于共识机制开展工作。
- 私有链。建立在某个企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性。
- 联盟链。由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特性。
展望
从2008年的比特币开始,区块链经历了可编程货币、可编程金融与可编程社会三大应用时代,其应用范围逐步扩展到社会生活的方方面面。从需求端来看,金融、医疗、公证、通信、供应链、域名、投票等领域都开始意识到区块链的重要性并开始尝试将技术与现实社会对接;从投资端来看,区块链的投资资金供给逐步上升, 风投的投资热情也不断高涨,投资密度越来越大,供给端的资金供给有望推动技术的进一步发展;从市场应用来看,区块链能成为一种市场工具,帮助社会削减平台成本,让中间机构成为过去;区块链将促使公司现有业务模式重心的转移,有望加速公司的发展;从底层技术来看,区块链有望促进数据记录、数据传播及数据存储管理方式的转型;区块链本身更像一种互联网底层的开源式协议,在不远的将来会触动甚至最后彻底取代现有互联网的底层基础协议。
结语
区块链不只能挖矿赚钱,它作为一个越来越被人们重视的工具、平台,也许会逐渐成长为计算机行业的下一个热点。错过炒币不可怕,但是这个热点,我们要迎头赶上。