Py学习  »  区块链

华为云区块链服务技术决策和落地实践

区块链前哨 • 5 年前 • 570 次点击  

大家好,非常感谢大家来和我一起探索一下区块链和 BaaS 相关的情况。我今天在这里来个抛砖引玉,希望大家有些收获。因为我看到大家都会讲很多的技术,我在和大家沟通的时候,很多客户都会存在这样的困惑,区块链怎么去做,为什么要做,如何去做。我想分享一下,我们在华为参与平台落地时候的一些经历,这是一个很真实的经历。

华为云区块链服务决策和技术选型

我主要从这几块介绍,第一个是我们当时区块链的一些决策,用的什么样的技术,我们在落地的过程中为什么这么去做,这可能会带来什么样的一些价值,后面的一些场景,以及对我们未来的一些思考。

这是我在和领导汇报申请立项的时候思考的一些问题,我们为什么要去做,是不是要去做区块链。现在大家相对比较明朗一些,但是在一年前,对于华为来说,还是非常难以决策的,很多人都看不清楚。

第一,区块链能不能给华为带来真正的不管经济效益还是社会效益,或者对华为云带来引流。区块链作为价值互联网还是区块链底层的换代,可能会对我们整个云的基础结构带来比较大的变化,可能在存储、服务、硬件、软件各方面都能给整个云方面带来极大的收益。Gartner 预测到 2020 年,整个区块链会对基础设施带来 1000 亿美元以上的收益。

第二,政府的态度对我们技术选型有非常重大的影响。在去年的时候我们的确还看不清楚,因为比特币圈炒的太火,去做区块链还是有很大的风险。但是对现在来说,负面消息不是太大,我们看到了机遇。

第三,我们看区块链是不是一个风口。风口是很好,但风口能不能持续,对我们将来是非常重要的。我们站得很高,但是摔得也会很狠,但怎么判断这个东西是持久发展的,而不是一个风口,我们要看看社区的标准和整个国家的标准。从现在来看,整个标准和社区的都支持区块链的发展,我们认为区块链不只是一时的风口,是我们未来的发展趋势。

最后,任何一个技术能否得到应用,场景非常的重要。因为区块链的确具备一些很有特色的,或者颠覆性的技术,它的不可篡改性、透明共享,以及价值的可信等等,都会优化现有的市场,把原来很长的流程变得很短,提高效率并降低成本。也可以重构现有的一些市场,比如像电力市场,因为将来可能是分布式能源、分布式充电桩等等,通过区块链我们可以把这些市场做得更灵活,更高效,产生更多的价值。区块链将来在共享经济下,会产生巨大的效益,让我们更加专注在商业逻辑上的构建,能够产生一个新的 BAT,这是我对高层面的一个判断。

我们从战略上看到做区块链是非常有价值的。我们的的确确看到,很多项目为了追风口,为了区块链而区块链。项目是否适合区块链,我们基本可以从这几个面来判断:

第一,这个数据是否是大家共享,对于整个生态的建设是非常有价值的。比如说要新闻类的内容,我只是一个人提供,其他人只是去共享,这样对区块链可能没有那么大的价值。

第二,大家是否要去更新,因为大家的信息要及时去共享,在整个生态里及时地把信息传进去。

第三,真实性,比如说公益慈善这样的真实性对于它非常重要。如果我们用传统的技术,数据可以随时修改,要去佐证数据是否真实会产生巨大的成本和代价,但是通过区块链这就非常简单。

第四,去中心化,天然的商业系统就需要一个很权威的机构,需要一个中心。其他人只是辅佐的话,去中心化的价值并不是很大,但如果商业中大家地位相对平等,我们不需要以传统的方式来协调,增加成本和费用,降低效率,如果去掉,对整个系统会带来巨大的好处,这是区块链非常擅长的事情。

我们知道了项目要使用区块链,但到底是用联盟链还是公有链?

