风生水起的区块链研发,相关应用成熟落地后是否具有颠覆效应虽未可知,但改变是一定的,尤其是在特征上有天然契合性的金融业。那么,即便作为普通的金融用户,也有必要从起源、到技术、到应用,来个通俗易懂的系统了解。
中望金服联合创始人兼首席技术官仝永波带你从头认识黑科技一般的区块链。本分享分三大部分推出,本文为第一部分:区块链的起源、技术点。
从前有个比特币。。。
2008年在金融危机期间出现了一个叫比特币的东西,区块链就是作为比特币的底层技术受到关注的。它是通过分布式的P2P网络部署的一个系统,就是点和点之间完全对等。咱们都用过P2P的下载,电驴什么的大多是都是P2P的模式,再一个是把数据打包,打到一个block里头,用这个block通过一个链式串联起来,头一个block指向下一个,并且每一个block里面都打上签名,打上上一个block的哈希值,就这么穿插起来,成一个链式存储,并且这个链式存储是在每一个结点上都有一份,实际上就是这么一个结构,所以它这个区块链就是一个区块加链,它通过数字签名保证数据的真实性、实时性和实际性。
比特币大火,带起了人们对区块链的关注。所以要说区块链,还是先从比特币架构说起。比特币的架构有两个关键点,一个是网络,一个是整个交易的流程。它的网络是一个点对点的P2P网络,这里面没有通讯节点。大家知道最早的音乐共享,后来的P2P下载,这些都还是信息共享。但在这上面他共享的是价值,和信息不一样,是不可复制的。你发送一个比特币给另一个帐户,是以另一个帐户的公钥地址作为接收地址,把你的交易、把你的钱发过去,全网会先把这个交易通过这个人的钱包到这个节点上,你的钱包你自己会有一个证书,节点要做验证,验证完了以后它会发到全网去广播。广播的时候这个交易算不算数呢,能不能往链上写呢?这个时候就要做一个所谓的POW,POW是一个共识算法,就是proof of work. 基于这个工作量,谁算出来那个值,哈希值就获得了这个记帐的权利,他就会把这个block写到链上,生成下一个区块,把上一个区块关联上来,然后在全网广播。其他的节点收到以后会去做验证,所以这里有0确认、有1确认、有6确认,比特币为了做到最终的拜占庭容错,确认的时间越长,双花问题的可能性就越低,大概是这么一个过程。
比特币要解决的问题,一个是货币的唯一性,货币的所有权、所属权,他的唯一性在于每一个哈希值代表了货币唯一的序号。所属权最终是通过整个网络里所有节点的分布式共享帐本,去记录所属权。虽然解决了唯一性,解决了所属权,但没有解决拜占庭和双花这两个问题。为了解决这两个问题,一个是要多人投票,再有一个是验证机制,多人投票就是刚才讲的,多个节点对验证结果进行投票。因为有时候会出现分叉,整个链条是一个结点指向下一个结点的,由于整个网络不是同步的,他是异步的,异步的时候就有可能会出现分叉。收到的时间长短不一样,或者里头有人故意做一些什么,所以就可能分叉。最终要解决这个问题的话就需要通过工作量证明,算力高的分叉逐渐就会比算力低的分叉生成的链条长。
比特币的关键技术
比特币的关键技术,刚才讲了大概的流程或者说是他解决数字货币的方法,归纳一下,整个比特币里头有这么几个层次,从软件站的角度来看有这么几个内容。
最底层就是整个网络层,它解决的是对等网、P2P总网的功能,这个是一个老技术。网络是不是够稳定,传输是不是更高效,发现节点离开怎样传播,这是P2P的一个网络算法。
第二个是加密层,就是哈希的一些算法。哈希有很多种算法,比如MD5、椭圆算法等,到底哪个哈希算法更难破解或效率更高?数字签名还有一个非对称加密(当然也有一些对称加密),这个都是加密层。
再往上就是数据层,在数据层,它的数据怎么组织的?一个是链式结构,一个block指向一个block这么一个链式结构;以及区块内的数据怎么组织的,多少个交易会记一个区块,如果每个交易记一个区块,最后可能没法工作了,对于供应链来讲,肯定是合并很多交易记一个区块。但这个也会带来一个问题,就是整个区块你交易的确认时延也会比较长,在现实中怎么用?大家知道,如果比特币的交易,一般都要10分钟以上你才能真正确认这个节点被全网接受了、被确认了,你才真正拿到钱,否则就有可能有各种问题。也就是你要买一个东西,你得等10分钟以后再说,这就是比特币。
再一个就是默克尔树,它是个什么东西呢?是存储哈希值的一个树,不一定是二叉树,但是用的最多的,还有各种各样的结构。就是把一个数据块分成很多份哈希,哈希完了,哈希的结果组织起来,再哈希,一层一层往上,最后到底找到一个根,这样的话就是一个哈希数。这个哈希数,你可以把它当成一个数据库去看,里头的每一个东西你都改不了。因为经过层层哈希,我只要拿到默克尔树的根,底下所有的东西都是定了的。所以在数据层存储中,默克尔树被广泛采用。在很多节点同步的时候,可能不用一开始就把所有数据都同步下来,只要拿到那个根,就能确定数据不会被篡改。
再往上是核心层,虚拟机制以及验证的机制,往上还有应用层怎么做发行,整个链的代码,大概的比特币的技术就是这样的,这个大家可以到网上下比特币的原代码去看。从比特币能看到区块链的一些特征,现在的区块链很多是从比特币的区块链改造过来的。区块链这个词并不严谨,不单指比特币,也不单指某一个链,就是以block和chain的这种链式结构组成起来的P2P总网的这么一个技术。
区块链的特点
从区块链的特征来看,这几个特征也是它的优点或者功能。
一个是可追溯性,因为它是链式结构。所有的东西都可以追溯。
第二是防篡改,一经写就,历史的记录谁也改不了,它是单向写入的。其实这个叫不可篡改也不对,而是难以篡改。从修改的角度来看,只是难度比较大而已。
第三是智能合约。比特币的时候还不是智能合约,比特币只有一些简单的脚本,后来形成虚拟机。比特币也有虚拟机,但是现在很多的区块链会有图灵完备的虚拟机。所谓的智能合约就是一段代码,这段代码和数据一样,也是不可篡改的,并且这段代码的执行也会被链上的参与者集体维护。简单说,把权利和义务关系给他实现为一段代码,这就是智能合约。很多东西权利、义务都可以变成代码,比如很多数字化的资产包括比特币,只要约定好某个时候时候你给我钱,那么到期后会被自动执行,你的钱就到我的帐户里了,这就是一段代码的执行。
第四、就是自治性,它是一个分布式的共识,都是自治的,不需要第三方或者某一个政府机构去决定,完全是分布式达成的。
区块链的这些特点,让它的数据写入不可伪造,数据存储非常安全,易于审计和追踪。比特币或者公链甚至一些私链,都有这些特点。那么,它能解决哪些问题呢?
敬请期待第二部分,区块链的应用和相关项目介绍。