【區塊鏈】區塊鏈 - 第一條私鏈

一、Geth Console

Geth Console一個交互式的 JavaScript 執行環境,其中 > 是命令提示符。在這個環境裏也內置了一些用來操作以太坊的 JavaScript 對象,可以直接使用這些對象。這些對象主要包括:

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

二、Geth 安裝

官方安裝文檔:https://geth.ethereum.org/install/

環境:ubuntu 18

下載包:https://geth.ethereum.org/downloads/

## 以下爲linux安裝
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.6-bd059680.tar.gz  // 下載
tar -zxvf geth-linux-amd64-1.9.6-bd059680.tar.gz  ## 解壓
sudo cp geth-linux-amd64-1.9.6-bd059680/geth  /usr/bin/  ## 複製到bin目錄
geth version  ## 驗證是否安裝成功

## 以下爲輸出結果,輸出版本信息即安裝成功
Geth
Version: 1.9.6-stable
Git Commit: bd05968077f27f7eb083404dd8448157996a8788
Git Commit Date: 20191003
Architecture: amd64
Protocol Versions: [63]
Network Id: 1
Go Version: go1.13.1
Operating System: linux
GOPATH=
GOROOT=/home/travis/.gimme/versions/go1.13.1.linux.amd64

三、搭建私鏈

1、 建立目錄和並在目錄內創建genesis.json

mkdir tmpPrivate  ## 創建目錄
cd tmpPrivate  ## 進入tmpPrivate
vim genesis.json  ## 創建並編輯genesis.json,vim使用網上很多教程,此處不再贅述

## 以下爲寫入genesis.json內容
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"config": {},
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333", "alloc": { }
}

2、執行命令,創建創世區塊

geth --datadir "./" init genesis.json
  • --datadir 代表文件夾地址

 以下爲執行後的效果:

 

3、創建私有鏈

geth --datadir "./" --nodiscover console 2>>geth.log
  • --datadir 代表文件夾地址,
  • --nodiscover 代表該鏈條不希望被其他節點發現,
  • console >> geth.log 代表將控制檯輸出到文件geth.log中去

 執行結果:

4、創建用戶

剛開始私鏈是沒有用戶的,需要創建用戶。

personal.newAccount('abc')  ##創建用戶,用戶密碼是abc,得到用戶地址
eth.accounts  ## 查看當前私有鏈中的用戶

執行結果: 

5、查看用戶當前以太幣數量

##查看主賬戶的以太幣數量
acc0 = eth.accounts[0]
eth.getBalance(acc0)  ## 新用戶以太幣數量爲0

執行結果:

6、挖礦 

##開始挖礦 & 停止挖礦
miner.start() ##開始挖礦
tail -f geth.log ##查看日誌,再開一個終端看,挖礦時日誌是動態的
miner.stop() ##停止挖礦
eth.getBalance(acc0)  ## 查看用戶以太幣數量

執行結果: 

開始挖礦:

 結束挖礦後查看賬戶以太幣數量(系統默認將挖到的幣存入第一個賬戶)

6、相關操作

##查看geth版本
geth version  

##切換回命令行,執行命令,製造創世區塊
geth --datadir "./" init genesis.json


##執行一條最簡單的geth命令,來創建自己的私有鏈條
##console 2>> geth.log 
##代表將控制檯的一部分輸出,輸出到文件geth.log上去
--datadir 代表文件夾地址,
--nodiscover 代表該鏈條不希望被其他節點發現,
-console >> geth.log 代表將控制檯輸出到文件geth.log中去

geth --datadir "./" --nodiscover console 2>>geth.log


##私有鏈的全部賬戶
eth.accounts

##該命令將創造一個新的用戶,該用戶的密碼是xxx. 
##當然用戶也可以將xxx 改爲123,或者123456,或者任意密碼
personal.newAccount("abc")


##打開另一個終端,找到geth.log的所在目錄,執行命令從而持續的輸出以太坊的日誌
tail -f geth.log



##查看主賬戶的以太幣數量
acc0 = eth.accounts[0]
eth.getBalance(acc0)



##如何獲取賬戶的以太幣餘額
eth.getBalance("0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f")



##如何在兩個賬戶之間進行以太幣轉換
acc0 = eth.accounts[0]
"0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f"
##acc1 = eth.accounts[1]
"0xb8b12a801b610176935a15321f77b48dd5c0c448"
##amount = web3.toWei(0.01)
"10000000000000000"

##從acc0轉移到acc1中(),交易記錄只有等再次挖礦提交後才能看到變動。
eth.sendTransaction({from: acc0, to: acc1, value: amount})


##轉賬之前大概率會有自動鎖定,需要解鎖
 personal.unlockAccount(acc0)   後輸入密碼,然後需要重新執行上面的轉賬命令
 

##開始挖礦 & 停止挖礦
miner.start() //開始挖礦
miner.stop() //停止挖礦

 參考文檔:

https://note.youdao.com/ynoteshare1/index.html?id=d267c1e9e7d9248cf2bbcb3665b5b4fa&type=note

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