A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

链接: 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,debug" --rpccorsdomain "*" console 2> log.txt


参数解析


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

查看,创建账户



  • // 查看当前该区块链中共有几个账号,以及每个账号的公钥地址。



  • > eth.accounts



  • []







  • //ubuntu为密码,账号是自动生成的



  • > personal.newAccount("ubuntu")



  • "0xb27cdf1f4b331eb2a1aa0f9a3a7076c65a915e41"



  • > eth.accounts



  • ["0xb27cdf1f4b331eb2a1aa0f9a3a7076c65a915e41"]


账户解析

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

账户解锁



  • > personal.unlockAccount(eth.accounts[0])



  • Unlock account 0x6bc56dbd2e99957c7906772a7cfdd923c155b270



  • Passphrase:



  • true


开启挖矿



  • > 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]







  • //windows10下跟踪日志



  • Get-Content log.txt -Wait


停止挖矿



  • > miner.stop()



  • null






1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马