最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

geth

以太坊智能合約開發(fā)中最常用的命令行工具。
Geth是由以太坊基金會提供的官方客戶端軟件,用Go編程語言編寫的。Geth提供了一個交互式命令控制臺,通過命令控制臺中包含了以太坊的各種功能(API)。全名go-ethereum。

1. geth 簡介

1.1 下載地址:

官網(wǎng)(很慢):https://geth.ethereum.org/downloads/

國內(nèi)鏡像:https://ethfans.org/wikis/Ethereum-Geth-Mirror

1.2 安裝:

在這里插入圖片描述

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

放在這里就行了

1.3 查看是否安裝成功

geth version

在這里插入圖片描述

如果你安裝了,但是沒有顯示這個的話,可能是因?yàn)槟愕南到y(tǒng)環(huán)境里面沒有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)是會把用戶的賬戶信息存放在這個目錄

導(dǎo)入賬戶:geth account import 你的私鑰文件路徑(導(dǎo)出私鑰存放到xx.txt)
指定保存路徑的創(chuàng)建用戶:geth --datadir account new

3.3 控制臺console:

啟動并進(jìn)入交互式j(luò)avascript環(huán)境

在這里插入圖片描述

默認(rèn)連接的是ipc

geth attach http://IP:8545,默認(rèn)不開啟

geth attach ws://IP:8546,默認(rèn)不開啟

進(jìn)入控制臺:geth console 可以指定--datadir "路徑"
退出控制臺:exit 或者 ctrl+d

常用api:

獲取區(qū)塊號:eth.blockNumber

在這里插入圖片描述

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

在這里插入圖片描述

開始挖礦:miner.start()

在這里插入圖片描述

  • 挖礦還可以指定進(jìn)程數(shù):miner.start(1)
  • 停止挖礦:miner.stop()
  • 檢查是否在挖礦:eth.mining true:在挖礦,false:不在挖礦
  • 獲取賬戶地址數(shù)組:eth.accounts
  • 獲取挖礦地址:eth.coinbase 默認(rèn)第一個創(chuàng)建的賬戶
  • 查看第一個賬戶余額: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

這會刪除路徑/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ù)塊號獲取詳細(xì)信息:eth.getBlock(0)

 4. Go語言調(diào)用合約

4.1 啟動rpc端口

geth --datadir "fanone" --identity "fanone" --rpc --rpcport 8545  --rpcapi "db,eth,net,web3,personal" --rpccorsdomain "*" console

在這里插入圖片描述

identity “fanone”:節(jié)點(diǎn)身份標(biāo)識

rpc:開啟 RPC 接口

rpcportRPC 端口,默認(rèn)go是8545

rpcapi “db,eth,net,web3”:提供給別人使用的 RPC API,默認(rèn)為web3接口

rpccorsdomain:設(shè)置能連接到你的節(jié)點(diǎn)的 URL,用來完成RPC任 務(wù)。* 指任何URL都能連接到,默認(rèn)只能自己連接

datadir:區(qū)塊數(shù)據(jù)文件夾 ,如果不指定的話,就是上面的那個在C盤的地址。

為了C盤著想,所以還是建議這樣,新建一個文件夾放在其他盤

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

就會在這里進(jìn)行存放了

networkidnet_versionid

port:用來監(jiān)聽其他節(jié)點(diǎn)的端口

nodiscover:你的節(jié)點(diǎn)不會被其他人發(fā)現(xiàn),除非他們手動添加你

在這里插入圖片描述

是連接這個url

4.2 Go調(diào)用以太坊

下載包:"

示例代碼:

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

啟動之后

在這里插入圖片描述

在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

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

net_listening

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

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

net_peerCount

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

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

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ù)塊編號,或者字符串"latest", “earliest” 或 “pending”

3 .eth_gasPrice:返回當(dāng)前的gas價格,單位: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ù)量。

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ù)塊編號,或者字符串"latest", "earliest" 或 "pending"

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

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:

在本地數(shù)據(jù)庫中存入字符串

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

2.db_getString:

從本地數(shù)據(jù)庫讀取字符串。

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

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

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

