go言语区块链进修调用以太坊

热点 · 2026-07-20 19:58:11

geth

以太坊智能合约斥地中最经常独霸的言语用太呼唤行对象。
Geth是区块由以太坊基金会供给的官方客户端软件 ,用Go编程言语编写的链进 。Geth供给了一个交互式呼唤独霸台,修调经由过程呼唤独霸台中包含了以太坊的言语用太各类下场(API)  。全名go-ethereum。区块

1. geth 简介

1.1 下载地址 :

官网(很慢):https://geth.ethereum.org/downloads/

国际镜像:https://ethfans.org/wikis/Ethereum-Geth-Mirror

1.2 拆卸 :

在这里拔出图片描摹

在这里拔出图片描摹

下载上往此后 ,链进会在拆卸目次生成geth.exe

在这里拔出图片描摹

将这个文件放在gopath的修调bin目次中 ,

在这里拔出图片描摹

放在这里就好了

1.3 搜检可否拆卸成功

geth version

在这里拔出图片描摹

假定你拆卸了,言语用太可是区块没有展示这个的话 ,多是链进因为你的琐细气候里面没有go的路途,把go的修调bin目次路途放在琐细变量的path就好了~

2. geth呼唤引见

geth -help搜检辅佐

在这里拔出图片描摹

命 令 :geth [选项] 呼唤 [呼唤选项] [参数…]
呼唤参数引见 :超具体

3. geth经常独霸呼唤

3.1 指天命据目次 --datadir

如:geth --datadir “路途” account new

在这里拔出图片描摹

在这里拔出图片描摹

3.2 账户相干

搜检账户:geth account list

搜检账户的信息

在这里拔出图片描摹

成立账户:geth account new
然后输进两次暗码

在这里拔出图片描摹

更新指定账户:geth account update "用户地址"
输进账户暗码及确认暗码

在这里拔出图片描摹

在这里拔出图片描摹

默许是会把用户的账户信息存放在这个目次

导进账户:geth account import 你的私钥文件路途(导出私钥存放到xx.txt)
指定保管路途的成立用户 :geth --datadir account new

3.3 独霸台console:

启动并进进交互式javascript气候

在这里拔出图片描摹

默许邻接的是ipc

geth attach http://IP:8545,默许不开启

geth attach ws://IP:8546,言语用太默许不开启

进进独霸台:geth console 可以指定--datadir "路途"
介入独霸台:exit 或 ctrl+d

经常独霸api :

掉落踪掉落踪区块号 :eth.blockNumber

在这里拔出图片描摹

可否在监听端口 net.listening

在这里拔出图片描摹

最早挖矿:miner.start()

