【区块链】区块链 - 第一条私链

一、Geth Console

Geth Console一个交互式的 JavaScript 执行环境,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:

  • eth:包含一些跟操作区块链相关的方法;
  • net:包含一些查看p2p网络状态的方法;
  • admin:包含一些与管理节点相关的方法;
  • miner:包含启动&停止挖矿的一些方法;
  • personal:主要包含一些管理账户的方法;
  • txpool:包含一些查看交易内存池的方法;
  • web3:包含了以上对象,还包含一些单位换算的方法。

二、Geth 安装

官方安装文档:https://geth.ethereum.org/install/

环境:ubuntu 18

下载包:https://geth.ethereum.org/downloads/

## 以下为linux安装
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.6-bd059680.tar.gz  // 下载
tar -zxvf geth-linux-amd64-1.9.6-bd059680.tar.gz  ## 解压
sudo cp geth-linux-amd64-1.9.6-bd059680/geth  /usr/bin/  ## 复制到bin目录
geth version  ## 验证是否安装成功

## 以下为输出结果,输出版本信息即安装成功
Geth
Version: 1.9.6-stable
Git Commit: bd05968077f27f7eb083404dd8448157996a8788
Git Commit Date: 20191003
Architecture: amd64
Protocol Versions: [63]
Network Id: 1
Go Version: go1.13.1
Operating System: linux
GOPATH=
GOROOT=/home/travis/.gimme/versions/go1.13.1.linux.amd64

三、搭建私链

1、 建立目录和并在目录内创建genesis.json

mkdir tmpPrivate  ## 创建目录
cd tmpPrivate  ## 进入tmpPrivate
vim genesis.json  ## 创建并编辑genesis.json,vim使用网上很多教程,此处不再赘述

## 以下为写入genesis.json内容
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"config": {},
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333", "alloc": { }
}

2、执行命令,创建创世区块

geth --datadir "./" init genesis.json
  • --datadir 代表文件夹地址

 以下为执行后的效果:

 

3、创建私有链

geth --datadir "./" --nodiscover console 2>>geth.log
  • --datadir 代表文件夹地址,
  • --nodiscover 代表该链条不希望被其他节点发现,
  • console >> geth.log 代表将控制台输出到文件geth.log中去

 执行结果:

4、创建用户

刚开始私链是没有用户的,需要创建用户。

personal.newAccount('abc')  ##创建用户,用户密码是abc,得到用户地址
eth.accounts  ## 查看当前私有链中的用户

执行结果: 

5、查看用户当前以太币数量

##查看主账户的以太币数量
acc0 = eth.accounts[0]
eth.getBalance(acc0)  ## 新用户以太币数量为0

执行结果:

6、挖矿 

##开始挖矿 & 停止挖矿
miner.start() ##开始挖矿
tail -f geth.log ##查看日志,再开一个终端看,挖矿时日志是动态的
miner.stop() ##停止挖矿
eth.getBalance(acc0)  ## 查看用户以太币数量

执行结果: 

开始挖矿:

 结束挖矿后查看账户以太币数量(系统默认将挖到的币存入第一个账户)

6、相关操作

##查看geth版本
geth version  

##切换回命令行,执行命令,制造创世区块
geth --datadir "./" init genesis.json


##执行一条最简单的geth命令,来创建自己的私有链条
##console 2>> geth.log 
##代表将控制台的一部分输出,输出到文件geth.log上去
--datadir 代表文件夹地址,
--nodiscover 代表该链条不希望被其他节点发现,
-console >> geth.log 代表将控制台输出到文件geth.log中去

geth --datadir "./" --nodiscover console 2>>geth.log


##私有链的全部账户
eth.accounts

##该命令将创造一个新的用户,该用户的密码是xxx. 
##当然用户也可以将xxx 改为123,或者123456,或者任意密码
personal.newAccount("abc")


##打开另一个终端,找到geth.log的所在目录,执行命令从而持续的输出以太坊的日志
tail -f geth.log



##查看主账户的以太币数量
acc0 = eth.accounts[0]
eth.getBalance(acc0)



##如何获取账户的以太币余额
eth.getBalance("0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f")



##如何在两个账户之间进行以太币转换
acc0 = eth.accounts[0]
"0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f"
##acc1 = eth.accounts[1]
"0xb8b12a801b610176935a15321f77b48dd5c0c448"
##amount = web3.toWei(0.01)
"10000000000000000"

##从acc0转移到acc1中(),交易记录只有等再次挖矿提交后才能看到变动。
eth.sendTransaction({from: acc0, to: acc1, value: amount})


##转账之前大概率会有自动锁定,需要解锁
 personal.unlockAccount(acc0)   后输入密码,然后需要重新执行上面的转账命令
 

##开始挖矿 & 停止挖矿
miner.start() //开始挖矿
miner.stop() //停止挖矿

 参考文档:

https://note.youdao.com/ynoteshare1/index.html?id=d267c1e9e7d9248cf2bbcb3665b5b4fa&type=note

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值