概述
Geth是Go Ethereum开源项目的简称,它是使用Go语言编写且实现了Ethereum(以太坊)协议的客户端软件,也是目前用户最多,使用最广泛的客户端。通过Geth客户端与以太坊网络进行连接和交互可以实现账户管理、合约部署、挖矿等众多有趣且实用的功能。
安装部署
1、 下载安装geth
首先下载geth,进入官网https://geth.ethereum.org/downloads/,选择windows版本。但是有些地方因为网络vpn的问题,无法通过官网下载可以去https://ethfans.org/wikis/Ethereum-Geth-Mirror下载,这是国内网站但是相对于官网geth版本更新较慢,如果使用Google Chrome下载的可能会提示文件危险,不用理会,选择保留即可。从官网进直接选择windows版本的geth下载如下图:
下载完成之后,双击下载软件,首先选择 I agree,然后next,安装路径选择按照默认路径安装即可,点击install(所有信息都会放置在这个路径下,若C盘空间过小,建议更改路径到其他空间较大的磁盘)
等待安装完成,然后点击close,进入安装目录,发现两个文件:
2、 初始化创始区块
首先初始化创世区块,在根目录下创建文本文件,重命名为genesis.json,新建文件夹命名为chain,在genesis.json文件中添加创始区块代码
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x00002",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": { }
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
以管理员身份打开命令行窗口(非管理员身份会失败)。在geth目录下运行命令初始化创世块:
geth -datadir "F:gethchain0" init genesis.json
运行结果:
4、新建账户
在命令行窗口(管理员模式)输入命令进入控制台:
geth -datadir "F:gethchain0" console
运行结果:(显示Welcome to the Geth JavaScript console!即为成功)
创建新账户,密码自己设置,用来启动私有链的挖矿。创建的第一个账户默认为矿工。创建成功会返回该账户的公钥(注意大小写)。
personal.newAccount("密码")
运行结果:
输入exit退出控制台。
5、启动私有链
在启动私有链节点时,首次会要求输入账户密码(注意命令里边的ip地址是自己的IP地址,)
geth --identity "TestNode" --rpc --rpcport "8545" --datadir "f:gethchain0" --port "30303" --allow-insecure-unlock --nodiscover console
各选项含义如下:
- –identity:指定节点 ID;
- –rpc:表示开启 HTTP-RPC 服务;
- –rpcport:指定 HTTP-RPC 服务监听端口号(默认为 8545);
- –datadir:指定区块链数据的存储位置;
- –port:指定和其他节点连接所用的端口号(默认为 30303);
- –nodiscover:关闭节点发现机制,防止加入有同样初始配置的陌生节点。
这是一个交互式的 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():连接到其他节点;
这些命令支持 Tab
键自动补全,具体用法如下。
上面是创建了一个区块链节点,如果要构成网络,则需要创建多个区块链节点。打开一个新的命令行窗口,定位到geth.exe所在目录,然后输入下面的语句,参考第一个节点建设。
geth --datadir f:gethchain1 init f:gethgenesis.json
初始化后,启动第二个区块链节点
geth --identity "TestNode" --rpc --rpcport "8546" --datadir "f:gethchain1" --port "30304" --allow-insecure-unlock --nodiscover --ipcdisable console
通过admin.nodeInfo.enode获取第二个节点的enode,如图:
将enode内容复制出来,形成admin.addPeer("enode://e8e6fec337a5d7e03a1aabe944175b1d3a2141bf735f181a89ff6bf1f2a1903a8008a465244c0077b461cc70a46751611acf79dfefb50db6d4a4eeca0ea47a4b@localhost:30305?discport=0"),并在第一个区块链窗口中执行即可。
其中IP地址要改成第二个区块链所在机器的IP。
这样最简单的区块链网络就形成了,两个区块链节点的数据是实时同步了,这就是所谓分布式账簿。
最后
以上就是单纯高跟鞋为你收集整理的Windows通过geth搭建区块链(私链)安装部署的全部内容,希望文章能够帮你解决Windows通过geth搭建区块链(私链)安装部署所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复