大家期待已久的
DevFest 2018 现场实录
终于出炉了!
11 月 25 日,1125 位开发者之约,你在吗?
什么?你错过了 DevFest 2018 ?
不要担心,我们将会在接下来的几期为大家推送本次大会的嘉宾演讲实录,不在现场也能干货满满!
往期回顾:
AI 选手别错过!谷歌云美女工程师 Shirley 教你用 AutoML 定制机器学习模型 | DevFest 2018 实录
谷歌机器学习专家江骏 详解 TensorFlow Hub & Tensor2Tensor | DevFest 2018 实录
谷歌移动技术专家 Palances Liao 带你解析 PWA/AMP & 洞察Web趋势 | DevFest 2018 实录
本期我们带来Merculet 首席架构师吴翔彬 借助公链和联盟链构建融合基础设施。
1
关于演讲者
2
演讲实录
谢谢大家,很容幸来到这里,今天我给大家尝试分享区块链方面的扩展方案,将分为以下三个内容。
区块链可扩展性,问题和提议;
解决方案实践经验;
面临的技术挑战和方案演进
在座的各位 AI 方面的专家,包括移动开发,区块链方面大家应该也很熟悉。但是区块链的一些扩展方案,我觉得大家可能稍微不太关注,我先给大家介绍一下什么是区块链的扩展方案,区块链为什么要扩展,以及什么是 Layer 2 的扩展方案,在 Layer 2 方面厂家会做哪些扩展方案,以及我们公司有什么尝试,看看这些尝试是不是可以回馈给大家。包括实现一个 Layer 2 的扩展方面我们有哪些技术,在目前市面上的产品都不太成熟的情况下,怎么让我们的平台落地,以及完成它的业务。
这个图大家都很熟,The ‘Trilemma’,中文定义为三元悖论。常规化的三元悖论,例如分布式计算里面的 CAP 原则,大众相对熟悉。如果大家熟悉分布式计算,区块链也有一个非常典型的三元悖论,你最多只能同时满足两个条件。
1. Decentralization:中心化,它是一个多中心化的东西,即使某些组织想要对这个东西进行篡改,在经济行为上也是得不偿失的事情。
2. Security:安全性,现代密码学构成了区块链技术的基础,怎么保证用户的隐私性,怎么保证交易的安全性。
3. Scalability:可扩展性,作为今天重点讨论的议题,它为什么要扩展,它的扩展性是什么样的。
如果一个系统 TPS 不达标,我们通常要对它进行一些处理。这张图是引用美国 HowMuch 的一张图,其中最著名的每秒处理 7 个左右,另外一个达到 20,大家看到 Ripple,它的指标比较高,1500 左右。大家看到一个非常著名的交易平台 VISA,每秒 24000 左右,还有阿里是 32 万。大家都知道这样比较可能是不公平的,但是为什么做这样的比较,7 ~ 32 万,后面的实践影响了它的数据,如果 Bitcoin 永远是 7,这个生态发展不下去,这个平台的意义在哪里?
当前,区块链类比 osi 的七层模型,同样划定了分层架构,普遍比较认可的是图中的六层模型。
刚才我们提到了 Layer 1 和 Layer 2,下面一层,各个平台都会开放自己合约,这些公链平台为了吸引你加入它的验证,可能会提供一些挖矿这样的行为,还有货币流动。这个是非常核心的一层,就是它的共识层。POW、POS 就是选择的共识算法,大家应该都知道 POW是安全,但是非常耗费能源。还有一些改进型的,比如 POS、DPOS,还有 BFT 的变种。
大家都知道区块链各个节点之间是通过 P2P 网络通信,所有的这些东西会产生数据,我们最终这些帐本的数据称之为Data Layer。因为整个区块链依赖传统的网络运行的,最下面一层和传统网络交互。
有了这六层之后我们把它分为三层:传统网络我们称为 Layer 0,链上层我们称之为 Layer 1,有一个典型的特征就是所有东西都放在链上的,面向用户和开发者的这两层,我们把它称为 Layer 2。大家可以看到一个明显的界限:Layer 2 关注 Off-Chain 的东西,Layer 1 关注 On-Chain 的东西,Layer 0 主要关注网络这块。
Layer 0 关注网络数据的传输,大家如果对这个有兴趣可以关注这些公司的解决方案,他们有些确实在运行。
Layer1 这层有一个方向,会倾向于增加你的区块的大小,比如说 BCH,Segwit。大家觉得 POW 太慢了,它是安全,但是需不需要这么安全的东西,这么耗费能源的东西。还有著名的Sharding,目前还没有上线,大家看看各家提出来的提议,有一些已经相对成熟了,比如说 BCH,还有 Segwit。
Layer 2 这一层应该在最近一两年会有所爆发,这一层会帮助你做一些确确实实的落地,帮助你做完成一些实际的业务。这一层主要有两个方向,第一个方向是跨链这块,跨链分好几种,比如侧链的方式,除了跨链这块,还有另外一种方式,就是 State Channel 。还有一些平台性的产生,他希望你主动去适应它现有提出的一些跨链架构。比较著名的方案,我们可以看到下面列出来的一些东西,还有以太的 Plasma,都是一些实验性的项目,没有真正的用到生产当中。
总结一下,Layer 0 解决方向主要是利用 P2P 网络、节点的查找发现,以及数据的传输,广播等等。Layer 1 基本上各家公链都有各自的选择。Layer 2 重心放在性能上,同时兼顾和 Layer 1 的安全交互。Layer 2目前被认为有潜力解决大部分区块链业务落地问题。
什么是 Layer 2 的扩展方案?
现在大家有一个共识,Layer 1 的方案我们应该更多的关注去中心化和安全,关于什么是 Layer 2 的方案我参考了一些其他人的见解。我总结为三点:
第一点 off-chain,我把它总结为去中心化和安全交给 Layer 1 去完成,其他扩展性的东西交给 Layer 2 完成。共识是非常重要的点,业务是否通过ethereum来全球范围内确认吗?是不是可以将这些业务逻辑放到链下来操作,在发生争议或者需要裁决的时候通过链上合约来解决?而我们把扩展性的东西交给 Layer 2 完成,是不是不要 Layer 1 就可以了?所有东西在 Layer 2 做掉了?当然不是这样的。因为 Layer 1 要去做一些更重要的事情,比如做一些裁决的事情,比如 Layer 2 里面交易双方出现一些纠纷的时候通过 Layer 1 裁决,Layer 2 的东西交给 Layer 1, Layer 1 怎么样裁决。
第二个 cross-chain ,跨链通过 Layer 1 去做。某些最终结果需要结合链上来解决,但是实现这两点之后就是一个 Layer 2 方案吗? 我认为这只是一个数据上链,将区块链当成分布式数据库的用法,虽然数据在链上不可篡改,但是怎么保证提交的数据的真实可靠?如果 Layer 2 设计的非常不安全,即使 Layer 1 做裁决的东西,怎么去用 Layer 2 来的数据计算。
最重要的是第三点,Layer 2 的东西必须保证或者尽可能的接近 Layer 1 的风险模型。risk model ,off-chain 没有任何安全性的保证,不能说是一个正确的链上交易。off-chain 是一种手段,是 Layer 2 方案的一部分而不是全部。Layer 2 需要依赖Layer 1,Layer 2 和 Layer 1 之间存在一个锚定关系,Layer 2 不仅仅是一个性能扩展方案,我必须要保证这个风险模型和 Layer 1 尽可能接近,这才是一个合理的扩展方案。
| 关于技术上的挑战性:
第一点,要么发生、要么不发生。在区块链世界里面去解决它也蛮复杂的,一个简化的交易流程大概七八步,其中不管成功失败,至少有四步必须要在链上。
第二,交易的确认。因为区块链是一个相对封闭的系统,它基本上只认自己,如何感知其他链发生了什么事情?不可能的事情。在一条链上如何知道其他链发生了事情,因为区块链从一开始设计基本上是在那些跨链平台没有成熟的产品之前,设计成了非常内聚的系统,没有办法从它去识别外面的东西。
第三,安全隔离。因为每条链的安全模型是不一样的,如何在这些不同安全级别的链之间做一些跨链的动作,或者数字资产转移?怎么保证安全级别比较低的这个链会不会影响到安全级别高的链?隔离我们怎么做?
还有就是随着业务发展,可能会从双链之间涉及到多链,甚至会交叉形成网络,这个事情通过什么技术手段来解决?
重点的技术挑战有这四点。因为区块链是现代密码学,还有更多的留给理论方面的专家去实现的,工程方面主要是这四点。
| 自研的解决方案:
第一点是我们选择了联盟链作为我们的 Layer 1。我们作为 to b 的企业,不是直接面对 c 方,需要授权加入网络,允许组织共同治理,所以选择了联盟链来作为我们的 layer1 ,同时也可以为避免交易费用的问题,联盟链作为我们架构的 layer1。
对业务分级,一定风险范围之内的交易通过链下方式处理,实现了自己的类支付通道,风险模型锚定到联盟链。企业或者所属用户大部分行为在支付通道的生命周期内安全进行,在特定情况下可以选择关闭和结算。类支付通道的风险控制通过部署在Layer1 上的 chaincode 来实现。用户通过提交 balance proof 来链上确认。
还有一点,我们的生态是全联通的,我们生态链的联盟,来自于电子货币或者质押有提现的需求,我们需要交互,这样的话我们的生态是全联通的,不仅仅是在联盟之内可以做各种各样的交易,而且和外面的区块链世界是全联通的。
这是一个简化版的业务图,中间层是核心业务层,我们通过合约和服务适配b端用户的 id 系统,并且提供数字化的资产映射服务、提供支付、结算以及审计等接口。通过 api gateway 开放给最上一层的 app/web 以及授权 api 调用。
最下一层称之为 native asset 层,为了联通其他公链,比如允许客户质押 erc20 token 换取平台内数字资产。我们通过一个 notary schema (公证人机制)的服务来允许客户资产存储。
总结一下,使用联盟链作为 Layer1,提供一个类支付通道作为 Layer2 实现。根据风险级别,业务可以选择直接和 Layer1 交互或者通过 Layer2 offchain 处理。在通道的生命周期内显示或者授权代理的方式周期性提交交易的 balance proof,在安全性和性能之间达到更好的平衡,通过中继方式实现和公链的联通。
我们的模式在现阶段下对 to b 企业的参考意义在于:
通过联盟链为企业客户提供 id 服务和资产数字化服务。
在 Layer 1 tps 受限的前提下,结合业务特征,对符合微支付,小额资产转移的行为在 Layer 1 的基础上研发类支付通道,目前业界只有基于公链的类似产品,比如基于以太的 raiden.network 和服务 bitcoin 的 lighting 项目。
研发专属的组件实现公链联通。
综合以上基础服务之后,结合包装好的 sdk 和 api,以及合适的创意,能够服务客户带来切实的利益,提供良好的用户体验。
| 一些小的 Tips:
对存储在 share preference 里面的数据做加密处理,使用proguard加混淆字典来做代码混淆,包括 so 文件。
native layer方面做签名验证,避免被二次打包,还有反动态调试等等。
我们最近打算用 AI 来做 Fraud Detecion、Mobile Security,包括在联盟链部署,从网络的调优,其他核心参数的调整。这些方面有一些经验的,及大家对这个方面有兴趣可以关注我们 Merculet。最近我们也在做开源的事情,会渐渐的把这些东西开源出来。最后谢谢大家,也欢迎大家加入我们的社区。
请保持关注哦,我们后续还会分享更多嘉宾的演讲实录。
嘉宾演讲资料请点击:DevFest 2018 再见!附资料链接。
GDG , 即 Google Developer Groups 谷歌开发者社区,是谷歌开发者部门发起的全球项目。 GDG 是面向对 Google 和开源技术感兴趣的人群而存在的公益性开发者社区,内容涵盖 Web/Chrome、Android 和其它 Google API 等。全世界各大城市都成立了自己的 GDG 社区,GDG Shanghai (上海谷歌开发者社区)也是其中之一。作为全球GDG 社区中最活跃的技术社区,GDG Shanghai 自创立之初就一直专注 Google 技术和开源技术为主的交流, 基本每周都有 Meetup,我们服务 IT 男,更服务 IT 女!
社区中的各位组织者均是来自各个行业有着本职工作的互联网从业者,我们需要更多新鲜血液的加入!如果你对谷歌技术感兴趣,业余时间可调配,认同社区的价值观,愿意为社区做出贡献,欢迎加入我们成为社区志愿者!
加入方式:关注上海 GDG 微信公众号:GDG_Shanghai,并回复:志愿者。
本文分享自微信公众号 - GDG(GDG_Shanghai)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3989964/blog/4472507