Docker 實作 PoW
加密貨幣
安裝
- ca_geth docker
docker pull calee0219/ca_geth
- 更好的版本 XD
geth-node
docker pull blakeberg/geth-node
- 搭建基于以太坊的私有链环境
- 以太坊上搭建私鏈群
- 以太坊私網建立
- detail info
- do transaction
- 建立自己的 Ethereum 私鏈做研究
- Creating a Private Chain/Testnet
- How To Create A Private Ethereum Chain
快速安裝
- 使用 calee0219/ca_geth docker
- 這樣就可以開始挖 CACoin 啦~
docker run ca_geth -t /root/init_start.sh
叢集版本
安裝
docker 詳情請看 docker 筆記
執行 & 進入 ubuntu docker
docker pull ubuntu docker run --name first_node -i -t ubuntu /bin/bash # 這個 docker 是用來跑私鏈的
docker 內安裝 geth
- 升級 ubuntu apt-get
apt-get update apt-get upgrade
- 安裝 geth
apt-get install software-properties-common add-apt-repository -y ppa:ethereum/ethereum apt-get update apt-get install ethereum
以上動作
你也可以考慮直接使用 geth-node,裡面的功能更完備 XD
docker pull blakeberg/geth-node
docker run -d -h geth --name geth -p 20022:22 -p 8545:8545 blakeberg/geth-node
ssh geth@localhost -p 20022
撰寫創世區塊 (Genesis)
- 利用
puppeth
幫助撰寫 - 照著互動式指令即可
- 下
puppeth
指令 - 對此創世區塊命名
- 選擇 2 新增設定檔
- 選擇 1 PoW
- 若希望有一開始就存在的節點,將其節點地址複製到此,最後保留一個 0x 結束
- 設定 network id (留白則會預設 random)
- 其他想要設定的資訊
- 選擇 2 儲存設定檔
- Ctrl-C 結束設定
- 下
架設節點
- 初始化節點
geth --datadir "./[資料存放資料夾]" --networkid [剛剛設定的 networdid] --rpc init [創世區塊.json]
- 出現 “successfully wrote genesis block and/or chain rule set:…” 字樣則成功開啟
--maxpeers
: 最多可連結點數--nodiscover
: 不可讓一般人找到 (需要手動加入節點)- 在 geth 指令加入
--bootnodes
參數 - 進到 console 裡使用
admin.addPeer()
- 存成 static-nodes.json 檔,讓geth自動連線
- 在 geth 指令加入
--netrestrict
: 讓節點只會接受在指定IP子網域內的連線--rpc
: 启动 rpc 通信,可以进行智能合约的部署和调试
- 新增帳戶(account)
geth account new
- 也可以在 js console 裡下
personal.newAccount("passphrase")
- 預設位置是放在
./ethereum/keystorm
--datadir
: 設定檔放置位置
- 啟動並進入節點 console
geth --datadir "./[資料存放資料夾]" --networkid [剛剛設定的 networdid] console --mine
- 最後面也可以不用加 console
--rpc
: 啟動 rpc 通信,可以进行智能合約的部署和調適--rpcaddr
: default rpc ip 是 0.0.0.0,只有內部網路才能連,加--rpcaddr {ip}
後,rpc 的 port 才會是外部也可以連,只是可能會不安全--rpcport
: 指定 rpc port
啟動其他節點
其實就是 架設節點
- 節點初始化
geth --datadir "./[資料存放資料夾]" --networkid [剛剛設定的 networdid] --bootnodes enode://[主鏈 id]@[主鏈 ip]:30303 console --mine
- 30303: 預設 port
- 主機 ip: docker 了話,可以使用
docker inspect [container name] | grep IPAddress
來查找 container 被配置的區域 ip --mine
: 直接開始 mining--bootnodes
: 若不加入這個參數,節點可能會需要在網路上找其他節點找很久- 主鏈 id: 可以用
admin.nodeInfo
查找
- 新增帳戶(account)
- 一定要有帳戶才能收到挖礦的 $$ 啊~~~
- 啟動節點
geth --datadir "./[資料存放資料夾]" --networkid [剛剛設定的 networdid] console --mine
確認節點同步
net.listening
: 確認是否有在監聽其他節點net.peerCount
: 監聽其他節點數admin.peers
: 查看節點資訊
檢查錢包
這是最重要的 XD
web3.fromWei(eth.getBalance(eth.coinbase), "ether")
交易
- 參數版
eth.sendTransaction({from: eth.coinbase, to: "0x154230ed91d1e711e56b9c0f88b5ba5fd2b0503f", value: web3.toWei(1, "ether"),gas:22000,gasPrice:web3.toWei(45,"Shannon"),data: web3.toHex('ZeroCool')})
- 簡單版
eth.sendTransaction({from: eth.coinbase, to: "0x154230ed91d1e711e56b9c0f88b5ba5fd2b0503f", value: web3.toWei(1, "ether")})