以太坊 Geth 環境搭建(Ubuntu)


版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u014409380/article/details/79897335

時隔多日,我又想起來更新博客,履行第一篇是說的后續文章的更新。

話不多說,首先需要准備一個Ubuntu系統,我用的是一台雲服務器,ubuntu 16   64位的service版本

我是用root用戶

開工

 

 

apt-get install software-properties-common
add-apt-repository -y ppa:ethereum/ethereum
apt-get update
apt-get install ethereum

依次執行以上命令。要依次執行。

全部執行完成后,輸入如下命令,查看安裝是否完成

 

geth --help

會出現如下結果:

NAME:

   geth - the go-ethereum command line interface

   Copyright 2013-2017 The go-ethereum Authors

USAGE:
   geth [options] command [command options] [arguments...]
   
VERSION:
   1.8.3-stable-329ac18e
   
COMMANDS:

   account           Manage accounts

.....

證明已經安裝成功。

創建一個目錄,保存區塊數據,並進入

 

mkdir eth
cd eth

 

創建創世初始文件genesis.json如下

 

vi genesis.json

進入編輯界面后,輸入創世配置如下:

{
  "config": {
        "chainId": 1,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x40000",
  "extraData"  : "",
  "gasLimit"   : "0xffffffff",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"

}

編輯完成后輸入“:x”保存退出

將創世配置寫入

 

geth --datadir chaindata --networkid 20180411 --rpc --rpccorsdomain "*" --nodiscover --port 8193 --rpcport 8546 init genesis.json

見到如下輸出,證明初始化成功

輸入如下命令,啟動節點

 

geth --datadir chaindata --networkid 20180411 --rpc --rpccorsdomain "*" --nodiscover --port 8193 --rpcport 8546 console

迎面來的是一片控制台,如下

輸入命令

 

personal.newAccount('123.abc')

創建一個新用戶。123.abc為密碼。根據各位喜好隨意填寫即可。

完成后會輸出一個16進制的區塊鏈地址。可以多創建幾個。不要錢

此時有兩個選擇,一個是在控制台輸入miner.start(1),啟動挖礦

 

miner.start(1)

括號內的數字1表示啟動一個線程挖礦。

 

第二個選擇是,在控制台內輸入命令exit,退出控制台

 

exit

重新啟動節點,並開啟挖礦

 

geth --datadir chaindata --networkid 20180411 --rpc --rpccorsdomain "*" --nodiscover --port 8193 --rpcport 8546 --mine console
比第一次的命令,多了一個--mine.

 

 

如上圖所示,節點開始初始化DAG,Generation DAG會初始化兩次。完成之后,偉大的挖礦工作就開始了。

此時可以暫停一下挖礦。

 

miner.stop()

停止挖礦后,我們可以在命令行里做一些有趣的事情。

1.查看區塊數據。

eth.getBlockNumber(console.log)

輸出如下:

或者

eth.blockNumber

輸出

證明,當前的區塊高度是31.

查看區塊詳情

eth.getBlock(31)

31是區塊號,輸出如下:

difficulty 表示當前區塊難度

gasLimit 為當前區塊的gas容載上限。

gasUsed表示當前區塊存儲交易所消耗的gas值

hash 當前區塊的hash值

miner 挖掘出當前區塊的礦工

nonce:當前區塊pow的隨機數

number 區塊號

parentHash 前一區塊的hash值

timestamp 出塊的時間戳

等等吧,一些就不挨個解釋了。以太坊的jsonrpc文檔中的eth_getBlockByHash接口的返回值里有詳細介紹大家自己看吧

https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbyhash

 

 

2.查看用戶

eth.accounts

輸出如下

查看用戶余額

 eth.getBalance(eth.accounts[0])

或者

  eth.getBalance("0x17733a113992c9666cf5a9c76ad8b9c3d80d7f98")

雙引號內為要查詢的區塊鏈用戶地址。

查詢兩個賬戶的余額,結果如下

3.發起交易

首先解鎖用戶

personal.unlockAccount(eth.accounts[0],'123.abc',60)

然后發起交易

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(1,"ether")})

返回交易hash

把這個hash值保存一下

然后啟動挖礦

miner.start(1)

如圖可證明,這筆交易記錄在第33塊上

4.交易查詢

 eth.getTransaction('0xe70648f383f4b226ee56c7cc6e07e419f2e760b5ed0d54692ebea5ab12a2f7b0')

雙引號中的字符串是剛才保存的hash值。

結果如下:

這是交易的詳情。

詳細的返回值代表的意義,可以參考rpc的文檔

https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash

同時,我們可以繼續查看交易回執

eth.getTransactionReceipt('0xe70648f383f4b226ee56c7cc6e07e419f2e760b5ed0d54692ebea5ab12a2f7b0')

結果如下:

結果同樣可以參考jsonrpc文檔

https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt

其還有好多有意思的命令,大家就慢慢探索吧,又不詳盡或者錯誤的地方希望大家多包涵,多交流。

原創內容,分享請注明出處,多謝各位。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM