所有命令都是在powershell上执行的

1、创建“创世块”

初始化配置

创建一个 hdgenesis.json文件,拷贝到geth根目录

{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase": "0x0000000000000000000000000000000000000000",
    "difficulty": "0x40000",
    "extraData": "",
    "gasLimit": "0xffffffff",
    "nonce": "0x0000000000000000",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "alloc": {}
}

参数说明如下图:

创建数据存放地址并初始化创世块

(同一个网络中,创世块必须是一样的,否则无法联通)

走到数据目录

cd E:\blockchain\private_chain_env\1_node
cat .\hdgenesis.json

初始化创世纪节点

geth  --datadir ".\" init hdgenesis.json   --datadir 参数是指定数据存放文件夹

2、启动一个网络节点

查看端口占用情况

netstat -ano | findstr "30303"
(查找所有占用30303端口的进程)

get-process -Id 11276
(如何能查到进程,说明已经开启了Mist.exe,将其关闭,否则geth命令无法执行)

执行命令

geth --identity "HDetherum" --rpc --rpccorsdomain "*" --datadir ".\" --port "30303"  --rpcapi "db,eth,net,web3,personal" --networkid 95520 console

启动节点, 加上console 表示启动后,启用命令行;第二次也执行该命令

注意 networkid 95520,以太坊节点之间能够互相链接需要满足
1)相同的协议版本
2)相同的networkid
所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1),这也是官方推荐的方法.

参数说明:

参数解析:
--identity 自定义节点名称
--nodiscover 关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络
--datadir 区块链数据存储目录
--networkid 网络标识,私有链取一个大于4的随意的值
--rpc 启用ipc服务,默认端口号8545
--rpcapi 表示可以通过ipc调用的对象,一般为 db,eth,net,web3
--rpcaddr ipc监听地址,默认为127.0.0.1,只能本地访问
console 打开一个可交互的javascript环境

更多参数说明:(https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options )

执行结果:

在shell内,可以执行exit退出shell

验证:

1)telnet localhost 8545

ctrl+] 退出shell
quit退出telnet

2)netstat -ano | findstr "30303"

(查找所有占用30303端口的进程)

3)另外打开一个powershell的geth客户端访问

geth attach http://127.0.0.1:8545

(这种方式访问时,必须增加 personal选项  (资料来源于:https://ethereum.stackexchange.com/questions/3996/error-personal-unlockaccount-method-not-implemented))

4)通过mist客户端访问

5)示意图

3、账号管理

