本教程旨在为新手用户服务,在windows系统下,通过简单的操作,实现Geth客户端的安装部署,环境配置,常用功能的使用。
前言
- 本教程旨在为新手用户服务,在windows系统下,通过简单的操作,实现Geth客户端的安装部署,环境配置,常用功能的使用。
下载
- go1.13.4.windows-amd64.msi,点击此处开始下载
- Geth,点击此处进入下载页面,选择Windows版本下载
- Ethereum-Wallet-installer-0-11-1.exe ,点击此处开始下载
安装配置GO
找到下载的文件go1.13.1.windows-amd64.msi,双击一直点击下一步即可。
环境配置,复制GO安装路径下bin目录的路径,然后在我的电脑>右键属性>高级系统设置>环境变量>系统变量>双击Path>添加刚刚复制的路径即可。
检查环境配置是否成功,DOS命令窗口,在任意路径下输入:go version
安装配置Geth
找到下载的文件geth-windows-amd64.exe,双击一直点击下一步即可。
环境配置,复制Geth安装路径下bin目录的路径,然后在我的电脑>右键属性>高级系统设置>环境变量>系统变量>双击Path>添加刚刚复制的路径即可。
检查环境配置是否成功,DOS命令窗口,在任意路径下输入:geth version
Geth的使用
此部分内容,主要分为geth节点的启动示例和部分常用的console命令操作。
启动 geth节点
新建geth目录
路径、名称无要求,自定义,该目录主要存储geth节点的相关数据。
1 | F:\works> mkdir geth |
新建创世文件
新建并通过编辑软件打开genesis.json,输入以下创世文件内容(供参考)。
1 | { |
创世文件说明
内容 | 说明 |
---|---|
chainId | 不同版本的eth的id,比较经典有,1代表主网,2代表普通测试网络,3代表Ropsten测试网络,4代表Rinkeby测试网络,42代表Kovan测试网络(其他的值代表哪些网络,可以参考) chainId的值要与在geth命令中的–networkid参数保持一致 |
homesteadBlock | 硬分叉区块高度,填写官网的默认值即可,后续硬分叉时才需要调整 |
eip155Block | EIP 155 硬分叉高度,填写官网的默认值即可,后续硬分叉时才需要调整 |
eip158Block | EIP 158 硬分叉高度,填写官网的默认值即可,后续硬分叉时才需要调整 |
alloc | 预设账号以及账号的以太币数量,私有链挖矿比较容易可以不配置 |
balance | 账户中的金额,单位是wei,1eth=10^18wei |
coinbase | 矿工账号 |
difficulty | 难度值,越大越难,详见下表。参考链接 |
extraData | 附加信息,以0x开头填写,可填可不填 |
gasLimit | gas 的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填的很大 |
nonce | 64 位随机数,默认即可 |
mixhash | 与 nonce 配合用于挖矿,由上一个区块的一部分生成的 hash,默认即可。因为是第一个区块,因此,默认就是0了 |
parentHash | 上一个区块的 hash 值,默认即可。因为是第一个区块,因此,默认就是0了 |
difficulty:挖矿难度参考表
16进制 10进制值 倍数 说明 99999 629145 一秒一个 2ffffd 3145725 五倍 一分钟五到十个之间个 5ffffa 6291450 放大十倍 一分钟五个 bffff4 12582900 二十倍 六分钟挖了八个 3bfffc4 62914500 一百倍 六分钟两个 77fff88 125829000 两百倍 十分钟两个 12bffed4 314572500 五百倍 15分钟没有一个
初始化链
1 | F:\works\geth> geth --datadir ./data/00 init ./genesis.json |
启动节点
示例:
1 | F:\works\geth> geth --datadir ./data/00 --networkid 100 --port 30303 --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner" console |
命令行参数说明:更多参数的使用,请参考链接1 或者 参考链接2
参数 | 说明 |
---|---|
datadir | geth安装的目录,数据存放位置,这个与初始化时候的路径一样即可 |
networkid | 网络ID,该值与创世纪区块中的chainId一致即可,否则就会连到别人的服务上去了 |
port | geth当前节点暴露的通信端口,默认是30303。其他节点可以通过此端口进行通信 |
nodiscover | 关闭广播,防止别人接入,但其他节点还是可以用admin.addPeer(enode)加入 |
maxpeers | 最大节点连接数 |
identity | 设置节点名称 |
rpc | 开启HTTP-RPC服务器,此处也可以不开启,使用admin.startRPC(addr,port)来开启 |
rpcaddr | 当前节点的rpc地址,默认是localhost |
rpcport | rpc暴露的端口,默认是8545。json rpc通过此端口获取数据 |
rpccorsdomain | “*” :允许跨域请求的域名列表,此处为允许全部 |
rpcapi | 允许rpc接入的方式 |
cache | 调整内存分配 最小16MB,默认128MB |
verbosity | 日志等级:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3) |
console | 开启控制台 |
启动成功效果图:
进入JavaScript console 控制台,即可用以下命令测试基本功能。
console常用命令
Geth Console一个交互式的 JavaScript 执行环境,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
- eth:包含一些跟操作区块链相关的方法;
- net:包含一些查看p2p网络状态的方法;
- admin:包含一些与管理节点相关的方法;
- miner:包含启动&停止挖矿的一些方法;
- personal:主要包含一些管理账户的方法;
- txpool:包含一些查看交易内存池的方法;
- web3:包含了以上对象,还包含一些单位换算的方法。
节点信息
1 | > admin |
添加账户
1 | > personal.newAccount("123456") |
- 带上密码可以直接创建一个新账户,如果不带密码,就会提示2次输入密码
- 注:如果没有创建过初始账户,此处创建的第一个账户将作为挖矿人
查看账户
1 | 返回本地节点中,有秘钥文件的所有账户的地址列表,是个字符串数组 |
设置为变量
1 | > acc0 = web3.eth.accounts[0] |
- JavaScript console 控制台,可以直接使用js的语法,此处是获取节点第一个账户地址。频繁使用到的数据,设置变量存储,提高效率。
查看钱包
1 | 返回账户的余额,默认单位是Wei |
解锁账户
1 | > personal.unlockAccount(acc0,"123456") |
交易或者是对数据签名的时候需要解锁账户,也就是验证密码和秘钥
注1:此账户所在节点必须要有keystore密钥才能解锁成功
注2:每隔5分账会重新上锁,未解锁的账户不能进行转账
注3:每次解锁完成业务后应该立即锁定账户,避免危险
1
2
3> personal.lockAccount(acc0)
或者
> personal.lockAccount(eth.accounts[0])
转账
1 | 示例:节点中的第1个账户转账1个以太币给第2个账户 |
from:发送人,to:接收人,value:金额(单位是Wei,使用 web3.toWei(1,”ether”) 将1个 ether 转换为10的18次方 Wei )
注:所有值都是字符串类型,需要带上双引号
挖矿
1 | 新建账户,注:如果节点没有账户,无法启动挖矿 |
- 注1:节点没有账户存在,直接挖矿会报错,该示例设置了节点的第2个账户为挖矿地址
- 注2:挖矿时会显示Generating DAG in progress,此进度达到100时才会开始挖,配置差的机器会等很久
查看区块数据
1 | 列出区块总数 |
节点通信地址
1 | > admin.nodeInfo.enode |
多节点通信
此部分内容将演示节点与节点之间建立通信。
启动另一节点
与启动第一个节点的步骤一样,只需注意以下几点即可:
- 建立新目录存储新节点数据,路径、名称自定义;
- 由于是在windows单机测试,启动新节点,注意port、rpcport 端口与第一个节点端口不一样即可;
- networkid 保持一致,创世文件内容保持一致;
- nodiscover,ipcdisable,这两个参数很关键,windows没有ipcdisable参数,第二个节点启动会报错的。nodiscover让节点2不会被节点1自动扫描到。
1 | 初始化新节点,目录名 01,创世文件是一样一样的 |
连接节点
- 原则:一个节点加入另一个节点,拿到另一个节点的enode链接信息即可。以下演示节点2加入节点1:
1 | 节点1: |
Ethereum-Wallet的使用
安装
找到下载的文件 Ethereum-Wallet-installer-0-11-1.exe,双击一直点击下一步即可。
启动
Ethereum-Wallet 的启动前提是Geth节点需开启HTTP-RPC服务!
方式一
如RPC服务都是默认的参数可以通过双击Ethereum Wallet图标的方法启动,比如用了如下方式启动节点:
1 | F:\works\geth> geth --datadir ./data/00 --networkid 100 --port 30303 --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner" console |
方式二
rpcaddr、rpcport 参数非默认的情况,需通过DOS命令的方式启动。
1 | - 进入Ethereum-Wallet安装目录 |
启动成功后的界面:
使用
可以通过Ethereum-Wallet,转账、查询、发布合约等操作的可视化,更加方便用户使用Geth客户端。
桌面版启动Geth程序
桌面版启动Geth程序提供快速启动Geth节点、快速生成账户、CPU挖矿、显卡挖矿等方便用户操作的功能。如需获取程序,请联系相关人员获取下载地址。
安装
下载的文件是以miner.zip命名的压缩文件,直接解压到想要存放的路径即可。
使用
包结构
程序包结构:
解压后的包文件主要有:bin目录、genesis.json创世文件、ieth.exe启动程序。
用户首次使用时,编辑自己需要定义的genesis.json文件,在本次示例中,使用了上文“新建创世文件”章节中一样的创世文件内容。剪辑好之后,双击 ieth.exe 即可启动程序(界面如下图)。
此时,程序包文件目录下会自动生成 log目录和挖矿配置.ini文件。
生成账号
操作步骤:密码栏输入密码 > 点击“生成账号”按钮 > 记录并备份账户、密码、私钥、密钥存放位置(重要)
同时,在程序包目录下,会自动生成data目录:
默认数据会保存在data目录中
geth:以太坊的链数据,保存区块的,如果遇到区块同步出错的情况,建议删除这个文件夹,重新同步区块
keystore:保存密钥文件,请牢记密码以及备份好这个文件
节点同步
该程序提供方便的节点同步操作,首先打开<挖矿配置.ini>文件进行配置。
配置文件说明:
1 | //此处是软件启动时加载的钱包地址,当点击挖矿的时候,会自动将钱包地址栏中的地址替换到此处(所以此处无需改动) |
文件配置好之后,点击“打开控制台”,稍等片刻可以查询同步情况:
细心观察可以发现,本机节点已经自动CPU挖矿,并同步其他节点的块信息。在程序界面,可以点击“停止挖矿”,停止本机挖矿的进程。
挖矿
提供CPU挖矿和显卡挖矿两种方式,选择自己的挖矿方式,在程序界面,点击对应按钮即可,挖矿日志信息,都会显示在程序界面,非常直观。
注:显卡挖矿需本机具备显卡。
总结
感谢阅读本教程,如有其他需求帮助,请联系相关人员,谢谢!