499加油站NO.21|Terry:如何让Dapp进化成App

原创
2188 天前
13739

摘 要

“IOST旨在Dapp开发变得更容易。”

《加油站》21期访谈实录:

薄荷:大家好,我是本期的主持人,Mixin Network 的COO 薄荷。今天是我们499小姐姐加油站的第二十一期,我们很荣幸的邀请到了Terry!Terry 的中文名是王雁南,是IOST 的联合创始人及CTO,毕业于普林斯顿计算机系。

Terry:大家好,非常荣幸。我在俄罗斯现在,酒店的网速有点感人,可能回复会有些延迟。

薄荷:这么帅的 Terry 是怎么进入区块链行业的呢?待会儿他得给我们多讲讲故事。Terry 之前负责创业公司Heroku早期平台2亿美金被salesforce收购,又在 Microsoft负责第一款流处理平台,后在Uber从零起打造了中国2个核心打车功能和平台和美国第一个订阅模式。在普林斯顿大学研发过替代 bitcoin 的high level 函数语言Coinlang,有非常丰富的分布式系统和加密火币的经历。

本期主题:“如何让Dapp进化成App”。分享主要分为两个环节:主题分享环节与自由提问环节。下面我们欢迎Terry隆重登场,为我们分享一下他的观点~!

Terry:好的,感谢。今天主题是如何让Dapp进化成App。我的意思是这样的,我觉得如果哪一天我们不管DApp叫DApp,而是叫App,区块链才算真正走进了人民的生活。为什么现在区块链还没有走入普通人生活,我简单分析下啊。

我觉得 we cannot predict the future without looking at the past。1992-1993 年是互联网发展历史上一个重要的分水岭。那个时候,80年末到90年初,TCP/IP协议诞生后,经过次迭代逐渐成熟,但互联网始终局限在少数技术人员手中。大多数用户不了解互联网,不知道如何访问互联网,虽然有IMG tag、FTP、Gopher等应用,但是都是极客应用,内容非常单调。这段时间像极了现在的区块链。 现在区块链经过不断地迭代,逐渐成熟,但底层技术还有不完善的地方,大部分使用者仍是偏技术 人员,链上有少量应用但是内容和体验都很有限,离普及到普通家庭还有很长的距离。 1993 年, Mosaic 和 Netscape 诞生,出现了基于 HTTP 协议的浏览器。用户不需要高深的技术,只要使用浏览器,就可以获取想要的信息。 AOL 又推出了电话拨号接入互联网,让人们轻松地能使用现有的设备 access 到互联网,这为互联网的普及做出了重要的一步。所以从历史的经验出发,我们想让先迭代出成熟的底层协议, Developer-first ,然后 user-first。

我们目标很简单,IOST想做一个去中心化应用的平台。 IOST采取开发者先行的原则,想率先服务世界上的每一个开发者。IOST想让开发者花更多地时间开发有趣的应用,而不是把时间浪费在底层和工具上。 我们想做一个开发自由网络的有效方式,可以为第三方开发人员,创作者和企业提供实现价值的平台。我们致力于解决可拓展性的三角冲突,在保证去中心化的情况下实现扩容。

薄荷:目前IOST 比较关注哪些方向的Dapp呢?

Terry:首先看好的底层,我们主要精力都在优化底层的协议,从共识到VM,然后我们非常看好由PGC(Professionally Generated Content)主导的内容类平台。在纽约,我们精挑细选,从原Google、 Facebook、头条、Bloomberg、Mobike等地方找到最优秀的人才,组建了一个优秀的团队,孵化了Berm Protocol。Berm是一个基于IOST的PGC主导的内容类平台,通过区块链搭建出一个PGC主导的去中心化内容平台,社区主导自制。我们认为,传统的UGC内容类平台重运营,且引入激励后对内容质量的把控变得更难,PGC内容类平台更加适合区块链的本质。目前, Berm的测试demo已经在美国和其他英文市场了获得了几十万用户,上万日活,并且留存数据优秀。不仅如此,Berm还得到了除BlueHill以外的多家顶级VC和Exchange的支持,我们希望共同努力,帮助Berm团队打造blockchain上第一批真正普及C端用户并且被大量使用的产品。

