go語(yǔ)言區(qū)塊鏈學(xué)習(xí)調(diào)用以太坊
geth
以太坊智能合約開(kāi)發(fā)中最常用的命令行工具。
Geth
是由以太坊基金會(huì)提供的官方客戶端軟件,用Go
編程語(yǔ)言編寫的。Geth
提供了一個(gè)交互式命令控制臺(tái),通過(guò)命令控制臺(tái)中包含了以太坊的各種功能(API)。全名go-ethereum
。
1. geth 簡(jiǎn)介
1.1 下載地址:
官網(wǎng)(很慢):https://geth.ethereum.org/downloads/
國(guó)內(nèi)鏡像:https://ethfans.org/wikis/Ethereum-Geth-Mirror
1.2 安裝:
下載下來(lái)之后,會(huì)在安裝目錄生成geth.exe
將這個(gè)文件放在gopath
的bin目錄中,
放在這里就行了
1.3 查看是否安裝成功
geth version
如果你安裝了,但是沒(méi)有顯示這個(gè)的話,可能是因?yàn)槟愕南到y(tǒng)環(huán)境里面沒(méi)有g(shù)o的路徑,把go的bin目錄路徑放在系統(tǒng)變量的path就好了~
2. geth命令介紹
geth -help
查看幫助
命 令:geth [選項(xiàng)] 命令 [命令選項(xiàng)] [參數(shù)…]
命令參數(shù)介紹:超詳細(xì)
3. geth常用命令
3.1 指定數(shù)據(jù)目錄 --datadir
如:geth --datadir “路徑” account new
3.2 賬戶相關(guān)
查看賬戶:geth account list
查看賬戶的信息
創(chuàng)建賬戶:geth account new
然后輸入兩次密碼
更新指定賬戶:geth account update "用戶地址"
輸入賬戶密碼及確認(rèn)密碼
默認(rèn)是會(huì)把用戶的賬戶信息存放在這個(gè)目錄
導(dǎo)入賬戶:geth account import 你的私鑰文件路徑(導(dǎo)出私鑰存放到xx.txt)
指定保存路徑的創(chuàng)建用戶:geth --datadir account new
3.3 控制臺(tái)console:
啟動(dòng)并進(jìn)入交互式j(luò)avascript環(huán)境
默認(rèn)連接的是ipc
geth attach http://IP:8545,默認(rèn)不開(kāi)啟
geth attach ws://IP:8546,默認(rèn)不開(kāi)啟
進(jìn)入控制臺(tái):geth console 可以指定--datadir "路徑"
退出控制臺(tái):exit
或者 ctrl+d
常用api:
獲取區(qū)塊號(hào):eth.blockNumber
是否在監(jiān)聽(tīng)端口 net.listening
開(kāi)始挖礦:miner.start()
- 挖礦還可以指定進(jìn)程數(shù):miner.start(1)
- 停止挖礦:miner.stop()
- 檢查是否在挖礦:eth.mining true:在挖礦,false:不在挖礦
- 獲取賬戶地址數(shù)組:eth.accounts
- 獲取挖礦地址:eth.coinbase 默認(rèn)第一個(gè)創(chuàng)建的賬戶
- 查看第一個(gè)賬戶余額:eth.getBalance(eth.accounts[0])
- 創(chuàng)建用戶:personal.newAccount(“12345678”)
- 設(shè)置挖礦賬戶:miner.setEtherbase(“地址A”)
- 賬戶間轉(zhuǎn)錢:eth.sendTransation({from:“地址A”,to:“地址B”,value:web3.toWei(10,“ether”)})
- 獲取交易信息:eth.getTransaction(‘地址A')
3.4 刪除數(shù)據(jù):
不要直接刪除datadir目錄,使用removedb
geth --datadir "路徑" removedb
這會(huì)刪除路徑/geth/chaindata,其他東西都不會(huì)動(dòng),不會(huì)刪除用戶。
3.5 help
geth account -hgeth account help new 查看子命令
3.6 常見(jiàn)錯(cuò)誤
1 . Error: authentication needed: password or unlock undefined:
這種報(bào)錯(cuò)解鎖下賬戶即可
賬戶解鎖:personal.unlockAccount(“賬戶地址”)
2 . Returned error: exceeds block gas limit:
出現(xiàn)這種錯(cuò)誤就看塊號(hào)的gaslimit,部署時(shí)改成一直
獲取塊號(hào):eth.blockNumber
根據(jù)塊號(hào)獲取詳細(xì)信息:eth.getBlock(0)
4. Go語(yǔ)言調(diào)用合約
4.1 啟動(dòng)rpc端口
geth --datadir "fanone" --identity "fanone" --rpc --rpcport 8545 --rpcapi "db,eth,net,web3,personal" --rpccorsdomain "*" console
–identity
“fanone”:節(jié)點(diǎn)身份標(biāo)識(shí)
–rpc
:開(kāi)啟 RPC
接口
–rpcport
:RPC
端口,默認(rèn)go是8545
–rpcapi
“db,eth,net,web3”:提供給別人使用的 RPC API,默認(rèn)為web3
接口
–rpccorsdomain
:設(shè)置能連接到你的節(jié)點(diǎn)的 URL,用來(lái)完成RPC
任 務(wù)。* 指任何URL
都能連接到,默認(rèn)只能自己連接
–datadir
:區(qū)塊數(shù)據(jù)文件夾 ,如果不指定的話,就是上面的那個(gè)在C盤的地址。
為了C盤著想,所以還是建議這樣,新建一個(gè)文件夾放在其他盤
就會(huì)在這里進(jìn)行存放了
–networkid
:net_version
的id
–port
:用來(lái)監(jiān)聽(tīng)其他節(jié)點(diǎn)的端口
–nodiscover
:你的節(jié)點(diǎn)不會(huì)被其他人發(fā)現(xiàn),除非他們手動(dòng)添加你
是連接這個(gè)url
4.2 Go調(diào)用以太坊
相關(guān)文章
Golang使用Gin框架實(shí)現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理
在gin框架中,我們可以定義一個(gè)中間件來(lái)處理統(tǒng)一的HTTP響應(yīng)格式,本文主要為大家介紹了具體是怎么定義實(shí)現(xiàn)這樣的中間件的,感興趣的小伙伴可以了解一下2023-07-07golang并發(fā)執(zhí)行的幾種方式小結(jié)
本文主要介紹了golang并發(fā)執(zhí)行的幾種方式小結(jié),主要包括了Channel,WaitGroup ,Context,使用這三種機(jī)制中的一種或者多種可以達(dá)到并發(fā)控制很好的效果,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08golang連接redis庫(kù)及基本操作示例過(guò)程
這篇文章主要介紹了golang連接redis庫(kù)及基本操作示例過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04搭建Go語(yǔ)言的ORM框架Gorm的具體步驟(從Java到go)
很多朋友不知道如何使用Goland軟件,搭建一個(gè)ORM框架GORM,今天小編給大家分享一篇教程關(guān)于搭建Go語(yǔ)言的ORM框架Gorm的具體步驟(從Java到go),感興趣的朋友跟隨小編一起學(xué)習(xí)下吧2022-09-09