以太坊开发环境搭建
Posted 嘀嗒嘀嗒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊开发环境搭建相关的知识,希望对你有一定的参考价值。
Geth安装
全称 Go Ethereum, 官网地址:https://github.com/ethereum/go-ethereum/wiki/geth
安装指令:
brew tap ethereum/ethereum
brew install ethereum
版本检测:
geth version
以太坊生产网络/测试网络/私有网络
测试网络
是官方提供的, 专供用来开发、调试和测试。- 因为网络是官方提供的,因此对于以太坊技术的底层实现、Geth的各种参数接口、整个以太坊的技术真实性能的理解就会弱很多。
- 从开发的角度来说,一个更好的选择是Private Network,可以从技术的底层去深入理解以太坊。
私有网络
以太坊的私有网络
,顾名思义就是由用户自己通过Geth创建的私有网络,是一个非常适合开发、调试和测试的网络。
优点
- 方便开发者深入理解以太坊的技术底层
- 因为节点相对较少,速度较快
- 用户可以随时创建,随时销毁,随时重建一个以太坊网络
- 随意的增加节点数目,或者删除节点,
- 既可以在服务器上建立,也可以在自己的windows或者Mac机器上建立
- 甚至一台机器可以建立多个节点,在一台机器上实现多节点的私有网络。
缺点
- 因为不是全球化的,只有在私有网络内的节点才能查看智能合约的执行、调用等。
搭建私有网络
- 建立目录和
genesis.json
- 创建一个目录,例如tmpPrivate
- 创建文件genesis.json, 并填入如下内容
{ "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x80000000", "difficulty": "0x1", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { } }
执行命令,创建创世区块
geth --datadir "./" init genesis.json
执行之后当前目录下面会新增出两个文件夹
geth
和keystore
:- geth中保存的是区块链的相关数据
- keystore中保存的是该链条中的用户信息
- 创建自己的私有链条
- 执行一条最简单的geth命令,来创建自己的私有链条
geth --datadir "./" --nodiscover console 2>>geth.log
- 在自己的私有链条上创建用户
输入命令
可以看到当前该区块链中共有几个账号,以及每个账号的公钥地址eth.accounts
- 创建一个新用户,密码是xxx
personal.newAccount("xxx")
- 输出区块链的Log
执行如下命令
进入命令行模式,其中参数geth --datadir "./" --nodiscover console 2>>geth.log
--datadir
代表文件夹地址--nodiscover
代表该链条不希望被其他节点发现,console >> geth.log
代表将控制台输出到文件geth.log中去
打开另一个终端,找到
geth.log
的所在目录,执行命令tail -f geth.log
从而持续的输出以太坊的日志
- 开始挖矿
- 执行命令
miner.start()
, 开始在我们的区块链上进行挖矿
注意点:
1. 挖矿挖到的ether币会默认保存在第一个账户中,即eth.acccounts[0]中。
2. 挖矿是执行智能合约的基础。如果停止挖矿的话,不仅以太币会停止生成,所有智能合约的调用也会不起作用。
3. 如果真的要停止挖矿,可以执行命令miner.stop()来停止挖矿
4. 按上面的命令,应该是可以实现以太坊挖矿的。如果不行的话,有可能就是之前有存在的链,此时应该删除之前的数据。在Mac下即删除~/.ethash文件夹和里面的文件即可。
- 挖矿启动后,查看主账户的以太币数量
acc0 = eth.accounts[0]
eth.getBalance(acc0)
结果只要不为0,那就说明挖矿成功!
以上是关于以太坊开发环境搭建的主要内容,如果未能解决你的问题,请参考以下文章