1. 程式人生 > >以太坊Geth使用教程

以太坊Geth使用教程

一、Geth建立私鏈

1.建立一個genesis.json檔案

內容如下:

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

}

關於JSON檔案引數的解釋

引數

描述

mixhash       

與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設定需要滿足以太坊的黃皮書描述條件

nonce        

nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設定需要滿足以太坊的黃皮書描述的條件

difficulty

設定當前區塊的難度,如果難度過大,cpu挖礦就很難,這裡設定較小難度

alloc

用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣的賬號,需要的時候自己建立即可以。

coinbase

礦工的賬號,隨便填

timestamp                

設定創世塊的時間戳

parentHash

上一個區塊的hash值,因為是創世塊,所以這個值是0

extraData

附加資訊,隨便填,可以填你的個性資訊

gasLimit

該值設定對GAS的消耗總量限制,用來限制區塊能包含的交易資訊總和。

2.將genesis.json拷貝至任意目錄

3.命令列環境執行初始化命令
建立私有鏈 geth --datadir .\persondata\ init .\persondata\genesis.json


登入私有鏈geth --datadir .\persondata\ --networkid 110 console


init 是初始化創世區塊的,如果已經初始化了,這個命令不需要執行,只需要執行第二條。
datadir是表示當前區塊鏈網路儲存的位置。
networkId:表示目前私鏈網路Id,這個ID是唯一標識,需要注意。


如上圖,當執行完以上命令後,會出現兩個目錄:
Geth目錄:用於儲存該鏈上geth儲存的該鏈上的區塊資料
keystore目錄:儲存的該鏈上的使用者資訊

二、賬戶操作

建立一個賬戶        personal.newAccount("123456") ,輸入引數就是密碼,賬戶地址儲存在keystore目錄下 。                                                                       


注意:一定要輸入字串,否則會報錯!

查詢賬戶資訊      personal.listAccounts ,讀取的是本地keystore目錄下的賬戶地址資訊                                 


三、檢查連線資訊和Enode

檢視連線狀態net.listening ,檢視當前連線狀態資訊                                                                                                                               

檢視對等節點連線數量 net.peerCount                                                                                                                                                              


檢視所連線的私有鏈 net.version                                                                                                                                     


檢視自己的Enode  admin.nodeInfo ,把自己的Enode暴露出去,可以讓別人新增你的節點,讓別人連入你搭建的私有鏈網路                                                                                                                                                 

檢視自己連線的節點

 admin.peers ,這個命令可以檢視自己連線了那些對端節點,這裡僅僅是網路自發現的節點。                                



新增別人的節點 admin.addPeer("enode://[email protected]:port") ,  admin.nodeInfo可以看字enode資訊格式                                                            

四、挖礦

啟動挖礦

  miner.start(x) ,x是啟動幾個核心來挖礦                             

第一次挖礦的話,時間稍微有點長,如下圖會先生成DAG檔案,等DAG檔案下載到百分之百後,就會開始挖礦。

如下圖,說明你已經挖到以太幣了。

停止挖礦      miner.stop()  ,另外一種方法就是直接關掉當前geth的程序                            
檢視挖礦賬戶餘額              eth.getBalance(eth.accounts[0]) ,預設的挖礦賬戶是當前賬戶列表中的第一個                                                                     

賬戶中以太幣餘額預設以最小單位顯示:1個以太幣=10的18次方個wei,將wei轉為以太幣:

餘額轉換 web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')                                                                                     


設定挖礦賬戶     miner.setEtherbase(eth.accounts[1]) ,設定挖礦賬戶                                                                                           eth.coinbase                                  
成功挖到一次礦後就停止miner.start(1);admin.sleepBlocks(1);miner.stop()                                                                                                                      


五、轉賬

在第四步我們已經進行了挖礦,我們在建立一個賬戶就可以進行轉賬了。


從上圖可以看到第一個賬戶通過挖礦獲得了105個以太幣,第二個賬戶沒有以太幣。那麼執行轉賬交易。