相關(guān)文章

  • Golang?range?slice?與range?array?之間的區(qū)別

    Golang?range?slice?與range?array?之間的區(qū)別

    這篇文章主要介紹了Golang?range?slice?與range?array?之間的區(qū)別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 一文帶你學(xué)會使用Go語言實(shí)現(xiàn)自己的MCP服務(wù)端

    一文帶你學(xué)會使用Go語言實(shí)現(xiàn)自己的MCP服務(wù)端

    這篇文章將帶大家速覽MCP的核心概念,并以Go語言為例,介紹如何開發(fā)MCP服務(wù)端和客戶端,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-04-04
  • 詳解Go語言如何實(shí)現(xiàn)二叉樹遍歷

    詳解Go語言如何實(shí)現(xiàn)二叉樹遍歷

    這篇文章主要為大家詳解介紹了Go語言中如何實(shí)現(xiàn)二叉樹遍歷,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Go語言有一定幫助,需要的可以參考一下
    2022-04-04
  • Go語言讀取文件的方法小結(jié)

    Go語言讀取文件的方法小結(jié)

    寫程序時經(jīng)常需要從一個文件讀取數(shù)據(jù),然后輸出到另一個文件,這篇文章主要為大家詳細(xì)介紹了Go語言讀取文件的幾種方法,希望對大家有所幫助
    2024-01-01
  • GoLang 中的隨機(jī)數(shù)的示例代碼

    GoLang 中的隨機(jī)數(shù)的示例代碼

    本篇文章主要介紹了GoLang 中的隨機(jī)數(shù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解golang的切片擴(kuò)容機(jī)制

    詳解golang的切片擴(kuò)容機(jī)制

    golang的切片擴(kuò)容機(jī)制是golang面試者繞不開的一扇大門,無論在面試提問,或者面試情景上都繞不開它,今天就說說我理解下的切片擴(kuò)容機(jī)制,感興趣的小伙伴跟著小編一起來看看吧
    2023-07-07
  • 淺談Go語言多態(tài)的實(shí)現(xiàn)與interface使用

    淺談Go語言多態(tài)的實(shí)現(xiàn)與interface使用

    如果大家系統(tǒng)的學(xué)過C++、Java等語言以及面向?qū)ο蟮脑?,相信?yīng)該對多態(tài)不會陌生。多態(tài)是面向?qū)ο蠓懂牣?dāng)中經(jīng)常使用并且非常好用的一個功能,它主要是用在強(qiáng)類型語言當(dāng)中,像是Python這樣的弱類型語言,變量的類型可以隨意變化,也沒有任何限制,其實(shí)區(qū)別不是很大
    2021-06-06
  • golang使用aes庫實(shí)現(xiàn)加解密操作

    golang使用aes庫實(shí)現(xiàn)加解密操作

    這篇文章主要介紹了golang使用aes庫實(shí)現(xiàn)加解密操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang進(jìn)程內(nèi)存控制避免docker內(nèi)oom

    golang進(jìn)程內(nèi)存控制避免docker內(nèi)oom

    這篇文章主要為大家介紹了golang進(jìn)程內(nèi)存控制避免docker內(nèi)oom示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 在Go語言項(xiàng)目中使用Zap日志庫的操作過程

    在Go語言項(xiàng)目中使用Zap日志庫的操作過程

    本文將先介紹Go語言原生的日志庫的使用,然后詳細(xì)介紹非常流行的Uber開源的zap日志庫,同時會介紹如何搭配·Lumberjack·實(shí)現(xiàn)日志的切割和歸檔,對Go使用Zap日志庫相關(guān)知識感興趣的朋友一起看看吧
    2024-03-03

最新評論

汾阳市| 城固县| 霍林郭勒市| 叶城县| 翁牛特旗| 双辽市| 安多县| 庐江县| 嵊州市| 衡阳县| 新疆| 三原县| 卓尼县| 博乐市| 鄂托克旗| 侯马市| 铁岭市| 黄大仙区| 安多县| 南昌县| 桦南县| 延边| 堆龙德庆县| 潜山县| 蓝田县| 兴和县| 金坛市| 上犹县| 潼关县| 临泽县| 长治县| 阜新市| 云梦县| 周宁县| 邻水| 新营市| 高邑县| 双鸭山市| 卫辉市| 大足县| 静宁县|