对我来说,公有链和联盟链都是非常有价值的。我个人认为,公有链还达不到一条链包打天下,现在公有链只适合于某一个专有领域,比如说数字货币,或者说一些艺术品等等,它其实只适合于交易场景相对比较简单的情况。但联盟链也存在一个问题:搭建。我们在落地的时候,发现要想把一个联盟链拉起来还是很难的一件事情。

到底选择公有链,还是联盟链,这是很难选择的。我们当时决策的时候,因为公有链有虚拟货币和激励的问题,是我们没法去碰的,无币的公有链和联盟链也差不多,我们选择只能做联盟链。我们做企业级的应用,只在联盟链里做就可以了,没有必要把这种共性放到很庞大的范围去做,对于成本是没有意义的。我们认为现阶段,企业级联盟和私有链还是一个发展的趋势。

下面就是我们要落地的场景。对我们来说,区块链很大程度在搭建、技术,以及人才上都有很大的障碍。我们都是做公共的平台,通过 BaaS 的平台降低大家对区块链使用的难度,目前来说是非常有价值的。

我们选择一种技术,对公有链来说,可选择的就是比特币、以太坊、EOS、Ripple。

比特币作为山寨币去用,大多数情况下不一定用的上。以太坊的社区生态非常好,但它的确存在速度相对比较慢的问题,它的安全隐私基本上没有。只是在 ICO 和简单的应用场景上使用,比如博彩、游戏等等。对于企业级要上以太坊还是很难的一件事情,因为安全和性能,以及交易成本是比较难以承受的。EOS 更加接近于联盟链,对 EOS 来说是有 24 个超级结点做出来的,只是每个人拥有账本,它可以说是一个混合链。Ripple 币更加专一,只做支付。

对于联盟链来说,我们当时的一个选择是自研,但建立是相当困难的,客户会绑定在某一种技术上,自研华为可能不会这样去做。另外就是选择以太坊、EOS、Hyperledger 和 corda,因为以太坊的确生态很好,但是它是为公有链而设计的,要把它改造成联盟链,在共识算法上要把挖矿机去掉,要把权限控制方面加上,把安全技术加上,这个难度很大,所以当时我们也没选择它。EOS 当时还没有成熟了,但现在我觉得 EOS 改造成联盟链的难度相对比较少,因为它的共识和控制,还是相对比较容易改造的。另外就是 Hyperledger,它本身就是为了联盟链设计的,它的各方面都已经“成熟”,它还是容易用于以太坊,缺点在于包太大,可能对于 2C 的场景,每个人创建一个节点还是很难,但是对 2B 来说还是比较适合。还有 corda,我们和 corda 进行了很多次沟通。它的确专注于在金融行业,它是一个相对不那么去中心化的系统,金融行业还是比较难在云上做区块链的。最后决定我们首先还是基于超级账本,后面可能会支持以太坊和 EOS,以及 corda。

华为云区块链服务技术架构与实践

下面看看,我们华为在这里大概做了哪些事。

我们华为主要是定位三点。

第一点,我们做企业级的平台,帮助用户非常简单和快速地使用区块链,在很容易使用的基础上,比开源更加安全稳定,在性能方面有更优的表现。第二点,我们专注在联盟链和私有链。刚才也讲过公有链,我们暂时是不会去做的。第三点,华为只专注于底层的技术,上面的应用,包括智能合约和业务应用,我们希望和合作伙伴,以及我们的客户一起来打造。我们专注在底层区块链的平台,区块链的安全,区块链的开发编译环境,以及底层的资源,设计一个易于使用,高可用、高性能、安全开放合作的东西。