上圖中在執行過程中首先第一步是解鎖轉賬人賬戶也就是第一個賬戶,然後在傳送交易。傳送完交易後,可以檢視第二個賬戶上並沒有轉過來的5個以太幣,這是為什麼呢?因為沒人挖礦,所以這筆交易並沒有計入區塊鏈,當有礦工挖礦計入區塊鏈後,第二個賬戶才真正拿到這筆交易。如下圖,說明這筆交易提交了,但是還在處理中。挖礦後,pending就為0了。


檢視轉賬交易 eth.getTransaction("xxxx"),引數為交易返回hash                         

下圖是兩筆轉賬交易,第一筆是提交了,還沒有記入區塊的,第二筆是已經被礦工挖到的,所以塊是有hash的。從下圖引數中可以看到區塊號,可以通過區塊號檢視這個塊資訊:


檢視區塊資訊eth.getBlock(22) ,入參是區塊號                                                                                                                       

下圖就是一個典型的區塊的資料結構,我們可以看到transactions欄位中得知看當前塊記錄了幾筆交易。


六、智慧合約的部署和呼叫

關於轉賬和智慧合約的部署以及呼叫,後期會通過以太坊錢包來操作,這樣可以簡化命令列操作繁雜操作,更好入門。不過命令列操作能夠更好的理解以太坊客戶端執行的流程和部分資訊,後期還會在講解以太坊的過程中使用Geth。

七、配置靜態節點

Geth支援一個叫靜態節點的特徵,如果你有特定的端點,你會一直想與靜態節點連線。如果斷開連線,靜態節點會再次連線。你可以配置永久性靜態節點,方法是將如下所說的放進/personData/Geth/static-nodes.json(這應該是和chaindata以及keystone在同一個資料夾),下邊的資料是demo。


相關推薦

Geth使用教程

一、Geth建立私鏈1.建立一個genesis.json檔案內容如下:{  "config": {        "chainId": 110,        "homesteadBlock": 0,        "eip155Block": 0,        "eip1

開發教程(二) 利用truffle發布寵物商店 DAPP 到 測試環境Ropsten

ini 寵物 func on() append localhost -c success compile 1.環境安裝 1) node安裝 設置鏡像地址: curl --silent --location https://rpm.nodesource.com/s

[區塊鏈]3 geth 賬戶建立、密碼、解鎖

賬戶操作命令 (1)建立賬戶 檢視此節點下的所有賬戶: eth.accounts (2)檢視塊高 eth.blockNumber (3)建立賬戶 注意:建立賬戶需要用 pesonal

Geth命令詳細

以太坊啟動私有鏈還有一種引數較為複雜的啟動方式,這種的作用是啟動rpc通訊,後續會講解rpc的使用場景。 geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "./blockData" --port "3030

同時安裝Ethereum Wallet和Mist共用區塊資料,並將geth從C盤轉移到其他盤

1):以太坊錢包及Mist下載連結:https://github.com/ethereum/mist/releases/2):解壓兩個檔案到您自己希望的硬碟,本人是D盤3):找到檔案目錄下面的Ethereum Wallet.exe,雙擊執行;4):執行開始同步資料之後,關閉E

geth主網全節點部署

客戶端安裝 person 登陸 root href web 最新 lds 默認 以太坊geth主網全節點部署 #環境 ubuntu 16.4 #硬盤500GB(目前占用200G) #客戶端安裝 # 查看下載頁面最新版 # https://ethereum.github.

區塊鏈實踐(二) Geth入門操作

進入Geth 命令列模式 在上一篇文章中,我們說到,我們可以用下面命令,建立一個新的私有鏈 geth --datadir "./" --nodiscover console 2>>geth.log 進入命令列模式,其中引數 –datadi

geth節點同步親測經歷

看到技術討論群中好多朋友在以太坊節點資料同步的過程中遇到很多疑問,於是親自購買一天伺服器,進行節點同步測試,本文將分享整個測試過程中遇到的問題,及解決方案。 伺服器配置 伺服器配置比較簡單,在阿里雲上購買的2核4GLinux伺服器,作業系統為ce

geth區塊同步

