研发副总裁答问 DApps Workshop 发布

DApps Workshop 北京时间 6 月 15 日正式发布。下午 1 时,ArcBlock 区块基石(ABT)研发副总裁陈天出席“ABT 新闻直播间”,回答 ABT 社区及媒体提问。

workshop

Q1:这次发布的 DApps Workshop 和以前发布的 Forge 框架和 SDK 有什么不同?

DApps Workshop 主要是给工程师或者产品经理提供一个全新开发的工具,所以跟之前发布的 Forge 框架和 SDK(软件开发包)的区别还是很大的,它是在 Forge 之上的一个应用,是为了方便大家更好的去开发,而不需要实际去写代码,就可以跟手机上的 wallet(钱包)进行互操作,来验证你的一些基本的想法。我们之前发布的 SDK 主要是为了程序员在不同的语言环境下对 Forge 框架和在 Forge 生成的链之间进行互操作的一套工具。比如说你要通过 SDK 发一个 transaction(交易),如果你自己纯手工发的话会非常复杂,使用 SDK 的话就会很方便。DApps Workshop 则把这个能力更进一步,让你直接可以在一个图形化的界面里面点点鼠标,输入一些东西就可以生成一个二维码,然后你钱包就可以跟他互操作,然后向链发送这个 transaction。

Q2:DApps Workshop 用来测试验证开发的想法。问题是想法有千万种,实现也很多样,为什么会有一个通用的测试方法呢?如何辅助产品原型创建?

我们 Forge 框架在发布的时候内置了大概十几种不同类型的 transaction,然后这些 transaction 结合起来可以形成非常丰富的区块链上业务的功能,比如说我们支持一系列创建资产的 transaction。那么 DApps Workshop 可以用现在已有支持的 transaction,然后在上面快速通过拖拽等键盘输入,然后生成 Forge 所有支持的这个 transaction,然后你可以组合各种各样的 transaction 来形成你所需要的这个产品的原型。

好比说你要做一个网上商城,可能会先创建一个钱包,然后用这个钱包去获得一些初始的 token,然后接下来你会用我们提供的 asset factory(资产工厂)来创建一个可以生成更多资产的一个 asset,然后你可以再去模拟另外一个用户,就是你换一个手机或者换一个钱包,然后生成一个新的钱包,然后用那个钱包去购买你这个 asset factory 生成的这些资产,整个流程不需要写一行代码就可以通过 DApps Workshop 来完成。

还有比如说以后我们会发布跨链的 transaction,会有很多 DApp 可能会尝试这种跨链的开发,那么 DApps Workshop 就可以帮助你很快的,在你不用写任何代码的情况下,通过你的手机 wallet、通过 Workshop 本身就可以生成可以交互、可以运行的这个程序。

很多时候产品原型的开发,是当你有了一个 idea(想法),你希望能够以最小的代价生成一个 MVP,就是 Minimum Viable Product(最小可行产品)。那在生成这个 MVP 的过程,你如果写的代码越少,那你在上面投入的这个时间成本就越小,然后你可以做的迭代就越多。我们希望通过 DApps Workshop 来帮助产品经理和开发者能达到这样尽快生成 MVP 的效果。当然 Workshop 还有自己功能的不断的迭代和完善,然后和大家一起最终推进 Workshop 本身帮助开发更好的 MVP。

Q3:ArcBlock 已经发布了 Forge SDK、DApps Workshop 两款开发者产品,请问两者相互配合为开发者带来了什么?

DApps Workshop 的定位主要是为开发者和产品经理开发产品原型(MVP)尽可能的少去写代码来快速迭代的一个工具。

那么 Forge SDK 是帮助开发者以尽可能少的代码,来完成和 Forge 生成的链之间的互操作,比如拿链上的信息,发送一个 transaction,去看一个用户的 account state(账户状态),去拿一个 asset 的具体信息等等,都可以通过 SDK 来完成。SDK 的定位主要是帮助开发者减轻他们发送 transaction 以及和 Forge 交互的难点。因为如果没有我们的 Forge SDK,你自己去写代码,去通过 Protobuf (Google 发布的消息序列化工具,定义了消息描述语法和消息编码格式,并且提供了主流语言的代码生成器) 生成一些代码,用 gRPC (Google 主要面向移动应用开发并基于 HTTP/2 协议标准而设计的一个高性能、通用的开源 RPC 框架,基于 ProtoBuf 序列化协议开发,且支持众多开发语言) 和链交互。然后去按照一定的规则打包组装成 transaction,这些都是会耗费很多精力的,而在 SDK 里面,我们可以通过大概一两个函数就可以把这些事情都完成。