那如何让Dapp开发变得更容易,先从虚拟机讲起。我们认为一个良好的虚拟机实现,必须在做到架构设计优雅的同时,满足易用性和安全性的需求。在经过对比参考EVM、EOS、C Lua、V8等相关虚拟机的优缺点之后,我们从根源上解决了很多EVM和EOS不合理性设计与问题,并且基于V8在NodeJs和Chrome上的优异表现,最终构建了基于V8的IOST虚拟机。V8VM架构的核心是VMManger,主要有如下三个功能 :(1) VM入口,对外接收其他模块的请求,包括RPC请求、Block验证、Tx验证等等,预处理、格式化后交给VMWorker执行。(2) 管理VMWorker生命周期,根据当前系统负载灵活设置worker数量,实现worker复用;同时在worker内部实现了Java代码热启动、热点Sandbox快照持久化功能,减少了频繁创建虚拟机、频繁载入相同代码引发的高负载、内存飙升问题,降低系统消耗的同时,又极大的提高了系统吞吐量,使得IOST V8VM在处理fomo3D这种典型的海量用户合约时游刃有余。(3) 管理与State数据库的交互,保证每一笔IOST交易的原子性,在合约执行出错,或者gas不足的情况下,能够回退整个交易。同时在State数据库中,也是实现了两级内存缓存,最终才会flush到RocksDB中。

另外一个IOST虚拟机的核心设计是Sandbox,Sandbox作为最终执行Java智能合约的载体,对上承接V8VM,对下封装Chrome V8完成调用。我们把他主要分成了Compile阶段和Execute两个阶段。Compile阶段 ,主要面向合约开发和上链,有如下两个主要功能:(1) 打包智能合约,基于webpack实现,会打包当前合约项目下的所有Java代码,并自动完成依赖安装,使IOST V8VM开发大型合约项目变成可能。同时IOST V8VM和Node.js的模块系统完全兼容,可以无缝使用require、module.exports和exports等方法,赋予合约开发者原生Java开发体验。(2) Contract Snapshot, 借助v8的snapshot快照技术,完成对Java代码的编译,编译后的代码提升了Chrome V8创建isolate和contexts的效率,真正执行时只需要反序列化快照就可以完成执行, 极大的提高了Java的载入速度和执行速度。

我们认为作为公链最核心的底层设施,虚拟机必须在性能上表现足够优异。IOST在设计、虚拟机选型之初,就把性能作为最重要的指标之一。Chrome V8使用JIT、内联缓存、惰性加载等方式实现Java的解释执行,得益于Chrome V8的高性能,IOST V8VM的Java执行速度有了质的提升。我们在递归fibonacci、内存拷贝、复杂cpu运算这三个方面,分别测试了EVM、EOS、C Lua和V8VM的性能。3项测试的平均结果是比eos块9倍,比ethereum快160倍,实测IOST V8VM在主流VM实现中,性能表现优异。这个测试包含了虚拟机启动和加载配置的时间,可见IOST V8VM直接冷启动也有不少的性能优势,后续我们还会加入VM对象池、LRU缓存等等,来提升虚拟机CPU、内存使用率,以更好提升IOST处理智能合约的能力。

薄荷:性能上优化了好多

Terry:在后续的迭代过程中,我们将把IOST V8VM的安全性、易用性放在首位,并在如下三个方向不断努力:(1) 高性能,保证合约更快的执行;(2) 开发上手更加简单,增加并完善更多标准库;(3) 支持大型项目构建,调试,有完善的工具链。

薄荷:我有几个小问题:IOST 主网上线预计是啥时候,有设置回滚机制嘛?目前平台支持哪些语言呀?还有上述提到的高性能,现在跑出来的数据,大概是多少的TPS 酱紫,以上。

Terry:主网预计是2019年Q1,大概还有2-3月,我们状态数据库因为支持多版本并行控制(MVCC),所以在有fork的时候不需要回滚,而是直接在MVCCDB里拿数据,然后目前平台支持Java编写智能合约。IOST上一版本已经支持7K的TPS,这一版本除了POB的优化,还做到了更多造块,验块,签名,存储性能与网络传输的提升,使TPS可以更稳定的维持在之前的水平,降低了延迟。相比于其他项目,IOST在执行复杂程序,数学计算,简单交易都大大超过了竞争对手的表现,详情可以参照benchmark运行的结果 - http://developers.iost.io/blog/2018/09/21/iost-v8vm-design/

薄荷:下面请Terry 继续分享~

Terry:如何让Dapp开发变得更容易,让用户使用更方便,下面我要说说经济模型。目前使用最多的两个经济模型为,ETH的使用权经济模型和EOS的租赁经济模型。