我们架构主要是 Kubernetes 来做。为什么要用这个,对于大型的企业来说,节点会比较多,可能用其他的在动态加入,弹性伸缩,和部署的灵活性上会比较差一点。用 Kubernetes 它也有缺点,假如节点很少,用 Kubernetes 的确过重了,成本会比较高。我们通过 Kubernetes 加 Fabric 的结合,可以实现动态的成员加入,因为联盟链可能在开源里面搭建相对困难,但是通过我们的平台非常简单可以去搭建,可能一分钟就可以搞定了。第二,因为不可能一开始并发就很高,你可以通过后面逐渐地去扩容,这点让我觉得 BaaS 是非常必要的。还有故障的恢复,因为区块链重要的一点就是节点一定要可靠,这点是 Kubernetes 拉起来的。以及灵活的部署,我们支持几种部署的方式。互联互通也是非常重要,为什么区块链要和云结合起来,因为云上有非常丰富的资源,各种第三方的应用、云市场、安全、编译环境、开发云等等,我们把它有效地结合起来,让用户以最低的成本,最小的代价,去实现他们区块链的应用。

在性能这块,我们做了很多工作,现在我主要介绍一下共识的机制。区块链讲的性能都是不专业的,因为现在最大的瓶颈并不是性能,是应用场景如何落地。性能这块,我们主要做的就是共识算法。共识算法分成两类,一种证明类的共识,一种投票类的共识。证明类就是怎么去证明,在一个不可信的环境,怎么让大家达成共同的一个决定。比如 PoW,我用聪明才智,以劳动来决定,谁获得记账的权利。而 PoS 是资本主义,谁有钱,谁就能决定。权威证明有点像美国的陪审团,选一些权威人士,或者能代表社区的人去做决定,这个目前应用的并不是很多,在美国用的比较多。投票类的,比如选举一个人,只考虑系统有没有问题,不考虑错误。第二种考虑错误节点,这两个投票类的会比较快。

我们下面简单讲一下,共识主要有哪些。

华为做了哪些问题,我们原来想支持三个,一个是测试用的,第二个是 Kafka,但是华为有个问题是要做红线,所有的必须要 TLS 来做,TLS 有速度提不上去的问题,这是第一个原因。第二个原因是我们认为 Kafka 只容忍 Crash 情况,还是不足以解决在企业应用过程中,假如出现黑客攻击,或者管理员去篡改的情况,就会导致整个系统崩溃了,它是错误敏感型的。

我们还是觉得拜占庭算法更适合企业级的应用。但是拜占庭的算法会有多次的广播机制,速度超过 20 个节点都会造成网络的风暴,网络的拥堵。华为对整个拜占庭开源做了很大的改动,减少整个广播的次数,通过签名加两阶段提交,综合考虑,通过多实例互相监督来保证公平性的基础上,减少像我们图上所看到的,排序的请求,各节点验证,到验证相同的结果,以及确认验证的 Commit 消息等等去减少它,可能从 N 的平方到 N 的复杂度。

这样一方面提高效率,第二降低网络风暴的拥堵。我觉得这样的速度在性能这块,大多情况是够用的,十万 TPS,百万 TPS 对我们联盟链来说意义并不是那么大,因为我们每个场景可以去拉一条链。存储将成为我们最大的瓶颈,即使你把网络性能提高上去,瓶颈上不去是没有意义的,存储的瓶颈目前是没法解决的。

第二块,就是在易用性,怎么让用户更好地使用第一个部署的模式。当然了,我们现阶段还只是在华为云上去部署,这也往往受到各位顾客的挑战,说我们是去中心化的,但是你们现在都部署在华为云上,你们就是个中心。这对广大的云厂家来说都是个最大的不理解,对于整个虚拟机都是交给用户的,我们是没有权限去控制用户的虚拟机的。这个层面来讲,放在云上,去中心化没有想象的那么可怕,不是我们去控制整个区块链,这是难以做到的。但是我们也认为,混合部署是未来的发展趋势。最重要的是,各个厂家间的区块链能够拉通起来,大家都是在同一个区块链上,大家能够共同保证整个区块链系统的公平和透明,以及它的稳健。我们希望通过和每个 BaaS 的厂家一起合作,让整个行业更快地推进起来,使区块链在全世界处在领先的地位。

