欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語(yǔ)言區(qū)塊鏈學(xué)習(xí)調(diào)用以太坊

 更新時(shí)間:2021年10月29日 14:46:02   作者:小生凡一  
這篇文章主要為大家介紹了go語(yǔ)言區(qū)塊鏈學(xué)習(xí)如何調(diào)用以太坊的示例實(shí)現(xiàn)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

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 接口

rpcportRPC 端口,默認(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)行存放了

networkidnet_versionid

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)用以太坊

下載包:"

示例代碼:

client, _ := rpc.Dial("http://localhost:8545")
var result bool
client.Call(&result ,"net_listening") 
// 注意這里必須使用指針,否則會(huì)報(bào)空指針異常

啟動(dòng)之后

在這里插入圖片描述

在go中調(diào)用

在這里插入圖片描述

4.3 調(diào)用接口

net_version

當(dāng)前連接網(wǎng)絡(luò)的ID

net_version: 當(dāng)前連接網(wǎng)絡(luò)的ID

var networkid string
client.Call(&networkid,"net_version")
networkid:
    "1":Mainnet
    "2": Morden Testnet
    "3": Ropsten Testnet
    "4": Rinkeby Testnet
    "42": Kovan Testnet

在啟動(dòng)rpc服務(wù)接口的時(shí)候可以指定: --networkid

net_listening

客戶端是否處于監(jiān)聽(tīng)狀態(tài)

var is_listing bool
client.Call(&is_listing,"net_listening")

net_peerCount

所連接對(duì)端節(jié)點(diǎn)旳數(shù)量

var count string
client.Call(&count,"net_peerCount")
//"0x0" 表示0個(gè)
//"0x2" 表示2個(gè)

eth接口

1 .eth_accounts:賬戶地址數(shù)組

var accounts []string
client.Call(&accounts,"eth_accounts")

2 .eth_getBalance:獲取指定地址賬戶的余額,單位:wei

var balance string
client.Call(&balance,"eth_getBalance","0x558c90c05d8c4b55a87de03bd601fd76faf50f9b","latest")

參數(shù):
賬戶地址
整數(shù)塊編號(hào),或者字符串"latest", “earliest” 或 “pending”

3 .eth_gasPrice:返回當(dāng)前的gas價(jià)格,單位:wei。

var gas_price string
client.Call(&gas_price,"eth_gasPrice")

4.eth_coinbase:

獲取挖礦賬戶地址

var coinbase string
client.Call(&coinbase, "eth_coinbase")

5.eth_protocolVersion:

返回當(dāng)前以太坊協(xié)議的版本。

var proto_version string
client.Call(&proto_version , "eth_protocolVersion")

6.eth_mining:

客戶端是否在挖礦中

var is_mining bool
client.Call(&is_mining,"eth_mining")

7.eth_hashrate:

返回節(jié)點(diǎn)挖礦時(shí)每秒可算出的哈希數(shù)量。

var hashrate string
client.Call(&hashrate,"eth_hashrate")

8.eth_getTransactionCount:

返回指定地址發(fā)生的交易數(shù)量

var transactionCount string
client.Call(&transactionCount,"eth_getBalance","0x72w12d05d8c4b55a87de03bd601fd76faf50f9b","latest")
//參數(shù)
//    賬戶地址
//    整數(shù)塊編號(hào),或者字符串"latest", "earliest" 或 "pending"

9.eth_blockNumber:獲取節(jié)點(diǎn)當(dāng)前塊編號(hào)

var blockNum string
client.Call(&blockNum ,"eth_blockNumber")

personal接口

1 .personal_listAccounts:
獲取該節(jié)點(diǎn)下的所有賬戶,和eth_accounts效果一樣

var accounts []string
client.Call(&accounts,"personal_listAccounts")

2.personal_newAccount:
創(chuàng)建用戶

var newAccount string
client.Call(&newAccount, "personal_newAccount", "12345678")
參數(shù):
    密碼

3.personal_lockAccount:

鎖定指定賬戶

var is_lock bool
client.Call(&is_lock, "personal_lockAccount", "賬戶地址")

//參數(shù):
//    賬戶地址

4.personal_unlockAccount:

解鎖指定賬戶,有些操作必須解鎖賬戶才可以操作

