zoukankan      html  css  js  c++  java
  • 以太坊 Geth 环境搭建(Ubuntu)

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

    时隔多日,我又想起来更新博客,履行第一篇是说的后续文章的更新。

    话不多说,首先需要准备一个Ubuntu系统,我用的是一台云服务器,ubuntu 16   64位的service版本

    我是用root用户

    开工

    apt-get install software-properties-common
    add-apt-repository -y ppa:ethereum/ethereum
    apt-get update
    apt-get install ethereum

    依次执行以上命令。要依次执行。

    全部执行完成后,输入如下命令,查看安装是否完成

    geth --help

    会出现如下结果:

    NAME:

       geth - the go-ethereum command line interface

       Copyright 2013-2017 The go-ethereum Authors

    USAGE:
       geth [options] command [command options] [arguments...]
       
    VERSION:
       1.8.3-stable-329ac18e
       
    COMMANDS:

       account           Manage accounts

    .....

    证明已经安装成功。

    创建一个目录,保存区块数据,并进入

    mkdir eth
    
    cd eth

    创建创世初始文件genesis.json如下

    vi genesis.json
    

    进入编辑界面后,输入创世配置如下:

    {
      "config": {
            "chainId": 1,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },
      "alloc"      : {},
      "coinbase"   : "0x0000000000000000000000000000000000000000",
      "difficulty" : "0x40000",
      "extraData"  : "",
      "gasLimit"   : "0xffffffff",
      "nonce"      : "0x0000000000000042",
      "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
      "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
      "timestamp"  : "0x00"

    }

    编辑完成后输入“:x”保存退出

    将创世配置写入

    geth --datadir chaindata --networkid 20180411 --rpc --rpccorsdomain "*" --nodiscover --port 8193 --rpcport 8546 init genesis.json

    见到如下输出,证明初始化成功

    输入如下命令,启动节点

    geth --datadir chaindata --networkid 20180411 --rpc --rpccorsdomain "*" --nodiscover --port 8193 --rpcport 8546 console

    迎面来的是一片控制台,如下

    输入命令

    personal.newAccount('123.abc')

    创建一个新用户。123.abc为密码。根据各位喜好随意填写即可。

    完成后会输出一个16进制的区块链地址。可以多创建几个。不要钱

    此时有两个选择,一个是在控制台输入miner.start(1),启动挖矿

    miner.start(1)
    

    括号内的数字1表示启动一个线程挖矿。

    第二个选择是,在控制台内输入命令exit,退出控制台

    exit
    

    重新启动节点,并开启挖矿

    geth --datadir chaindata --networkid 20180411 --rpc --rpccorsdomain "*" --nodiscover --port 8193 --rpcport 8546 --mine console
    比第一次的命令,多了一个--mine.

    如上图所示,节点开始初始化DAG,Generation DAG会初始化两次。完成之后,伟大的挖矿工作就开始了。

    此时可以暂停一下挖矿。

    miner.stop()

    停止挖矿后,我们可以在命令行里做一些有趣的事情。

    1.查看区块数据。

    eth.getBlockNumber(console.log)

    输出如下:

    或者

    eth.blockNumber

    输出

    证明,当前的区块高度是31.

    查看区块详情

    eth.getBlock(31)

    31是区块号,输出如下:

    difficulty 表示当前区块难度

    gasLimit 为当前区块的gas容载上限。

    gasUsed表示当前区块存储交易所消耗的gas值

    hash 当前区块的hash值

    miner 挖掘出当前区块的矿工

    nonce:当前区块pow的随机数

    number 区块号

    parentHash 前一区块的hash值

    timestamp 出块的时间戳

    等等吧,一些就不挨个解释了。以太坊的jsonrpc文档中的eth_getBlockByHash接口的返回值里有详细介绍大家自己看吧

    https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbyhash

    2.查看用户

    eth.accounts

    输出如下

    查看用户余额

     eth.getBalance(eth.accounts[0])

    或者

      eth.getBalance("0x17733a113992c9666cf5a9c76ad8b9c3d80d7f98")

    双引号内为要查询的区块链用户地址。

    查询两个账户的余额,结果如下

    3.发起交易

    首先解锁用户

    personal.unlockAccount(eth.accounts[0],'123.abc',60)

    然后发起交易

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

    返回交易hash

    把这个hash值保存一下

    然后启动挖矿

    miner.start(1)

    如图可证明,这笔交易记录在第33块上

    4.交易查询

     eth.getTransaction('0xe70648f383f4b226ee56c7cc6e07e419f2e760b5ed0d54692ebea5ab12a2f7b0')

    双引号中的字符串是刚才保存的hash值。

    结果如下:

    这是交易的详情。

    详细的返回值代表的意义,可以参考rpc的文档

    https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash

    同时,我们可以继续查看交易回执

    eth.getTransactionReceipt('0xe70648f383f4b226ee56c7cc6e07e419f2e760b5ed0d54692ebea5ab12a2f7b0')

    结果如下:

    结果同样可以参考jsonrpc文档

    https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt

    其还有好多有意思的命令,大家就慢慢探索吧,又不详尽或者错误的地方希望大家多包涵,多交流。

    原创内容,分享请注明出处,多谢各位。

  • 相关阅读:
    c# 设计模式(一) 工厂模式
    微信开发
    一款非常好用的 Windows 服务开发框架,开源项目Topshelf
    基础语法
    C++环境设置
    c++简介
    使用查询分析器和SQLCMD分别登录远程的SQL2005的1434端口
    ps-如何去水印
    html/css/js-横向滚动条的实现
    java中如何给控件设置颜色
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/11201135.html
Copyright © 2011-2022 走看看