在網上找了些以太仿的資料,是node.js寫的,之前也瞭解過node.js,正好也可以用上。本篇主要學習以太仿DApp開發環境搭建。
一、安裝 DApp 開發環境
1.1安裝 Node.js
首先下載node.js:https://nodejs.org/en/,下載後直接安裝即可。安裝完畢,打開一個控制檯窗口,可以使用 node 了。這裏我下載的是10.15.3版本,安裝完成之後使用node -v驗證是否安裝成功。
1.2 安裝geth、ganache
下載 https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.8.3-329ac18e.exe 安裝geth。
使用命令行npm install –g ganache-cli來安裝ganache,之後使用ganache-cli命令驗證是否安裝成功。如果是win10可以下載安裝包,https://github.com/trufflesuite/ganache/releases/download/v1.1.0-beta.1/Ganache.appx ,文件是appx格式的,在安裝的過程中如果打不開可以以管理員使用powershell 執行Add-AppxPackage D:\Downloads\Ganache-2.0.0.appx進行安裝。
1.3安裝 solidity 編譯器
使用npm install –g solc安裝,然後使用solcjs --version進行驗證是否安裝成功。
1.4安裝web3
Web3 的安裝過程使用了 git,因此需要先安裝 windows 版的 git 命令行。https://github.com/git-for-windows/git/releases/download/v2.16.2.windows.1/Git-2.16.2-64-bit.exe 。使用npm install –g web3,然後使用node –p 'require("web3")'進行驗證是否安裝成功。
1.5安裝 truffle 框架
使用npm install –g truffle,然後使用truffle.cmd version進行驗證是否安裝成功。
1.6 安裝 webpack
使用npm install –g webpack,然後使用webpack –v進行驗證是否安裝成功。
二、運行私鏈節點
2.1 創世塊配置
創建一個節點目錄 node1,並在其中創建私鏈的創世塊配置文件:
{ "config": { "chainId": 7878, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "200", "gasLimit": "2100000", "alloc": { "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" }, "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" } } }
2.2初始化私鏈節點
執行 geth 的 init 命令初始化私鏈節點:geth --datadir .\data init private.json。這會在當前目錄下創建 data 目錄,用來保存區塊數據及賬戶信息:
2.3啓動私鏈節點
從指定的私鏈數據目錄啓動並設定一個丌同的網絡編號來啓動節點:geth --rpc --datadir .\data --networkid 7878 console。
rpcaddr 參數用來聲明節點 RPC API 的監聽地址,設爲 0.0.0.0 就可以從其他機器訪問API 了;rpccorsdomain 參數是爲了解決 web3 從瀏覽器中跨域調用的安全限制問題。
這裏可以把初始化和啓動寫在cmd文件中,下次就可以執行運行。
2.4賬戶管理
在 geth 控制檯,使用 personal 對象的 newAccount()方法創建一個新賬戶,參數爲你自己選擇的密碼,輸出就是新創建的賬戶地址(公鑰)。geth 會保存到數據目錄下的 keystore 文件中。使用 personal 對象的 getBalance()方法獲取挃定賬戶的餘額,參數爲賬戶地址。這裏查詢了private.json中初始化時設置賬號的餘額爲初始化時的數值。
使用miner.start(1)命令進行挖礦,等待一段時間之後使用miner.stop()停止挖礦,再查詢eth.getBalance(eth.accounts[0])賬戶,可以看到餘額已經有好多了。
三、構建示例項目
3.1 新建 DApp 項目
這裏在DApp目錄下新建了demo目錄,在該目錄下執行truffle.cmd unbox webpack,之後會自動生成下面的文件。
3.2安裝項目依賴的 NPM 包
在E:\DApp\demo\app目錄下執行npm install命令安裝npm包,如果報未能加載 Visual C++ 組件“VCBuild.exe”錯誤,需要執行npm install --global --production windows-build-tools (全局安裝windows構建工具)。
3.3編譯合約
執行命令truffle.cmd compile編譯項目合約。這裏使用的是ganache模擬器來模擬geth,所以需要修改truffle-config.js中的配置,ganache端口爲7545,networkid=5777.所以設置development的port爲7545,network_id爲5777.
3.4部署合約
使用truffle.cmd migrate命令來部署合約。
部署成功之後,可以在ganache中看到原本balance=100eth的現在變成的99.98eth,tx acount爲5,在transactions中有轉賬記錄。