go语言后端调用以太坊rpc
任务要求:使用golang作为后端语言,获取eth(私链)中的账户信息以及创建新的账号
1、启动geth
geth --identity "aaron" --datadir data0 --rpcport 8545 --rpccorsdomain "*" --port "30303" --nodiscover --nat "any" --networkid 15 --rpc --rpcapi "db,eth,net,web3,personal" --ipcpath "geth.ipc" console
命令解析:
- --identity "MyNodeName":为你的节点设置身份标识,以更容易在节点列表中识别
- --rpc:开启 RPC 接口
- --rpcport "8080":RPC 端口
- --rpccorsdomain "*":设置能连接到你的节点的 URL,用来完成 RPC 任 务。* 指任何 URL 都能连接到你。
- --datadir "data0":区块数据文件夹 (在geth同目录下生成data0文件夹)
- --port "30303":用来监听其他节点的端口
- --nodiscover:你的节点不会被其他人发现,除非他们手动添加你
- --rpcapi "db,eth,net,web3":提供给别人使用的 RPC API,默认为 web3 接口
- networkid 1999:相同 networkdid 才会连接到一起
2、通过rpc进行通信
package mainimport ("fmt""strconv""github.com/ethereum/go-ethereum/rpc""github.com/pkg/errors"
)var (client *rpc.Client
)func init() {//获取连接与eth客户端client, _ = rpc.Dial("http://localhost:8545")if client == nil {fmt.Println("rpc.Dial err")//panic("连接错误")return}
}//获取账户列表
func getAccounts(client *rpc.Client) (accounts []string, err error) {err = client.Call(&accounts, "eth_accounts")if err == nil {return accounts, nil} else {return nil, errors.New("账户列表获取错误")}}//获取挖矿账户
func getCoinbase(client *rpc.Client) (coinbase string, err error) {err = client.Call(&coinbase, "eth_coinbase")if err == nil {return coinbase, nil} else {return "", errors.New("挖矿账户获取错误")}
}//获取余额
func getBalance(client *rpc.Client, account string) (Balance int64, err error) {var balance stringerr = client.Call(&balance, "eth_getBalance", account, "latest")if err != nil {return -1, err}Balance, _ = strconv.ParseInt(balance, 0, 64)return Balance, nil}
func creatNewAccount(client *rpc.Client, password string) (newAccount string, err error) {err = client.Call(&newAccount, "personal_newAccount", password)if err != nil {return "", err}return newAccount, nil}
func main() {//创建新账户var password string = "123456"newAccount, err := creatNewAccount(client, password)if err != nil {fmt.Println("err=", err)}fmt.Println("新账户为:", newAccount)//获取账户列表accounts, err := getAccounts(client)if err != nil {fmt.Println("err=", err)}for i, v := range accounts {balance, err := getBalance(client, v)if err != nil {fmt.Println("err=", err)} else {fmt.Printf("账户%d的账号为:%s,余额为:%d\n", i, v, balance)}}//获取挖矿账户coinbase, err := getCoinbase(client)if err != nil {fmt.Println("err=", err)}fmt.Println("挖矿账户为:", coinbase)//延迟关闭defer client.Close()}
任务完成
后续将完成转账与签名功能
go语言后端调用以太坊rpc相关推荐
- 【刘文彬】以太坊RPC机制与API实例
原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/eth-rpc.html 上一篇文章([刘文彬]探路以太坊)介绍了以太坊的基础知识,我们了解了web3.j ...
- 如何实现一键调用以太坊智能合约
今天有人问如何用按钮调用智能合约,我不知道在哪里找,所以我决定写这个,很快就可以. image 在这篇文章中,我将给出一个简单但有希望有效的演示,说明JavaScript开发人员如何创建一个能够调用智 ...
- 通过命令行在Python中测试以太坊RPC客户端
2019独角兽企业重金招聘Python工程师标准>>> 在这个笔记中,我将使用Python命令行测试以太坊的RPC客户端,准备好狂敲键盘吧.过程中有关JSON RPC的更多信息,可以 ...
- 服务器端调用智能合约,《精通以太坊:开发智能合约和去中心化应用》 ——3.4 远程调用以太坊客户端...
远程调用以太坊客户端 远程调用以太坊的客户端是指相比全功能客户端,只提供了一部分功能的客户端.这些客户端通常不会保存完整的区块链数据,所以它们的启动速度更快,也不会消耗大量的磁盘空间. 远程调用以太坊 ...
- 以太坊 api php,Php如何调用以太坊接口
以太坊规定了每个节点需要实现的JSON RPC应用开发接口,如果希望使用PHP开发一个以太坊区块链 上的去中心化应用(DApp),首先要解决的问题就是如何使用PHP调用以太坊JSON RPC接口: 如 ...
- php调用以太坊geth API说明
2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们开始ph以太坊环境构建,并做了一些基本的API调用. 这次我想再挖一下API的调用. 1.上次的补充 2.关于API ...
- api php usdt 以太坊_php调用以太坊geth API说明
上一篇我们开始ph以太坊环境构建,并做了一些基本的API调用. 这次我想再挖一下API的调用. 1.上次的补充 2.关于API的种类 3.从PHP调用 1.上次的补充 上一次,说明了geth的开始选项 ...
- api php usdt 以太坊_PHP调用以太坊JSON-RPC接口创建钱包
1,下载安装geth,下载地址如下: http://ethfans.org/wikis/Wallet-Mirror 进入后点击,下载和安装都很快,本文安装的是windows版 2,运行geth,安装之 ...
- 以太坊RPC调用智能合约
geth命令开启rpc geth --datadir /apps/ethereum/etherdata/ --rpc --rpcapi "db,eth,net,web3" --ne ...
- php rpc调用,PHP 通过 JSON-RPC 调用实现以太坊交互
PHP 通过 JSON-RPC 调用实现以太坊交互 由 hubwiz 创建于2年前, 最后更新于 2年前 版本号 #1 6262 views 0 likes 0 collects 自去年以来,我们正在 ...
最新文章
- Java封装(速读版)
- l usr bin mysql,解决/usr/bin/ld: cannot find -lmysqlclient错误
- 用SHELL脚本来防SSH和vsftpd暴力破解(第②版)
- AI驱动的超分辨技术落地实践
- 解读Android LOG机制的实现
- centos 7 /etc/rc.local 开机不执行的问题
- typedef让p去除了普通变量的C++身份
- MySQL高级理论-MVCC提交查询相关(版本链)
- 每天一个知识点:Python列表两个冒号加一个负数的表达方法
- [转]ETL随笔(二)
- 下载mono太慢怎么办?
- 淘宝直播视听体验再升级!为主播“安静”带货保驾护航
- 618的优惠券去哪了?
- 两台电脑通过网线直连共享数据(超详细)
- AlertDialog.Builder setPositiveButton 点击时不关闭dialog
- Linux基础知识与实操-篇三: 文件压缩打包与vim基本使用
- 上海出差之行--领略外滩美景、RT-Thread总部之旅、嵌友面基、返程记录
- 小程序的三种弹框showToast、showModal、showLoading
- linux在文件夹下查找关键字,Linux 搜索目录和子目录下含有关键字的文件
- 上班族必懂的电脑技能 误删资料 恢复不小心删错了,还把回收站清空了,咋办啊?