本文已在 7/30 发表于《链闻》。发表时的标题略有修改:《从大数据和AI技术发展来看,跨链技术必要且必然》。
本文首先会对大数据和 AI 技术做一些概念扫盲,算是个小小的科普,也会涉及一些我认为有助于我们从本质上理解这些技术的关键点;我本人其实早就想聊聊这些内容,因为我见多太多人乃至很多公司都并不确切地知道这些最基本的概念,都只是在跟风或者被很多媒体、大公司的商业炒作所迷惑。所以本文的很多内容都可以看作是对从大众层面理解这些技术概念的误区的一种澄清。
当然,本文中也会聊聊我个人“略懂”的区块链以及时下热门的“跨链”话题,这也是我写本文的主要目的。希望本文能给专业的和非专业的朋友都提供一些有用的信息或者启发。
写作本文可以说是一时兴起,其中关于“跨链”的内容,灵感主要来自于前几天 Gavin Wood 博士说到的一个观点。
到底什么样的数据才是大数据
近些年,越来越多的企业、媒体在炒作“大数据(Big Data)”,我想无论是专业的技术人员还是普通大众,其实首先都要明确一个概念——到底多大的数据才能叫“大数据”?
我曾经供职于一家几乎所有中国人都知道的制造业公司,公司内部也曾说过要做大数据分析,要引入大数据概念内的技术工具和基础设施,其根据就是其业务数据量已经达到了 100 多 TB(1 TB 约等于 1 万亿字节)。但这显然忽略了一个重要因素,就是这 100 多 TB 数据是这家公司自成立以来的所有数据(20 多年的历史数据)。而 Facebook 每天产生的数据量早已超过了 10 TB,请注意,是每天。这是一个量级么?有可比性么?
所以我们谈“大数据”,最重要的指标其实在于“数据增量大”,或者叫做“数据增速大”。仅仅是历史数据量大,谈不上“大数据”,因为不管历史数据再多,他们都是“历史数据”,是不会再修改的数据,分析一次就完事了;而如果“数据增速大”,其绝对数据量自然也就会非常大,那么它对于数据分析工具和相关技术的要求也就会相应提高。
而当我们以“数据增速大”作为关键指标来筛选的时候,我们就会发现:其实目前市面上 99.9% 的公司所谓的“大数据”分析,都只是给 20 多年前就出现了的 BI(Business Inteligence,即商业智能,因为篇幅原因,这里不做展开介绍)业务换了个新马甲而已。真正能称得上是“大数据”的业务,大概只有那些全球化的数据信息服务,或者信息化的社会公共基础服务。前者的代表就是全球化的社交媒体/内容平台(Facebook、Twitter、微信、早期的微博)、搜索引擎(Google、百度)、高流量的电商平台(Amazon、淘宝)、高流量的支付交易网关、高活跃度的移动智能设备系统服务等互联网应用;后者的代表则是类似运营商、公共基础设施服务(比如交通、能源)等一般由政府控制的社会公共基础服务。
“大数据”的概念首次被提出是在大概 10 年之前,目前业内广泛认同的 3V 指标是衡量大数据的最主要指标,它们包括 Volume(数据量)、Variety(多样性)、Velocity(增长速度),后来有业内人士在 3V 指标的基础上增加了 Veracity(真实度)和 Value(价值),将其扩展为 5V 指标。而在大数据的多样性和高速增长特性的共同影响下,非关系型数据库(Nosql database)也得到了大量的应用和快速的进化发展。
此外值得一提的就是近年来得到飞速发展的物联网(Internet of Things)公司。基于大量的终端设备/传感器所采集/传输的数据是有可能达到“大数据”的级别的,只是目前能支持到“数亿”量级终端设备的公司还并不多,但这已经是一个可以看到的未来方向了。
显然,大数据并不是普通公司能玩儿的动的东西,说到底还是资本/资源的游戏。当然这里边的技术含量是有的,对技术人才的需求也是有的,只是这个方向大概真的不适合拿来创业。
要处理海量的、异构的、高速产生的数据,必然需要像诸如分布式数据仓库、数据清洗工具、数据建模工具、数据分析工具等等相关的技术产品和技术栈的支持,并不是个简单的工作;即使只考虑传统的 BI 技术栈,也是个技术活儿;市场需求是没问题的。但这些不是本文的重点,就不展开介绍了。
AI 又是什么
AI 就是人工智能(Arificial Intelligence),我想大部分人都知道了。所以这里我想再引入两个术语:神经网络(Neural Network)和专家系统(Expert System)。
目前如日中天的深度学习(Deep Learning)其实就是基于人工神经网络(Artificial Neural Network)理论发展进化而来的一套算法系统。那么神经网络是什么新鲜东西么?并不是。最早的对于用机器模拟人类神经活动的研究开始于 19 世纪末期,而现代人工神经网络的最初起源则来自于图灵在 1948 年发表的一篇论文。到上世纪八九十年代,神经网络的工程实现也有了一些进展,出现了一些雏形。近几年由 Google 引领的深度学习热潮,则是人工神经网络第一次接近实际应用的尝试,虽然它也还仅仅是一些相对比较成熟的算法而已。
目前知名度最高的深度学习项目就是 Google 的 Alpha Go 了,这个项目用在围棋领域已经造就了独一档的“AI 流”,它甚至引发了一些基础围棋理论的发展演进。但是,这个项目其实是一个目标在医疗领域应用的“专家系统”。所谓“专家系统”,就是用机器模拟人类的某个特定领域的专家来进行决策或者判断。专家系统同样不是什么新玩意儿。最早的专家系统出现于上世纪七八十年代,它们通常由两部分组成:推断引擎(Inference Engine)和知识库(Knowledge Base)。也就是基于大量的经验信息/数据/指标和其对应的结果,用算法引擎来根据新的输入数据模拟类似于领域专家基于经验进行的判断,供人参考。目前在医疗领域的一些深度学习项目,其推断的准确率已经超过了普通的医生,尤其是在一些高度依赖于对图形进行检查(对各种人眼不易识别的物理特性的判断)和一些指标相对非常明确的细分领域。
我们应该看到,目前的 AI 热潮,也只不过是新瓶装旧酒罢了;在像语义识别这种真正能体现“智能”的领域依然没有太多应用级别的东西出来,更不用说那些需要“创造力”的领域了。虽然在某些情况下,带有深度学习引擎的语音机器人、实体机器人听起来、看起来很“聪明”,但那依然只是训练了足够多的“专家”而已;它能给出正确的响应,并不是因为它“听懂”了,而是因为真实的输入满足了某些已知的条件,所以这当然不是真正的“智能”。这就像刚刚提到的 BI 并不“智能”一样,就像后文会提到的“智能合约(Smart Contract)”并不“智能”一样,不要被它们的名字骗了。
这里我需要强调:深度学习当然有它的价值,专家系统和其他相关的业务领域当然也有它的价值,我也无意贬低 AI。我只是想说明:深度学习其实仍然算不上是突破性的人工智能技术,它离真正的“智能”仍然有相当的距离,这是受限于目前的 AI 理论没有实质性的突破。专家系统(深度学习)的局限很明显,就是一定要基于大量的经验数据(训练数据),而这对于普通的公司和创业者而言就是难以逾越的天堑。
看懂了目前的 AI(专家系统)的本质之后,我们再来看 AI 和大数据(BI)的结合也就非常顺理成章了,是很自然的事。因为既然有了海量的数据,那就需要尝试从其中获得有用的信息,来分析趋势、进行决策和判断,这也是 BI 最初的、最本质的目的。而专家系统则需要大量的经验数据(训练数据),所以只有那些拥有大量有用数据的公司,才能训练出高水平的“专家”来。说“数据为王”,一点儿都没错;数据才是未来大公司的根本,是核心资源。
到这里,对大数据和 AI 的扫盲就基本结束了。你大概会问:你说的这些我都知道了,但大数据和 AI 是怎么和跨链(区块链)扯上关系的呢?别急,我们还得先聊聊关于区块链的几个基本概念。
区块链解决了什么问题
如果有人问你“区块链是什么”,你会怎么回答呢?相信大家已经在近几年各种媒体的狂轰滥炸下对区块链有了个印象,不过如果真要让你正式回答这个问题,我想很多人未必能说的明白。
因为我个人还是做技术的,所以我还是想再次从技术本质的角度来解释下这个问题。我认为:区块链就是把一个单向变化的无限不循环状态机放到一个分布式(对等)网络中对其数据进行冗余拷贝存储并验证的计算机系统。 这里我必须对那些非技术专业的朋友说一声抱歉,这是我能想到的最准确的(技术)定义了,但恐怕你们是看不懂的。
结合平时经常会被提及的的一些术语再稍加解释:
- 交易:也就是这个状态机中状态变动的原动力。交易可以是一个转账行为,也可以是一次对(自定义)数据的更改,这取决于各个区块链系统的具体设计。进一步说,交易还可以更泛化地理解为网络参与者之间的数据交互或数据权属的转移。
- 区块:就是状态机中记录状态变动的单位。在比特币和以太坊中,一个区块可以包含多个交易;状态机的整体状态变动,是以一个区块执行结束的状态为准的(也就是以多个交易执行的结果作为一个整体状态标识)。而在前些天 Facebook 发布的 Libra 系统中,每个交易都会产生一个状态版本(version),整个状态机的状态也就是由每个交易执行的结果所决定的,存储在一个带版本标识的数据库(Versioned Database)中。
- 共识:也就是在一个分布式(对等)网络中,所有参与者(节点)对状态机的整体状态的一个认同。前提是网络中的大部分参与者,都会对这个状态机的状态标识进行验证,也就是需要它们分别(独立)完整地执行导致状态产生的所有交易来检查自己执行所获得的状态是否与网络中其他节点执行的结果一致。得到网络中大多数参与者确认(也就是大多数参与者本地计算的状态结果一致)的状态,就将作为整个状态机的最终状态。这个过程也可以成为“最终确认(finality)”。
那么,这样一个状态机系统,到底解决了什么问题呢?这里我们还需要了解几个关于区块链的基本事实:
- 区块链上的交易是需要经过数字签名的。关于什么是数字签名,这里不展开介绍了。它的作用和我们手写的签名是一样的,也就是一个表明对数据/内容的认可的确认信息。
- 在区块链上标识一个参与者(人或者程序)是通过所谓的“地址”来实现的,这个地址和交易中的数字签名有一个唯一对应的关系。因为这里涉及到一些密码学的基本概念,不做过多解释了,我们可以把“数字签名”和“地址”简单地理解为属于某个人的公开信息,比如人的名字和住址。
- 区块链上的所有交易信息都是公开的,唯一隐藏的就是数字签名和实际签名人的对应关系。也就是谁都可以看到是某人签名了某个交易来向某个地址转了若干资金,只是不知道具体是谁做的这个签名以及谁住在那个住址(也就是谁获得了那笔钱)。
好了,现在我们可以来回答“区块链解决了什么问题”了:区块链实际上是提供了一种可以在不引入任何第三方的情况下,就能保证交易安全完成的技术手段。
就像刚刚介绍过的,这里说的“交易”,可以是一次价值转移(转账),也可以是一次对用户数据(自定义数据)的更改,还可以更泛化地理解为网络参与者之间的数据交互或数据权属的转移。理解这个概念对我们理解和思考区块链的应用至关重要。
看到这里,可能很多非技术专业的朋友大概仍然没看懂区块链到底能干什么。没关系,下面我们来具体看看最具代表性和影响力的两个区块链项目——比特币和以太坊分别做了什么事。
比特币解决了什么问题
就像比特币白皮书的标题所说的,比特币就是一个点到点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)。也就是能提供点到点(仅需要交易双方参与)的安全转账功能。
比特币的设计其实非常简单,但这种简单是深思熟虑之后的绝妙设计,而绝不是很多其他项目的那种“简陋”。正所谓大道至简,比特币集在其之前已经产生的若干类似项目之大成,构建了世界上第一个获得全球共识的电子现金系统,其开创性的意义配得上所有的赞誉。关于比特币的产生背景和其重要影响相信大家已经看过很多,这里就不再过多介绍了。
虽然比特币白皮书中并没有明确给出“区块链(Blockchain)”这个现在已经风靡世界的术语,但它的确是在事实上定义了“区块链”技术的第一个成功的区块链应用系统。这个项目所实现的就是一个可以无需依赖任何第三方而完成的、安全的电子现金归属权转移系统。
在此我必须再安利一下我们入门区块链的必读资料《精通比特币(Mastering Bitcoin)》。尤其是对有技术基础的朋友来说,这本书你一定要读懂、读透。相信我,你一定不会失望!
以太坊是想解决什么问题
让我们依然先来看看以太坊项目的白皮书标题:下一代的智能合约和去中心化应用程序平台(A Next-Generation Smart Contract and Decentralized Application Platform)。这同样已经明确定义了以太坊的设计目标。但这个定义中引入了两个重要的术语——智能合约(Smart Contract)和去中心化应用程序(Decentralized Application)。下面就让我引用我自己开发的图文音频课程《工程师眼中的比特币和以太坊》中的部分内容来分别解释一下这两个术语。因为它们对我后续想进行的讨论非常重要。
智能合约(Smart Contract)这个词最初是由一位美国的计算机科学博士尼克萨博(Nick Szabo)在他 1997 年发表的一篇论文中提出来的。智能合约指的是一种基于计算机技术实现的,可以免除人工干预而自动执行、自动校验、自动基于外部指令给出回应的具有交互性或者互操作性的合约;其本质是一种计算机程序。这个概念本身相对比较抽象,所以尼克萨博本人在后来的一些访谈中曾经用自动取款机或者自动售货机来作为智能合约的物理实例;它们就是基于某些公开的、众所周知的规则,能够根据用户的指令和实际业务数据的状态给出可预期的回应的这样一种应用程序。
......
当然,其实这个过程并不“智能”,从某种意义讲,也并不是“合约”。所以这个词从其诞生开始就有一些争议,尤其是它会给一些不明所以的用户某种程度的误解。从本质来看,所谓“智能合约”实际上只是一种可以基于某种状态数据自动给出回应的应用程序而已。不过出于历史原因,“智能合约”的叫法还是被业内接受并延用了下来。
......
目前的绝大多数 Web 应用,其用户数据都是保存在由某个公司、组织或者个人控制的“服务器”或者“服务器组”之中的,这些应用中的绝大部分业务计算,也是由这些服务器或者服务器组来提供的;所以这种模式,可以认为是一种“中心化(centralized)”的模式。
那么“去中心化应用程序(Decentralized Application)”,也就是将数据保存到类似于“点对点的时间戳服务器(即区块链)”这样的,并不是由中心化的公司或组织控制的服务中,并且由这样的“去中心化”服务来提供具体的业务数据计算能力的一种应用程序。“去中心化应用程序”也可以简单地理解为是基于智能合约进行状态追踪和计算的一种应用程序。
与比特币实现的可以不依赖于任何第三方就能安全完成的电子现金交易类似,智能合约和去中心化应用程序也是基于“区块链”的,也就是说它们同样是可以在不引入任何第三方的情况下就能安全完成的、可以自动执行的、可定制的计算机程序。与电子现金交易相比,智能合约显然给了我们更大的想象空间,提供了更多的可能性;而去中心化应用程序,也被认为是有巨大潜力的技术方向。
这里我不想过多讨论去中心化应用程序目前的窘境,相信大家也已经看过了很多这方面的资料或者分析文章。任何生态的构建都是需要时间和一些特定的、革命性的条件的,所以我们大可静观其变,不应该过度吹捧或者过早唱衰。
我想有心的读者可能已经注意到了我在小标题用词上的区别:“比特币解决了什么问题”和“以太坊是想解决什么问题”这其中表达的意思显然是不同的。
比特币系统作为世界上第一个点对点的电子现金系统,已经稳定运行了超过 10 年,其价值也得到了全球化的认同,所以我们可以认为它已经解决了“如何构建一个全球化的去中心化经济系统”的问题。
而对于以太坊来说,虽然它是世界上第一个成功的公共智能合约平台,但从技术上讲,它其实只是个“实验性”的项目。从以太坊项目中暴露出来的公共智能合约基础服务层面的主要问题,比如处理性能问题、合约升级问题(合约漏洞)、存储爆炸问题、随机数问题、与外部世界的交互问题等等,至今仍然没有被很好地解决。虽然以太坊拥有世界上最大的开发者技术社区,有最活跃的生态,其 2.0 版本也已经进入日程,但实际结果如何,目前还未可知。从这个角度讲,我认为以太坊想解决的问题,也就是“如何提供一个全球化的、安全的公共智能合约平台”这个问题,其实还没有真正得到解决;也许,我是说也许,它的方向就是错的。
业内有很多人提出过这样的疑问:是不是应该把所有用户(合约)的数据、所有合约的计算都放在一起(一个链或者一个系统中)呢?计算机软硬件发展史中屡试不爽的分层思想能否在区块链领域里发挥作用呢?
跨链又是要解决什么问题
所谓“跨链(cross chain)”的提法,最早大概是在 2015 到 2016 年间被提出来的,从 2017 年才开始被越来越多的业内人士所讨论。我本人最初听到这个术语的时候也是不明所以,不知道这个“跨链”到底是要跨什么东西。只是要解决不同链上的资产如何交易的问题么?这已经通过各种中心化、去中心化交易所解决了啊,为什么还要提跨链呢?
直到最近我听到 Gavin Wood 博士谈论的关于区块链未来发展方向的一些观点的时候,结合我先前对跨链技术的了解,我才恍然大悟:其实“跨链”技术要解决的就是如何灵活地支持区块链的分层扩展问题。理解了这一点,我们就应该可以想到,其实“跨链”技术才是前两年以太坊高速发展中所暴露出来的、区块链系统的最大挑战——“扩容”问题的终极解决方案。
如果我们将以太坊 2.0 的技术方案与目前的两大“跨链”技术框架 Cosmos、Polkadot 相对比的话,我们就会发现,它们解决的其实都是区块链如何分层扩展的问题。只不过它们选择了不同的技术方向。(因为篇幅原因,我这里就不对这三个项目做进一步的比较说明了。有兴趣的读者可以去参考刘毅老师的《万字长文说透 Polkadot 架构》,其中有详细的解读。)
跨链技术框架最吸引人的地方就在于它们可以支持异构的子链(也有的项目将之称为其他的名称,比如 zone、para-chain 等等),它们本质上就是一种可以与主链进行安全通信(有技术保证的安全消息交互)的附属区块链。而子链自己又可以衍生自己的子链,子链的子链同样可以通过某种形式的“消息”来与各自的主链进行通信,这样就形成了理论上无限扩展的可能。
这种支持异构子链的设计,也就解除了子链间的耦和,使子链自身可以独立演化升级,只要保持与主链标准一致的链间消息即可;子链内部的共识甚至都可以与其他子链或主链不同。这也就给了区块链基础设施最大的灵活性和可扩展性。从这个意义上讲,我认为“跨链”技术才是真正将引领区块链生态未来发展的关键基础。
有了跨链技术,也就使“一子链一应用”或者“一子链一业务”的模式成为了可能。(去中心化)应用程序之间不再需要互相争抢昂贵的、有限的公共计算资源和存储资源,而可以根据自身业务的需要选择最合适的数据结构、共识方案以及存储方案。每个企业(组织)都可以定制最适合自己业务的区块链基础设施,只需要保证它们能提供与主链标准一致的消息即可。这当然是极其重要、也极其有价值的技术特性;这也就是跨链技术的真正意义所在。
跨链技术——连接大数据、AI 们的可信桥梁
在前文中我们已经了解了大数据、AI、区块链和跨链技术的基本概念。那么,看似风马牛不相及的它们又是如何联系到一起的呢?
我们知道,在区块链的世界里标识一个人或者程序,需要用一个密码学中的非对称公私钥对来完成。显然,让绝大多数普通用户去理解深奥的密码学、去理解私钥的重要性、去接受没有“找回密码功能”的原因,几乎是个不可能完成的任务;这也成了现今绝大多数区块链应用所共同面临的一个关键阻力。那么如果把人换成 AI 呢?如果我能用生物识别技术,比如指纹、faceId 等等获得 AI 的控制权,再由 AI 替我去管理与区块链交互必需的数字身份又如何呢?因为 AI 本身就是计算机程序,本身就是数字化的,所以对 AI 做数字身份标识相对就容易了很多,也更加自然。我们完全可以用一个被很好地基于大数据训练过的 AI(机器人)来代替人去与区块链进行互动。
就像我在本文中介绍的,当我们谈论 AI 时,也就不可避免的会谈到大数据;因为实际上任何 AI 活动其实都离不开大数据的支持,无论是训练、推断还是对实际操作或者计算过程进行日志记录。所以 AI 和大数据是相辅相成、密不可分的。
而更进一步地,在不久将来,随着 AI 能做的事越来越多,必然会产生需要 AI 直接与其他 AI 进行交互的场景。那么,如何保证 AI 与 AI 之间的信息交互是安全可信且可审计的呢?是通过在不同公司之间建立数据网关?还是简单地通过客户端转发?我想真正的答案就是智能合约 + “跨链”技术。
基于区块链本身的特性,我们可以给每个 AI(机器人)都增加身份标识,然后通过智能合约来规范、限制和记录 AI 的行为。在某个子链(业务链)上,会存在多个由 AI 控制的“人”,他们可以在这个链上通过智能合约进行互动。而在有了跨链技术的支持之后,各个业务子链上的 AI 就可以“对话”了!也就是 AI 可以知道其他的 AI 做了什么事,并给出必要的响应。这将毫无疑问地成为一个想象空间非常大的新领域,也是一个真正可以实现安全、高效、可审计的数字化交互方式的技术方案。所以,跨链技术是完全必要的,其出现和发展也是必然的!
其实不只是 AI,其他任何可以方便地用数字身份(公私钥对)标识的资源都可以很自然地与区块链、跨链技术相结合而获得相互“沟通”的能力,进而产生规模效应。这大概会是未来区块链产业发展的源动力。
结语
大数据、AI、区块链和跨链技术无论哪项都自成体系,都有很多很多的细节可以讨论;本文只是对它们的来历和现状做了极其简单的介绍,也记录了我个人对它们的一些思考。如果各位能从其中得到些许启发,我也就心满意足了。
在我看来,跨链技术和 AI 一样具有很大的潜力,因为这才是真正解决区块链扩展问题的根本方法,也是使区块链成为通用的互联网基础设施的必备条件。我也相信区块链的未来还有很多的可能性等待着我们去发现,让我们共同努力吧!