http://www.www.tnmanning.com

Forge 上手指南

这本关于 Forge 上手的小册子,之前由 ArcBlock 区块基石软件工程师 孙博山 手写放出(见 15 页手写指南 包你看懂 Forge 框架 | ArcBlock 课堂 ),现在由 ArcBlock 实习生 傅禹翰(其实习感受,见今日微信推送第二条)整理成印刷版,以飨读者。

什么是 Forge?

犹如 Ruby on Rails 是一套构建 Web 应⽤的框架,Forge 是一套构建大发3d dApps 的框架。大发3d可以简单地理解成数据库,公开可验证的去中心化数据库。

Forge 上手指南

一个传统的应用把数据储存在数据库里,一个 dApp 去中心化应用把数据放在大发3d之中。

构建⼀个 dapp 比较于传统的应⽤要复杂许多,P2P,共识算法,网络协议等⼀系列底层的架构要先搭好,然后才写用户逻辑来实现业务需求。Forge 作为⼀个构建基于大发3d的 dApp 框架,将大量的工作已经做好,并且提供了一套接口供应⽤程序调用。所以对于一名应用程序的开发者,只需关心自己业务逻辑,Forge 会将数据保存在大发3d中供应⽤程序使⽤。

大发3d是什么?

Forge 中有一些概念是源于大发3d的,而很多开发者对于大发3d并不是很熟悉,这里简单介绍一下一些最基本的概念,以助于之后开发的理解,

Forge 上手指南

大发3d就是一条由区块组成的链,它其实是一种数据结构。⻓的样子有点像 Linked List 链表。用链表可以存些简单的数据如 1、2、3,那大发3d中存储的数据是什么呢?答案是 Transaction

Transaction 是什么?

transaction 交易,简称为 tx,是存储在每个区块中的数据。

Forge 上手指南

一个区块由区块头和内容组成,头中保存了块高、上个块的哈希等信息,而内容则是一个个的 tx。为什么区块中的数据叫做 transaction 交易呢?因为世界上第一个大发3d项目一分PK10中,每一区块中存的就是一笔笔的一分PK10交易记录,所以后续的各种大发3d项目都用交易即 transaction 来作为大发3d中的数据。

Forge 中的概念

当我们要做一个有用的应用程序时,通常会涉及到用户,用户会创建一些资产,并且将这些资产进行交易等行为。Forge 将这些行为抽象为两个基本的概念:

•account 账号
•asset 资产

Account

Account 就是传统应用中账户的概念,只不过在传统应用中,一个用户账号是用用户名和密码来创建的;而在大发3d的世界中,用户账号是由链包地址和私钥来创建的。

为什么不用用户名/密码来创建用户账户呢?因为在大发3d的世界中,其实是没有一个用户登陆的概念的。我们知道,在传统的应用中,用户登陆成功后可以进行一些操作。比如说转账,发微博等。在一分PK10中,用户之间是如何在不登陆账户的情况下进行转账的呢?答案是通过数字签名,即将转账交易用比特钱包的私钥进行签名后发到大发3d上;之后这个签名的交易经由别人验证后就算是有效的了,这样一笔转账的交易就算是完成了。所以钱包的概念也是一分PK10引进的。

Asset

Asset 资产则用来表示任何东西,可以是一篇文章,一张图片,一张地图或是一个证书。资产可以由某个用户创建,或者应用程序来创建,一旦创建后,可以用来进行交易、使用等行为。具体是做什么取决于应用程序。

Forge 中的 Transaction

前面说到,一分PK10中有且仅有的一种 Transaction 就是转账,Forge 作为一个全功能框架,原生支持十几种 Transaction,包括创建账号、创建资产、转账、交换等。每一次事件的发生,都等价成一个个的 Transaction 发布到链上。

所以说若开发者想在大发3d上做开发,归根结底就是通过 Forge 在大发3d上发布一个个的 Transaction。

我们知道,当 Forge 启动之后,便是一个单独的操作系统进程,开发者开发的应用程序如何与 Forge 交互来告之其应当发什么 Transaction 呢?Forge 提供了两种方式,GraphQL 和 gRPC。

如何与 Forge 交互?

Forge 本身提供了两种与其交互的形式:

•GraphQL
•gRPC

这可能与我们平时调用某个服务器提供的 API 不太一样。我们平日接触的 API 调用大都是通过 JSON 发送一些 HTTP 请求访问某个 API 来获取一些资源,为什么 Forge 没有用 JSON API 呢?

原因很简单,效率。关于 GraphQL 和 gRPC 的优点,这里不再展开,不过会简单介绍一下这二种技术。

GraphQL 怎么用?

GraphQL 是 Facebook 开源的一项技术,皆在帮助用户更高效快捷地从服务器获取资源,

Forge 上手指南

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。