带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

点击查看第一章
点击查看第二章
第二部分

Asch源码解读

Asch 是一个基于区块链跨链技术的应用开发平台,名字是 Application Side Chain 的缩写,目前全部核心代码已经在 GitHub 上开源。
研究一门新技术,一般来说可以研究该技术的早期代码。因为非常成熟有名的代码往往已经过度设计,对于阅读代码入门不一定是好的选择。而一些项目早期的代码更容易阅读并理解其核心原理。目前来说,Asch是一个非常好的学习区块链的开源项目。
在本书的第二部分,我们将会深入探索 Asch 的代码结构及其功能实现, 以帮助大家理解 Asch 的实现逻辑和运转机制。
本部分源码解读基于Asch v1.4.0(https://github.com/AschPlatform

第3章

Asch——区块链应用开发平台

Asch是一个在2016年就发布主网的区块链应用开发平台。目的在于降低区块链技术应用的门槛,帮助企业和开发者能够快速地构建区块链应用(DApp)。开发者只要会使用 JavaScript 以及有一定的开发经验,就可以基于 Asch 快速构建区块链应用。本章将会从Asch的诞生讲起,包括Asch的架构、开发工具、基本使用等。希望读者在读完本章后可以对 Asch 有一个清晰的了解。

3.1 Asch的诞生和架构

Asch 于2016年1月初开始开发,再经历对共识算法的升级、多节点及安全性的各种测试以后,于2016年8月16日正式发布主网。Asch 最初主要由单青峰个人进行开发,目前已经组建了完整的团队进行后续的开发与维护。Asch 到现在已经正常运行了两年多的时间,未发生过严重的安全事故。已经发布的 DApp 有孔明屋、虚拟地球等,还有大量行业应用正在开发中。
关于Asch(阿希)名字的由来,Asch的创始人单青峰曾做过解释:A 字代表 Application,S 代表 Side,CH 代表CHain,组合起来就是应用侧链的意思,见:“Asch名字的由来”(链接:https://bbs.asch.io/topic/1614/%E9%98%BF%E5%B8%8C%E5%90%
8D%E5%AD%97%E7%9A%84%E7%94%B1%E6%9D%A5)。
做Asch的初衷,单青峰也在这篇文章中进行了阐述:“有了lisk,为什么我们还要做一个Asch”(链接:http://blog.asch.so/2016/05/21/asch-why/)。
Asch 是一个基于侧链架构的公有链平台,内置通证为 XAS(中文名为阿希币)。Asch 包括一套公有链系统以及一系列基于该公有链的开发工具。Asch 以及基于 Asch 开发的 DApp 使用 JavaScript 作为开发语言,支持关系数据库存储数据,极大地降低了区块链开发的门槛。开发者可以利用Asch提供的低层API进行*组合,应用到不同的场景,如金融、文件存储、版权证明等。
Asch提供了一个多链架构的系统生态,如图3-1所示。每一个 DApp 都有一条自己的应用主链并且对自己的主链拥有极大的控制权,比如自定义手续费、发行资产等。DApp的应用主链拥有自己独立的账户体系、数据库等。同时Asch提供了可插拔的共识机制,不同的应用主链可以根据自己的需求采用不同的共识算法。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-1 阿希链的多链架构

Asch 主链以及 DApp 的核心逻辑使用 Node.js 进行开发(可能会逐步迁移到 TypeScript)。DApp 链提供后端的业务逻辑以及接口,前端方面则可以用任意流行的前端技术。前后端之间可以通过 HTTP 以及 JSON RPC 等协议进行通信。由于每个 DApp 运行在自己独立的应用主链上,DApp 之间并不会相互影响。
基于这种多链架构,开发者在拥有很大的自主性的同时有可以享受到 Asch 生态的支持,包括开发工具以及用户系统等。
Asch 还通过自主研发的跨链协议来实现和其他公有链之间的资产交换。目前已经发布了和比特币的跨链资产交换,下一步将会完成对接以太坊及 ERC20 等资产的跨链交换。基于这个跨链协议,其他公有链的资产可以接入到 Asch 上来使用,而所有基于 Asch 开发的 DApp 也可以导入其他公有链的优质资产到自己的应用中使用。关于跨链技术的细节,详请参考本书的第9章。
利用 Asch 的这种多链+跨链的架构,基于 Asch 开发的 DApp 可以更加灵活,并且解决了单链架构(比如以太坊)的数据膨胀以及拥堵问题。另外,Asch主链上的资产可以在 DApp 和其他主链之间通过跨链协议*流通,实现 “一币多链,一链多币”,DApp 内部可以导入其他主链上的各种资产使用。
成为受托人的节点有生产区块并获取奖励的权利。奖励包括区块的固定奖励及转账的手续费。Asch 系统的区块奖励从 464500 块开始,初始奖励 3.5 XAS。每当系统新增 300 万个区块(大概一年的时间),区块的固定奖励则进行递减。从 15464500 块以后,奖励不再递减,每年有略小于 1.5% 的通胀率。区块固定奖励和区块高度的关系如表3-1所示。

表3-1 区块奖励表

带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

目前(2018年11月),每个区块的固定奖励为 2 个 XAS。 Asch系统每天产块总收益:22460*60/10=17280 XAS,每个受托人每天产块收益:17280/101=171.08 XAS
每个受托人的产块收益中,产块的收益会自动转入到社区基金账户,用于团队的开发和运营工作。在后面的版本里,Asch会继续改进链上社区治理的机制,包括引入 Worker 任务系统等。

3.2 开发工具

目前,Asch平台上的开发工具包括:asch-js、asch-cli、SDK、API等。
asch-js 是一个辅助开发者在基于 Asch 开发相关功能的 JavaScript 库。利用 asch-js 库,开发者可以在程序中完成大多数 Asch 主链支持的功能,比如转账、发行资产、注册受托人以及一系列的 DApp 相关功能。详细文档请参考 asch/asch_js_api.md。
asch-cli 是一个运行于命令行下的工具,主要用于通过命令行的方式和区块链进行交互。asch-cli提供了一个 DApp 的模板,帮助开发者能够快速注册一个 DApp。可以使用命令asch-cli -h查看帮助文档,详细文档请参考 asch/asch_cli_usage.md。
Asch SDK主要用于侧链 DApp 的开发。基于 Asch 提供的 SDK,开发者可以完成诸如数据模型的创建、路由的配置以及数据库读写等操作。详细文档请参考 asch/asch_sdk_api.md。
运行 Asch 节点的服务器支持一系列的 HTTP 的 API。通过系统提供的 API,开发者只需要按照接口规则提供数据,通过 POST/GET 的方式提交给节点,节点则会返回相应的结果。详细文档请参考 asch/asch_http_interface.md。

3.3 客户端的基本使用

Asch的 客户端分为在线钱包、手机钱包以及轻客户端等,用户可以根据需求选择合适的钱包。下面以在线钱包为例,讲解 Asch 钱包的基本使用。
1)登录网址:https://wallet.asch.io 或者 https://mainnet.asch.io,会显示登录界面,如图3-2所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-2 客户端首页

2)点击“新账户”,会生成主密码,如图3-3所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-3 生成新账户