我们觉得区块链很好,是不可篡改的,是透明的,是共享的,是高效的。但它问题是使用难度比较大,整个区块链存储到文件里面,存储的性能,查询的复杂度都是非常难的。

我们在思考这个问题,能不能像数据库一样去使用区块链,能不能低成本地把现在的应用系统迁移到区块链上,以及能不能支持高效复杂的查询。在目前的系统上这个回答都是否定的,肯定做不到的。

我们做的一个尝试是用 MySQL 来替换 KV 的数据库,把区块链的信息同时存到数据库中去。这样的话,我们有两种方式,第一种方式,直接用 JDBC 去连区块链,就像写一个数据库一样,可以是 insert 一个什么直接进去。我们把像一个系统链码一样,在这里面把相应的 SQL 语句转换成区块链访问的方式去做。但这个问题就存在,是可以像数据库一样去访问,但失去了区块链的最大的精华所在,就是智能合约,我们大家的规则怎么去制订。如果这样做,只是纯粹当成一个数据库来用,失去了区块链可信透明的规则制订。刚才这种情况只是用在非常简单的应用场景,就想当成一个不可篡改的数据库来用,不需要去制订互相之间的逻辑。

另外一种使用方式,还是像原来的智能合约那么去调用,但是可以在智能合约上直接通过 SQL 的语句查询区块链的信息系统,查询 Value、状态、账本的信息,还能够像数据库一样去查询区块链里面的历史记录。这样既能保证区块链强大的能力,同时又能做到像数据库一样,访问我们的区块链系统。我觉得目前是一个尝试,我们好不好用,要看用户的使用过程。

安全是将来的区块链能否得到有效发展,或者高速发展非常关键的所在。特别是联盟链,传统的安全一个也不能少。比如说主机安全,DDOS 攻击,应用安全等等,都是无法缺少的。但是在这里面,比较重点的几个点,一个是成员服务。以太坊在这点会做得比较好,它的实现起来,通过简单的公钥和私钥就能解决帐号的问题,但是在 Fabric 里面,这块的确只保证了节点,对用户的身份认证还是做得并不是很好。

下阶段可能在区块链用户的认证,成员管理,身份管理,安全的策略,以及审计要放进去,让大家很简单去使用,做成工具和模块。但现在目前还只是在做,还没有开放出来。智能合约这块,大家都知道,自从上次以太坊的安全问题导致整个分叉,以及上次空气币直接被归零,智能合约的安全受到大家非常严重的关切。因为 Fabric,用的是容器安全,即使链代码写得不好,至少不会攻击整个账本。

第二个,我们要做沙盒,也是类似的安全容器,我们要做代码的审计,以及危险的监控等等。目前成果还没有完全凸现出来,后面会在这块非常大的投入。还有就是交易的安全等等。最重要的是安全的环境,包括硬件的环境,TEE、 HSM 等等。

我先介绍一下我们目前做的国密这块,因为对国内金融行业,这是必不可少的。

第二个同态,未来互联网也好,区块链也好,这是非常关键的安全方式。因为我们现在都知道在公有链上,几乎是不设防,大家都是明文的。不是不想加,的确有苦衷,如果加了,性能会有影响。同时加密以后,智能合约是没法运行的,因为智能合约没有用户的私钥。同态加密能比较好地去解决它,既能够把信息加密,同时智能合约能够有效地把秘文和秘文相加,才能得到正确的秘文。这就非常好了,虽然不能把整个交易的过程加密,在我们交易的时候,最重要的就是交易的身份和交易的数据,如果把这两者保护起来,那整个交易是安全的。另外一个就是同态最致命的缺陷,就是性能的问题,的确现在开源的同态和央行的数字货币研究所,大概也就一到两笔每秒。

