我在学习区块链(-)

前不久,踢球的时候把脚伤了,手术后绑着石膏在家呆了一个多月。这段时间公司老板体谅,在家办公,活也不多,落得轻松自在。有一次,看微信朋友圈的时候,无意间看到朋友提及区块链。之前也听过,当时没提得起兴趣去打听打听到底是个什么新鲜玩意。这下闲来了点兴致。不打听吧倒也罢了,一通了解下来,发现这东西现在火热得是从东到西、从南到北。

至于说区块链到底有多火,网上有很多的文章在说,区块链是多么革新、革命性的技术,可以如何如何地提高现有系统、业务,可以应用在社会应用的各个方面,等等。还说到,有多少多少的相关初创公司,有多少多少的投资,将产生多大的市场,等等。一直以来,我都没有一个确切的标准来判断一个新东西到底好不好、火不火,反正看了这么多的文章,我感觉火。于是,我找了些技术资料,想好好了解一下区块链到底是什么,说不定还可以和和稀泥。

从一开始,我就在想:区块链是什么?

大多数的定义都说区块链是分布式账本。我就好奇了,账本那不是财务管的东西吗,为什么说可以运用到各行各业?另外,提到分布式,那就要问了,和集中式有什么区别?有什么不同目的?接着,我得到了这样的回答:分布式账本的目的是为了去除第三方、中心化的单点控制,解决第三方、中心化的信任危机,从技术层面使得整个系统更加相互信任、更好地协作。区块链呈现出来的基本特点就是:协作式防范非信任用户,防止数据篡改。

其实,看到这样的回答,我更迷惑了。什么是信任危机?现在的业务怎么篡改数据?技术上如何实现协作式(分布式)?。。。结合比特币,我能想到的、可能的信任危机就是央行超发货币。其它的场景,比如保险公司作弊、银行挪用资金、证券经纪耍赖,等等,我都想象不出这其中的信用危机到底有多大,有多大的紧迫性需要区块链来拯救。

带着这些困惑,我进一步了解:区块链技术到底是什么样的?

区块链技术起源于中本聪的比特币(BitCoin)系统。主要包括:用户管理(加密技术)、共识机制(协作)、账本管理(一致性存储)、业务合约管理。也有其它一些解构方式,大同小异。用户管理主要是采用各种不同的加密技术、方案验证、保护用户身份,这个应该和现在很多系统中的用户管理类似。共识机制是区块链中最核心的模块,是所有系统参与者共同协作完成任务的行为规则,以保证分布式系统的正常运行。我个人理解,区块链中用户管理的最主要目的是甄别用户的可信任度,以此来搭配不同的共识机制,实现不同的区块链系统,满足不同的业务应用。举个例子,比特币系统或者以太坊(Ethereum)中,用户可以随意加入、离开,不需要(也不必要)对用户身份进行严格管理,用户的可信任度不高,或者说不可信任。需要配合特别的共识机制,才能保证系统的可靠运行。业界把这类系统称为公有区块链。因此,在这些系统中,采用PoW这样的经济博弈共识机制。与之不同的例子,就是联盟链、私有链,如Hyperledger的Fabric,系统中的用户通过严格的加密认证机制,确保具备一定的可信度,配合Paxos、Raft、拜占庭等等共识机制,避免了PoW机制的资源浪费,同时提高了系统运行效率(如:单位时间处理交易的数量)。在私有链中,由于用户可信度更高,甚至可以采用更激进的共识机制。

账本管理是如何管理系统中交易记录(数据)。首先,通过共识机制生成区块(Block),然后将交易数据存放的区块中、发送给所有的系统用户。用户对区块进行验证后,将区块添加到以前区块的尾部,形成本地区块链(Block Chain)。因此,每个系统用户都保存一份完整的系统区块链,并且所有用户的区块链内容都一致。通过Merkle Tree机制验证区块链数据的有效性,防止篡改。我个人认为,每个系统用户保存一份完整的区块链账本,其实是对存储资源的极大浪费。同时,区块要传输给所有用户,也是对网络带宽资源的极大浪费。听说有SPV机制,后续会研究一下。

