如何创建私链:

创建创世配置文件:

首先需要创建一个“创世”json配置文件,此文件描述了创世区块的一些参数。下面就是文件中的内容:

{
"coinbase": "0x0000000000000000000000000000000000000000",
"config": {
"homesteadBlock": 5
},
"difficulty": "0x20000",
"extraData": "0x",
"gasLimit": "0x2FEFD8",
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
"nonce": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00",
"alloc": {
"dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6": {
"balance": "100000000000000000000000000000"
}
}
}

将上面这段代码复制到一个文本文件里并起名为genesis.json 

创世!:

为了不和主链的数据冲突,这里建议建立自己的私链数据文件夹。在我的电脑上在E盘建了一个EthDBSpace作为以太坊实验工作区,并在里面创建了一个PrivChain文件夹作为我的第一个私链的数据存放文件夹

 
这里为了方便管理将genesis.json放在了EthDBSpace文件夹下

  • 打开Windows命令行 
  • 键入如下命令
geth --datadir "E:\EthDBSpace\PrivChain" init "E:\EthDBSpace\genesis.json"
–datadir 选项用来指定我们私链的数据目录。在我的电脑上是E:\EthDBSpace\PrivChain
init 命令为创世命令,后面紧跟着我们的创世配置文件路径。
  • 点击回车后执行结果如下 
此时创世完成!

创建账户:

为了在私链上做实验,我们还需要在私链上建立自己的账户

  • Windows命令行键入
geth --datadir "E:\EthDBSpace\PrivChain" console

  

我们由于已经创世成功所以第二次进入客户端时我们不用再次指定genesis.json文件路径,而是直接–datadir 指明私链数据路径即可。
console命令用来开启geth的命令行。
  • 点击回车后,客户端会先经过一阵初始化。在命令提示符出现后,说明已经进入geth console 
  • 在geth命令行中键入
personal.newAccount('Your Password')

  

personal.newAccount 函数用来创建账户,其中参数为账户密码
  • 点击回车后会出现 
账户创建成功后会在命令下方以绿色字符列明创建账户的地址,也即账户的公钥
  • 我们可以先查下账户余额,在geth命令行中键入:
my=eth.accounts[0]
eth.getBalance(my)

  

my=eth.accounts[0],此句的目的是将我们刚创建的账户地址赋值给my变量。这样可以简化后续账户地址输入。其中eth.accounts记录了本机上所有账户地址。由于我们第一次创建账户,所以目前电脑上只有一个账户。所以这里我们用eth.accounts[0]提取第一个账户地址。eth.getBalance函数用来获得账户余额,参数填入账户地址。这里的my变量记录的就是第一个账户的地址。
  • 执行结果如下: 

    可以看到此时账户里没钱。在以太坊上转账、发布合约、执行合约都需要费钱。而钱来自挖矿,下面我们先挖矿赚些钱。
    

挖矿赚钱:

目前的以太坊使用POW(Proof of Work)共识机制来激励人们去维护账本记账。此机制的核心是系统出一道题,让全网有意记账节点来求解,第一个求解出题目答案的节点会获得新区块的记账权并获得eth作为奖励。其中有意记账的节点叫做矿工节点。下面我们在我们的私链上挖矿赚一些钱便于我们后续的转账实验。

  • 继续在geth命令行键入如下命令开始挖矿:
miner.start()
  • 点击回车后会看见客户端开始挖矿,命令行里不断显示出块进度 
由于是私链,目前就一个节点在挖矿不存在竞争。所以开挖若干秒即可停止挖矿,挖得得钱已经可以进行后续实现。
  • 键入如下命令停止挖矿
miner.stop()
  • 此时再次查看我们的账户余额
eth.getBalance(my)

  

会看到我们的余额多了一大笔钱,显示的余额以以太坊货币单位wei来计算。关于wei到eth的换算表参见http://www.ethdocs.org/en/latest/ether.html

  

转账实验:

下面我们尝试下在我们自己创建的私链上进行转账 
- 先创建第二账户,继续在geth命令行键入如下命令

personal.newAccount('123')
other=eth.accounts[1]
将第二账户地址赋值给other变量,便于后续输入
  • 在转账前需要对转出账户进行解锁,继续在geth命令行键入如下命令
personal.unlockAccount(my)

  

由于目前是my账户中有钱,other账户没钱,所以这里解锁我们的转出账户my
  • 回车后会提示输入密码,我这个账户的密码为123,输入后回车即可解锁 
  • 开始转账,在geth命令行键入
eth.sendTransaction({from:my, to:other, value:10000})

  

其中from为转出账户,这里我们输入记录了第一个账户地址的my变量
to为转入账户,这里我们输入记录额第二个账户地址的other变量
value指定了转出金额,单位为wei,这里我们转出10000wei
  • 键入后结果如下 
可以看到转账请求已经提交
  • 此时我们再次查看两个账户的余额
