第一个问题:首先我们介绍一下什么是区块链,做一个知识的普及和扫盲
事情是这样的,最近朋友一直在问我区块链和比特币的事情,我尝试了很多种不通的姿势以求简单通俗形象生动地跟他解释什么是区块链技术,但是最后都失败了。想以求能简单直观生动形象地向对区块链技术不了解但是想知道区块链是什么的人介绍区块链技术或者比特币。
因为面向的读者是不想知道具体技术实现只想了解区块链的人群,因此本文避开了一些底层和算法细节,采用比较主观的方式来展示笔者对区块链技术的感性认识。如果你只是对区块链感兴趣,并没有深入学习的打算,或者只是想像我一样在别人问起来的时候装逼,本文应该是一篇很好的“导论”。
总览
区块链本质上是一个去中心化的分布式账本数据库
在与比特币相关的区块链应用中可使用这一术语,但区块链技术可能并不包含“账本”)。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次比特币网络交易有效确认的信息。
这是区块链的定义,因此要逐步了解区块链,我们需要一步步了解如下东西。
去中心化
先来考虑一个中心化集中式处理的过程。你要在某宝上买一部手机,交易流程是:你将钱打给支付宝-支付宝收款后通知卖家发货-卖家发货-你确认收货-支付宝把钱打给卖家。
在这个过程中,虽然你是在和卖家交易,但是这笔交易还牵扯到了除了你和卖家的第三方,即支付宝,你和卖家的交易都是围绕支付宝展开。因此,如果支付宝系统出了问题便会造成这笔交易的失败。并且虽然你只是简单的买了一个手机,但是你和卖家都要向第三方提供多余的信息。因此考虑极端情况,如果支付宝跑路了或者是拿了钱不却不承认你的交易或者是支付宝所在的城市因为开G20把所有人都赶走了(?),那么你就悲剧了。
而去中心化的处理方式就要显得简单很多,你只需要和卖家交换钱和手机,然后双方都声称完成了这笔交易,就OK了。
可以看出在某些特定情况下,去中心化的处理方式会更便捷,同时也无须担心自己的与交易无关的信息泄漏。
其实如果只考虑两个人的交易并不能把去中心化的好处完全展示出来,设想如果有成千上万笔交易在进行,去中心化的处理方式会节约很多资源,使得整个交易自主化、简单化,并且排除了被中心化代理控制的风险。
去中心化是区块链技术的颠覆性特点,它无需中心化代理,实现了一种点对点的直接交互,使得高效率、大规模、无中心化代理的信息交互方式成为了现实。
当然,上述的例子有一个很大的潜在问题:没有了权威的中心化代理,怎样保证每笔交易的准确性和有效性呢?比如:如果没有了权威的中心化代理,张三某一天借了我100块钱,但是不还钱还不承认怎么办?这里就引出了区块链的其它特性。
两个基础难题
在去中心化以后,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。
问题1:类两军问题
第一次听说这个问题居然是在TCP的课上,大致说的是有两个相距很远的军队要传递信息,红军派遣一个信使去跟蓝军说:“你他娘的把意大利炮拿出来!”。蓝军收到信息后又派了一个信使去红军说:“收到指令!”。然后红军又派一个信使去蓝军说:“知道你收到指令了!”。然后蓝军又派一个信使去红军说:“知道你知道我收到指令了!”。然后红军又派一个信使去蓝军说:“知道你知道我知道你收到指令了!”……然后就没完没了了。
在这种情况下,因为是点对点的通信,双方不可能在这种情况下达到信息的一致性。严谨一点,就是“在分布式计算上,试图在异步系统和不可靠的通道上达到一致性是不可能的”。
问题2:拜占庭将军问题
拜占庭罗马帝国在军事行动中,采取将军投票的策略来决定是进攻还是撤退,也就是说如果多数人决定进攻,就上去干。但是军队中如果有奸细(比如将军已经反水故意乱投票,或者传令官叛变擅自修改军令),那怎么保证最后投票的结果真正反映了忠诚的将军的意愿呢?
拜占庭将军问题反映到信息交换领域中来,可以理解为在一个去中心的系统中,有一些节点是坏掉的,它们可能向外界广播错误的信息或者不广播信息,在这种情况下如何验证数据传输的准确性。
区块链技术的诞生
现在让我们来一步一步在去中心化的系统中解决这些问题,见证区块链技术雏形的诞生。
1
我们先来建立一个去中心化的系统,为了方便理解,我们来看一个简单的去中心化借贷模型:如果A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是B,A借给了我100块钱!”,此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱”。你看,这个时候一个去中心化的系统就建立起来了,这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如B突然又改口说“我不欠A钱!”,这个时候人民群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!”)。
可能你已经发现了,在上述的模型中,所谓的“100块钱”已经不重要了。换句话说,任何东西都可以在这个模型中交换,甚至你可以凭空杜撰一个东西,只要大家承认,你就可以让你杜撰的东西流通。比如:我在人群中高喊一声“我创造了10个查克拉!”,我甚至不需要知道查克拉是什么,也不需要关心世界上是不是真的有查克拉,只要大家都听到,然后在自己的小本本上记下“LaiW3n有10个查克拉”,于是我就真的有100个查克拉了。从此以后,我便可以声称我给了某人1个查克拉,只要路人甲乙丙丁都收到并且承认了这一信息,那我就算完成了这次交易,哪怕世界上没有查克拉。
你现在脑海中是不是浮现出了三个字——“比特币”?由于真正的区块链和比特币比我上述的模型复杂太多,细节也丰富太多,因此以下还是以查克拉举例
假设过了很长一段时间,我凭空创造的查克拉已经在这个系统中流通了起来,大家都开始认可了查克拉。但是这个系统中一共就只有10个查克拉,于是有人动了坏心思,他在人群中高呼“我有10个查克拉!”怎么办?大家是直接在本本上记下他有10个查克拉么,这样不是人人都可以伪造查克拉了么?
为了防止这种现象发生,我决定在我创造查克拉的时候给我的查克拉打上标记(更准确地说,我是给我喊的那句“我创造了10个查克拉”打上标记,比如标记为001),这样以后在每一笔交易的时候,我在高喊“我给了某某1个查克拉!”的时候,会附加上额外的一句话:“这1个查克拉的来源是记为001的那条记录,我的这句话标记为002!”。我们再抽象一点,某人喊话的内容的格式就变成了:“这句话编号xxx,上一句话的编号是yyy,我给了某某1个查克拉!”,这样就解决了伪造的问题。其实上述模型就变成一个简化的中本聪第一版比特币区块链协议:
好了,看到这里你基本已经能够生动形象又不涉及任何细节地向你的弱智室友解释区块链了。但是也许你的室友是一个有打破沙锅问到底精神求是学子,因此你最好继续准好回答以下这几个问题。
1. “凭啥?”
你室友可能会问:“凭啥你喊一句话我就帮你记?我的小本本不要钱么?”。为了激励大家帮我传话和记账,我决定给第一个听到我喊话并且记录在小本本上的人一些奖励:第一个听到我喊话并记录下来的人,你就凭空得到了1个查克拉,这个查克拉是整个系统对你幸苦记账的报酬,而你记录了这句话之后,要马上告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你自己的记录编号让别人有据可查,然后你再把我的话加上你的记录编号一起喊出来,供下一个人记账。
当这个规则定下以后,这个系统中一定会出现一批人,他们开始竖着耳朵监听周围发出的声音,以抢占第一个记账的权利。对的,你脑海中是不是又浮现出了“比特币挖矿”的字眼?
值得一提的是,关于比特币挖矿,
举了一个很形象的例子:
单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,解出一个就给其中一个姑娘的微信号。 单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有办法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到25个货币单位的彩礼,简直人生赢家。
2. “听谁的?”
在这个系统中,如果我和另一个人C几乎同时地喊出一句:“为了艾泽拉斯!”。由于听众所处的位置不同,一定会有人先听到我说的那句话,而另外一些人则先听到C的那句话,如果我们规定只能有一个人说出这句话,那到底这句话是谁说的?
如果不加任何条件,那么上述的情况一定会这样发展:一部分人认为这句话是我说的,在听到这句话之后开始记账,之后他们所做的所有事情都是基于这个事实,并且随着这个信息一次次的传下去,这条信息链会越来越深;而另外一群认为是C先说这句话的人,也会按照这样的趋势发展。这样,原本是一条唯一的信息链,在我们喊出“为了艾泽拉斯”这句话之后,分叉了!?
这会导致怎样的情况呢?按照我们的设想,应该每个人的小本本上记录的东西都是一样的,都是一条可以把所有信息串联起来的链条。但是在这一刻,他们小本本上记录的东西不一样了!这还玩毛啊?以后还怎么确定交易和信息的真实性!?
为了解决这个问题,我又追加了新的规则:每个人在记录小本本的时候,需要脱鞋然后用脚拿笔,在小本本上用正楷体书写!有了这个规定,由于用脚写字难度很大,每个人至少需要10分钟才能写完,而且由于每个人用脚写字的熟练度不通,写完这句话所用的时间也不同,因此一定会有人先写完然后高呼“我写完了!那句话是LaiW3n喊的!”,这样其它正在写这句话的人便会停笔,然后在小本本上重新开始写“那句话是来文写的,上一句的编号是xxx”。
如果你对上述我的解决方法感兴趣,你可以对照我上面的比喻去了解以下知识:
“听谁的”——中本聪破解“拜占庭将军问题”的算法
“在小本本上记录”——比特币挖矿
“脱鞋用脚写字”——比特币挖矿难度
“脱鞋写字速度”——算力
“新的规则”——工作量证明链
3. “双花”问题
这个时候你的室友可能又要问:如果我同时宣布我给了A一个查克拉和我给了B一个查克拉,但是我只有一个查克拉,那咋整?是A和B都收到了查克拉还是咋地?
这个时候你只需要托起他的下巴,温柔地看着他的眼睛,用手刮刮他的鼻子,说:“小妖精,你把这种情况带到上面的规则中去试试?”
1. 为何目前还鲜有区块链和实体商业业务对接的案例?
从理论上:区块链是一门新技术,保守大众(包括我)还处在观望阶段,只有少数激进或者目标明确的实体开始向区块链进军,而这些少数的实体在现阶段发声的强度还不够。
从应用上:区块链技术要与实体商业对接,在技术和规则上还需要进一步开拓,区块链解决的所谓“不信任”问题其对象也只局限于区块链上的数据。因此如果区块链要与实体业务对接,还需要进一步推动实体与数据之间跨域的“游戏规则”的建立。
2. 虚拟加密货币最终是否会走向庞氏骗局?
这个问题我也不太好回答,毕竟我是一个技术人员而非这个领域的弄潮儿。我个人的看法是:对于普通人,不建议长期持有某种数字货币,应将数字货币作为法币之间转换的桥梁;对于投机者,“炒币”需谨慎,应将风险控制在自己能够承受的范围内。PS:其实我真的不关心这个问题。
3. 为什么听你一讲,感觉区块链很弱智的样子?
我在文中已经说明,这只是一篇关于区块链技术的新人导论,其目的在于帮助你快速对区块链有一个感性的认识;如果真的想了解区块链技术细节,请阅读相关文献或访问区块链社区。
第二个问题:互联网巨头们说的BaaS究竟是什么?
百度上线区块链开放平台“BaaS”,腾讯云发布区块链金融级解决方案BaaS——在很多区块链商业应用的案例中,我们总能看到BaaS这个字眼,那么这个BaaS究竟是什么?
一、BaaS的基本概念
BaaS(Blockchain as a Service),“区块链即服务”,是指将区块链框架嵌入云计算平台,利用云服务基础设施的部署和管理优势,为开发者提供便捷、高性能的区块链生态环境和生态配套服务,支持开发者的业务拓展及运营支持的区块链开放平台。通常情况下,一套完整的 BaaS 解决方案包括设备接入、访问控制、服务监控和区块链平台四个主要环节,如下图 。
BaaS主要是由微软、IBM两个巨头提出的概念,说白了它其实就是一种新型的云服务,一种结合区块链技术的云服务。比如微软的Azure云计算平台、IBM的Bluemix Garage云平台都提供区块链即服务BaaS。
区块链即服务BaaS是微软、IBM这些企业从自己的云服务网络中开辟出一个空间,用来运行某个区块链节点。和普通节点及交易所节点相比,BaaS节点的用途主要是:快速建立自己所需的开发环境,提供基于区块链的搜索查询、交易提交、数据分析等一系列操作服务,这些服务既可以是中心化的,也可以是非中心化的,用来帮助开发者更快地验证自己的概念和模型。BaaS节点的服务性体现在:工具性更强,便于创建、部署、运行和监控区块链。
更直白的解释就是,相对于风投提供的资金,BaaS提供的是配套服务,可为区块链开发者、创业者提供孵化器。
目前在区块链领域,区块浏览器、数字货币交易平台,以及公链衍生应用,比如存证型-Factom、数字身份型-uPort 等都可称之为区块链服务。
二、BaaS 平台的特点
对于开发者而言,使用以太坊、EOS 这样的大型平台创建 Dapp 应用同样可行,但区块链开放平台 BaaS 不仅可以提供统一的标准规范,还具备如下特点:
(一)降低使用门槛
通常情况下,开发人员在创建链和智能合约时,面对的是一行行计算机代码。而如果采用 BaaS 服务,这些代码被事先写好,模块化成常用的功能,开发人员只需通过 API 和 SDK 等接口,连接这些功能,降低中小企业使用区块链的门槛。
(二)节省综合成本
项目成本是开发者考虑的因素之一。BaaS 可使开发人员专注于业务应用层面的开发,无需专门建设自己的基础设施,服务购买即可,不仅可节省服务端研发成本,还可提供更好的测试工具,降低部署和测试成本。比如,当企业开发一款企业移动应用,需要跟防火墙后的企业 SQL 数据库做接口,如果采用 BaaS 服务,开发团队可无需配备 SQL 高级专家。迅雷 CEO 陈磊曾在迅雷区块链生态以及新品发布会上介绍迅雷链推出开放平台的初心是由于当前区块链人才稀缺,导致很多开发团队难以拥抱区块链做业务升级。开放平台可使企业和开放者无需考虑区块链底层技术,专心搭建区块链应用。
(三)满足个性化定制
BaaS 平台在提供标准服务的基础上,还可根据开发者的产品和业务特点,提供不同的在线配置和代码功能,扩展开发者自定义的功能,满足个性化需求,提高灵活性。
(四)安全系数更高
用户借助 BaaS 供应商在行业内的影响力和经验,可提升自身系统性的安全性。
三、国内外BaaS 平台案例
BaaS 的概念最早源于微软和 IBM 。随后,全球科技巨头们也陆续通过他们内部建立的平台提供 BaaS 服务。
1.微软
2015 年 11 月,微软 Azure 与 ConsenSys 达成合作,在其 Azure 环境里面提供 Ethereum 区块链即服务( EBaaS )。据微软云和企业组织的主管马利•格雷( Marley Gray )声称,提供该服务将让“客户和合作伙伴能够在一种现成的开发/测试/生产环境下试用、学习和快速叫停,成本低廉。”
2016 年 4 月,微软宣布与由43家银行组成的R3联盟( R3 Consortium )结成合作伙伴,在 R3 成员当中推广分布式账本。
2.IBM
2016 年 2 月,IBM 宣布将使用超级账本( Hyperledger ),提供区块链即服务。IBM 的“区块链即服务”属于公共云服务,客户可基于此开发安全的区块链网络。
此后,在 IBM InterConnect 2017 会议上,IBM 宣布其首个商业应用项目——“IBM Blockchain”。IBM Blockchain 的操作框架是以 Fabric为基础的。基于 Fabric,开发人员可以构建企业级应用。据官网介绍,IBM Blockchain 旨在为用户提供端到端的区块链平台解决方案,快速搭建高可用的区块链网络,还可以提供区块链平台安全特性,并且在全球各地都可以使用。
3.亚马逊
2016 年 5 月,亚马逊网络服务AWS与投资公司数字货币集团(Digital Currency Group,DCG)达成合作,为 DCG 投资的公司提供一种区块链即服务试验环境。双方希望在此环境下,DCG 投资组合中的区块链供应商能够在一种安全的环境下与金融机构,保险公司,企业技术公司等客户合作。
2018 年 4 月,亚马逊 AWS 正式发布了 AWS 区块链模板,该服务旨在使开发人员能够更轻松地创建基于以太坊和 Linux 基金会 Hyperledger Fabric 的项目。AWS 主要将服务目标瞄准了资源有限的中小型公司,帮助其构建自己的应用程序。
国内互联网巨头逐渐重视区块链底层技术,争先布局 BaaS 平台的建设,本报告择选四个较为代表性的公司:腾讯、百度、阿里和京东做分析对比。
按照业务场景分类可以分为金融BaaS和防伪溯源BaaS。
1.金融 BaaS
腾讯与百度主攻金融领域的区块链技术应用,双方先后建立了面向金融业的商业级区块链即服务平台BaaS。
腾讯区块链即服务BaaS
2016 年 6 月,微众银行开发的金融业联盟链云 BaaS 发布,作为位于腾讯金融云 IaaS 平台与应用场景的中间层。
2017 年 11 月,沿用联盟链的思路,腾讯云正式发布金融级解决方案 Tencent Blockchain as a Service (TBaaS)。TBaaS构建于金融云之上,用户可按照自己的业务需求,在云平台上快速搭建自己的联盟链,放低对区块链底层技术的知识门槛。其基础架构设有公有云与专有云两个选项,用户可以选择购买腾讯金融云的服务系统,也可以将系统搭建在自建的机房专有云。
百度区块链即服务BaaS
2017 年 7 月,百度推出区块链开放平台“ BaaS ”,主要是帮助企业联盟构建属于自己的区块链网络平台。平台依托于百度 Trust区块链技术框架,适用于支付清算、数字票据、银行征信管理、权益证明和交易所证券交易、保险管理、金融审计等领域。截至目前该平台已经支撑了超过 500 亿元资产的真实性问题。
2.防伪溯源 BaaS
与腾讯、百度略有不同,阿里和京东受其主营业务的影响,更关注线上线下一体化,分别在商品防伪溯源领域进行技术探索。
2017 年 9 月,阿里云推出了基于容器的区块链解决方案,用户可以通过 Kubernetes 和 Helm/Chart 模板快速搭建企业级区块链环境。
2018 年 4 月,天猫奢侈平台 Luxury Pavilion 推出基于阿里云区块链解决方案的正品溯源功能。
2018 年 8 月,阿里云宣布发布企业级 BaaS 平台,支持一键快速部署区块链环境,实现跨企业、跨区域的区块链应用。据官网介绍,该 BaaS 适用于商品溯源、供应链金融、数据资产交易、数字内容版权保护等领域。
2018 年 8 月,“京东区块链防伪追溯平台” BaaS 正式上线,京东也将作为主链的管理者对平台进行部署与维护,参与企业可直接使用自有区块链节点加入主链共同运营,将商品从原料、生产加工、物流运输、零售交易等数据共同上链
最后一个问题:区块链公共服务BaaS平台搭建,企业落地应用解决方案
基于区块链与云计算的区块链BaaS平台,利用云服务基础设施的部署和管理,为企业提供方便、高性能的生态环境和区块链的生态支持服务,简化操作流程,降低部署成本。
目前普遍存在的问题:
1、数据在链上存在孤岛,缺乏统一的标准,交叉链路共享困难。
2、底链技术标准不同,异构链管理成本高。
3、公共数据管理部门整体块链基础设施建设,但缺乏顶层设计指导。
区块链公共服务BaaS平台优势:
1、自主研发的高性能平台
平台依托海量并发技术经验,提供海量数据存储,TPS可达到5000-8000。
2、丰富的应用场景
落地多个区块链应用场景,全方位的覆盖了金融、政府、医疗、生活、通用服务等众多行业。
3、灵活支持多种底层框架
快速建立自己的开发环境,提供基于区块链的查询、事务提交、数据分析和一系列操作服务,这些服务可以中心化或去中心化,以满足不同企业对底层框架选择的要求。
区块链公共服务BaaS平台特点:
1、性能高、高可靠
自主研发的 BaaS 平台,拥有强大的核心技术团队。BaaS 平台不仅提供高速并行共识能力,
还具有高可靠性和高容错性。
2、隐私保护、安全可靠
BaaS 服务层提供对企业身份、实体身份、内容安全等进行身份验证的能力。同时采用数据隔离、信息加密等多级加密机制对数据安全层进行控制,保护链中信息的数据隐私。
3、简单易用、部署简单
快速块链部署能力和丰富的业务契约模板大大降低了客户块链的投入成本,减少了障碍的使用,使客户不需要了解块链的深层细节,使用技术的能力,使业务运行顺利。
4、横跨网络、容易连接
区块链有一个相对深刻的特征,一种去中心化特点。Baas 提供跨网络、跨不同云平台、跨公共云和用户IT环境的支持和自动部署
参考文章
更多相关知识和参考文章来源可以关注我的博客站点