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秒刷新一次,咱們稍等片刻,就能夠看到界面上的餘額刷新了。