区块链学习-geth安装部署

Geth介绍

Geth 又名 go-ethereum,是 ethereum 协议的具体落地实现,通过 geth,可以实现 ethereum 的各种功能
Geth 可以被安装在很多操作系统上,包括 Windows、Linux、Mac 的 OSX、Android 或者 iOS 系统。

MacOS下安装ethereum

brew update
brew upgrade
brew tap ethereum/ethereum
brew install ethereum

生产创世区块文件

将如下内容保存为genesis.json文件

{
  "config": {
    "chainId": 1008,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0,
    "ethash": {}
  },
  "difficulty": "1",
  "gasLimit": "8000000",
  "alloc": {
    "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
    "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
  }
}
创世块文件的部分内容,我们可以简单了解一下:

coinbase 挖矿后获得奖励的账户地址
difficulty 挖矿难度
gasLimit 一个区块所能容纳gas的上限
nonce 随机值
mixhash 一个256位的哈希证明,与nonce相结合,验证本块的有效性
extraData 附加信息,随意填写
parentHash 前一块的hash值,由于是创世块,所以为0

Geth搭建私网

步骤01:利用创世块文件初始化

geth init --datadir ./data genesis.json

在此步骤,主要是利用创世块进行文件初始化,指定一个数据目录,当看到类似下面的结果代表初始化成功。

INFO [02-14|16:42:36.647] Maximum peer count                       ETH=50 LES=0 total=50
INFO [02-14|16:42:36.796] Allocated cache and file handles         database=/Users/yk/ethdev/yekai1003/rungeth/data/geth/chaindata cache=16.00MiB handles=16
INFO [02-14|16:42:36.861] Writing custom genesis block 
INFO [02-14|16:42:36.862] Persisted trie from memory database      nodes=0 size=0.00B time=13.579µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-14|16:42:36.866] Successfully wrote genesis state         database=chaindata hash=c1d47d…d9ea3e
INFO [02-14|16:42:36.872] Allocated cache and file handles         database=/Users/yk/ethdev/yekai1003/rungeth/data/geth/lightchaindata cache=16.00MiB handles=16
INFO [02-14|16:42:36.899] Writing custom genesis block 
INFO [02-14|16:42:36.899] Persisted trie from memory database      nodes=0 size=0.00B time=5.75µs   gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-14|16:42:36.900] Successfully wrote genesis state         database=lightchaindata hash=c1d47d…d9ea3e

步骤02:创建挖矿账户

geth account new --datadir data

创建时需要输入口令,并再次确认口令,不要忘记!!不要忘记!!不要忘记!!

步骤03:启动Geth节点

geth --datadir ./data --networkid 10086  --rpc.enabledeprecatedpersonal --http --http.addr 0.0.0.0 --http.vhosts "*" --http.api "net,eth,web3,personal" --http.corsdomain "*" --snapshot --allow-insecure-unlock  console 2> 1.log

这个命令的启动参数比较长,我们也需要针对参数进行介绍:

  • datadir 指定之前初始化的数据目录文件

  • networkid 配置成与配置文件config内的chainId相同值,代表加入哪个网络,私链就自己随意编号即可

  • http 代表开启远程调用服务,这对我们很重要

  • http.port 远程服务的端口,默认是8545

  • http.api 远程服务提供的远程调用函数集

  • http.corsdomain 指定可以接收请求来源的域名列表(浏览器访问,必须开启)

  • allow-insecure-unlock 新版本增加的选项,允许在Geth命令窗口解锁账户

  • mine 开启挖矿

  • miner.threads 设置挖矿的线程数量

  • console 进入管理台

  • 2> 1.log Unix系统下的重定向,将Geth产生的日志输出都重定向到1.log中,以免刷日志影响操作

Geth启动后操作说明

01:查看当前存在的账户

> eth.accounts
[]

默认不会有账户信息,需要创建后才能有
02:创建账户,注意传入的123是密码,密钥要牢记

> personal.newAccount("123")
"0x70aea0aea5bf9568a650598dfef44d6d3cca209a"
> eth.accounts
["0x70aea0aea5bf9568a650598dfef44d6d3cca209a"]

03:启动挖矿,start内的1是代表1个线程挖矿,null并非代表错误

> miner.start(1)
null

04:查看账户余额,都是挖矿所得

> eth.getBalance(eth.accounts[0])
95000000000000000000

05:再创建一个账户,密码456

> personal.newAccount("456")
"0xd56f07dc185c32f0367469b353c6cae711fa4a46"

06:给两个账户起别名acc0,acc1

> acc0=eth.accounts[0]
"0x70aea0aea5bf9568a650598dfef44d6d3cca209a"
> acc1=eth.accounts[1]
"0xd56f07dc185c32f0367469b353c6cae711fa4a46"

07:解锁账户1, 发起转账交易之前,都需要先解锁账户

> personal.unlockAccount(acc0)
Unlock account 0x70aea0aea5bf9568a650598dfef44d6d3cca209a
Password: 
true

08:转账给账户2,10个ether

> eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(10)})
"0x0ccfda6137ca5c9095f03498404223ae08910d811ab7b1a7497abe3834f9fae9"
# wei和eth代币的单位换算是:1eth=10**18wei

09:查看账户2余额

> eth.getBalance(acc1)
10000000000000000000

10:退出geth

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值