一般而言,开发者可能在有了一些想法之后,它可以通过 Workshop 来做一个简单的交互,就是 Workshop 和手机钱包之间的交互,完成一些操作的流程来验证他的想法是否合理。这个想法验证过程可能会有若干次迭代,但一旦经过验证之后,那开发者还是需要通过调用 SDK。来把这个已经验证过的这个结果,把它代码化,把它最终 UI(用户交互)化,在完成这个 DApp 的核心逻辑以及前端逻辑,最终完成这款 DApp。

Q4:能否简单介绍一下 Forge 的概念、结构,以及支持的语言?

我们一直强调,我们希望 Forge 成为区块链时代的 Ruby on Rails。我们知道在 Web2.0 的时代,Ruby on Rails 催生了一大堆这个 Web Application(互联网应用)的兴起,因为它足够简单、足够全栈。小团队或者个人就可以很方便的去打造一个足够复杂的应用程序。我们可以看到今天的区块链开发者能打造的 DApp 还是非常简单的,大多是赌博性质、游戏类型的 DApp。所以我们的 Forge 就是希望通过把涉及区块链开发的前端后端等整套东西都囊括进来,然后可以更方便地打造应用。

forge structure

Forge 的结构是这样的。我们在在设计之初就考虑到了分层的这个结构,最底下是一个 Consensus Engine(共识引擎)和 Storage Engine(存储引擎)。Storage Engine 目前还没有启用,我们计划是使用 IPFS(星际文件系统);Consensus Engine 目前使用的是 Tendermint,未来我们可以把它换成其他或者我们自己的 Consensus(共识机制)。Consensus Engine 之上有一个 ABI(应用区块链交互)层,然后它把底下的 Storage Engine、Consensus Engine,以及上面的 Forge 的 Kernel(内核)区分开来。那 Forge 的 Kernel 或者说 Forge Core 主要提供的功能就是跟下层打交道,然后为 Transaction Protocol(交易协议)提供额外的支持。

Forge Core 对 Transaction Protocol 的支持,主要就是一个 Protocol 的加载、安装,更新 Forge 节点,然后还有其他辅助性功能。那 Forge Core 往上的话就是 Core Transaction Protocol(核心交易协议),这个概念跟以太坊的智能合约比较类似,但是它的功能会更加强大一些。这些 Core Transaction Protocol 我们支持十几种,会扩展成一个很大规模的这个 Core Transaction Protocols。那开发者可以使用一种或者几种的 Core Transaction Protocol 来完成 DApp 核心内容的开发。

Core Transaction Protocol 之上是我们的 Forge SDK,目前支持 Node.js、Javascript、Python、Elixir、Erlang、Java 这几种语言,然后未来我们会扩充到更多的语言支持,近期可能在两三个月之内,我们会支持 Golang,C++等语言的 DK。

SDK 再往上是 Forge 的一些支撑的工具链,比如说 Forge Web,就是给任何人起的 Forge 链提供一个区块浏览器;我们还有 Simulator(模拟器),当你要开发一个区块链应用的时候,你的应用如果没有任何数据的话,应用的展示等各种逻辑,你是无从去探究它是合理还是不合理的。那我们的 Forge Simulator 就可以辅助你打大量的这个 traffic(流量)进来,然后让你应用里面的这个数据有足够丰富丰富的内容,你可以做更多的调试。

和这些辅助工具并列的,我们还提供了一系列的 Forge Starter Application(Forge 快速入门应用),目前也实现了不同语言的版本,其主要作用就是为开发者提供一个立等可用、开箱即用的这个 Application(应用)。你可以通过 Forge CLI(Forge 命令行工具)去跑一条命令,创建出来一个 repo(代码库),这个 repo 你可以直接把它跑起来。就有了最基本登陆、用户的 Profile(档案简介),去 tracking(追踪),然后 transfer token(转移通证)等等这些最基本的功能,那用户只需要再加一些额外的功能,就可以完成一个 DApp 的雏形了。

Q5:Forge 是专门为开发者设计的开发框架,请问 Forge 的关键技术优势是什么?开发者为什么选择 Forge?

Forge 关键技术优势,我认为在于我们提供了全套从底到上的工具链,比如开发者需要为自己的 DApp 使用一条自己的链,那么通过 Forge CLI 很方便的去发一条链,供他开发使用。如果他开发完成需要把这个链部署到全球各个 Data Center(数据中心)里面的节点,我们的 Forge Deploy(Forge 部署)允许开发者很方便的部署一条完整的链。同时,我们还有很多的工具,比如 Forge Web 区块浏览器、Forge Simulator 来打各种各样的 traffic,有 DApps Workshop 帮助做产品的原型。还有一个尚未发布的测试工具链,帮助开发者更好的去测试你的区块链上面的应用。区块链的测试其实是一个老大难的问题,尤其你要考虑到跨链的话,更是一个很难解决的测试问题,因为你先得有一个多条链的运行环境,然后才谈得上去测试。Forge 就作为一个平台,它把这些工具都整合起来,目标就是为开发者提供尽可能全栈的服务,让开发者可以全身心投入到自己业务逻辑的开发,而不需要因为工具链的缺失而耽误这个开发的进程。

