任务要求:使用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

命令解析:

  1. --identity "MyNodeName":为你的节点设置身份标识,以更容易在节点列表中识别
  2. --rpc:开启 RPC 接口
  3. --rpcport "8080":RPC 端口
  4. --rpccorsdomain "*":设置能连接到你的节点的 URL,用来完成 RPC 任 务。* 指任何 URL 都能连接到你。
  5. --datadir "data0":区块数据文件夹 (在geth同目录下生成data0文件夹)
  6. --port "30303":用来监听其他节点的端口
  7. --nodiscover:你的节点不会被其他人发现,除非他们手动添加你
  8. --rpcapi "db,eth,net,web3":提供给别人使用的 RPC API,默认为 web3 接口
  9. 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相关推荐

  1. 【刘文彬】以太坊RPC机制与API实例

    原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/eth-rpc.html 上一篇文章([刘文彬]探路以太坊)介绍了以太坊的基础知识,我们了解了web3.j ...

  2. 如何实现一键调用以太坊智能合约

    今天有人问如何用按钮调用智能合约,我不知道在哪里找,所以我决定写这个,很快就可以. image 在这篇文章中,我将给出一个简单但有希望有效的演示,说明JavaScript开发人员如何创建一个能够调用智 ...

  3. 通过命令行在Python中测试以太坊RPC客户端

    2019独角兽企业重金招聘Python工程师标准>>> 在这个笔记中,我将使用Python命令行测试以太坊的RPC客户端,准备好狂敲键盘吧.过程中有关JSON RPC的更多信息,可以 ...

  4. 服务器端调用智能合约,《精通以太坊:开发智能合约和去中心化应用》 ——3.4 远程调用以太坊客户端...

    远程调用以太坊客户端 远程调用以太坊的客户端是指相比全功能客户端,只提供了一部分功能的客户端.这些客户端通常不会保存完整的区块链数据,所以它们的启动速度更快,也不会消耗大量的磁盘空间. 远程调用以太坊 ...

  5. 以太坊 api php,Php如何调用以太坊接口

    以太坊规定了每个节点需要实现的JSON RPC应用开发接口,如果希望使用PHP开发一个以太坊区块链 上的去中心化应用(DApp),首先要解决的问题就是如何使用PHP调用以太坊JSON RPC接口: 如 ...

  6. php调用以太坊geth API说明

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们开始ph以太坊环境构建,并做了一些基本的API调用. 这次我想再挖一下API的调用. 1.上次的补充 2.关于API ...

  7. api php usdt 以太坊_php调用以太坊geth API说明

    上一篇我们开始ph以太坊环境构建,并做了一些基本的API调用. 这次我想再挖一下API的调用. 1.上次的补充 2.关于API的种类 3.从PHP调用 1.上次的补充 上一次,说明了geth的开始选项 ...

  8. api php usdt 以太坊_PHP调用以太坊JSON-RPC接口创建钱包

    1,下载安装geth,下载地址如下: http://ethfans.org/wikis/Wallet-Mirror 进入后点击,下载和安装都很快,本文安装的是windows版 2,运行geth,安装之 ...

  9. 以太坊RPC调用智能合约

    geth命令开启rpc geth --datadir /apps/ethereum/etherdata/ --rpc --rpcapi "db,eth,net,web3" --ne ...

  10. php rpc调用,PHP 通过 JSON-RPC 调用实现以太坊交互

    PHP 通过 JSON-RPC 调用实现以太坊交互 由 hubwiz 创建于2年前, 最后更新于 2年前 版本号 #1 6262 views 0 likes 0 collects 自去年以来,我们正在 ...

最新文章

  1. Java封装(速读版)
  2. l usr bin mysql,解决/usr/bin/ld: cannot find -lmysqlclient错误
  3. 用SHELL脚本来防SSH和vsftpd暴力破解(第②版)
  4. AI驱动的超分辨技术落地实践
  5. 解读Android LOG机制的实现
  6. centos 7 /etc/rc.local 开机不执行的问题
  7. typedef让p去除了普通变量的C++身份
  8. MySQL高级理论-MVCC提交查询相关(版本链)
  9. 每天一个知识点:Python列表两个冒号加一个负数的表达方法
  10. [转]ETL随笔(二)
  11. 下载mono太慢怎么办?
  12. 淘宝直播视听体验再升级!为主播“安静”带货保驾护航
  13. 618的优惠券去哪了?
  14. 两台电脑通过网线直连共享数据(超详细)
  15. AlertDialog.Builder setPositiveButton 点击时不关闭dialog
  16. Linux基础知识与实操-篇三: 文件压缩打包与vim基本使用
  17. 上海出差之行--领略外滩美景、RT-Thread总部之旅、嵌友面基、返程记录
  18. 小程序的三种弹框showToast、showModal、showLoading
  19. linux在文件夹下查找关键字,Linux 搜索目录和子目录下含有关键字的文件
  20. 上班族必懂的电脑技能 误删资料 恢复不小心删错了,还把回收站清空了,咋办啊?

热门文章

  1. unity一打开就黑屏,怎么办?
  2. swiper 实现移动端两侧露一半轮播图
  3. a标签点击事件_JavaScript 中常见HTML事件
  4. 大数据学习记录-Hadoop框架核心(HDFS、MapReduce、YARN)
  5. 从零开始讲解JavaScript中作用域链的概念及用途
  6. 戴尔670亿美元收EMC是天价吗?看科技界十大并购
  7. MySQL - 表空间碎片整理方法
  8. MySQL——碎片整理遇到的那些事
  9. 【 CodeForces 208A】Dubstep
  10. 原生js写中奖信息上下轮播