ⅰcp经济模型_干货!来自清华小哥哥的全家桶教程——手把手教你在本地构建 Nervos AppChain...
本文作者邱飛旸是一位來自清華的 Nervos 忠實粉絲,他給我們帶來了相當詳盡的本地搭建?AppChain 全家桶教程,快來一起享用吧!
本文主要定位給對區塊鏈有一定了解的,但是對 Nervos AppChain 這一系列產品知之甚少,想要入門的用戶。本文所使用的方法并不是最快的搭建一個 Dapp 的方法,在公共測試鏈上搭建 Dapp 會更加快速,可以跳過 CITA 鏈搭建步驟,請參考官方 Demo:?First Forever。
主要環境:
CITA 0.18
Ubuntu 18.04
Nervos Network 包含了 Nervos CKB (layer 1) 和 Nervos AppChain (layer 2)。引用?Nervos AppChain 官方文檔的一句話介紹:
「Nervos AppChain」是一套開源的應用公鏈解決方案。
官方文檔種已經包含了各種系列工具的介紹。本教程主要利用以下工具構建一個麻雀雖小,五臟俱全的 Dapp。
CITA
ReBirth
Microscope
nervos.js
cita-cli
這五種產品的關系如下:
docker(安裝方法請參考?CITA - 安裝Docker)
首先,我們需要獲取 CITA,CITA 是 AppChain 客戶端,目前僅支持聯盟鏈。CITA 是 Nervos AppChain 工具鏈的核心。獲取本地可用的 CITA 鏈有兩種方式:從源碼編譯或者直接使用發布包。
由于官方文檔已經闡述十分詳細,本章不作過多贅述,請參考?CITA - 編譯 CITA。
可在?CITA 正式發布版本處找到目前所有已經發布的版本。通常選擇?cita_secp256k1_sha3.tar.gz?版本下載
在本文中,將配置四個節點,并且使用?charge?經濟模型(具體說明見?CITA - config_tool的功能和用法)。如果不配置經濟模型,在創建鏈的時候默認就是?quota。quota?模型下鏈上沒有原生 Token,交易也不消耗 Token,而?charge?模型就和平時我們使用 Ethereum 的體驗基本一致了。
在使用?create_cita_config.py?工具進行節點配置的時候,應當同時指定配置參數。腳本如下:
1./env.sh ./scripts/create_cita_config.py create \
2--chain_nametest-chain \
3--jsonrpc_port 1337 \
4--ws_port 4337 \
5--grpc_port 5000 \
6--nodes"127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002,127.0.0.1:4003"\
7--contract_arguments"SysConfig.chainId=2"\
8"SysConfig.economicalModel=1"
后面需要用到的是?jsonrpc_port,由于我們是在本地搭鏈,配置了四個節點,所以?JSON-RPC?地址應分別為
1、http://127.0.0.1:1337
2、http://127.0.0.1:1338
3、http://127.0.0.1:1339
4、http://127.0.0.1:1340
部署合約和發起交易時任選一個地址連接即可。
使用?cita-cli?首先應安裝?rust?和?cargo。可以參見?Rust 程序設計語言 - 安裝。
然后安裝?cita-cli?:
1、gitclonehttps://github.com/cryptape/cita-cli.git
2、cdcita-cli/cita-cli
3、cargo install
然后可以運行?~/.cargo/bin/cita-cli?或者進入?cita-cli/cita-cli?運行?cargo run命令。運行界面如下:
1、# default is http://127.0.0.1:1337
2、# the following is a test chain provided by nervos
3、cita> switch --host http://121.196.200.225:1337
4、cita> rpc blockNumber
...
cita>exit
節點無法啟動。
在?cita?根目錄下鍵入
1、cd/0/logs
2、cat cita-network.log
cita-network.log?末尾打印出來的結果中有:
1、Thread main panicked at failed to open url amqp://guest:guest@localhost/test-chain/0 : Protocol("Connection reset by peer (os error 104)"), /opt/.cargo/git/checkouts/cita-common-1aad419f3e80ba17/67c715f/pubsub_rabbitmq/src/lib.rs:59
說明?RabbitMQ?服務沒有啟動起來,此時,需要檢查一下是不是有其他的 rabbitmq 的進程,具體原因可以參見官方文檔配置節點下的 Note。我們先結束掉 docker 容器,使用
1、docker ps# 查看目前運行的docker容器
2、docker stop # 結束掉和CITA有關的所有容器
然后查看是否還有?RabbitMQ?服務,
1、ps -aux | grep rabbitmq
如果有的話用?kill -9?結束掉進程。還可以使用?systemd?查看是否有?RabbitMQ?服務被注冊:
1、sudo systemctl status rabbitmq-server
如果有的話,用戶可自行決定是否關閉自啟動。
此時,再重新執行配置操作:
1、./env.sh ./bin/cita setuptest-chain/0
2、./env.sh ./bin/cita setuptest-chain/1
3、./env.sh ./bin/cita setuptest-chain/2
4、./env.sh ./bin/cita setuptest-chain/3
然后啟動節點即可。
本文按照官方 Demo:?First Forever?進行部署。具體步驟不再贅述,只是指出幾個注意事項。
部署合約需要用到公私鑰對,并且在我們?charge?經濟模型下(剛剛說過)只有超級管理員和節點的地址才有余額發布合約。
如果在前文配置節點的時候沒有配置超級管理員,那么默認的超級管理員的地址和私鑰為:
address: 0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523
privkey: 5f0258a4778057a8a7d97809bd209055b2fbafa654ce7d31ec7191066b9225e6
節點的私鑰存儲在進行節點配置時生成的?test-chain?文件夾下的節點文件夾里面,文件名叫做?privkey。節點地址在test-chain?文件夾下的?template/init_data.yml?文件里面。
單合約編譯時,solcjs?與?solc?沒有什么太大區別。當多合約編譯的時候,這兩個工具有些區別。
多合約編譯時,假設?YOUR_CONTRACT_1?import 了?YOUR_CONTRACT_2:
如果使用?solcjs,請使用
1、solcjs --optimize --abi --bin
如果使用?solc,請使用
1、solc --optimize --abi --bin
但是要確保?YOUR_CONTRACT_2?和?YOUR_CONTRACT_1?位于同一目錄或者?YOUR_CONTRACT_1所在目錄的子目錄,否則,應當使用?--allow-paths?參數指定?YOUR_CONTRACT_2?所在目錄。
這一步可以使用?nervos.js?在web網頁中調用合約方法,參考 Demo?First Forever?和?@nervos/chain 文檔。
Microscope 是專門為 Nervos AppChain 設計的區塊瀏覽器,使用它可以看到任意給定鏈的塊和交易的詳細信息。
ReBirth 是基于 PostgreSQL 的一個緩存服務器,Microscope 中的某些功能,例如列出最近10筆交易,必須使用ReBirth。
我們將使用 Microscope + ReBirth 組合搭建區塊鏈瀏覽器。
1. 下載 Microscope 的 Github 倉庫
1、gitclonehttps://github.com/cryptape/Microscope/
2. 安裝倉庫依賴
1、yarn install
沒有?yarn?的可以利用?npm i yarn -g?來安裝。Ubuntu 用戶可以通過下列命令安裝?node?和?npm:
1、sudo apt-get install npm
2、npm i n -g
3、n latest
3. 生成 DLL 包
1、yarn run dll
4. 添加配置文件
1、cp ./.env.example ./.env
5. 修改配置文件
打開?.env,默認配置如下:
1、# public content server 地址
2、PUBLIC=localhost:8082
3、# 默認 AppChain JSON-RPC 地址,就使用剛剛配置好的節點RPC地址即可
4、CHAIN_SERVERS=http://47.96.231.19:4000
5、# 區塊瀏覽器名稱
6、APP_NAME=Microscope
7、LNGS=zh,en,ja-JP,ko,de,it,fr
本文使用的配置如下:
1、# https://cdn.cryptape.com/ 是Nervos官方的CDN
2、PUBLIC=https://cdn.cryptape.com/
3、CHAIN_SERVERS=http://127.0.0.1:1337/
4、APP_NAME=Microscope
5、LNGS=zh,en,ja-JP,ko,de,it,fr
6. 開發模式運行服務器
1、yarn start
其中一行輸出如下:
1、Project is running at http://localhost:8080/
然后等待?webpack?打包,時間可能會比較長。之后看到如下輸出:
1、webpack: Compiled successfully.
說明服務器已經成功運行。
在瀏覽器中鍵入?http://localhost:8080/,可以看見如下圖所示,最近交易列表無法顯示:
1. 設置配置文件
配置文件是?re-birth?根目錄下的?.env,一般應當另建一個?.env.local?文件,本文我們直接修改?.env,將?CITA_URL?字段設為?http://127.0.0.1:1337/
2. 運行 ReBirth
1、gitclonehttps://github.com/cryptape/re-birth.git
2、cdre-birth
3、make setup# 第一次運行使用這個命令
4、make up# 開啟 docker daemon
命令會自動拉取 docker 鏡像并運行容器,默認運行的地址為?http://localhost:8888。
輸入?docker ps,應該可以看見至少有 4 個容器在運行,分別為?re-birth_web,?re-birth_web,?re-birth_web?和一個 PostgreSQL 的容器。
3. 重新配置 Microscope
在瀏覽器中鍵入?http://localhost:8080/,點擊如下圖紅框所示按鈕:
在如圖所示?Other Chain?處鍵入剛剛設置好的 ReBirth 緩存服務器地址?http://localhost:8888:
可以發現瀏覽器的功能變得全面:
[1] Dex Hunter. (2018, September 4). Dex Hunter blog. A hands-on tutorial on building your first DAPP with CITA (Nervos). Retrieved September 19, 2018, from?https://dexhunter.github.io/tutorial/2018/09/04/tutorial-on-cita.html
再次感謝邱飛旸給我們帶來的純干貨分享
總結
以上是生活随笔為你收集整理的ⅰcp经济模型_干货!来自清华小哥哥的全家桶教程——手把手教你在本地构建 Nervos AppChain...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: tensorflow环境下的识别食物_在
- 下一篇: folders默认配置 shell_更改
