以太坊 — Geth客戶端命令詳解

    Geth 全稱是go-ethereum,是一個以太坊客戶端,由go語言編寫,是目前以太坊最常用的客戶端。以太坊還有用C++、Ruby、Python、Java 等其他多種語言編寫的客戶端,不同類型的客戶端是爲了滿足不同的需求場景。官方地址:https://github.com/ethereum/go-ethereum

創世塊

   創建目錄 ./chainwork/private用來存放以太坊節點的數據。

// 創建chainwork目錄
mkdir ~/chainwork/private

創世塊文件genesis.json    

創建配置文件 genesis.json 用於創建創世塊和設置網絡

// genesis.json
{
  "config": {
        "chainId": 4224,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
  "alloc": {
  "0x0000000000000000000000000000000000000001": {"balance": "111111111"},
  "0x0000000000000000000000000000000000000002": {"balance": "222222222"}
    }
}

創世塊參數詳解

  // nonce和mixhash是作爲輸入,讓每個節點都可以通過計算來做
  // difficulty 就是制定了本鏈一開始的挖礦難度,在我們的私有測試節點中, 這個值設得很低,這樣就比較容易挖到礦
  // alloc 可以預分配一些以太幣給某些地址,這裏我們不做預分配
  // coinbase 就是當成功挖出 genesis 區塊後,接收獎金的地址
  // timestamp 本區塊挖出來的時間戳,全網將依據前後 兩個區塊的時間戳之差來調整挖礦的難度
  // parentHash 指向前一個區塊的哈希指針,創世紀區塊中的 parentHash 接地
  // extraData 可用於存儲任何信息
  // gasLimit 規定了每一個區塊中能夠消耗的最大的 gas 值,也就事實上限制了區塊的大小
  // config 用來爲這個私有網絡確立一系列參數
  // chainId 是本私有鏈的 ID
  // homesteadBlock 指明 Homestead 版本的兼容的區塊開始編號
  // EIP155 兼容的區塊開始編號,EIP155 - "Simple Relay Attack Protection
  // EIP158 兼容的區塊開始編號

Geth命令

啓動Geth服務節點

// 以下操作創建了一個以太坊節點,這個節點並沒有接入主網,而是一個私有網絡。
// 目前在該網絡中,只有一個節點,並且沒有任何的賬戶。用戶可以通過命令行來對以太坊網絡進行交互。

cd ~/chainwork/private
geth init genesis.json --datadir ./data0
geth --datadir ./data0 --networkid 4224 --rpc --rpcport 8545 --port 30303 --rpcapi eth,web3,personal,net console 2> log.txt

參數解析


// –datadir 代表文件夾地址,
// –nodiscover 代表該鏈條不希望被其他節點發現,
// console >> geth.log 代表將控制檯輸出到文件geth.log中去
// 當然從命令行模式退出,也很簡單,只要打入exit, 即可退出

查看,創建賬戶

// 查看當前該區塊鏈中共有幾個賬號,以及每個賬號的公鑰地址。
> eth.accounts
[]

//ubuntu爲密碼,賬號是自動生成的
> personal.newAccount("ubuntu")
"0xb27cdf1f4b331eb2a1aa0f9a3a7076c65a915e41"
> eth.accounts
["0xb27cdf1f4b331eb2a1aa0f9a3a7076c65a915e41"]

賬戶解析

在以太坊系統中,狀態是由被稱爲“賬戶”(每個賬戶由一個20字節的地址)的對象和在兩個賬戶之間轉移價值和信息的狀態轉換構成的。以太坊的賬戶包含四個部分:
隨機數,用於確定每筆交易只能被處理一次的計數器
      賬戶目前的以太幣餘額
      賬戶的合約代碼,如果有的話
      賬戶的存儲(默認爲空)

開啓挖礦

> miner.start();
null

查看挖礦情況

//獲取挖礦狀態,true表示正在挖礦,false反之
> eth.mining()
true

// 追蹤日誌
ubuntu@ubuntu:~/chainwork/private$ tail -f 10000 log.txt 
tail: cannot open ‘10000’ for reading: No such file or directory
==> log.txt <==
INFO [09-06|22:05:52.110] 

Ether幣的基本單位

Ether幣最小的單位是Wei,也是命令行默認的單位, 然後每1000個進一個單位,依次是

  • kwei (1000 Wei)
  • mwei (1000 KWei)
  • gwei (1000 mwei)
  • szabo (1000 gwei)
  • finney (1000 szabo)
  • ether (1000 finney)

簡單地說就是就是1 以太幣 = 1000000000000000000 Wei (這就是上一站章中爲何我們轉移0.01個以太幣,結果卻顯示很長的原因)

 

 

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