以太坊开发 -- geth 使用篇(二)

1 Geth 是什么

Go-Ethereum简称Geth,用golang语言实现。Geth是以太坊协议的官方实现。

  • Geth可以当客户端来使用
    打开Geth,用户可以创建自己的以太坊私有链、管理账户、挖矿、交易、部署执行智能合约等,用户还可以下载以太坊主链、解析主链上任意交易数据等。

  • Geth可以当服务器来使用 Geth提供很多服务和丰富的API,用户可以开发程序通过调用Geth服务,实现自己想要的功能,比如获取一段时间内以太币的所有交易账户。

2 Geth 搭建及账户管理

我目前测试搭建的是基于 mac 操作系统,目标实现一个多节点集群,并且可以互相发现和互相交易。

  1. 启动第一个节点
geth --datadir data0 --rpc --dev console
  • --dev 启用开发者网络(模式),使用此模式后启动的node就不会去同步公有链上的区块,公有链的数据量几十个G太大了,共识速度也比较慢。开发者网络会使用 POA 共识,默认预分配一个开发者账户并且会自动开启挖矿。
  • --datadir 后面的参数是区块数据及秘钥存放目录。
  • 第一次输入命令后,它会放在当前目录下新建一个 data0 目录来存放数据。
  • --rpc 启用HTTP-RPC服务器
  • console 进入控制台
// 获取节点实例
admin.nodeInfo.enode

  1. 账户
// 查看账户,默认分配了一个开发者账户
eth.accounts

// 创建账户,‘mumu’是新账户的密码
personal.newAccount('mumu')
// 通过以下命令可以分别查看默认开发账户和新创建账户的账户余额
eth.getBalance(eth.accounts[0])
eth.getBalance(eth.accounts[1])


可以看到默认开发账户分配有很多余额。

  1. 转账
    我们将从默认开发者账户中转入1个以太币给新账户
eth.sendTransaction({from:'0xb479c7bfe4fac4e191c345a3916859730320d3aa', to:'0xdac7beb12af3139f4b07b3727ac1787f1d039b84', value: web3.toWei(1,'ether')})


转账成功!

  1. 解锁账户
    在部署合约前需要先解锁账户
personal.unlockAccount(eth.accounts[1])


解锁成功后,账户准备好了,接下来可以编写合约代码了。

3. 与 metamask 连接

  • metamask 先选择连接 localhost 8545,连接的前置条件是 Geth 的启动必须已经开启的 rpc 连接。
  • 创建好账户后,点击账户详情,导出私钥。
  • 将私钥复制到一个 txt 文件中,例如 slash.txt
  • 在 Geth 中输入命令
geth account import <私钥文件路径>

提示输入密码,这个密码是 metamask 上的账户密码。

// 查看 geth 账户列表
geth account list

账户导入成功!
这种方法同样适用于任何已知私钥的外部账户导入geth

  • 这时候在 metamask 账户之间进行交易,在 Geth 中都可以通过命令查看到了,反之亦然。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章