业务用户可以通过业务合约管理自定义业务逻辑,并部署在区块链系统上。底层的区块链系统确保合约的正确执行,以及保证业务数据的真实可靠。

通过上面的技术了解,又迫使我使劲地想:区块链到底是什么?要解决什么问题?基于我目前有限的了解认识,我想初浅地说说我个人认识的区块链的是与不是。

区块链到底是什么?

首先,区块链是一个可信任系统。区块链的目的是建立信任,或者说防止作恶(包括失效)。加密认证的用户管理、分布式的共识机制、链模式的交易数据管理等等,都是搭建该信任系统的具体技术手段。目的是为了提供一个可信任系统应该具备的基本特征:用户行为合法,用户数据真实有效。换句话说,如果所有用户及其行为都是可信、合法的,也就没有区块链什么事了。

其次,区块链是一个可信任的业务平台。这里就要说到区块链中的智能合约。区块链系统提供给业务用户一个可信任的平台,用户可以开发、定义、部署自己的业务逻辑合约。区块链系统保证正确、真实、有效地执行该业务合约。因此,我个人更倾向于将智能合约从区块链中分离出来。

再次,从数据(data)生命周期看,数据经历:产生,存储,计算(被使用),再生产,再存储,再计算…。当前的大数据、人工智能是在利用数据进行分析、挖掘,是数据计算、被使用。存储系统用于存储数据,但并不解决(也不应该解决)数据被篡改等应用相关问题。而数据的产生则处于一个无序的状态,任何数据都可以被写入系统并进行存储、计算。写入数据是否有效、合法不得而知、也无法保障。因此,区块链是在试图解决数据产生的合法性和存储的真实有效。合法性是指数据的生成是经过系统大多数认可并同意的。这一点也许将来能反馈到数据计算的环节,提高计算的有效性。

区块链不是什么?

首先,区块链不是一个分布式系统(或者分布式账本啥的)。对比分布式和去中心化的说法,我更倾向后者。为什么这么说,大家可以仔细想想什么是分布式系统,有什么基本特征。粗浅通俗的说,分布式系统能够将一个任务分割成若干小任务,协同、并行地在系统中进行调度执行。所以,任务分割、多任务并行是分布式系统的基本功能。分布式系统中的资源越多,其性能、容量会随之增加。再看区块链,虽然其共识算法是基于分布式协作,但是该系统并没有提供分布式的基本功能。整个区块链系统通过协调合作,目的是完成对单一区块链(Block Chain)的合理、可信、有效的操作控制。这更像是多进程协作中的一种锁机制。增加用户资源,并不能扩展这个系统的性能容量。相比来说,区块链是去中心化系统的说法更合理些,但是也有局限性。去中心化是区块链目前的一种表像,目的是增加信任、防范单点失效现象发生。但是,中心节点是否应该去除、能否存在于区块链中,如何存在,这些问题都还在争论中。随着联盟链、私有链的发展,我想去中心化这个概念也会被挑战。

通过上面的学习和认识,我在想,区块链可以应用到哪些方面呢?

如果我们都同意说,区块链是一个可信任系统。顺理成章,区块链最应该被应用到那些对信任高度依赖的业务,如金融、版权、征信等。按照这个逻辑,那些并不依赖信用的行业,根据业务需求应该有更多的技术选择。从另一个角度来说,区块链的出现驱动了更多行业进行数字化、信息化升级,从而提高效率、降低成本。之后肯定会出现更多的技术供市场选择。

从目前的区块链技术来说,应该分为两大类。一类是代币式区块链,如比特币、以太坊等等;另一类是非代币式区块链,如Fabric、小蚁、腾讯等等。两者区别其实挺大了,我相信发展方向和应用场景也会有很大的不同。腾讯刚发布了白皮书,表明了非代币式区块链的立场。我个人也比较看好这一类。等我进一步学习后,再具体聊这一块。

先聊到这里吧,我也是刚开始学习没多久,认识理解上有局限,欢迎更多的讨论、争论。后面会深入学习区块链的技术,到时候再分享学习心得。

    原文作者:Elsie_2015
    原文地址: https://www.jianshu.com/p/4335e9a661a7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