以太坊节点搭建和启动

一、环境搭建 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():连接到其他节点;

    推荐阅读