zoukankan      html  css  js  c++  java
  • Geth安装和使用

     

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011680118/article/details/82378509

    一、简介

    Geth是Go Ethereum开源项目的简称,它是使用Go语言编写且实现了Ethereum协议的客户端软件,也是目前用户最多,使用最广泛的客户端。通过Geth客户端与以太坊网络进行连接和交互可以实现账户管理、合约部署、挖矿等众多有趣且实用的功能。

    ganache也是客户端,两个都可以用来协助开发DAPP

    下载地址:https://geth.ethereum.org/downloads/   下载后安装即可

    二、使用

    1. 在某个磁盘创建一个数据存储目录如D: estGeth,新建创世区块描述文件genesis.json,内容如下:

    {

      "difficulty" : "0x20000",

      "extraData"  : "",

      "gasLimit"   : "0x8000000",

      "alloc": {},

      "config": {

            "chainId": 15,

            "homesteadBlock": 0,

            "eip155Block": 0,

            "eip158Block": 0

        }

    }

    genesis.json是创世区块配置文件,通过此配置让我们很容易挖矿以方便测试,具体每个字段的含义可暂时忽略!

    2. 在命令行窗口进入到D: estGeth目录下,执行创世区块的初始化,命令如下:

    geth --datadir data init genesis.json

    此时在testGeth目录下会生成data目录,data目录又包含geth和keystore目录,geth目录存储区块数据,keystore目录则保存账户信息。命令执行结果如下:

    目录如下:password中存储的是两个测试账户的密码和private_blockchain_start.sh用于启动geth客户端,可以暂时不用管

    3.  启动节点连接私有测试网络,命令行下输入:

    geth --datadir data --networkid 123 --nodiscover console

    --networkid 123参数表示区块链网络ID标识,--nodiscover参数表示节点私有,console参数表示进入geth控制台

    连接测试网进入控制台,此时我们已经进入geth测试网的交互式控制台,窗口也显示「Welcome to the Geth JavaScript console」成功提示!

    4. Geth使用

    在以太坊网络中,账户是其重要的组成部分,下面我们以查询链上账户列表开始常用的指令功能。

    • 查询账户列表      输入指令:eth.accounts     输出结果:[]

    含义:意思是无账户地址,因为我们什么也没做,所以当然是不会凭空出现账户了。

    • 创建新账户         输入指令:personal.newAccount("123")    输出结果:

    含义:表明账户新建成功,返回账户地址,123为账户密码。此时我们再次查询账户列表会发现已有刚创建的地址了。

    • 查询账户余额            输入指令:eth.getBalance(eth.accounts[0])    输出结果:0

    含义:表明这个账户的余额是0。

    • 启动或停止挖矿        输入指令:miner.start();admin.sleepBlocks(1);miner.stop()   

    输入指令: eth.getBalance(eth.accounts[0])

    输出结果:5000000000000000000

    含义:这三条指令意思是启动挖矿程序,当挖到1个区块时停止挖矿,挖矿所得默认进入第一个账户里。耐心等待成功挖出1个块,此时我们的节点就是矿工节点!再次查询账户余额,输出5的18方wei。

    • 创建一个新账户,这样就有两个账户,我们把第一个账户的5个ETH,转2个ETH到新账户

    前提条件:解锁账户一

    输入指令: eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(2,"ether")})

    含义:在发起交易前先解锁第一个账户,使用eth.sendTransaction指令发起交易,结果返回交易哈希存根,此时我们这笔交易并没有生效,可以使用txpool.status指令查看交易池的情况pedding为1表明这笔交易还款打包进区块。因为打包区块是由矿工做的工作,所以我们启动矿工。耐心等待一会再次查看第一个账户余额显示8000000000000000000,而第二个账户显示2000000000000000000,说明我们的转账交易成功啦!为什么第一个账户是8个ETH呢?这是因为矿工节点又挖出5个ETH了,加上之前的3个刚好正确!

    • 查看区块信息       输入指令:eth.getBlock(2)       输出结果:第二个区块信息
    • 查看交易信息

    输入指令:eth.getTransaction("0x9216e836a292a90d85684015c01144600a80024424ba9585199aaea05a0a3ea4")

    输出结果:该笔交易详情

    5. 脚本启动geth客户端

    • 我们使用以下命令启动 geth:geth --datadir data --rpc    打开另一个命令行界面,启动Mist或以太坊钱包,能看到之前创建的两个账户用 “--rpc” 参数让 geth 接受 RPC 连接,这是很有必要的,这样 truffle 才可以连接到geth。

    进行两次挖矿后,账户1余额变成10以太币

    • 可以编写脚本,存储成文件private_blockchain_start.sh,内容如下,以后直接执行.sh即可开启geth console

    geth --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --unlock '0,1' --password password --nodiscover --maxpeers '5' --networkid '123' --datadir 'data' console

    password中存储的是两个测试账户的密码,内容如下:

    在命令行中运行脚本,会自动开启git bash,启动geth客户端,可以输入eth.accounts测试查看两个以太坊账户

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/11207021.html
Copyright © 2011-2022 走看看