ETH模型的优缺点很明显。优点有:免费创建账号;竞争使用资源,平衡网络使用率;Gas收费粒度更细,更精准。缺点有:系统繁忙时,网络使用价格会非常昂贵,使用价格波动大;开发、部署、使用会持续收费,并且系统性能低,无法支持大规模DAPP应用;一次性收费,用户存储空间没有释放动力,垃圾数据较多;CPU资源和存储资源,统一用Gas支付,导致两个资源相互影响,使用率低。

EOS的租赁经济模型的优点有:拥有全网多少代币,就等量拥有全网多少资源;使用系统需要质押Token,不会消耗Token,支持大规模DAPP应用;跟系统租赁RAM,用户有动力释放空间,赎回Token,减轻区块链数据膨胀问题。而缺点有:创建账号复杂,收费高;大户质押Token获取资源,会导致散户资源被稀释,即使网络空闲时,散户也用不起EOS网络;需要租赁的资源种类过多(NET、CPU和RAM),普通用户操作门槛高。

薄荷:确实是酱紫,EOS 现在开发者门槛也很高。

Terry:IOST的贡献度经济模型致力于继承成熟经济模型的优点,避免缺点。IOST想实现一个免费使用、适合大规模商业DAPP落地的经济模型。其特点为:1)极低的创建账号成本;2)贡献越大,可以使用的系统资源越多;3)使用系统需要质押Token获取GAS,不会消耗Token,真正的免费公链;4)使用Gas可以避免EOS大户质押Token,稀释散户资源问题;5)资源分为CPU和存储,避免ETH资源统一用Gas支付,使用率不高问题。

EOS的cpu资源会因为大户质押,导致散户cpu资源瞬间被稀释,这样有两个问题:1. EOS网络处于空闲时,散户也分不到CPU资源;2. 用户可以使用的cpu资源量会因为质押操作陡峭变化,不够平滑。IOST通过质押换gas,然后用gas竞价消费cpu资源,解决了这两个问题。

ETH将cpu资源与storage资源统一通过gas定价,也会导致两个问题:1. 混合定价以后会导致cpu与storage资源利用率都不高;2. storage资源的价格会因为cpu资源的竞争而升高,导致storage很贵。IOST通过将cpu资源与storage资源的经济模型分开,解决了这两个问题。

薄荷:Terry 分享的第三部分结束啦。我的小问题是,IOST 现在开发者的成本是很低的,能否形象的给大家举个栗子讲一讲,同样的开发一个最简应用,如果使用 ETH 或EOS,IOST三者之间的对比~ETH 的开发难点在于,现在承载不了大规模的商业应用,EOS是开发门槛因为经济机制的原因越来越高,所以IOST就结合了两者的优点,做了性能上的优化。

Terry:举一个赌博游戏的例子,就经济模型来说,ETH每一笔交易都需要付gas,并且延迟极高,导致游戏没法玩,费用太贵;EOS现在需要抵押几百个EOS,才能顺利的玩那些色字游戏来赢每盘几个EOS,并且大户入场的话,瞬间就玩不了了,IOST现在通过和系统买卖资源,抵押几百IOST就能玩。

薄荷:和系统买卖资源用的是类似Bancor 的协议嘛?也想了解POB 的机制是怎么运作的,Terry 再分享下这部分~

Terry:没错是类似bancor,我马上就将pob。共识层的目标是要解决可扩展性的三角冲突,而不是用牺牲censorship resistance的做法回避解决问题。IOST区块链在尝试各种扩容性方案的同时,我们坚持的原则是始终维护其censorship resistance、公开参与和免受恶意攻击的特性。IOST链上的每个节点都会有平等的机会被选入委员会参与验证交易和生产区块。

很多人说,区块链最后成功落地并得到广泛应用,这些网络就必须具备能够和类似Visa网络竞争的吞吐量,没有人会愿意用交互需要花费几天、几小时、哪怕需要几秒的应用。这是一种非常片面的观点。这种论断在某种程度上是正确的,区块链需要有具备和中心化服务比拟的性能,但是却没有强调性能的提升不能建立在牺牲去中心化的前提之上。

大多数人没有认识到区块链提供的根本价值-Censorship Resistance。如果区块链没有censorship resistance的特性,而是像EOS等依靠一批固定的节点生产区块,那么我们又只是回到了传统的中心化数据库,并且还不具备如Amazon Web Services 和Microsoft Azure Cloud所能提供的效率。

