/hfc

Primary LanguageJavaScript

# DApp 架構

1. web <-[web3.js]-> enode <-[p2p]-> ethereum-network
2. web <-[http-request]-> nodejs (express) <-[web3.js]-> enode <-[p2p]-> ethereum-network

(web-enode 資料夾為實現 1.)
(web-nodejs-enode 資料夾為實現 2.)


# DApp 開發流程 (簡單版)

1. 先確立在專案中,哪些資料要存放在智能合約中,並實作之 (以 browser-solidity)
2. 啟動 geth 並連接到私有鏈
3. geth attach 中 personal.unlockAccount(eth.accounts[0], '密碼', 解鎖幾秒) ,因為在正式的鏈中,沒解鎖無法發起交易
4. 以 browser-solidity 提供之 web3 deploy code 貼於 geth attach 中執行
5. 記住合約的位址
6. web3.js 在 web 或 nodejs (express) 中初始化的時候,記得換上部署過的合約位址,而假如商業邏輯上需要動態部署合約的話,記得找地方記錄起來
7. 實作網頁介面與 web3.js 包裝好的合約方法連接,或者假如是在 express 中的話,於 handler 中實作 (請見程式碼)


# 此範例專案使用方式

(於專案根目錄)
0. 執行 geth 連接到私有鏈,記得 personal.unlockAccount(eth.accounts[0], '密碼', 解鎖幾秒)
1. npm install (一次就好)
2. bower install (一次就好,假如沒成功的話,請記得 npm install -g bower 先)
3. npm install -g lite-server (一次就好)
4. lite-server
5. 瀏覽器頁面跳出來之後,將網址目錄切換到 web-enode/index.html 或 web-nodejs-enode/index.html
6. (web-nodejs-enode 的 後端進入點為 bank-backend.js)
7. (contract 們在 contract 資料夾裡)
8. (localhost:3030/accounts 可以看到你的 geth accounts 有哪些)


# 注意事項

1. 要檢查有無成功連到私有鏈,請記得 geth attach 之後輸入 admin.peers,檢查是否有資料,假如是 [] 表示沒有成功,請參考 moodle 公告調整之