Asch的主密码遵循 BIP39 协议,由 12 个随机生成的英文单词组成。这个主密码一定要妥善保管,丢失之后无法找回。复制主密码,然后勾选下面的三个选项,就可以创建钱包了。
3)点击下一步,将刚刚生成的密码输入,登录到系统,如图3-4所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-4 登录到客户端

4)登录后的界面入如图3-5所示。
在首页,用户可以看到自己当前的 XAS 余额、昵称、区块高度以及版本信息等,首页默认显示转账记录。左边栏则是各种功能模块。下面分别介绍。
“资产”页面如图3-6所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-5 首页

带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-6 资产展示

Asch 的资产包括 XAS, 基于 Asch 发行的链内资产以及通过跨链技术导入来的跨链资产。
“转账”页面如图3-7所示。
转账是链上最频繁的操作。注意转账无法撤消,这里可以填写备注。
“提案”页面如图3-8所示。
提案是在1.4版本以后新增加的功能。主要用于网关的创建于初始化。一项提案在发起以后,需要收集到68以上的受托人签名才可以生效。
“网关”页面如图3-9所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-7 转账操作

带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-8 提案详情

带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-9 网关详情

网关是跨链实现里的重要角色。具体的实现可以参考本书的第9章。
“理事会”页面如图3-10所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-10 理事会

理事会也是1.4版本以后新添加的功能。在1.4版本以后,受托人产块的收益都会转到理事会账户。
“投票”页面如图3-11所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-11 投票页面

这里是 Asch 共识的集中体现。普通的持币人可以在对受托人进行投票和撤票。另外票权也可以托管给代理人来投票。
“个人中心”如图3-12所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-12 个人中心页面