在这里拔出图片描摹

  • 挖矿还可以指定过程数:miner.start(1)
  • 停止挖矿:miner.stop()
  • 搜检可否在挖矿 :eth.mining true:在挖矿 ,区块false :不在挖矿
  • 掉落踪掉落踪账户地址数组:eth.accounts
  • 掉落踪掉落踪挖矿地址  :eth.coinbase 默许第一个成立的链进账户
  • 搜检第一个账户余额 :eth.getBalance(eth.accounts[0])
  • 成立用户  :personal.newAccount(“12345678”)
  • 设置挖矿账户:miner.setEtherbase(“地址A”)
  • 账户间转钱 :eth.sendTransation({ from:“地址A”,to:“地址B”,value:web3.toWei(10,“ether”)})
  • 掉落踪掉落踪生意信息:eth.getTransaction(‘地址A')

3.4 删除数据 :

不要直接删除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:

展示这类偏向就看块号的gaslimit ,放置时改成不时

掉落踪掉落踪块号 :eth.blockNumber

屈就块号掉落踪掉落踪具体信息 :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” :节点身份标识

–rpc :开启 RPC 接口

–rpcport:RPC 端口  ,默许go是8545

–rpcapi “db,eth,net,web3”:供给给别人独霸的 RPC API,默许为web3接口

–rpccorsdomain :设置能邻接到你的节点的 URL,用来完成RPC任 务。* 指任何URL都能邻接到,默许只能本身邻接

–datadir :区块数据文件夹 ,假定不指定的话 ,就是上面的阿谁在C盘的地址。

为了C盘着想 ,所以仍是建议多么,新建一个文件夹放在其他盘

在这里拔出图片描摹

在这里拔出图片描摹

在这里拔出图片描摹

就会在这里举办存放了

–networkid:net_version的id

–port:用来监听其他节点的端口

–nodiscover:你的节点不会被其别人创作创造 ,除非他们手动添加你

在这里拔出图片描摹

是邻接这个url

4.2 Go调用以太坊

下载包:"github.com/ethereum/go-ethereum/rpc"

示例代码:

client, _ := rpc.Dial("http://localhost:8545")var result boolclient.Call(&result ,"net_listening") // 寄看这里必须独霸指针,不然会报空指针特别很是

启动此后

在这里拔出图片描摹

在go中调用

在这里拔出图片描摹

4.3 调用接口

net_version

往后邻接群集的ID

net_version : 往后邻接群集的ID

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

在启动rpc处事接口的时辰可以指定 : --networkid

net_listening

客户端可否处于监听外形

var is_listing boolclient.Call(&is_listing,"net_listening")

net_peerCount

所邻接对端节点旳数量

var count stringclient.Call(&count,"net_peerCount")//"0x0" 展示0个//"0x2" 展示2个

eth接口

1 .eth_accounts:账户地址数组

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

2 .eth_getBalance:掉落踪掉落踪指定地址账户的余额,单位  :wei

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

参数 :
账户地址
整数块编号 ,或字符串"latest", “earliest” 或 “pending”

3 .eth_gasPrice:前去往后的gas价值 ,单位 :wei。

var gas_price stringclient.Call(&gas_price,"eth_gasPrice")

4.eth_coinbase :

掉落踪掉落踪挖矿账户地址

var coinbase stringclient.Call(&coinbase, "eth_coinbase")

5.eth_protocolVersion :

前去往后以太坊和谈的版本。

var proto_version stringclient.Call(&proto_version , "eth_protocolVersion")

6.eth_mining :

客户端可否在挖矿中

var is_mining boolclient.Call(&is_mining,"eth_mining")

7.eth_hashrate :

前去节点挖矿时每秒可算出的哈希数量。

var hashrate stringclient.Call(&hashrate,"eth_hashrate")

8.eth_getTransactionCount :

前去指定地址产生发火的生意数量

var transactionCount stringclient.Call(&transactionCount,"eth_getBalance","0x72w12d05d8c4b55a87de03bd601fd76faf50f9b","latest")//参数//    账户地址//    整数块编号,或字符串"latest", "earliest" 或 "pending"

9.eth_blockNumber:掉落踪掉落踪节点往后块编号

var blockNum stringclient.Call(&blockNum ,"eth_blockNumber")

personal接口

1 .personal_listAccounts :
掉落踪掉落踪该节点下的全数账户 ,和eth_accounts终局一样

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

2.personal_newAccount :
成立用户

var newAccount stringclient.Call(&newAccount, "personal_newAccount", "12345678")参数:    暗码

3.personal_lockAccount :

锁定指定账户

var is_lock boolclient.Call(&is_lock, "personal_lockAccount", "账户地址")//参数
://    账户地址

4.personal_unlockAccount  :

解锁指定账户,有些独霸必须解锁账户才可以独霸

var is_unlock boolclient.Call(&is_unlock, "personal_lockAccount", "账户地址","账户暗码")参数:    账户地址    账户暗码

db接口

1.db_putString  :

在外埠数据库中存进字符串

var is_ok boolclient.Call(&is_ok, "db_putString", "db_name","key",""value")参数:    数据库称号    key名    要存进的字符串值

2.db_getString:

从外埠数据库读取字符串 。

var val stringclient.Call(&val, "db_getString", "db_name","key")//参数:  //  数据库称号  //  key名

以上就是Go言措辞语区块链进修调用以太坊的具体内容,更多关于go言语区块链调用以太坊的材料请存眷完竣下载此外相干文章 !

文章推荐:

光遇海洋大年夜氅兑换图国服一览表

iPhone12小圆点若何设置

汉字找茬王蛂找出18个字攻略

小米11若何设置前去键

CF手游云悠悠台词语音除夜全

剑与远征甘旨黑甜乡满星气焰攻略

苹果若何添加燕赵通交通卡

我国古代人们若何尊称对方的老婆

昨日创意互动营关于峡谷小精灵咕嗒的夏季筹划等分袂为冰镇除夜和甘美冰淇淋

iOS14beta弹窗措置编制有哪些

苹果若何添加燕赵通交通卡

小米11若何开启5G群集