比特币区块链censorship resistance的特性意味着任何人都可以拥有比特币的价值,且没有被恶意者如机构或管理者等剥夺的风险。Censorship resistance的价值不仅体现在货币资产。IOST区块链的设计正体现了这一点。IOST有一个动态的、基于声誉的委员会,而不是静态的节点,用于验证交易和生成区块。区块链中的每个节点都享有公平的机会被选入委员会。在权益证明(PoS)中,拥有更多的币,持有时间更久就有更大的机会来打包下一个区块,尽管和工作量证明(PoW)相比已经节约了算力,但是越有钱的节点会比其他节点越快获得财富。

IOST区块链的可信度证明(PoB)机制不仅奖励有一定账户余额的节点,还会考虑节点对社区的贡献。社区贡献目前包括节点验证的交易和参与的交易数量,以后可能根据测试网络的结果增加相应的节点的算力贡献和资源贡献。

这就意味着这些积极促进IOST网络建设为其作出贡献的群体能够得到奖励,意味着正确的人群将得到奖励。IOST网络中,节点的贡献将用一种叫Servi的单位来衡量。一个用户的可信度分数由其Servi余额和代币余额两个数值共同决定。可信度分数越高,就越可能被选入委员会。

可信度证明(PoB)共识机制有一个独一无二的设计就是Servi会自我销毁。节点验证并生产区块后,系统会将节点的Servi余额自动清零。所有的节点会按照可信度分数由高或低的顺序来轮流验证区块,而可信度高的节点会因为Servi的销毁而不停地更换,这就保证了平等的区块奖励分配。可信度证明(PoB)共识机制的优势在于,能够实现经济激励的更平等分配,每个为社区贡献的用户都有同等的机会获得IOST。更重要的是,新加入网络的成员可以和加入网络很久的老成员拥有同等的获得经济奖励的机会。它给了所有人平等的机会。IOST致力于赋予普通人群更合理的经济激励,打造一个为所有人群提供机会的区块链。节点没有什么不同,每个人都可以通过贡献成为超级节点。整个IOST系统旨在为所有参与者提供平等和公平的机会。

薄荷:共识机制是公链中最难的一部分,谢谢Terry 的精彩分享!

薄荷:今天Terry给我们的小姐姐们分享介绍了很多关于IOST 的技术架构和共识机制方面的内容,帮助小姐姐们对技术有了进一步的认识,下面我们就进入自由提问环节!相信大家应该都按捺不住啦~小姐姐们有什么关于我们今天分享主题或是个人的问题都赶紧砸出来吧~!

好厂长:IOST月球办事处的粉色T恤什么有货?

Terry:我帮你问问,应该很快就有,哈哈。

薄荷:可以随机送一打给群里的小姐姐们吗?

Terry:可以呀,没问题。

499小姐姐:报名,M号一件~

薄荷:举爪提问,超级节点需要特殊的服务器嘛?POB 的双花攻击需要多少节点共识?

Terry:我们没有超级节点,机器也有没硬性的bar,需要超过2/3的节点。

Ellen:IOST有做什么吸引开发者来你们链上开发么?(除了技术层面上的)。像EOS虽然不好用,但是现在吸引了之前在其他链上开发的项目和开发者。

Terry:跟EOS相比,IOST对开发者更友好,并且更去中心化,POB共识机制让更多的节点更公平的参与。IOST 支持Java开发,增加了并完善更多标准库和工具链,支持更灵活的控制和管理智能合约,包括删除和升级智能合约,IOST比ETH性能更好,延迟更低,并且能支持中心化的同等服务的性能体验。如果更具体的话,举几个例子:1. 支持Java,世界上代码项目和使用人数第一的编程语言;

2. 智能合约标准库支持,不像ETH字符串拼接、切割、查找等等都需要开发者自己实现;

3. 智能合约支持升级与删除,ETH合约升级为巨大痛点,EOS合约有缺乏约束;

4. 支持智能合约域名系统,不像一串hex string。

好厂长: IOST名字谁起的?

Terry:Jimmy起的哈哈。How do you like it?

好厂长:就是特别好的名字,能衍生出很多的想象。名字释义,属于可以可以让粉丝比赛名字解释的好名字。

Terry:应该马上要离开了,感谢499每一个小姐姐,我们欢迎各位的想法和意见,并期待能够继续改进IOST 区块链!

499小姐姐:舍不得超级偶像,谢谢Terry颜值暴击+干货分享~