所有命令都是在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. 查看pod日志无法查看的解决方式

    查看pod日志 [root@k8s-master1 ~]# kubectl logs nginx-7cdbd8cdc9-2qrcw Error from server (Forbidden): For ...

  2. uni-app开发经验分享八: 实现微信APP支付的全过程详解

    背景 最近项目使用uni-app实现微信支付,把过程简单记录下,帮助那些刚刚基础uni-app,苦于文档的同学们.整体来说实现过程和非uni-app的实现方式没有太大不同,难点就在于uni-app对于 ...

  3. ldf和mdf文件怎么还原到sqlserver数据库

    1.把mdf文件和ldf文件拷贝到数据库的默认路径C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA里:2.在sq ...

  4. (转)iOS工具--CocoaPods 安装使用总结

    本文转载自:CocoaPods 安装使用总结(最新) 一.前言 关于什么是CocoaPods,使用CocoaPods的好处等问题本文不做说明,本文只是CocoaPods的安装和使用教程.根据此教程可以 ...

  5. Shell 简单入门教程

    大数据开发岗为什么要学习Shell呢?1)需要看懂大数据运维岗人员编写的Shell程序.2)偶尔会编写一些简单Shell程序来管理集群.提高开发效率 艺多不压身 Shell是一个命令行解释器,它接受应 ...

  6. HDU1814和平委员会

    题目大意: 有n对的人,编号从1-2*n,m对的人之间互相不喜欢,每对人中必徐选1个人加入和平委员会,求字典序最小的解 -------------------------------- 2-SAT问题 ...

  7. SpringMVC听课笔记(七:Restful CRUD)

    这章貌似没有什么可讲的,可以看GitHub工程代码: https://github.com/heyboom/SpringMVC_Rest_CRUD

  8. ehCache 配置

    package com.jy.modules.cms; import java.io.Serializable; import net.sf.ehcache.Cache; import net.sf. ...

  9. Java开发中POJO和JSON互转时如何忽略隐藏字段

    1. 前言 在Java开发中有时候某些敏感信息我们需要屏蔽掉,不能被消费这些数据的客户端知道.通常情况下我们会将其设置为null或者空字符 "",其实还有其它办法,如果你使用了Ja ...

  10. cassandra权威指南读书笔记--Cassandra架构(1)

    结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gos ...