go語言區(qū)塊鏈學習調用以太坊
geth
以太坊智能合約開發(fā)中最常用的命令行工具。
Geth是由以太坊基金會提供的官方客戶端軟件,用Go編程語言編寫的。Geth提供了一個交互式命令控制臺,通過命令控制臺中包含了以太坊的各種功能(API)。全名go-ethereum。
1. geth 簡介
1.1 下載地址:
官網(wǎng)(很慢):https://geth.ethereum.org/downloads/
國內鏡像:https://ethfans.org/wikis/Ethereum-Geth-Mirror
1.2 安裝:


下載下來之后,會在安裝目錄生成geth.exe

將這個文件放在gopath的bin目錄中,

放在這里就行了
1.3 查看是否安裝成功
geth version

如果你安裝了,但是沒有顯示這個的話,可能是因為你的系統(tǒng)環(huán)境里面沒有go的路徑,把go的bin目錄路徑放在系統(tǒng)變量的path就好了~
2. geth命令介紹
geth -help查看幫助

命 令:geth [選項] 命令 [命令選項] [參數(shù)…]
命令參數(shù)介紹:超詳細
3. geth常用命令
3.1 指定數(shù)據(jù)目錄 --datadir
如:geth --datadir “路徑” account new


3.2 賬戶相關
查看賬戶:geth account list
查看賬戶的信息

創(chuàng)建賬戶:geth account new
然后輸入兩次密碼

更新指定賬戶:geth account update "用戶地址"
輸入賬戶密碼及確認密碼


默認是會把用戶的賬戶信息存放在這個目錄
導入賬戶:geth account import 你的私鑰文件路徑(導出私鑰存放到xx.txt)
指定保存路徑的創(chuàng)建用戶:geth --datadir account new
3.3 控制臺console:
啟動并進入交互式javascript環(huán)境

默認連接的是ipc
geth attach http://IP:8545,默認不開啟
geth attach ws://IP:8546,默認不開啟
進入控制臺:geth console 可以指定--datadir "路徑"
退出控制臺:exit 或者 ctrl+d
常用api:
獲取區(qū)塊號:eth.blockNumber

是否在監(jiān)聽端口 net.listening

開始挖礦:miner.start()

- 挖礦還可以指定進程數(shù):miner.start(1)
- 停止挖礦:miner.stop()
- 檢查是否在挖礦:eth.mining true:在挖礦,false:不在挖礦
- 獲取賬戶地址數(shù)組:eth.accounts
- 獲取挖礦地址:eth.coinbase 默認第一個創(chuàng)建的賬戶
- 查看第一個賬戶余額:eth.getBalance(eth.accounts[0])
- 創(chuàng)建用戶:personal.newAccount(“12345678”)
- 設置挖礦賬戶:miner.setEtherbase(“地址A”)
- 賬戶間轉錢:eth.sendTransation({from:“地址A”,to:“地址B”,value:web3.toWei(10,“ether”)})
- 獲取交易信息:eth.getTransaction(‘地址A')
3.4 刪除數(shù)據(jù):
不要直接刪除datadir目錄,使用removedb
geth --datadir "路徑" removedb
這會刪除路徑/geth/chaindata,其他東西都不會動,不會刪除用戶。
3.5 help
geth account -hgeth account help new 查看子命令
3.6 常見錯誤
1 . Error: authentication needed: password or unlock undefined:
這種報錯解鎖下賬戶即可
賬戶解鎖:personal.unlockAccount(“賬戶地址”)
2 . Returned error: exceeds block gas limit:
出現(xiàn)這種錯誤就看塊號的gaslimit,部署時改成一直
獲取塊號:eth.blockNumber
根據(jù)塊號獲取詳細信息:eth.getBlock(0)
4. Go語言調用合約
4.1 啟動rpc端口
geth --datadir "fanone" --identity "fanone" --rpc --rpcport 8545 --rpcapi "db,eth,net,web3,personal" --rpccorsdomain "*" console

–identity “fanone”:節(jié)點身份標識
–rpc:開啟 RPC 接口
–rpcport:RPC 端口,默認go是8545
–rpcapi “db,eth,net,web3”:提供給別人使用的 RPC API,默認為web3接口
–rpccorsdomain:設置能連接到你的節(jié)點的 URL,用來完成RPC任 務。* 指任何URL都能連接到,默認只能自己連接
–datadir:區(qū)塊數(shù)據(jù)文件夾 ,如果不指定的話,就是上面的那個在C盤的地址。
為了C盤著想,所以還是建議這樣,新建一個文件夾放在其他盤



就會在這里進行存放了
–networkid:net_version的id
–port:用來監(jiān)聽其他節(jié)點的端口
–nodiscover:你的節(jié)點不會被其他人發(fā)現(xiàn),除非他們手動添加你

是連接這個url
4.2 Go調用以太坊
相關文章
Golang使用Gin框架實現(xiàn)HTTP響應格式統(tǒng)一處理
在gin框架中,我們可以定義一個中間件來處理統(tǒng)一的HTTP響應格式,本文主要為大家介紹了具體是怎么定義實現(xiàn)這樣的中間件的,感興趣的小伙伴可以了解一下2023-07-07
搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)
很多朋友不知道如何使用Goland軟件,搭建一個ORM框架GORM,今天小編給大家分享一篇教程關于搭建Go語言的ORM框架Gorm的具體步驟(從Java到go),感興趣的朋友跟隨小編一起學習下吧2022-09-09



