以太坊私有鏈節點搭建方法

windows搭建方法

1. 搭建以太坊私有鏈節點

下載Geth ,下載地址: https://geth.ethereum.org/downloads/

2. 創建創世區塊文件

在安裝目錄下創建一個genesis.json文件,內容如下:

 

{
"config": {
"chainId": 1337,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x00002",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0x1e82968C4624880FD1E8e818421841E6DB8D1Fa4" : {"balance" : "30000000000000000000"}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

3. 初始化創世區塊信息並指定數據文件存放位置

geth init ./genesis.json --datadir "F:\eth\test"

此命令會創建一個文件夾test,test文件夾爲節點相關數據

4. 啓動節點

geth --datadir test --allow-insecure-unlock --identity test --networkid 613 --rpc --rpcport "8545" --rpccorsdomain "*" --rpcapi "db,eth,net,web3" console  

啓動成功後會進入節點的虛擬機環境,可以執行一些命令

5. 創建其他節點

用相同的配置文件初始化一個文件夾爲test0的節點

geth init ./genesis.json --datadir "F:\eth\test0"

啓動這個節點

geth --datadir test0 --allow-insecure-unlock --identity test0 --port 30304 --networkid 613 --ipcdisable --rpc --rpcport "8546" --rpccorsdomain "*" --rpcapi "db,eth,net,web3" console

6. 倆個節點連接

查詢第一個節點的enode

admin.nodeInfo

可以看到第一個節點的enode爲                                                                                                                  enode://c963b939ec6e6a1a741f267664264647938d1dea880c39ee1e8a888bf8461b0b0cb500dcc98f5b7eb2e520800049c6575239499aa48f3ddc02bf294fd03a18ab@127.0.0.1:30303

打開第二個節點,讓第二個節點連接上第一個節點

admin.addPeer("enode://c963b939ec6e6a1a741f267664264647938d1dea880c39ee1e8a888bf8461b0b0cb500dcc98f5b7eb2e520800049c6575239499aa48f3ddc02bf294fd03a18ab@127.0.0.1:30303")

輸入命令  admin.peers

可以看到第二個節點已經能夠連接第一個節點了。

linux搭建方法

linux搭建方法與windows大同小異

寫了一個以太坊節點管理腳本,倉庫地址:https://github.com/wangjinxin613/ethNodeRun

將倉庫克隆下來,運行./start.sh 即可

基於solidity的分佈式虛擬寵物系統 – HelloPet

這是一個完全分佈式的虛擬寵物系統,不需要中心服務器,運行於以太坊網絡上,需要依賴MetaMask瀏覽器插件。新加入的節點可以捕獵一隻寵物,並且經過12小時後可進行下一次捕獵,寵物可以收藏可以流通。任何人可以給任何人的寵物餵食,餵食可以留言,留言內容永久存儲在區塊鏈系統裏,哪怕千年之後,這些數據依然會存在,只要以太坊還運行着一個節點。

項目地址:https://github.com/wangjinxin613/HelloPet

演示地址:https://wangjinxin613.github.io/HelloPet/

合約部署-使用remix

 

網址:remix.ethereum.org

如上圖所示,第一次使用remix需要啓動一些功能的開關。

啓動上邊的三個即可,其他的我也沒用過...

下邊可以嘗試運行一個小例子,官網的HelloWorld


pragma solidity ^0.4.0;

contract HelloWorld{
uint public balance;
function update(uint amount) public returns (address, uint){
balance += amount;
return (msg.sender, balance);
}
}
新建一個文件,命名爲HelloWorld.sol,將上述代碼複製到這個文件裏。

如上圖所示,可以看到編譯結果,對號證明編譯無錯誤。建議勾選自動編譯(Auto compile),就不用每次手動編譯了。

然後就可以運行了。 

如上圖所示,點擊deploy即可部署合約,需要支付一定的gas; 

這個合約的功能是存一個數,並且可以讀取這個數。

點擊update 存一個數,點擊balance就能取到這個數了。 
————————————————

私有鏈網絡也可以使用remix部署合約(需搭配瀏覽器插件MetaMask)

 

附錄(ethereum JavaScript Console內置對象和方法):

eth:包含一些跟操作區塊鏈相關的方法
net:包含以下查看p2p網絡狀態的方法
admin:包含一些與管理節點相關的方法
miner:包含啓動&停止挖礦的一些方法
personal:主要包含一些管理賬戶的方法
txpool:包含一些查看交易內存池的方法
debug:包含一些debug的方法
web3:包含了以上對象,還包含一些單位換算的方法

1、admin對象

admin.addPeer(nodeURL) // 爲本客戶端新建與目標節點的鏈接
admin.peers // 返回已有連接對象組成的數組
admin.nodeInfo // 返回節點信息
admin.datadir // 返回當前節點存儲數據的文件夾
admin.importChain(file) // 從編組二進制格式的數據導入區塊
admin.exportChain(file) // 把區塊導出爲二進制格式
admin.chainSyncStatus // 返回區塊鏈同步狀態信息
admin.startRPC(host, portNumber, corsheader, modules) // 啓動JSON-RPC的HTTP服務
admin.stopRPC() // 關閉JSON-RPC的HTTP服務
admin.verbosity(level) // 設置日誌冗水平,1-6級
admin.setSolc(path2solc) // 設置solidity編譯器,例如:admin.setSolc('/some/path/solc')
admin.sleepBlocks(n) // 等待n個區塊
/*****以下是與智能合約有關的方法*****/
admin.saveInfo(contract.info, filename) // 把合約info按照json格式寫到目標文件
admin.startNatSpec() // 啓動協議NatSpec構建合同和事務
admin.stopNatSpec() // 停止NatSpec
admin.getContractInfo(address) // 按合約地址返回json格式的合約信息
admin.register(address, contractaddress, contenthash) // 將內容hash註冊到合約的代碼hash
admin.registerUrl(address, codehash, contenthash) // 在區塊鏈中註冊帶有內容哈希值的網址
2、miner對象

miner.start() // 開始挖礦
miner.stop() // 停止挖礦
miner.startAutoDAG() // 開啓auto DAG
miner.stopAutoDAG() // 關閉auto DAG
miner.makeDAG(blockNumber, dir) // 產生epoch的DAG
miner.hashrate // 返回當前hash rate
miner.setExtra("extra data") // 在產生區塊的時候設置額外的信息
miner.setGasPrice(gasPrice) // 設置曠工的gasprice
miner.setEtherbase(account) // 設置默認曠工賬戶,用於接受挖礦獎勵
3、personal對象

personal.newAccount(passwd) // 新建賬戶
personal.listAccounts // 列舉所有賬戶
personal.deleteAccount(addr, passwd) // 刪除賬戶
personal.unlockAccount(addr, passwd, duration) // 解鎖賬戶,可以限定時間,解鎖期間可以進行交易
4、txpool對象

txpool.status // 返回掛起和排隊中的交易的數量
5、debug對象

debug.setHead(blockNumber) // 根據區塊序號設置區塊頭,用於回滾
debug.seedHash(blockNumber) // 返回目標區塊所在的epoch的hash
debug.processBlock(blockNumber) // 使用debug模式的VM執行block
debug.getBlockRlp(blockNumber) // 返回區塊的Rlp編碼的十六進制
debug.printBlock(blockNumber) // 打印區塊信息
debug.dumpBlock(blockNumber) // 返回相應區塊的狀態並返回賬戶列表
6、eth對象:源自web3.eth

// 一些web3之外的eth方法
eth.sign(signer, data)
eth.pendingTransactions // 返回pending的交易
eth.resend(tx, <optional gas price>, <optional gas limit>) // 重新發送pending的交易

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章