以太坊节点搭建和启动

一、环境搭建

1.安装Geth

方法一:官网下载最新版本

https://geth.ethereum.org/downloads/

方法二:git下载官方源码编译安装

二、搭建私有网络

1.创建创世区块配置文件

 Geth需要使用genesis.json文件生成创世区块,同时需要提供保存区块数据和账户私钥(keystore)的目录。

mkdir myeth
cd myeth
vim genesis.json
{
  "config": {
        "chainId": 22,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0,
        "eip150Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x400",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000032",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

 在不同的网络上,chain ID不同:

  • chain ID:1 主网公链
  • chain ID:2 Morden网络(仅对部分人开放)
  • chain ID:3 Ropsten网络
  • chain ID:4 Rinkeby网络
  • chain ID 大于4的是私有网络

 

2.网络初始化

输入geth init命令、genesis.json文件、存储区块数据和keystore的文件夹,进行初始化。

geth --identity mytest --datadir /www/ethereum/eth/test init /www/ethereum/genesis.json 

注:路径需要换成你自己的路径

3.搭建节点运行的环境

geth --datadir "/www/ethereum/eth/test" --rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpcaddr "127.0.0.1" --rpccorsdomain "*" --nodiscover --networkid 15

常用参数选项含义如下:

–identity:指定节点 ID,方便在一大群节点中识别出自己的节点;
–rpc:表示开启 HTTP-RPC 服务;
–rpcport:指定 HTTP-RPC 服务监听端口号(默认为 8545);
–rpcaddr:指定IP地址;
–rpcapi “eth,web3,miner,admin,personal,net” :这个命令指示了允许通过RPC访问的命令。默认情况下,Geth允许web3。
–datadir:指定区块链数据的存储位置;
–port:指定和其他节点连接所用的端口号(默认为 30303);
–nodiscover:关闭节点发现机制,防止加入有同样初始配置的陌生节点;
–maxpeers 0 如果你不想有人连上你的测试链,就用maxpeers 0。或者,你可以调整参数,当你确切的知道有几个节点要连接上来的时候。
 

 

enode的信息是节点在网络上的身份标志。如果其他节点准备加入这个网络中,就需要提供自己的enode值。
  RPC访问可以通过http://127.0.0.1:8545或http://localhost:8545,IPC访问可以通过**\.\pipe\geth.ipc**命令。

  命令是以服务的形式持续运行的,需要再打开一个命令行窗口,输入
 

Geth attach rpc:http://localhost:8545

 这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:

eth:包含一些跟操作区块链相关的方法;
net:包含一些查看p2p网络状态的方法;
admin:包含一些与管理节点相关的方法;
miner:包含启动和停止挖矿的一些方法;
personal:主要包含一些管理账户的方法;
txpool:包含一些查看交易内存池的方法;
web3:包含了以上对象,还包含一些单位换算的方法。
 

进入以太坊 Javascript Console 后,就可以使用里面的内置对象做一些操作,这些内置对象提供的功能很丰富,比如查看区块和交易、创建账户、挖矿、发送交易、部署智能合约等。

  常用命令:

personal.newAccount():创建账户;
personal.unlockAccount():解锁账户;
eth.accounts:枚举系统中的账户;
eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1 ether = 10^18 Wei);
eth.blockNumber:列出区块总数;
eth.getTransaction():获取交易;
eth.getBlock():获取区块;
miner.start():开始挖矿;
miner.stop():停止挖矿;
web3.fromWei():Wei 换算成以太币;
web3.toWei():以太币换算成 Wei;
txpool.status:交易池中的状态;
admin.addPeer():连接到其他节点;
 

你可能感兴趣的:(区块链)