现在华为通过深度优化,能达到一百到一百二左右每秒,在一些特别重要的金融行业,这个速度已经是非常好的。但是目前只能做到加法同态,乘法和除法还是做不到的,减法是加法的相应。即使解决加密的问题,还是存在着一个问题,比如 A 给 B 转账两百块钱,如果不知道密文没法对它进行比对,如果 A 没有两百块钱,他只有一百块钱,如果没有范围证明和等式证明,这个转账就会发生了,那可能变成负一百块钱的,这个在逻辑上是非常不安全的。我们华为目前来说,范围证明和等式证明来解决范围或者安全隐私上的问题。

我们简单描述一下,什么是基于同态加密。我会有一个智能合约,跟每一个用户去生成公司钥对,A 的余额减掉两百块钱,减掉后的叫同态,通过公钥加密进去。对 B 来说,因为不知道它的密钥,那就取 B 的公钥,把 A 和 B 的转账金额算一下,然后把 A 的公钥加密的转账余额也放进去。智能合约对于这种用同一个公钥进行加密的数据,它是可以计算的。就能实现既保证隐私,同时又运算,两者兼备的能力。

华为云区块链服务的场景应用

应用场景这块,我就简单举些现在在用的。对于保险公司来说,最有价值的就是公信力,我为什么买你保险,就是因为将来你能赔付我。新型保险有非常好创新的模式,我能够让你交很少的钱,比如说互助等等,每个月就那么几十块的会员费,只要持续交十八个月,没发病的情况下,在我生病的时候,就能够获得很好的赔付。但是为什么现在国家禁止这个方向发生呢,因为它潜在的风险太高了,它没有传统大公司的这种信用,也没有传统的公司那么复杂的,或者严格的监管体系。但是这个模式太好了,我们合作公司想用区块链技术,用去信任,去中心化,不需要通过几十年的信用积累,没有这个时间也等不起,也没有钱建立那么庞大的监管体系。

通过区块链,让区块链的去中心化,把所有流转过程的参与方都作为账本的持有方。这样的话就防止工作人员去篡改数据,因为账本都在各个环节里面。同时通过智能合约让所有的流程都透明地记录到区块链里面去,这样的话,平台没有那么大责任了,工作人员没有可能去修改大家的账本。这是区块链非常典型的一点,通过技术来降低门槛,这是区块链最有价值的地方。

在我们将来的共享经济里面,只要把商业逻辑,商业规则设计好,技术或者是信用的门槛用区块链来解决。区块链为什么叫做改变现有的生产关系,就在这一点,通过技术来扫平最大的信用障碍。

这是我们第一个上线的商用系统,这非常简单时尚,但是是未来的发展趋势,可能在中国不一定适用。现在分布式能源发电非常广泛,风能,光能,生物能,小型的水电站等等,也是非常大的趋势。另外一个使用端,充电的发电桩等等,都会是分布式的,我们如果用传统的国家电网集中的方式,因为这种都是非常小型的,即使通过智能表,怎么去判断它的数据在里面是真实的等等,这是非常高的成本。在澳大利亚这种基础设施非常差的情况下,没有像中国那么庞大的国家电网在做,这种区块链对于中间的技术来保证信用,通过智能合约来自动执行,通过人工智能去分析对帐等等这样的新技术,像澳大利亚这种地广人稀的环境下,它是非常适用的。对将来更广泛的分布式能源使用机制下,区块链会在很大程度上,促使这种模式的发展。

第三是物流这块,因为环节非常的多,华为本身自己也是个非常大的物流厂家,我们有很多交换机、服务器,需要运输出去,这里面遇到很多的困难。特别是我们第一步做得 PoD,对于大型的设备,可能一个单下去就上百万,上千万,这些必须等到签收单到了以后,才能够去付相应的付款。但这个时间长度会非常的长,可能会有几个月,或者是几个礼拜,它的付款整个周期非常长。

对于物流来说,牵扯到很多的环节在里面,比如说发货、仓储、承包商,以及中间环节的传递,里面会有层层的转包到后期,转包可能不会有很好的信息系统,那很可能这个东西在它的位置下,就找不到这个记录了。现在华为这么大的体量,只有三家主要的物流承包商,因为就是担心其他的,现在有很多合格的承包商,有上万家。但是它没有很好的管理体系,我们很难把更多优秀的厂家引入到这个系统里面来。

