区块链技术

前言

最近基于区块链技术的产品可谓是疯狂至极,从比特币到以太仿再到ICO(Initial Coin Offering)。所以今天我也蹭个热度来聊一聊这些产品背后的技术问题-区块链。

1. 比特币

说到区块链,我们不得不从区块链的鼻祖-比特币开始讲起。比特币最初的设想开始于2008年,一个叫”中本聪”的人(至今不知其真实身份,也可能是个组织)在一个讨论组发表的一篇论文。他描述了如何通过点对点技术来实现交易双方在没有任何第三方参与的情况下进行在线支付。在2009年也就是论文发布的第二年特币系统诞生。与现有货币或者虚拟货币(比如Q币)相比,比特币有以下特点:

  • 去中心化:比特币产生或交易是否有效是由所有参与者达成的共识。它不像传统货币是由政府或央行信用作为背书,并由其掌握货币的发行权。

  • 隐私保护:比特币所有的交易记录都是可追溯的,但是其任何交易都是通过加密保证其不会被非法盗用。

  • 不可篡改:比特币任何的交易都很难被篡改。因为蓄意破坏的成本太高,破坏者需要控制整个系统一半以上的算力。

以上三点也是区块链的重要特点,它们是支持比特币的成为虚拟货币可行性基础。但是作为任何一种事物能否被市场认可,只靠技术是不完整的,所以说比特币能否成为全球认可的法币,它还有很多问题需要解决:

  1. 比特币总量的固定-2100万枚,这是很多人认为比特币的优点,它可以像黄金一样避免通胀,但是作为类金本位的货币如何避免通缩呢?

  2. 如何让现在集权的社会或政府去放弃现有的特权,这是比特币要成为全球法币最大的障碍。

  3. 如何避免比特币成为非法交易(洗钱、毒品交易、黑客勒索)的港湾,在缺乏监管的情况下,政府更不可能承认它的合法地位。

  4. 比特币目前的市值还是太小,这也是它最脆弱的时候(也就A股的万科市值),这时它很容易被一些机构或财团操纵,郁金香似的疯狂之后,就再难重塑之前信仰。

  5. 比特币是安全,但是其交易平台的不安全成为目前比特币生态的短板,如何保证交易平台的安全以变得至关重要。

但是无论最后比特币成败如何,它已经影响了数字化货币的历程,可以说它是数字化货币的先驱。

2. 区块链

区块链从技术上角度看它并没有像它的应用那么具有创新性和有颠覆性,只能说它是多种成熟技术的组合应用。区块链这个名字很有自注释性,它其实就是将每一个交易或提交都看做一个区块,并通过加密算法对区块的内容进行加密,然后将区块按一定规则连成链,任何被加入链中的区块都不可以被篡改。这种链式结构非常像git的管理方式(我在浅谈git中有涉及这块的介绍),只不过版本控制的需求对安全性并没有像数字货币那么高,而且版本管理很多大程度还依赖于人工的介入(合并或回滚分支)。下面我们来看看区块连的特点:

1. 去中心化-分布式

分布式系统的优点就是有很强的容错性,只要节点个数足够多,那么期望通过伪造或入侵节点来影响整个系统的正常运行会变得非常困难。因为每个节点都是功能完整且独立的个体,所以整个系统的风险都摊薄到了每个节点上。虽然每个节点都是微小的,但是每个节点对整个系统决定都有平等或至少是公平的影响力,这不正是现实世界中每个人都在追求理想境界吗?目前无论是社会的话语权和决定权都权掌握在少数人的手中,这就很容易产生寻租空间,从而滋生腐败或产生系统的内耗。所以说去中心化可以节省很多内耗成本。

2. 共识机制-一致性保证

分布式在去中心化问题上带来了很大的好处,但是其自身的特点,导致了系统一致性保障很难得到解决,比如下面的问题:

  1. 拜占庭问题:如何使每个节点在互不可见,互不信任的分布式环境下,做出最公平的的决定? 你可能会说用投票解决,以多数票作为系统的决定。可是真的大多数就是公平有效吗?比如67人投票,30人投反对票,37人投赞成票但是因为网络不稳定,其中10人的赞成票并未被统计又或是碰上恶意节点的伪造,那么最后的结果将与预期相反。

  2. 双花问题:在每个节点都有一份完整的区块链数据时,如何保证一个操作不会在不同的节点执行多次?比如像数字货币的支付,我怎么保证一个支付二维码或地址不会被重复多次支付

这些在中心化系统中非常容易解决,因为中心节点就有强大的决定权,它自订了所有决定的规则,所有终节点必须服从,因为所有数据都在中心节点,只要一个支付链接发生过交易,这个交易就会失效,下次中心节点或取决失效的交易地址。而在分布式系统中,我们必须实现一套共识算法来保证系统的一致性。