var is_unlock bool
client.Call(&is_unlock, "personal_lockAccount", "賬戶地址","賬戶密碼")
參數(shù):
    賬戶地址
    賬戶密碼

db接口

1.db_putString:

在本地?cái)?shù)據(jù)庫(kù)中存入字符串

var is_ok bool
client.Call(&is_ok, "db_putString", "db_name","key",""value")
參數(shù):
    數(shù)據(jù)庫(kù)名稱
    key名
    要存入的字符串值

2.db_getString:

從本地?cái)?shù)據(jù)庫(kù)讀取字符串。

var val string
client.Call(&val, "db_getString", "db_name","key")

//參數(shù):
  //  數(shù)據(jù)庫(kù)名稱
  //  key名

以上就是go語(yǔ)言區(qū)塊鏈學(xué)習(xí)調(diào)用以太坊的詳細(xì)內(nèi)容,更多關(guān)于go語(yǔ)言區(qū)塊鏈調(diào)用以太坊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang使用Gin框架實(shí)現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理

    Golang使用Gin框架實(shí)現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理

    在gin框架中,我們可以定義一個(gè)中間件來(lái)處理統(tǒng)一的HTTP響應(yīng)格式,本文主要為大家介紹了具體是怎么定義實(shí)現(xiàn)這樣的中間件的,感興趣的小伙伴可以了解一下
    2023-07-07
  • golang并發(fā)執(zhí)行的幾種方式小結(jié)

    golang并發(fā)執(zhí)行的幾種方式小結(jié)

    本文主要介紹了golang并發(fā)執(zhí)行的幾種方式小結(jié),主要包括了Channel,WaitGroup ,Context,使用這三種機(jī)制中的一種或者多種可以達(dá)到并發(fā)控制很好的效果,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 詳解golang中Context超時(shí)控制與原理

    詳解golang中Context超時(shí)控制與原理

    Context本身的含義是上下文,我們可以理解為它內(nèi)部攜帶了超時(shí)信息、退出信號(hào),以及其他一些上下文相關(guān)的值,本文給大家詳細(xì)介紹了golang中Context超時(shí)控制與原理,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-01-01
  • Golang中深拷貝與淺拷貝詳解

    Golang中深拷貝與淺拷貝詳解

    這篇文章主要為大家詳細(xì)介紹一下Golang深拷貝和淺拷貝,文中有詳細(xì)的代碼示例供大家參考,需要的可以參考一下
    2023-05-05
  • go日志庫(kù)logrus的安裝及快速使用

    go日志庫(kù)logrus的安裝及快速使用

    這篇文章主要為大家介紹了go日志庫(kù)logrus的安裝及快速使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang連接redis庫(kù)及基本操作示例過(guò)程

    golang連接redis庫(kù)及基本操作示例過(guò)程

    這篇文章主要介紹了golang連接redis庫(kù)及基本操作示例過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • go語(yǔ)言實(shí)現(xiàn)全排列的示例代碼

    go語(yǔ)言實(shí)現(xiàn)全排列的示例代碼

    本文主要介紹了go語(yǔ)言實(shí)現(xiàn)全排列的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Golang學(xué)習(xí)之無(wú)類型常量詳解

    Golang學(xué)習(xí)之無(wú)類型常量詳解

    對(duì)于無(wú)類型常量,可能大家是第一次聽(tīng)說(shuō),但我們每天都在用,每天都有無(wú)數(shù)潛在的坑被埋下。本文就來(lái)和大家聊聊它的相關(guān)注意事項(xiàng)吧,希望對(duì)大家有所幫助
    2023-03-03
  • 搭建Go語(yǔ)言的ORM框架Gorm的具體步驟(從Java到go)

    搭建Go語(yǔ)言的ORM框架Gorm的具體步驟(從Java到go)

    很多朋友不知道如何使用Goland軟件,搭建一個(gè)ORM框架GORM,今天小編給大家分享一篇教程關(guān)于搭建Go語(yǔ)言的ORM框架Gorm的具體步驟(從Java到go),感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2022-09-09
  • Go之集合slice的實(shí)現(xiàn)

    Go之集合slice的實(shí)現(xiàn)

    本文主要介紹了Go之集合slice的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論