我们也尝试过,华为自己来建一个非常庞大的中心系统,来做这个系统,但是成本极其高,别人可能不一定愿意把所有的信息全部传在华为的系统里来。我们用区块链怎么去解决,大家都用同样的、开放的代码系统,大家都建立在系统之上,华为自己开发一个这样的系统,这个系统不是我们内部自己的,我们所有的信息都是公开的,所有的规则都是通过智能合约来制订。

不管大型和小型的物流商,都可以自动获得完整的物流系统。大家都是在基于平等的基础上,我们可以放心地把每一件货物通过区块链,通过二维码把它扫到区块链里面来。这样在信息透明的基础上,任何一个货物都能够很快速地去跟踪出来,这样每个用户下载一个 App 连接到智能合约,可以给每个用户分配一个证书和私钥,这样一旦收到之后扫描进去,每个环节都会知道我的货物已经到了,马上可以启动相关的付款环节,效率会极大的提高。因为区块链大家的身份都以签名的方式,我们就可以建立这样的信用管理体系,特别对于小型的单子,通过竞价,通过信用的方式,让大家很灵活地参与物流的系统,同时也会降低我们的运输成本。假如说物流中某一个不作为,可以把它踢出去,让它永远进不到这个圈子里来。这是一个很好的尝试,是我们自己吃狗粮的,优化现有的系统来进行。

有很多的案例,今天我只是通过这三个,我觉得相对比较典型的案子来分享。

华为云区块链服务的未来思考

未来华为要做什么,华为和其他的 BAT 厂家可能不一样,华为是从云到网络,到终端都有了系统,我们当然利用自己的优势。将来区块链不光只是一个账本而已,它还是要把网络的每个环节在整个互联网做一个根本性的改变,利用边缘的技术,每一个点将来变成一个记账点,或者是一个可信的节点,让边缘计算可以把局部的,比如一个地区变成一个账本,再汇总成一个大的账本,减少统一账本带来的资源消耗和性能消耗,以及利用终端把个人所有的账本记录到我们自己的账本里面来。同时利用芯片的技术,让每个人的身份非常可靠,非常安全地记录在终端的设备里面。

将来我们要构建这样一个从云到网络,到终端三维一体的区块链端到端的解决方案,让区块链真正地融入到下一代的互联网里面,当然这不是一天能完成的,现在我们第一步做的是华为的区块链平台,最终华为应该是这样三位一体的方式,让整个区块链更加简单,更加高效,更加快速。

我刚才讲了很多,在区块链上还是存在着很多的问题,比如说共识算法、性能、安全性。特别是安全性,因为所有的规则要在智能合约实现,它的安全和高效将来是我们重点需要去研究的。对于共享账本,怎么解决账本的无限膨胀,账本的分片,账本高效的使用和查询,当然我们将来也许不一定就区块加链的方式来存储数据,我们将来既要保证不可篡改,也要保证高效存储查询等等。以及各种安全隐私,包括同态等等要得到根本性的突破,才能够使区块链能够很好地应用。以及智能合约,链上和链下,哪些数据是放链上的,哪些数据链下,链上链下都能得到不可篡改的追踪性。跨链,各种链要跨在一起,大家互联互通,最终形成现在的公有云和私有云。最终我们以区块链底层的价值为基础,实现真正信用的社会。

作者介绍

刘再耀,华为云区块链服务产品负责人。2016 年加入华为,华为云区块链服务产品负责人,负责华为云区块链服务的总体规划,技术选型,商业设计,区块链场景落地研究等,是华为云安全架构组成员,负责华为云 paas 总体安全规划和设计工作。在区块链和云安全有深入研究和实践经验。

今日荐文

点击下方图片即可阅读

京东分布式 BaaS 的设计与实践



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/s5amSSPWHr
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/28007
 
570 次点击