创建主账户 personal.newAccount(‘密码')

personal.newAccount("123456")

(geth console启动后,运行如上命令创建一个主账户(没有账户不允许挖矿),根据提示设置交易密码,创建成功后就可以使用console进行相关的单节点命令操作)
测试环境设置两个账号:挖矿账号和普通账号
account[0] -- 挖矿账户
account[1] -- 普通账户

查看账号

查询账户余额

思路:把账户赋值给某一个变量,同时查询账户中的余额

//查看挖矿账户余额
baseAccount = eth.accounts[0]
num = eth.getBalance(baseAccount)

//查看普通账户的余额
account1 = eth.accounts[1]
num1=eth.getBalance(account1)

4、挖矿

示意图

开始挖矿

miner.start()

停止挖矿

miner.stop()

查看结果

num = eth.getBalance(eth.accounts[0])
web3.fromWei(num)

5、转账

执行

查看挖矿账户余额

baseAccount = eth.accounts[0]
num = eth.getBalance(baseAccount)

查看普通账户的余额

account1 = eth.accounts[1]
num1=eth.getBalance(account1)

转账

//从baseAccount账户转给account1账户1eth
personal.unlockAccount(baseAccount,"123456")
eth.sendTransaction({from : baseAccount, to : account1 , value : web3.toWei(1,"ether")})

// 查看账户余额
num = eth.getBalance(baseAccount)
num1=eth.getBalance(account1)

查看挂起的交易

eth.pendingTransactions
提交转账之后,观察挖矿shell的输出,会出现一条打包转账交易的记录,等待新的区块继续生成的时候,account1 账户的余额才会更新。

示意图

可能的错误解析

操作间隔过长

挖矿的shell需要 --rpcapi "db,eth,net,web3,personal"   personal,另一个shell才能管理个人账户信息

6、其他geth命令

待续....

如何创建一个GETH节点(单节点,windows环境)的更多相关文章

  1. HierarchyId通过父节点创建一个新的子节点

    --HierarchyId通过父节点创建一个新的子节点 CREATE TABLE #temp( node HierarchyID ); insert into #temp select '/' uni ...

  2. [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    写在前面 原文地址:C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章躺在我的收藏夹中有很长一段时间了,今天闲着没事,就自己动手实践了一下.感觉 ...

  3. JavaScript 创建一个 form 表单并提交

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  4. ROS学习记录(三)————创建一个简单的发布节点和订阅节点

    暑假在家有些懈怠,不,非常懈怠- -||!良心已经发痛了,想快些补回原来的进度,但忽然发现,中断了一段时间再重新去学习,有的地方连最基本的符号都忘记了 ,这次特意弄个最最基础的,恢复一下,以前的进度. ...

  5. consul 多节点/单节点集群搭建

    三节点配置 下载安装包 mkdir /data/consul mkdir /data/consul/data curl -SLO https://github.com/consul/1.9.5/con ...

  6. C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...

  7. .NET创建一个即是可执行程序又是Windows服务的程序

    不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...

  8. python使用__new__创建一个单例模式(单例对象)

    #单例模式:使一个类只产生一个对象.他们的id地址都指向同一个内存地址 第一步:理解谁创建了对象 # 单例模式# 首先明白,我们在创建一个类的对象的时候,其实是调用的这个类的父类,即继承object, ...

  9. 一个简单的例子说明windows环境变量配置

    关于win下环境变量的问题 配置环境变量其实就像是创建一个快捷键一样,我们把安装程序的路径告诉系统环境变量,这样下次我们在命令行中就可以直接使用一个简单的命令来调用我们安装的程序,因为此时计算机已经知 ...

随机推荐

  1. LeetCode965. 单值二叉树

    题目 1 class Solution { 2 public: 3 int flag = 0; 4 bool isUnivalTree(TreeNode* root){ 5 isUnivalTree1 ...

  2. JCO RFC destination

    一:登陆PI的GUI,进入事物SM59,创建T类型RFC destinations如下: AI_RUNTIME_JCOSERVER  :used for the mapping runtime, va ...

  3. 30分钟带你了解「消息中间件」Kafka、RocketMQ

    消息中间件的应用场景 主流 MQ 框架及对比 说明 Kafka 优点 Kafka 缺点 RocketMQ Pulsar 发展趋势 各公司发展 Kafka Kafka 是什么? Kafka 术语 Kaf ...

  4. 备份和还原Windows DHCP服务器

    在本教程中,您将学习如何使用DHCP控制台和PowerShell备份和还原Windows DHCP服务器. 您是否曾经经历过DHCP服务器崩溃或故障?在设备开始重新启动之前,一切都会平静. 用户将抱怨 ...

  5. 一个关于时区的bug

    起因: 在 Apollo 中配置了某活动的开始时间是 2020-05-15, 代码中的逻辑判断如下: const nowTime = new Date().getTime(); const start ...

  6. (Oracle)误删oracle表结构恢复

    在操作数据库时,我们常常会不小心把表结构删除了.有时候建表很麻烦大到100多个字段,而又找不到当初的建表语句.其实这时候不用担心,oracle和咱们widows一样,他也有个回收站,只要你没有清除回收 ...

  7. Elasticsearch从0到千万级数据查询实践(非转载)

    1.es简介 1.1 起源 https://www.elastic.co/cn/what-is/elasticsearch,es的起源,是因为程序员Shay Banon在使用Apache Lucene ...

  8. 关闭(隐藏)VS2019控制台上文件路径的显示

    昨天有个朋友问我,怎么关闭在运行程序后,控制台上显示的文件路径啊?啥??我突然不知道他说的说什么,然后我就自己随便打了几行运行了一下,才知道原来他说的是这个: 一开始我也没在意,我就告诉他,这个无所谓 ...

  9. jsaper子报表Subreport(父子报表互相传值)

    有很多人都说Jasperreports不适合中国式复杂报表,实际上运用好父子报表可以解决大部分问题了.例如下面的表.每个学生的学科数目不固定,且每个学生后有相当于小计的平均分.有点复杂度的报表,可以使 ...

  10. redis性能优化、内存分析及优化

    redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...