Dapp開發教程一 Asch Dapp Hello World

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 *

這裏須要輸入一個創世帳戶,能夠是任意一個普通的asch主密碼(12個單詞組成的那個)

? Enter second secret of your testnet account if you have

創世帳戶是否設置了二級密碼,默認是沒有的,咱們直接輸入回車便可

? Enter DApp name Hello Dapp

Dapp的名字,咱們輸入的是Hello Dapp

? Enter DApp description Hello world demo for asch dapp

Dapp的描述,能夠爲空

? Enter DApp tags hello,asch,dapp

 Dapp的tags,爲了未來更好的檢索,能夠爲空

? Choose DApp category
1) Common
2) Business
3) Social
4) Education
5) Entertainment
6) News
(Move up and down to reveal more choices)
Answer:

Dapp的類型,能夠任意選擇你的dapp所屬的業務範圍或領域,輸入列表中的數字便可

? Enter DApp link https://github.com/sqfasd/asc...

輸入Dapp源碼的壓縮包,必須以zip結尾,安裝的時候須要經過這個連接進行下載

? Enter DApp icon url https://www.asch.com/logo.png

Dapp圖標的url

? Do you want publish a inbuilt asset in this dapp? No

是否須要在dapp中內置一個資產,咱們暫時不須要這個選項,輸入No便可

? Enter public keys of dapp forgers - hex array, use ',' for separator 8065a105c785a08757727fded3a06f8f312e73ad40f1f3502e0232ea42e67efd

輸入dapp的初始受託人公鑰列表,用逗號分隔,之後dapp的受託人是能夠動態添加的,因此咱們只須要輸入創世帳戶的一個密鑰便可

Creating DApp genesis block
Fetching Asch Dapps SDK
Saving genesis block
Saving dapp meta information
Registering dapp in localnet
Done (DApp id is 6299140990391157236)

接下來程序就會自動在localnet上註冊這個應用了,在這個示例中,咱們的應用id爲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秒刷新一次,咱們稍等片刻,就能夠看到界面上的餘額刷新了。

相關文章
相關標籤/搜索