开发者为什么要选择 Forge?如果我们对标 Ruby on Rails,开发者为什么选择它,其实是很类似的问题。回过头来看 Ruby on Rails 的成功,当时有 J2EE、Java 很多这种的平台,但是这些框架都非常难用,对开发者不够友好,很多工具没有集成进来,使得开发者得到处找不同的工具。而 Ruby on Rails 把所有的从数据库建模到 Template Service(模板服务)、Templating Engine (模板引擎)到 testing(测试),开发版本的 Web Server(网络服务器)很贴心的整合到一起,让开发者很好的去开发 Web 应用。我们也有同样的信念,希望让开发者拥有全面简单易用的工具,提高开发的效率。

Q6:Forge 在现今的区块链行业起到什么样的作用,能达到什么样的效果?在同行业里是属于第一吗?

我们目前来看整个 DApp 的生态,90%以上的 DApp 都属于属于垃圾 DApp。Forge 希望能改变这个现状,我们目前能起到的作用就是在 Forge 上面做的 DApp,Forge 给你提供这种能力,让你的 DApp 能贴近用户的需求。打个比方,我们内部在开发一些就是 Demo(演示)性质的这个的 DApp,比如 Eventchain,非常简化版的 Docusign,都是平日人们生活中会遇到的这个应用。

我们把这些应用是做成了去中心化应用 ,做这个的目的就是想要验证 Forge 的确能提供这样的能力,能帮助用户做真正有意义的 DApp。在同行业里面,里面是不是属于第一,不应该由我们来回答。但有些事情的确是目前还没有人来做。比如说钱包,如果你的私钥丢了,你的钱包的怎么样去 migrate(迁移)。或者说你的私钥,比如企业的这个政策的要求,要求你每六个月就要 rotate(回转)一次。这些现有的区块链的项目都没有去考虑。

还有我刚才说的 testing。其实一个成熟度足够高的软件细分领域,测试是非常重要的一环,如果说你的代码没有一个很好的自动测试工具为它保驾护航,那么这个代码质量是很难保证的。我们在做 Forge 的时候其实就感受到了做区块链没有良好的测试工具这个痛点。你如果要做一条区块链测试的话,你首先要能搭一个足够完善的 topology(拓扑结构),你起码得有几个节点的一条链。你不能说一个节点的一条链,然后在上面做测试,那这个测试的完备性是不够的。

最近炒得轰轰烈烈的跨链技术,不同的厂商都宣称自己的解决方案多么多么牛逼。但是作为一个开发者,那你如果用这些跨链技术的话,可能首先考虑到的是,那我在上面开发的东西怎么样能很方便的测试,目前是没有人能给出来很满意的答案,总不能做一个开发的工具,就要手工测试一下,最后修改个 bug(漏洞),还得全部手工测试一下,如果没有这个全自动化测试的话,那这个软件的质量,我刚才也说了是堪忧的。

Q7:请问 ArcBlock 发布的一系列开发工具怎样才能吸引开发者?怎么让更多的开发者参与进来?有没有相应方案或者机制?毕竟现在开发的只有合作伙伴,好像还没有个人开发者在 ABT 平台开发应用。

从开发者的角度来讲,我们开发团队能做的事情是:第一,让这些开发工具尽可能的用户体验要足够良好,第二就是我们的文档要再磨砺的更加准确,更加浅显易懂,然后还有提供中文版的文档。从市场的角度来讲,我们可能有不同的市场计划,有一些 Bounty Program(奖励计划),这个就不是我能回答的范围了,未来可以由我们市场部的同事来回答。

Q8:能否简单介绍一下 DApp 与传统 App 的差别?

DApps 和传统 App 最大的差别,就是运行所依赖的数据是去中心化的、人人可读的,还是封闭只有特定的应用程序才能读的。举一个例子,比如像 Docusign 这种文档签名的工具,比如有个合同发过来,这个人签名完了之后,这个合同就具备了法律效力,Docusign 显然是一个传统的 Web App,那么所有人创建的合同文本都在到 Docusign 服务器上有一份,然后所有的签名也都放在这个 Docusign 那一侧,当然用户也有这个合同的副本。

