標籤:docker scm image .com 產生 led test tle tmc
在 Win7 環境使用 hyperledger fabric source code 類比 IBM Bluemix Blockchain Service標籤: blockchain區塊鏈2016-10-13 07:05 949人閱讀 評論(1) 收藏 舉報 分類:blockchain(12) Docker(5) 區塊鏈(6)
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
目錄(?)[+]
在 Win7 環境使用 hyperledger/fabric source code 類比 IBM Bluemix Blockchain Service作者:陳兆麟
Email:[email protected]當美國聯準會(Fed)主席葉倫力挺區塊鏈 (blockchain) 後,區塊鏈如野火燎原般風靡了整個地球,它將改變人類傳統生活習慣;唯一 IBM bluemix所提供的 bloclcahain service 最近幾乎塞到爆,常出現用量超出負荷的訊息,幸好IBM佛心提供了4 萬行 hyperledger/fabric source code如果沒有這些 source code, 區塊鏈的應用將會被口袋深的大廠把持;目前企業只要有支援 Docker 雲端平台都可以自行開發區塊鏈的應用系統,有興趣的企業可私訊聯絡共同開發。以下範例是以 hyperledger/fabric source code在local machine 模擬 IBM Bluemix bloclcahain service 的功能,也就是不必登入至 IBM bluemix 就可以執行IBM 所提供的範例blockchain marbles。開發環境:Win7 (64 bit, RAM >=8G) , vagrant , blockchain, docker,golang1. win7 安裝 cygwin (https://cygwin.com/install.html)
將安裝之執行檔案目錄 (C:\cygwin64\bin) 設定在控制台系統 path 變數
win7 安裝 virtualbox (VirtualBox-5.1.6-110634-Win.exe) (https://www.virtualbox.org/)
win7 安裝 Git (https://git-scm.com/downloads)
2.建立 github帳號
登入github 建立帳號 (https://github.com/ 紀錄 username 及 password)
fork hyperledger/fabric
瀏覽器入以下網址:
https://github.com/hyperledger/fabric/blob/master/docs/Gerrit/gerrit.md#Working-with-a-local-clone-of-the-repository
(點選 fork )
3. 確認 fabric 安裝至你的 guthub repository,
4.將 xxxxxx/fabric clone 至 Win7 local machine
進入Win7 command shell:
$mkdir -p d:\GoProjects\src\github.com\hyperledger$cd d:\GoProjects\src\github.com\hyperledger$git clone https://github.com/xxxxxxx/fabric$cd d:\GoProjects\src\github.com\hyperledger\fabric\devenv
修正 Vagrantfile (D:\GoProjects\src\github.com\hyperledger\fabric\devenv)
新增 :
config.vm.network “forwarded_port”, guest: 22, host: 22
config.vm.network “forwarded_port”, guest: 3000, host: 3000
$vagrant up (第一次在 virtual box 產生虛擬機器 hyperledger需要一段時間)
5.使用 putty (附錄 1) 登入 hyperledger VM
(username: vagrant,password:vagrant)
6.在hyperledger VM 使用 nvm 安裝 node 最新版 (參考附錄 2)$ nvm use 6.7.0 (選擇 node 版本)$ node -v
v6.7.0
$ npm -v
3.10.3
7. 驗證hyperledger已掛載 Win7 目錄
hyperledger掛載點 ($GOPATH/src/github.com/hyperledger/fabric)
已掛載 win 7 local machine目錄(d:\GoProjects\src\github.com\hyperledger\fabric)
可用 touch 指令新增 empty file (例如 touch abcd) 測試是否掛載成功
8. 下載編輯 marbles 範例相關檔案
將 marbles 範例安裝至local machine (https://github.com/IBM-Blockchain/marbles)
cdGOPATH/src/github.com/hyperledger/fabric$ git clone https://github.com/IBM-Blockchain/marbles.git$ cd marbles
將附錄 3之app.js, mycreds.json覆蓋原先檔案,因不使用bluemix blockchain
service,就必須使用hyperledger chaincode,先將marbles-chaincode fork至
我的repository, 再clone至hyperledger VM,修改以下檔案:
(*shim.ChaincodeStub 修正 shim.ChaincodeStubInterface)
https://github.com/chenlin2/marbles-chaincode/tree/master/hyperledger/part1/part1_chaincode.go
https://github.com/chenlin2/marbles-chaincode/tree/master/hyperledger/part2/part2_chaincode.go
修改後再回存至我的 github repository。以下 app.js 所含zip_url,git_url
已修正為 chenlin2/marbles-chaincode (不可使用系統預設值,user可嘗試使用
自己的github repository)
IBM-Blockchain/marbles-chaincode fork 至 user repository
marbles-chaincode下載經 hyperledger VM修改後上傳的chaincode
9. 在hyperledger VM 建立 node vp0,vp1 (以 putty 重新開啟另一 terminal)mkdirGOPATH/src/github.com/hyperledger/fabric/vagrant_marblescdGOPATH/src/github.com/hyperledger/fabric/vagrant_marbles$ docker pull hyperledger/fabric-baseimage:x86_64-0.1.0$ docker images (記錄 image id: db53d04b117c)$ docker tag db53d04b117c hyperledger/fabric-baseimage:latest(更改 tag)$ docker images (驗證 hyperledger/fabric-baseimage:latest)
$ vi docker-compose.yaml (編輯 docker-compose.yaml如附件 3)$ docker-compose up (過程需要 hyperledger/fabric-baseimage:latest)
10 執行 marbles 範例 (另一 terminal)cdGOPATH/src/github.com/hyperledger/fabric/marbles$sudo npm install gulp -g (安裝 gulp 套件)
$sudo npm install (根據package.json 在node modules資料夾安裝 dependences)
以上執行若無錯誤則執行 $gulp (執行 gulpfile.js 內所定義的工作)
sudonpminstall(若發生錯誤則執行node app.js)
若 (gulp或node app.js)執行時出現以下錯誤則重複執行指令(與RAM 大小
有關,請關閉視窗內不必要的程式)
若執行成功出現以下畫面
11. 瀏覽器輸入http://localhost:3000, 點選 CREATE (每一步驟代表transaction)
12. 選擇 顏色,大小,使用者 => create
13.將Bob’s 之 marble 拖曳置至 Leroy’s
14. 將 Red Mable 拖曳至垃圾桶
15. 瀏覽器輸入http://localhost:3000/p2, (2 peer) 點選 CREATE
Bob 及 Leroy 可建立自己的 marble 並拖曳至另不同 user, 且user可以所持 marble 交易不同顏色的 marble。
16. 指定 User 為 BOB 將 white marble 拖曳至 Leroy’s (非 BOB 無法拖曳)
17. 在 BOB 之下點選 TRADE (交易 marbles 使用)
18. 選擇交易對象
19. 顯示正在等待的交易,點選 x (刪除等待的交易)
20.正在等待的交易將消失
若將 Bob之 red marble 拖曳至垃圾桶, 正在等待的交易也會消失
21. 本例可修改為奪寶遊戲
a 可增加參與者人數 ( 2 -> 5)b 建立寶藏庫, marble可改為寶物, 每一種寶物都有不同顏色組合, 根據 user所付出勞務的多寡,可至寶藏庫換得不同價值的寶物.相同寶物不同顏色全拿,可至寶藏庫交換更高價值的寶物,也可與其它參與者交換。c 參予者不積极參与遊戲,先前的寶物,將自動退還至寶藏庫,積極度的計算與目前所獲寶物價值有關,所獲寶物愈多,積極度愈嚴格 (一定時間未取得相對應。d 等級寶物就需退回原有取得之寶物;當所有寶物都被退回,即中止該user 參與取寶遊戲)。
22. 奪寶遊戲可應用在廣告代理商, user 所看廣告多寡視為勞務支出,奪寶冠軍後可向代理商得現金作為報酬;遊戲與個人能力無關; user只要肯花時間看廣告就能取得報酬。附錄:
1.Win7 安裝 putty
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
http://download.ithome.com.tw/article/index/id/1649
2.hyperledger VM 安裝 nvm & node
http://www.liquidweb.com/kb/how-to-install-nvm-node-version-manager-for-node-js-on-ubuntu-14-04-lts/
https://www.liquidweb.com/kb/how-to-install-node-js-via-nvm-node-version-manager-on-ubuntu-14-04-lts/
3.Docker-compose.yaml, app.js, mycreds.json
https://1drv.ms/u/s!AkBmzWP0h-VxghFdrcW_nVX1GpgO
4.陳兆麟 facebook
https://zh-cn.facebook.com/chaolin.chen.18
參考文獻:
1.https://github.com/chenlin2/marbles2/blob/master/local_blockchain.md
2.http://www.wealth.com.tw/article_in.aspx?nid=8450
3.https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/devenv.md
4.https://github.com/diegomasini/hyperledger-fabric/blob/master/docs/dev-setup/devnet-setup.md
5.https://github.com/IBM-Blockchain/marbles
6.https://github.com/IBM-Blockchain/learn-chaincode
7.https://github.com/hyperledger/fabric/blob/master/docs/Setup/Network-setup.md
8.https://console.ng.bluemix.net/docs/services/blockchain/ibmblockchain_tutorials.html
9.https://1drv.ms/b/s!AkBmzWP0h-VxggcKD76DVuLZ92ky
10.https://1drv.ms/f/s!AkBmzWP0h-Vxbr7h1uTNsTMcPWI
11.https://1drv.ms/b/s!AkBmzWP0h-VxazOBOsVz8nGMLpM
12.https://1drv.ms/b/s!AkBmzWP0h-VxbLK7FOjH9IL5HHc
13.https://www.youtube.com/watch?v=24JAF9Eu1mk&list=UUOTZe-b_jE_Ovy9K9UhZ4BA&index=74
14.https://www.youtube.com/watch?v=wSmJ-rwUo8I&list=UUOTZe-b_jE_Ovy9K9UhZ4BA&index=73
在 Win7 環境使用 hyperledger fabric source code 類比 IBM Bluemix Blockchain Service