两阶段提交:这是分布式事务一致性保证最基础的算法,它引入了事务协调者,通过第一次试探性投票来统计所有节点的投票结果,根据第一次预投票的结果,事务协调者再次广播,告诉所有节点是提交还是回滚事务。两阶段提交发可以保证事务数据的一致性,但是他的决策节点依然有中心化的影子,而且它的可用性非常的差,事务的完成度很大程度依赖网络的稳定性。

工作量证明(PoW):比特币就是使用这种机制,系统将一个随机数的哈希结果广播给所有节点,节点通过大量的计算获得这个随机数,因为目前的计算机要获得结果需要消耗巨大的算力,所以这过程就像挖金矿不仅辛苦还要靠运气。如果一个节点算出结果,他就会生成一个带有时间戳的区块,并广播所有节点,大部分节点认证结果正确后,区块将被加入区块链中,所有节点进入下一轮计算。虽然不同节点在一个时间段其本地区块链可能不一致出现分支,但是最终所有节点都会同步到最长的那条区块链上。这种算法随着越来越多的节点加入,它的伪造成本会变得越来越大。但是不得不说比特币挖矿是一个巨大的资源浪费,所以它也只能应用在这个特定的领域,很难在其它商业应用。

权益证明(PoS)算法:ICO的共识机制,它通过那些在其中具有经济利益的人对区块链进行保障,这有点像投资公司,你投资金额越大,那你拥有项目的话语权的概率就越大,毕竟我投资那么大的资金,从理论上是希望区块链的发展是健康的,否则我自己也会血本不归。

区块链技术就是希望通过加密和共识算法构建一个自信任的系统,但是分布式系统要实现100%的一致性几乎不可能,更不用说适用所有商业的的共识算法。所以我相信在不久的将来,会有针对不同的行业或应用场景的算法被发明出来,它们往往是结合可用性取舍的结果。而这些算法很可能成为区块链应用的核心竞争力。

3. 安全性-密码学

在分布式系统中,安全性也是保证一致性的基础。因为每个节点都拥有完整的区块链,所以如何保证操作及私密信息的安全?以及如何在一个互不可见的系统中确认身份-自证我就是我

密码学中有一个非对称加密技术可以解决上面提到的两个问题,非对称加密拥有一套私钥和公钥,只要任何一把用一把密钥加密,就一定能用另一把密钥解密。比如在比特币交易过程中,我们可以让支付方用接收方的公钥对交易区块加密,这样即使所有节点的区块链中都有这份交易信息,但是只有真正拥有私钥的接收方才可以解密获得交易资金。自证问题正好相反,我们可以利用私钥的唯一性,让接收方将其账号用私钥加密,然后支付方用接收方的公钥解密,如果能成功,我们就可以放心的像这个账号汇钱了。

共识算法和加密技术是整个区块链自信任的基础。要知道在传统体系中,只有像央行、阿里、腾讯这样拥有足够资源的机构才可能实现信用体系的构建,而且建成后的维护成本也非常巨大。而这一切在区块链中感觉是其天然的属性。

4. 可编程性-智能合约

在所有的电子化共识都实现以后,智能合约就会变得水到渠成。其实智能合约在技术上就是一个简单的条件语句,当条件满足时就执行某段命令。比如货物一到,自动扣款,这些合约都会被编程进系统。当然所有这些的前提是数字资产(货币)被广泛认可,否则还是要依赖线下或中心化货币来履约,那么就违背了智能合约去中心化的初衷。

技术毕竟是束之高阁的东西(虽然区块链技术也不是什么高科技),只有最终的应用被市场认可了,才能产生出价值。下面我们看看目前区块链的市场应用 。

3. 区块链的应用

区块链的最早应用开始于金融-比特币。现在区块链的应用已经出现在很多领域,比如公共服务可以利用区块链技术减少中间成本;慈善可以通过区块链技术来保证善款使用的公平透明;物联网可以通过区块链技术大大降低网络构建的成本,让物联网的门槛变得像互联网一样容易,最终把蛋糕做得越来越大。从技术角度看区块将链没有太多门槛,但是它的确给我们固有的传统思维方式和习惯带来一次强大的冲击。如何给现有行业带来质的改变以及效率与效益的提升才是区块链应用最应该思考的问题,目前它的挑战依然很大,因为在目前的市场上传统模式拥有更大的话语权和市场主导权,它会是区块链进入市场的阻力。

后记

最后我相信区块链的定义还会随着技术和市场应用而继续得到补充,也许局部的中心化或局部的分布式的结合会慢慢的被市场接受,但是这个需要市场去选择。

(转载本站文章请注明作者和出处,请勿用于任何商业用途)

上一篇:设计模式-Composite模式
下一篇:设计模式-Bridge模式