第二篇:以太坊环境搭建

Posted 静思浅行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二篇:以太坊环境搭建相关的知识,希望对你有一定的参考价值。

一、下载并安装以太坊客户端geth
https://github.com/ethereum/go-ethereum/releases/

(为方便geth命令使用,建议把geth地址配置到系统环境变量path中。)
二、配置自己的创世文件
配置创世文件为了区分公有链和私有链,同一个网络中创世区块必须相同否则无法连通。
创建一个文件genesis.json并复制下面内容。


"config":
"chainId":15,
"homesteadBlock":0,
"eip155Block": 0,
"eip158Block": 0
,
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": ,
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "PICC GenesisBlock",
"gasLimit":"0xffffffff"
三、启动私有链
执行以下命令创建数据存放地址并初始化创世块
geth --datadir "%cd%\\chain" init genesis.json
注:geth常用命令
  • eth:包含一些跟操作区块链相关的方法
  • net:包含以下查看p2p网络状态的方法
  • admin:包含一些与管理节点相关的方法
  • miner:包含启动&停止挖矿的一些方法
  • personal:主要包含一些管理账户的方法
  • txpool:包含一些查看交易内存池的方法
  • web3:包含了以上对象,还包含一些单位换算的方法
说明命令
创建用户personal.newAccount("密码")
解锁账户personal.unlockAccount("账户")
全部账户eth.accounts
账户余额eth.getBalance("账户")
转账eth.sendTransaction(from:my, to:other, value:10000)
如何在私有链上创建节点集群

1.创建一个私有连并启动改私有连

geth --datadir ./data/01 init ./genesis.json

geth --datadir ./data/00 --networkid 314590 --ipcdisable --port 61910 --rpcport 8200 console 获取节点的地址 admin.nodeInfo.enode

启动另一个终端,初始化第二个节点

geth --datadir ./data/01 --networkid 314590 --ipcdisable --port 61911 --rpcport 8101 --bootnodes "上一个节点地址" console

注:以太坊网络节点能够互连需要满足条件:

1.相同的版本号, 2.相同的networkid(启动节点时通过geth命令中的--networkid指定)

使用geth搭建以太坊私有网络,这一次则要在私有网络中建立多个node组成的集群,并互相发现,产生交易.

为了在本地网络运行多个以太坊节点的实例,必须确保一下几点:

  1. 每个实例都有独立的数据目录(--datadir)
  2. 每个实例运行都有独立的端口.(eth和rpc两者都是)(--port 和 --rpcprot)
  3. 在集群的情况下, 实例之间都必须要知道彼此.
  4. 唯一的ipc通信端点,或者禁用ipc.
错误:执行miner.start()报错

ERROR[03-15|11:36:38] Cannot start mining without etherbase err="etherbase must be explicitly specified" Error: etherbase missing: etherbase must be explicitly specified at web3.js:3143:20 at web3.js:6347:15 at web3.js:5081:36 at <anonymous>:1:1

出现上面的错误需要设置一个挖矿的账号。 miner.setEtherbase("账户")

windows环境下安装truffle

1、确认当前系统以及安装了nodejs,未安装请下载安装 地址:https://nodejs.org/en/download/

2、打开命令窗口 输入命令 npm install -g truffle

truffle部署时报错:

Error: authentication needed: password or unlock 原因是账户未解锁 显示为账户没有解锁,需要给账户解锁。

首先停止挖矿

miner.stop() true 检查挖矿是否已经停止,eth.mining 输出为false时表示挖矿已经停止 eth.mining false

查看当前用户

eth.accounts

给用户解锁,这里是给第一个账户解锁

user1=eth.accounts[0]

personal.unlockAccount(user1)

重新部署智能合约,不会报错

解锁之后一直启动挖矿

miner.start()

以上是关于第二篇:以太坊环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

搭建以太坊智能合约开发环境

web3.js链接以太坊并查询钱包u余额

以太坊交易:为啥交易后余额没有变化?

基于Ubuntu系统搭建以太坊go-ethereum源码的开发环境

以太坊 USDT-ERC20合约 注释版

以太坊 USDT-ERC20合约 注释版