eth.getBalance(my)
eth.getBalance(other)
  • 查询余额结果如下: 

    此时会发现一个奇怪现象,前面的转账请求已经提交,为什么两个账户的余额没有发生任何变化?回想刚才我们讲到的,以太坊使用POW共识激励矿工记账,而由于我们创建的是私链目前只有我们一个节点,所以此时并没有其它节点参与记账。所以我们需要通过挖矿把这笔转账记录到块中。
  • 继续挖矿,在geth 控制台中键入
miner.start()
  • 等待挖一会后停止挖矿
miner.stop()

  再次查询,发现转账已到位 

转载自http://blog.csdn.net/weixin_40401264/article/details/78095222

win7环境搭建以太坊私链的更多相关文章

  1. Mac环境搭建以太坊私有链

    原文地址: 石匠的blog 为了测试以太坊智能合约,最方便的是在本地搭建一个以太坊私有链.在mac上搭建环境主要需要以下步骤. geth安装 geth是go-ethereum的简写,是一个用go语言编 ...

  2. geth搭建以太坊私链及常用操作

    一.下载安装geth客户端 https://www.ethereum.org/ 二.搭建私有链 1.准备创世区块配置文件 要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的 ...

  3. 转:使用 Go-Ethereum 1.7.2搭建以太坊私有链

    使用 Go-Ethereum 1.7.2搭建以太坊私有链 目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底 ...

  4. 区块链--Ubuntu上搭建以太坊私有链

    1.搭建私链所需环境 操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度 软件: geth客户端 Mist和Ethereum Wallet:https://githu ...

  5. 使用 Go-Ethereum 1.7.2搭建以太坊私有链

    目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球 ...

  6. c#实战开发:以太坊私链搭建(一)

    1.第一步环境搭建 运行环境:window  客户端版本:Go语言geth 下载地址https://ethereum.github.io/go-ethereum/downloads/ 以太坊API中文 ...

  7. docker 搭建以太坊私有链搭建

    最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建 于是我找到了官方的地址 https://github.com/ethereum/go-et ...

  8. CentOS7搭建以太坊私有链

    1. 环境准备:Win10 64位安装 VM VirtualBox,操作系统版本: CentOS-7-x86_64-Everything-1611.iso(7.71G). 切换root账号,方便安装程 ...

  9. ubuntu系统搭建以太坊私有链

    1.安装curl.git apt-get update apt-get install git apt-get install curl 2.安装go curl -O https://storage. ...

随机推荐

  1. 2019 HZNU Winter Training Day 15 Comprehensive Training

    A - True Liars 题意: 那么如果一个人说另一个人是好人,那么如果这个人是好人,说明 对方确实是好人,如果这个是坏人,说明这句话是假的,对方也是坏人. 如果一个人说另一个人是坏人,那么如果 ...

  2. codeforces 816 B. Karen and Coffee(思维)

    题目链接:http://codeforces.com/contest/816/problem/B 题意:给出n个范围,q个查询问查询区间出现多少点在给出的n个范围中至少占了k次 题解:很显然的一道题目 ...

  3. 牛客网暑期ACM多校训练营(第三场) A PACM Team 01背包 记录路径

    链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 Eddy was a contestant participating in ACM ICPC ...

  4. 微信公众号之获取openId

    在小伙伴们开发微信公众号.小程序或者是在微信内置浏览器打开的项目时,会遇到的第一个问题就是如何获取openId,今天小编就给大家带来的是如何获取openId. 首先   我们要从微信开发者后台得到ap ...

  5. Python---网页元素

    文章目录 1. 前言 万维网 万维网的关键技术 2. 网页基本框架 HTML CSS: JavaScript 在介绍审查元素之前我们先简单介绍一下网页的基本框架 1. 前言 万维网 万维网(英语:Wo ...

  6. C#基础——事件初步

    事件是C#语言的重要成员之一,初学者往往不能很好的去理解和运用事件,特别是自定义事件.在这里将以较简单的方式呈现事件最基本的用法. 1.事件的定义 给事件下定义是一个较困难的事,因为它体现的是对象与对 ...

  7. java读写文件IO

    package Common.readFile; import Common.tool.User; import com.fasterxml.jackson.databind.ObjectMapper ...

  8. math库的使用

    math库简介 math库是Python提供的内置数学内函数库,因为复数类型常用于科学计算,一般计算并不常用,因此math库不支持复数类型,仅支持整数和浮点数运算,math库一共提供4个数学常数和44 ...

  9. .NET Core 3.0之深入源码理解Host(二)

      写在前面 停了近一个月的技术博客,随着正式脱离996的魔窟,接下来也正式恢复了.本文从源码角度进一步讨论.NET Core 3.0 中关于Host扩展的一些技术点,主要讨论Long Run Pro ...

  10. “独立”OpenVINO R2019_2 版本中的“super_resolution_demo”例子的,解决由于 R2019_1到R2019_2 升级造成的问题

    OpenVINO提供了丰富的例子,为了方便研究和使用,我们需要将这些例子由原始的demo目录中分离出来,也就是“独立”运行,这里我们选择了较为简单的super_resolution_demo来说明问题 ...