以太坊 — Geth客户端命令详解

版权声明:本博客为博主原创博文,可以任意转载。转载请附上博客链接: http://blog.csdn.net/qiqishuang https://blog.csdn.net/qiqishuang/article/details/82496789

    Geth 全称是go-ethereum,是一个以太坊客户端,由go语言编写,是目前以太坊最常用的客户端。以太坊还有用C++、Ruby、Python、Java 等其他多种语言编写的客户端,不同类型的客户端是为了满足不同的需求场景。官方地址:https://github.com/ethereum/go-ethereum

创世块

   创建目录 ./chainwork/private用来存放以太坊节点的数据。

// 创建chainwork目录
mkdir ~/chainwork/private

创世块文件genesis.json    

创建配置文件 genesis.json 用于创建创世块和设置网络

// genesis.json
{
  "config": {
        "chainId": 4224,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
  "alloc": {
  "0x0000000000000000000000000000000000000001": {"balance": "111111111"},
  "0x0000000000000000000000000000000000000002": {"balance": "222222222"}
    }
}

创世块参数详解

  // nonce和mixhash是作为输入,让每个节点都可以通过计算来做
  // difficulty 就是制定了本链一开始的挖矿难度,在我们的私有测试节点中, 这个值设得很低,这样就比较容易挖到矿
  // alloc 可以预分配一些以太币给某些地址,这里我们不做预分配
  // coinbase 就是当成功挖出 genesis 区块后,接收奖金的地址
  // timestamp 本区块挖出来的时间戳,全网将依据前后 两个区块的时间戳之差来调整挖矿的难度
  // parentHash 指向前一个区块的哈希指针,创世纪区块中的 parentHash 接地
  // extraData 可用于存储任何信息
  // gasLimit 规定了每一个区块中能够消耗的最大的 gas 值,也就事实上限制了区块的大小
  // config 用来为这个私有网络确立一系列参数
  // chainId 是本私有链的 ID
  // homesteadBlock 指明 Homestead 版本的兼容的区块开始编号
  // EIP155 兼容的区块开始编号,EIP155 - "Simple Relay Attack Protection
  // EIP158 兼容的区块开始编号

Geth命令

启动Geth服务节点

// 以下操作创建了一个以太坊节点,这个节点并没有接入主网,而是一个私有网络。
// 目前在该网络中,只有一个节点,并且没有任何的账户。用户可以通过命令行来对以太坊网络进行交互。

cd ~/chainwork/private
geth init genesis.json --datadir ./data0
geth --datadir ./data0 --networkid 4224 --rpc --rpcport 8545 --port 30303 --rpcapi eth,web3,personal,net console 2> log.txt

参数解析


// –datadir 代表文件夹地址,
// –nodiscover 代表该链条不希望被其他节点发现,
// console >> geth.log 代表将控制台输出到文件geth.log中去
// 当然从命令行模式退出,也很简单,只要打入exit, 即可退出

查看,创建账户

// 查看当前该区块链中共有几个账号,以及每个账号的公钥地址。
> eth.accounts
[]

//ubuntu为密码,账号是自动生成的
> personal.newAccount("ubuntu")
"0xb27cdf1f4b331eb2a1aa0f9a3a7076c65a915e41"
> eth.accounts
["0xb27cdf1f4b331eb2a1aa0f9a3a7076c65a915e41"]

账户解析

在以太坊系统中,状态是由被称为“账户”(每个账户由一个20字节的地址)的对象和在两个账户之间转移价值和信息的状态转换构成的。以太坊的账户包含四个部分:
随机数,用于确定每笔交易只能被处理一次的计数器
      账户目前的以太币余额
      账户的合约代码,如果有的话
      账户的存储(默认为空)

开启挖矿

> miner.start();
null

查看挖矿情况

//获取挖矿状态,true表示正在挖矿,false反之
> eth.mining()
true

获取账户余额

> eth.getBalance(eth.accounts[0])
585000000000000000000
> eth.getBalance(eth.accounts[0])
590000000000000000000
> eth.getBalance(eth.accounts[0])
590000000000000000000

跟踪挖矿日志

ubuntu@ubuntu:~/chainwork/private$ tail -f 10000 log.txt 
tail: cannot open ‘10000’ for reading: No such file or directory
==> log.txt <==
INFO [09-08|04:19:45.389] 

猜你喜欢

转载自blog.csdn.net/qiqishuang/article/details/82496789