在个人中心,可以查看账户的基本信息,并且完成一些基本操作,比如设置二级密码、锁仓等。

3.4 如何基于 Asch 注册自己的资产

很多 DApp 的开发者想要在应用里使用自己新建的资产,那这个时候就需要在 Asch 上注册自己的资产了。注册自己的资产步骤如下:
1)注册发行商。点击客户端首页的“资产发行”可以看到如图3-13所示的页面。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-13 资产发行页面

Asch 的资产格式为“发行商.资产名称”,一个账户只可以注册一个发行商,但是一个发行商可以发行多种资产。注册发行商需要花费500 XAS, 而注册资产需要花费100 XAS。
点击“注册发行商”以后会弹出一个用户协议,点击“确认”以后出现“注册发行商”页面,如图3-14所示,可以填写发行商名称以及描述文字。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-14 注册发行商

2)注册资产。发行商注册完以后就可以进行注册资产的操作了。在图3-13中点击“注册资产”,在确认以后就会出现“注册资产”界面,如图3-15所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-15 注册资产

填写完信息后点击“提交”即可完成资产的发行。
笔者在测试网注册的资产如图3-16所示。
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之三:Asch——区块链应用开发平台

图3-16 注册成功后的资产

这里的koumei 是发行商, KMC 是资产名称。

3.5 DApp案例简介

Asch 是一个 DApp 开发平台,目前(2018年3月)在主链上已经发布了数款 DApp,覆盖行业各有不同,下面介绍几个比较成熟的 DApp。
1. CCTime
CCTime是基于Asch(Asch)侧链技术开发的分布式社会新闻分享与交流平台。CCTime 在 Hacker News 的基础上进行重构,使用区块链技术改变现有中心化的内容市场格局,解决优质内容难以识别、 传播和变现的问题,通过全新的内容价值评估体系保证优质内容的生产者直接获得收益。通过“打赏模式”给予优质新闻发布者、分享者代币激励,构建一 个有价值且符合大众需求的新闻聚合和内容分享平台。官网:www.cctime.org
2. 孔明屋
孔明屋致力于打造一个公正、安全、高效的社会化预测市场平台。用区块链的力量连接每个人的智慧,通过汇聚每个参与者的知识和经验,实现对事件进行精准的预测。区块链公开透明、不可篡改等特性让预测过程公开公正、安全可靠。通过经济激励机制促使参与者真实地表达自己对未来事件的判断,大大降低了人为预测的随意性,实现低成本高效的预测。官网:www.koumei.io
3. 虚拟地球
虚拟地球是一个在Asch公链上运行的 VR/AR 虚拟现实与真实地理结合的虚拟社区。以现实的地理环境和城市原型为基础,在现实地图地形地貌的基础上,*构建虚拟的、去中心化的人文空间。用户可以投资领地或者*创建、体验,并依靠领地、创造和体验来获得代币收入。官网:www.dreammaking.net

3.6 本章总结

Asch(ASCH)具有安全可靠、高效运行、系统灵活、低成本、易复用等特征。使用 JavaScript 作为应用编程语言,支持关系数据库来存储交易数据, 使得开发一个Dapp 应用与传统的 Web 应用非常相似。相信这对开发者和中小型企业有很大的吸引力,只有开发者的生产力提高了,整个平台的生态才能够更迅速繁荣起来。
Asch在设计上也是开放的,并没有局限于某个细分领域,可以*组合其功能实现各种不同的应用。在新闻聚合、发行资产、仲裁、存在性证明、产权认证、物联网、供应链金融、资产数字化、商品溯源、预付卡系统、区块链合同存证等方面都有极大发挥空间。
在共识机制方面,Asch继承并增强了DPoS算法,大大降低了分叉几率和双重支付风险。另外,Asch的侧链不但延缓了区块链膨胀问题,还使得 DApp 更加灵活和个性化。
Asch是一个具有前瞻性的、低成本的一站式 DApp 解决方案和新一代去中心化应用的孵化器。秉承着成就企业、引领创新、信仰技术、拥抱未来的价值观,Asch致力于打造一个全球商用区块链应用生态圈,不仅是用区块链技术赋能各行业,更希望成为能承载世界级经济体的底层基础。
参考资料

上一篇:《Storm企业级应用:实战、运维和调优》——2.4 创建Topology并向集群提交任务


下一篇:j金字塔