1 基本流程前端
Asch有三种net,localnet,testnet,mainnet,后两种是发布到线上的,可经过公网访问。 第一种localnet是运行在本地的、只有一个节点的私链,主要是为了方便本地测试和开发。 Dapp的开发一样要涉及到这三种网络,即node
第一步,在localnet开发、本地测试
第二步,在testnet测试
第三步,正式发布到mainnet
2 启动localnetgit
每一个开发者均可以在本地启动本身的localnet,须要先下载asch源码。github
git clone https://github.com/sqfasd/asch
下载后就能够参照该项目的README进行后面的安装、运行操做。数据库
3 安装asch-clinpm
npm instal -g asch-cli
注意这一步不要用淘宝的cnpm, 有bugjson
4 在本地建立一个应用网络
首先要进入你的asch源码目录,并确保localnet启动app
cd <asch source code dir>
node app.js
而后使用asch-cli的dapps子命令建立应用ide
asch-cli dapps -a
接下来,咱们要回答一系列的问题,以生成应用的创世区块
? Enter secret of your testnet account *
? Enter second secret of your testnet account if you have
? Enter DApp name Hello Dapp
? Enter DApp description Hello world demo for asch dapp
? Enter DApp tags hello,asch,dapp
? Choose DApp category
1) Common
2) Business
3) Social
4) Education
5) Entertainment
6) News
(Move up and down to reveal more choices)
Answer:
? Enter DApp link https://github.com/sqfasd/asc...
? Enter DApp icon url https://www.asch.com/logo.png
? Do you want publish a inbuilt asset in this dapp? No
? Enter public keys of dapp forgers - hex array, use ',' for separator 8065a105c785a08757727fded3a06f8f312e73ad40f1f3502e0232ea42e67efd
Creating DApp genesis block
Fetching Asch Dapps SDK
Saving genesis block
Saving dapp meta information
Registering dapp in localnet
Done (DApp id is 6299140990391157236)
5 目录结构
咱们能够查看dapps下面新增了一个目录,目录名就是新建立的dapp的id
ls -1 dapps/<dapp id>
blockchain.json # dapp数据库描述
config.json # dapp的配置文件,主要是种子节点的列表,与主链配置相似,开发者也能够添加其余自定义配置
dapp.json # dapp的元信息,包括名称、描述、源码包等,这个文件能够用来在不一样的网络再次注册时使用
genesis.json # 创世块,命令行自动生成的,你也能够本身写程序生成,那样就能够更灵活的分配创世帐户的资产
index.js # dapp的入口文件
init.js # 各模块的初始化代码在此
LICENSE # 源码许可描述
modules # 主要代码在这里
modules.full.json # 须要加载的模块配置,若是须要新增模块,能够在这里配置
modules.genesis.json # (模块配置的简化版,暂时不须要)
node_modules #
package.json #
public # 前端目录
routes.json # http路由配置,若是要新增接口,须要修改这个配置文件
开发者若是以为复杂,不须要详细追究,先大概了解便可。 与开发者最相关的文件主要在modules/contracts/目录下 咱们看到这个目录已经存在4个内置的合约类型
ls -1 dapps/<dapp id>/modules/contracts/ delegates.js # 受托人注册合约 insidetransfer.js # 链内转帐合约 outsidetransfer.js # XAS充值合约 withdrawaltransfer.js # XAS提现合约
开发者须要作的就是建立新的合约,用来表达你的业务逻辑,仅此而已。其余不相关的代码都不须要了解。
6 配置dapp创世密钥
咱们须要在config.json的dapp的字段配置上咱们以前在创世块中使用的主密码和对应的dapp id。
未来发布到正式网络中时,也须要有一台节点配置这个密钥,仅需一台
"params": { "6299140990391157236": [ "someone manual strong movie roof episode eight spatial brown soldier soup motor" ] }
7 访问前端
好,如今咱们来放松一下,打开dapp的前端连接,体验一下侧链的基本功能。 能够在钱包ui的已安装应用列表中找到dapp入口 或者直接访问dapp的urllocalhost:4096/dapps/<dapp id>
在这个hello world项目中,咱们能够进行充值、链内转帐和提现操做。 目前的充值暂时只能经过命令进行操做(后面会作到主钱包中),其余功能均可以直接在这个界面上操做
asch-cli dapps -d ? Enter secret ******************************************************************************* ? Enter amount 100 ? DApp Id 6299140990391157236 ? Enter secondary secret (if defined) ? Host and port localhost:4096 null { success: true, transactionId: '10589988261732949004' } 10589988261732949004
充值和提现操做都是30秒刷新一次,咱们稍等片刻,就能够看到界面上的余额刷新了。