所有命令都是在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. kubernets之Ingress资源

    一  Ingress集中式的kubernets服务转发控制器 1.1  认识Ingress的工作原理 注意:图片来源于kubernets in action一书,如若觉得侵权,请第一时间联系博主进行删 ...

  2. 探索微软开源Python自动化神器Playwright

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...

  3. 使用存储过程在mysql中批量插入数据

    一.在mysql数据库中创建一张表test DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` INT (11), `name` VARCH ...

  4. QTextEdit字符串的高亮显示问题

    20130222 鬼猫猫 整理 http://www.cnblogs.com/muyr/ 解决方法的原始地址 http://www.qtcn.org/bbs/read.php?tid=20335 背景 ...

  5. NAT模式、路由模式、桥接模式的区别

    NAT模式 NAT模式概述 NAT是"Network Address Translation"的缩写,中文意思是"网络地址转换",它允许一个整体机构以一个公用I ...

  6. 配置完xadmin源码包后启动报错“ Apps aren't loaded yet.”

    raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions. 碰到这种情况就要查看下是否 ...

  7. Flutter GetX使用---简洁的魅力!

    前言 使用Bloc的时候,有一个让我至今为止十分在意的问题,无法真正的跨页面交互!在反复的查阅官方文档后,使用一个全局Bloc的方式,实现了"伪"跨页面交互,详细可查看:flutt ...

  8. kubernetes 身份与权限认证 (ServiceAccount && RBAC)

    Kubernetes中提供了良好的多租户认证管理机制,如RBAC.ServiceAccount还有各种Policy等.   ServiceAccount Service Account为Pod中的进程 ...

  9. docker(mysql-redmine)

    一.安装docker 首先查看自己的版本,我的是centos 版本为 [root@localhost redmine]# uname -r 3.10.0-862.el7.x86_64 移除旧版本 yu ...

  10. java的volatile关键字(笔记)

    Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...