这样带来的问题就是 Docusign 有了太多它本不该拥有的数据。那如果这样的东西用一个 DApp 来完成,我们可以做一个同样类似的文档签名工具。那比如说我发一个合同出来给 BCD 三个人,然后这三个人在这个合同上签了他们自己的名字,所有签名收集成功之后,会把这个签名以及原始文档的哈希上链。这样每个人都有一份所有人签过名的文档,文档验真可以到这个链上的哈希和签字来验证,可以脱离一个强有力的第三方作为背书的情况下来完成整个流程。无论从安全性,还是从隐私的保护上面,后一种方案都是更好的。

另外一个例子,比如说我们在票务网站上买了票,传统的票务网站你买了票想要退票或转让,能不能干。完全取决于这个票务网站 App 的开发者,他开发的这个功能允许你干就可以,他不允许就不可以,那就完全是他说了算。

假设开发一个去中心化的票务系统,我购买了一张票,这个票的数字资产的所有者就是我,我很容易的就在链上可以和别人交易这个数字资产,无论是通过直接发送,手机钱包发送 transaction 的方式进行交易,还是开发一个简单的 DApp 来做交易。总之数据是属于大家的,数据本身是公开透明的,那我们很容易去完成类似的交易,而不需要受限于原始的开发者给我们设定的条条框框。

Q9:传统 App 刚开始从专业化到模块化开发,请问 DApp 和传统 App 在开发上会一样简单吗?

互联网从上世纪九十年代初开始,逐步渗入到人们的生活,到二十一世纪初期 Web 2.0 开始大行其道中间也花了将近 15 到 20 年的时间。所以互联网达到今天这个高度,开发工具达到今天的这个高度是有它发展的历程,就是靠一代又一代人不断努力的结果。尽管现在 DApp 开发还处在非常早期的阶段,我相信区块链也会完成这个历程,未来的 DApp 的开发会跟传统的 App 开发一样简单。

我们处在这个历史的进程中,能做的就是尽可能推进这个时代的发展,然后用我们对区块链的理解、对 DApp 的理解、对工具的理解、对整个框架的理解,帮助开发者能够更快更好的开发 DApps。我们的目标就是让 DApps 开发者和传统 App 在开发上尽可能的保持一致的体验,尽可能的保持足够的简单。

Q 10:请问 ArcBlock 自己是否正在开发 DApp?可否介绍一下,预期什么时候发布?第一个基于 ArcBlock 平台开发的 DApp 会是哪个呢?

是的,我们自己在开发一系列的 App,绝大多数应用都是 Demo 性质的。有一些 DApp 是为了满足我们自己的需要,比如说我们目前的这个 Technical Learning Series(技术系列培训),就可以通过一个 DApp 来完成,这个就是用户这个注册听某一门课程,上这个课,最后拿到一个 Certificate(证书),这样的一个东西。我们有不少这样的应用正在开发过程中。具体什么时候发布,那就由市场和产品团队来决定。

Q11:请问去中心化社区应用什么时候发布?

这个应用我们现在还在设计和开发当中,那具体的时间表也是请大家参考我们官网上发布的时间表。或者咨询产品和市场的团队。

Q12:请问 ArcBlock 下半年计划是什么?主要是以 DApp 为主,还是继续推出开发工具,或者是生态落地应用?

下半年有几件比较重要的事情,第一个是我们资产链的换币,第二个就是跨链接口的支持。目前这部分已经基本上做完了,还有它周边的一些方便开发者开发的这个工具,还需要进一步去夯实。DApp 开发工具方面,我们会推出测试框架以及在一个合适的时间点,把我们的部署工具打包发布出来。

Forge 本身,我们还会继续以每周有一个 milestone(每个 milestone 包含一到几个 release)的节奏来不断的发布。Forge Framework (框架)核心是在更丰富的 Transaction Protocol 上,围绕着 Framework 的这些开发工具,还会继续完善不同语言的 SDK,完善不同语言的 Starter Project,围绕着目前我们提供的各种各样的新功能,提供更多对用户友好的工具。

对于我们来说,构建 Forge Framework 生态圈,构建 Forge Framework 上面整条完整的工具链,是我们工作一个很重要的部分。我们也希望越来越多的开发者能参与到其中,能使用 Forge Framework、DApps Workshop、SDK 等工具去开发他们自己的无论是 MVP,还是解决某种实际需要的 DApp,在这个过程中,可能会遇到很多的问题,欢迎和我们去交流沟通,我们也尽可能会为大家解决这些问题,有些问题就直接修改在 Forge Framework 或工具链里面,成为 feature(功能)的一部分。那今天我的这个介绍答疑就到此为止,谢谢大家。