起初我採用虛擬機器在公司網路下作為節點同步,不管是錢包還是geth,始終都會有100個左右區塊同步不下來,導致eth_getBalance等指令失敗。後來切換到了阿里雲上的伺服器上做同步,一個晚上就基本同步完了,建議儘量採用雲主機或者網路環境好的實體機進行同步。下面講一下同步

Geth客戶端安裝

geth是以太坊的官方客戶端,它是一個命令列工具,提供很多命令和選項,可以執行以太坊節點、建立和管理賬戶、傳送交易、挖礦、部署智慧合約等。下面介紹geth的三種安裝方法:直接下載可執行檔案線上安裝從原始碼編譯安裝方法一 直接下載可執行檔案最簡單的方法是直接下載可執行檔案,以太

Geth幾種同步模式

同步模式分類 –fast Enable fast syncing through state downloads –light Enable light client mode –syncmode full 在Geth1.6版本,–fast引數已經改為–

geth同步自動關閉問題分析

問題場景 在啟動以太坊geth同步資料的過程中會出現這樣的問題,就是節點同步正常,日誌沒有報異常資訊或者報出一些底層的類異常資訊,隨後geth節點程序自動關閉。 報異常資訊類似於下面的異常: geth sync goroutine 16678 [IO

geth同步的一些注意事項

Imported new state entries 匯入區塊的結構 例如當前的以太坊的正式網的區塊高度是 5860665 那麼需要同步所有的頭部,以及區塊結構,才會開始真正同步區塊的交易內容, 在同步完整區塊之前,console中使用eth.b

區塊鏈入門三部曲(二) (最全最詳細 )Geth搭建私有鏈

1.     Geth的搭建私有鏈搭建私有鏈首先需要配置一個創業區塊。下圖是創世區塊genesis.jsonConfig:config必不可少,否則建立不成功。ChildId不能為0。Alloc:用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣

geth搭建自己得私鏈(window)

2、 在Geth的安裝目錄下放置初始化創世塊檔案genesis.json,檔案內容如下: { //64位隨機數,用於挖礦,注意他和mixhash 的設定需要滿足以太坊黃皮書的要求 //直接用這個也可以 "nonce":"0x00000000

[區塊鏈]2 geth dev模式、互動console、有交易挖礦、自動挖礦

前言 上節我們講了基於ubuntu geth搭建以太坊私有鏈,並以dev方式啟動。什麼是dev模式?有什麼特點本節我們探討。 dev 模式 dev 模式,也叫回歸測試模式,主要用來給開發人員提供一個方便的開發測試環境。 在dev模式下,可以輕鬆的獲得以太幣,方

開發DApp實戰教程——用區塊鏈、星際文件系統(IPFS)、Node.js和MongoDB來構建電商平臺

IPFS 區塊鏈電商 區塊鏈開發 以太坊開發 以太坊dapp 以太坊教程 智能合約 以太坊 星際文件系統 區塊鏈 第一節 簡介 歡迎和我們一起來用以太坊開發構建一個去中心化電商DApp!我們將用區塊鏈、星際文件系統(IPFS)、Node.js和Mong

客戶端Geth命令用法-參數詳解【轉載】

net gin life 消費 虛擬機 開發者 host cor path 原文鏈接:http://www.cnblogs.com/tinyxiong/p/7918706.html Geth在以太坊智能合約開發中最常用的工具(必備開發工具),一個多用途的命令行工具。熟悉

客戶端Geth命令用法-參數詳解

區塊鏈 以太坊 Geth在以太坊智能合約開發中最常用的工具(必備開發工具),一個多用途的命令行工具。熟悉Geth可以讓我們有更好的效率,大家可收藏起來作為Geth命令用法手冊。 本文主要是對geth help的翻譯,基於最新的geth 1.7.3-stable版本。 如果你還不知道geth是什麽,請先

教程:搭建環境、編寫編譯一個智能合約

以太坊教程 以太坊 以太坊開發 智能合約 區塊鏈 區塊鏈開發 solidity 本以太坊教程主要是介紹:搭建一個開發環境、編寫編譯一個智能合約。 以太坊是什麽 以太坊(Ethereum)是一個開源的有智能合約功能的公共區塊鏈平臺。通過其專用加密貨幣以太