Zihao

Make small but daily progress

0%

Mac配置以太坊本地开发环境

安装

  • 1.使用官方的go版本直接安装

  • 2.也可以通过源码构建(git clone https://github.com/ethereum/go-ethereum

  • 3.mac中brew安装

    1
    2
    brew tap ethereum/ethereum
    brew install ethereum

启动

安装好以后就可以启动了,因为是在本地开发所以启动的时候要加一些自定义启动参数,来配置一下,帮助查看命令geth -h。

1
2
3
# 指定一个数据存储目前避免和公有链数据冲突,—dev 指定为开发模式这样就不用同步公有链上的区块,公有链的数据量几十个G太大了,共识速度也比较慢。
geth --datadir "~/ethdev" --dev

进入登录

以上命令启动成功之后,需要另打一个终端进入登录

1
geth  --dev console 2>> file_to_log_output

进入开发模式的控制台,并把日志输出到一个文本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Last login: Sat Nov  5 09:17:42 on ttys000

localhost:~ pro1$ geth --dev console 2>> file_to_log_output

Welcome to the Geth JavaScript console!

instance: Geth/v1.4.18-stable-c72f5459/darwin/go1.7.3

coinbase: 0x73e8655a84a37685d98891b7a9333a7423e12cb3

at block: 0 (Thu, 01 Jan 1970 08:00:00 CST)

datadir: /var/folders/8z/kp024pxd4j9194b34z_v06_c0000gn/T/ethereum_dev_mode

modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0

以上是登录成功的画面。

查看帐户信息

登录成功以后可以查看当前有哪些帐户

1
2
eth.accounts
["0x73e8655a84a37685d98891b7a9333a7423e12cb3", "0xa9d6dfff13c1050f19a8ffc2811c68842797d01c"]

我本地创建已经创建了两个帐户。

创建新账户

再创建一个:

1
2
3
personal.newAccount('11111111')

"0xe30cecc37776895389b94033ac65eb3b98294659"

以上通过personal.newAccount传入密码参数即可创建一个新帐户并返回新的帐户地址;

新打开一个终端可以查看本地创建了多少个帐户:

1
2
3
4
5
6
7
8
9
localhost:~ pro1$ geth account list

Account #0: {73e8655a84a37685d98891b7a9333a7423e12cb3} /Users/wangtao/Library/Ethereum/keystore/UTC--2016-11-04T06-48-39.698325708Z--73e8655a84a37685d98891b7a9333a7423e12cb3

Account #1: {a9d6dfff13c1050f19a8ffc2811c68842797d01c} /Users/wangtao/Library/Ethereum/keystore/UTC--2016-11-04T06-49-00.457262369Z--a9d6dfff13c1050f19a8ffc2811c68842797d01c

Account #2: {e30cecc37776895389b94033ac65eb3b98294659} /Users/wangtao/Library/Ethereum/keystore/UTC--2016-11-05T01-35-55.852748174Z--e30cecc37776895389b94033ac65eb3b98294659

localhost:~ pro1 $

我本地已经有三个了。然后再切回已经登录成功的控制台客户端。

查看余额

在以太坊客户端可以把某个帐户赋值给一个变量

1
2
3
> user1=eth.accounts[0]

"0x73e8655a84a37685d98891b7a9333a7423e12cb3"

然后可以查看当前帐户的余额:

1
2
3
4
> eth.getBalance(user1)
0
> eth.blockNumber
0

可以查看当前user1的余额为0,默认也是0个区块,因为还没有启动矿挖矿。

启动挖矿

现在我们启动挖矿,挖矿前我们先打开实时监控日志,就是刚才控制台输出的日志文本文件:

1
localhost:~ pro1$ geth --dev console 2>> file_to_log_output

这个文件我指定在了我的根目录下

1
tail -f file_to_log_out

启动挖矿

1
2
> miner.start()
true

在上面打开发文件监控界面就会看到挖矿建块儿情况。

再切回以太坊挖制台,查看用户余额:

1
2
3
4
5
> eth.getBalance(user1)
1.25890625e+21
> eth.getBalance(user2)
0
>

已经看到帐户1,已经有余额了,帐户2还是0,因为挖矿的奖励进入第一个帐户中。

停止挖矿

现在停止挖矿:

1
2
> miner.stop()
true

已经停止成功,另外日志界面也停止输出

再查看一下当前的区块高度:

1
2
> eth.blockNumber
288

转账

现在帐户2中没有余额,我们从帐户1转发几个以太币到 帐户2中:

1
2
3
4
5
6
7
8
9
10
11
> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

account is locked

at web3.js:3119:20

at web3.js:6023:15

at web3.js:4995:36

at <anonymous>:1:1

由于默认帐户是锁定的,首要解锁帐户,然后再 转帐,先查看 下下当前帐户,再解锁:

1
2
3
4
5
6
> eth.accounts

["0x73e8655a84a37685d98891b7a9333a7423e12cb3", "0xa9d6dfff13c1050f19a8ffc2811c68842797d01c", "0xe30cecc37776895389b94033ac65eb3b98294659"]

> personal.unlockAccount('0x73e8655a84a37685d98891b7a9333a7423e12cb3','11111111')
true

上面已经提示解锁成功,然后继教转帐:

1
2
3
4
> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})
"0x8f164a1296b618bdd64fcc007f6d39ce022b57e257beefeb76288cdef220ad80"
> eth.getBalance(user2)
0

上面已经提示转帐成功了,但是user2帐户余额依然是0,是因为没有矿工来挖矿处理,我们启动一个矿工,并在另一个终端查看日志

日志已经显示开始挖矿并发交易进行了处理在,区块293中,

1
2
3
4
5
6
> miner.start()
true
> miner.stop()
true
> eth.getBalance(user2)
3000000000000000000

我们再次查看余额的时候user2已经 有三个以太币了,这样一个转帐的交易就完成了

  • 本文作者: Zihao Yao
  • 本文链接: https://yaozihao.com/mac_eth_env/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道