本文主要是介绍敖萌:不能简单把区块链看作数据库替代品,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
12月21日,由拓普合展主办、金色财经等协办的“2017中国区块链技术应用峰会(BTAS2017)”在上海顺利举办。
在此次峰会上,区块链领域的技术精英们围绕区块链前沿技术创新、行业政策发展以及应用场景等话题,解析区块链技术在金融、网络安全、学术教育、物联网、供应链管理、版权、云存储、能源管理、档案管理等领域的应用,以推动新一代信息技术产业的发展。
中国信息通信研究院区块链课题组组长敖萌以“传统行业+区块链的雷区”为主题进行了演讲,以下是演讲实录:
大家好,我是中国信息通信研究院的敖萌,我们是工信部电信研究院,在2014的时候更换了名称。中国信息通信研究院是中国政府唯一指定的跟国际ITO组织进行对接的,也是中国通信标准化技术协会的落地单位。我们在区块链方面的研究有两部分,一个是区块链标准化,还有是测试相关的工作,以及对政府的相关支撑。
我今天给大家介绍一些我们在研究中遇到的情况和问题,主要是传统行业做区块链+的时候经常碰到的问题,首先看一下,大家都在讲,到底区块链是什么?左边这个是中国信息通信研究院下的定义,说了区块链是一种多方维护的,使用密码学保证传输和访问安全,实现数据一致性存储、无法篡改、无法抵赖的技术体系。右边这张图,很多人在区块链概念比较混乱,最大的圈是传统的分布式系统。这个分布式系统如果加上数据一致性我们一般认为它变为分布式总帐技术。如果分布式总帐技术中加上了拜占庭容错,我们就认为这是一种拜占庭分布式总帐技术,从这一层开始的时候我认为这才算是一个区块链的技术范畴,如果在白拜占庭分布式总帐里我们加上了一种块链结构的,像前两位介绍的用块和链把数据组织起来,获得一种密码学安全的机制之后,我们认为就是一种狭义的区块链,在上面这一层是广义的区块链,就是拜占庭容错这种。如果在这区块链里加上了无中心代币,我们认为它变成了一种无中心加密货币。
今天我这里讲的所有观念都是在第三层以后的,就是加了拜占庭容错的一种分布式总帐技术,我们今天讨论的问题是在这个范围去讨论。我们今天看区块链大概有两种发展方式,一种是公有链,一种是联盟链,从今年的趋势看这已经发生了分化,这两种技术在两极分化的不同技术上跑。比如说联盟链,比特币可能1小时才能处理完成一笔交易,这个速度非常慢,因此现在联盟链的趋势是用高频高效的算法,但这个算法可能在公平机制上进行了一些削减。
然后像服务分片,我们说比特币这是每个人帐本一致的,所有人信息都是一样的。在联盟链里因为有时候企业级应用会为了控制信息分发权限问题等等,可能会分不同子链或者不同频道进行信息的控制,然后处理方式,也是链上链下协同的。这种整个数据结构也从一条主链变成了分链或者分层的结构。我们看公有链现在的发展方向,依然是追求公平效率优先,并且引入了很多新的密码学技术,刚才赵教授也介绍了新的技术,这里面主要注重了技术的隐私的保护,比比特币有更强的隐私性。但是公有链也有一个很明显的缺陷,它的节点激励机制因为是没有一个主体作为运营方运营,所以现在无法避免代币。只是我们现在看到所有的公有链里都有一个虚拟货币在这里面,这个公有链也很难避免强行分叉的风险。
刚才我们一直在讲拜占庭容错,有一个核心问题是拜占庭节点,什么叫拜占庭节点?这个区块链里可能有一些坏的节点,比如造一些双花或者虚假数据在里面。怎样应对拜占庭节点,其实公有链对拜占庭节点没什么办法,只能靠共识机制强行抵抗它,因为公有链里没有节点的身份准入机制,所以我一个节点即便说大家都发现它是一个坏节点,但是你依然不能阻止它进来。比如说假设我们都在代码中强行假如说把这个IP地址办掉,可能它换一个地址又进来了,因为你没有任何办法可以抵抗它进来。但是联盟链我们是有办法的,联盟链我们有节点身份准入机制,是一个白名单制度。如果说一个拜占庭节点我们发现它在作恶了以后,我们可以直接投票开除它,它再次进来又需要大家投票一致同意才能允许它进来。因此在联盟链中,我们有了一些能够应对拜占庭节点的方法,所以我们在联盟链中可以让这个共识机制,让这个公平公正这一方面稍微削弱一点。我可以比如说事先选举出一个委员会进行记帐,或者搞一个中心化机构轮流记帐等等。因为这里面有了这种身份准入机制,一旦发现委员会里或者中心节点在作恶,我们完全可以通过一个强行投票机制把它开除掉,然后重新运作。因此在应对拜占庭节点方面这两种链有不同的机制,所以说联盟链是可以做到现在的一种高效高频的吞吐机制,处理速度,但是公有链现在还很难做到这一点。
我们使用区块链往往有一个误区,传统做软件的时候,大家一般喜欢分层去考虑问题,说底层解决完了,在上层构建新的就行。但是在区块链里不能这么简单去讲,我举一个特别简单的例子,比如说我们用区块链搭建一个域名系统,我访问www.baidu.com,我访问过去。假设说如果是基于区块链的域名系统,那么这个系统DNS软件会去区块链查询百度的记录,对应的IT地址是什么,返回来再告诉用户请求是什么。这里其实存在着风险,用户根本不知道这个区块链的存在。换句话说这个应用服务如果被***劫持掉了,你访问了www.baidu.com,我返回给你一个IP地址,用户根本不知道,这里区块链没有起到任何作用,因为它依然是个中心化的服务机构。所以这种情况下把区块链看成底层直接这么用,没有获得相应的安全性,至少如果你对公众服务,你这种结构仍然是一种中心化的结构。
第二类应用就是一个比较能获取到区块链的好处的应用方式,我们仍然以域名系统为例,比如说如果我做一个域名交易,比如说www.baidu.com持有人是百度,哪一天百度想把域名卖掉,就通过应用服务提交,把这个域名消息写入区块链之后,你查询这个结果的时候,重新去链上查询。因为你自己通过去链上通过一些办法查到的数据绝大多数情况下应该是真实的,这时候你就能获得区块链的全部好处。
首先我们做区块链传统行业+的时候就要避免这种设计思维,不能简单把区块链看作数据库替代品,然后我就能得到区块链的全部好处,其实并不是这样。区块链也具有一个很明显的局限性,很多人做区块链+的时候也有这个问题。区块链很明显是一个非常封闭的系统,它只能通过链上已有的数据来验证新的数据是否正确。比如说我们的比特币系统或者以太币等等,都是通过历史交易来看新的数据是不是欺诈的,这在一个封闭系统中这么用没有问题。但如果你做了开放系统,举个例子,比如我们在区块链溯源,你怎么知道用户提交的这头猪是哪家养猪厂出来的,你怎么知道这个数据真实性,所有的办法都没有验证数据真实性。因此这里能够解决的是,它只能解决数据链上以后不会被篡改,但是这个数据是不是真实的,如果这个数据是外部来的,但是这个链是没有办法知道的,所以区块链在解决保存存证特性的时候有一定的局限性。
我们看一下区块链的核心目标到底是什么,区块链和传统分布式系统是完全不同的,传统分布式系统是通过多机并行,引入新的计算能力,最后是增强数据能力,比如说我们的hadoop大数据平台,就是把越来越多的节点加进来,让每个人处理不同的数据,这样建立强的数据能力。而区块链的目标不是这样,是要让大家都运行同一个运算,处理同一个数据,从而建立起一个多方信任关系,是通过大量计算资源的冗余来解决由于没有信用架构传递信用导致的无法建立信用的问题,因此区块链和传统分布式系统是不一样的。所以很多时候有很多人讲,因为传统系统是分布式,所以现在可以直接移植到区块链,这个思维也是不对的。
举个例子,人工智能+区块链,现在人工智能中广泛使用深度学习算法并行计算是两种类型,一种是数据分片,一种是网络分片。数据分片,就是导致不同节点数据是不一样的。网络分片,不同节点计算模型不一样,这显然跟区块链是违背的。人工智能是把这些能力蓄积在一起,形成强大的数据能力。而区块链是让每台计算机运行的任务相同,通过大量重复冗余的计算实现多机的相互信任。因此,你从算法角度看,区块链+人工智能这一点是很难实现的。
我们说这就没有办法有结合吗?其实是有结合的,我们做传统行业+区块链是需要一种创新思维的,比如人工智能+区块链,我个人认为结合最佳点就是机器人怎么持有货币的问题。比如传统金融系统中我们是使用身份,你的身份和一个帐号进行关联,因为金融有一个基本规则,要知道你的客户是谁,你用了防洗钱,防止你的钱流入恐怖组织等等,因此有很多金融原则,导致它必须要知道你的身份。但机器人很遗憾,机器是没有身份的。
因为古希腊有一个忒修斯悖论,比如一艘在海上航行几百年的船只要一块木板烂了,我就可以换一块,依此类推,直到这个船上没有一块木板是原来那个船上的了,那么这艘船还是不是忒修斯之船?那么进一步推论,说如果把老部件全部拿来造一艘新船,这两艘船哪艘是忒修斯船。
因此实际上人工智能时代怎么给机器确认身份,是没有办法的,机器没有身份,你没有办法给它确定一个身份,人是有身份的,因为我们现在的生物学还没有办法发展到可以把人的灵魂移到另一个人身上去,所以我通过你的DNA、指纹、人脸等等生物特征可以明确对应你的身份,但是机器不行,机器天生软件和硬件是分开的,而且更进一步地是我们未来面对的是软件定义一切的世界,这个世界上我们要看到一个问题,就是说到底软件是这个机器的身份,还是硬件是这个机器的身份,这是很明确的。比如阿尔法狗参加围棋大赛,是谁获得奖金呢?因为现在是虚拟化世界,很多情况下服务是运行在虚拟机上,你要想一下这个虚拟机的身份怎么去判定?是由它绑定的硬件?它根本没有绑定任何硬件。因此我们可以知道在未来的人工智能时代,没有身份应该我们的金融系统也是能够工作的。
那么解决这个问题,实际上就是帐户模型是不适合未来机器世界的,但是现金是可以的。如果我们一直使用现金,那么机器人兜里揣几个美元、硬币,就可以像第一张图那样,人类向他乞讨他可以给你钱,但是如果使用帐户这个很难做到。因为两个机器人到银行系统去开户,去争夺帐户的时候银行没有办法区分。因此我们希望使用电子现金或者加密货币这种模型来解决未来世界机器人的问题,其实比特币提供了很好的机制,叫UTSO的帐户模型。这个帐户模型更像一个保险柜,好比广场上放了很多保险柜,谁能打开钱就是谁的,这就是比特币的一种帐户模型。机器人只要记住这个保险柜的密钥,需要用的时候到广场那个地方把保险柜打开,取出钱用就可以,反正平时也不用把钱放在身上。其实整个比特币世界和我们现在使用的大部分的家电模型都是这样的,尤其我们称它为匿名货币,就是因为实际上它不需要任何的身份信息,只是一个公钥私钥的对应关系就能完全掌握这个现金。
因此我们总结区块链和人工智能结合的关系,其实更多是加密数字货币是机器人的问题,加密数字货币其实特别不适合人使用,因为你很难记住那么长的一串密钥,但是机器人是很容易的。加密数字货币里回避了身份机制、帐户模型,相当于直接使用现金。最重要的是给机器人一个社会经济权,相当于机器人获得了初步的人权,机器人以后就可以进行更佳在社会中进行更自由的活动,这才是区块链+人工智能的一些结合点。
我总结一下,企业想使用区块链的时候,其实我们更应该开脑洞,而不是把传统业务直接加进来。如果你想做传统业务+,应该先想几个问题,比如到底使用联盟链还是公有链?如果使用联盟链,我大概总结了这么几个问题,企业最好先问一下自己。
首先你真的需要中心化吗?你如果用中心化系统,会不会有现在的问题解决不了所以你才要去中心化的模型。第二,你这个联盟链大家合作方之一真的缺乏信任,如果说大家本来关系就很好,你确实用区块链建立信任关系吗?而且还有一个问题,所有合作方都能够有足够IT能力吗?互联网企业可能还好一点,传统企业有些企业运营这样的服务是很难的一件事,所以可能这时候它就要使用区块链云saas服务,这种情况下你又能有多少信任程度的云?最后还有一个问题,合作方稳定吗?联盟链里身份机制导致了一个问题,加入和退出都比较难,如果合作非常松散,经常变换合作方,你能否使用联盟链做你的业务。除了这些问题以外还有一些,比如合作方利益在哪,我们用区块链到底是增加了成本还是让成本更低,还有链上数据谁提交的等等一系列问题,想明白这些问题以后,你再决定自己能不能使用联盟链。
如果有些人想使用公有链来做,也应该问自己一些问题,比如说公有链现在还避免不了代币的出现。第一个问题,代币价值在哪里?用户得到代币以后到底能用来做什么?当然现在很多系统能做的是用户得到代币以后就是得到了一种数字资产,但是资产具体能做什么,可能是在交易所交易,除此之外还有没有其他问题?这是需要企业来想的问题。
如果你一旦发现代币,代币的总量怎么控制?比如你是现实的资产,还是用数字算法实现控制总量等等。而且现在已经出现了大量的这种公有链了,如果你是做竞争性业务,你的技术先进性和其他人比较怎么样?
还有一个很严重的问题,很多人做公有链,要自己企业与链下业务关联起来,如果真的过于关联,那你实际又回到了中心化的系统,因为你的链下业务决定了你的链上币的价值等等一系列问题,那么你怎样在这种情况下去中心化实现这个情况?
最后,包括你怎么避免链被硬分叉?还有一个核心问题,你怎样配合政府进行监管等等?这都是企业在做区块链和传统业务结合之前应该先问自己的一些问题。
转载于:https://blog.51cto.com/13722387/2119139
这篇关于敖萌:不能简单把区块链看作数据库替代品的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!