zoukankan      html  css  js  c++  java
  • 10分钟完成阿里云环境搭建以太坊私有链

    概述

    本文主要介绍在阿里云的服务器上搭建一条以太坊私有链
    为了避免因为环境因素造成的异常,如果是老的机器,所以这里建议重新格式化,选择公共镜像里面的系统版本

    系统版本是:公共镜像,Ubuntu,16.04 64位
    Geth的版本号是:1.7.3-stable

    如果你执行的过程和下面有差异,先确认上面两个版本是否一致

    一.阿里云服务器的准备

    机器配置:我的机器配置是,CPU 1核,网络1M, 内存2G
    镜像选择:公共镜像,Ubuntu,16.04 64位
    等待系统重启

    内存至少2G,如果不够,可以通过映射虚拟内存来扩充

    二.安装ethereum

    登录系统后,依次执行

    apt-get update有的时候会很慢,耐心等待...

    #更新软件包信息
    apt-get update
    
    #添加 ppa 到当前的库中并且自动导入公钥
    apt-get install software-properties-common
    add-apt-repository -y ppa:ethereum/ethereum
    add-apt-repository -y ppa:ethereum/ethereum-dev
    apt-get update
    
    #安装ethereum
    apt-get install ethereum
    
    #安装完成后,查看版本号
    geth version
    

    这里大家再次确认下geth version 返回的版本号是否是1.7.3-stable,如果不一致后面的操作可能有不一致的地方

    三.启动ethereum

    3.1 创始区块信息准备

    在工作目录(我的是/root/eth)下新建一个文件test_genesis.json,把下面内容复制进去

    {
      "nonce":"0x0000000000000042",
      "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
      "difficulty": "0x1",
      "coinbase":"0x0000000000000000000000000000000000000000",
      "timestamp": "0x00",
      "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
      "extraData": "0x20180112",
      "gasLimit":"0x0000ffff",
      "coinbase": "0x660a107ee034Cb54bb05a22B5ecDdF050C8A2c90",
      "alloc": {},
      "config": {
        "chainId": 20180113,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
      }
    }

    3.2 创始区块初始化

    执行下面命令,忽略WARN,如果打印Fatal,确认是否复制的时候有特殊字符插入

    geth init /root/eth/test_genesis.json

    3.3 启动测试链

    geth --identity "test etherum" --rpc --rpccorsdomain "*" --datadir "/root/eth/data" --port "30303" --rpcapi "db,eth,net,web3" --networkid 20181013 console --dev

    启动之后会打印启动信息,胡月,WARN,然后停留在命令行输入的地方

    注意,如果一直在刷屏,显示在连接节点并同步区块,ctrl+c中断,回去确认3.2是否执行成功,出现节点不停在同步区块,是因为测试创始区块创建失败,导致连接到ETH网络上了

    这里可以注意下最后一个WARN的信息

    WARN [01-13|16:10:50] Block sealing failed                     err="waiting for transactions"

    Geth启动后,自动开启挖矿,但是因为没有交易所以执行失败,这个时候执行miner.start()会一直返回null,这是正常的。

    3.4 Geth命令测试

    用户命令测试

    #返回钱包管理的账户地址列表  
    #返回示例:["0x3138e3722fb4280cb67f6e858108136bfa1c9160"]
    eth.accounts
    
    #创建账户地址,参数为账户锁定密码,在转账前需要先解锁账户
    #我们把这个命令运行两次,创建两个地址,加上默认的,一共有了三个账户地址
    personal.newAccount('111111')
    personal.newAccount('111111')
    
    #为账户设置别名,方便命令输入
    user1=eth.accounts[0]
    user2=eth.accounts[1]
    user3=eth.accounts[2]
    
    #查看地址user1余额,这个地址是测试链默认开通的一个地址,里面初始化有很多币
    #我们创建的另外两个地址余额未0
    eth.getBalance(user1)
    
    #查看区块高度,现在为0
    eth.blockNumber
    
    #转账测试,首先解锁账号user1
    #命令运行后要求输入解锁密码,直接回车,默认账号锁定密码为空,返回true成功
    personal.unlockAccount(user1)
    
    #从user1向user2转账3个以太币
    #命令运行后,提交交易立马回出发挖矿
    eth.sendTransaction({from:user1,to:user2,value:web3.toWei(3,"ether")})
    
    #查看区块高度,这时高度为1
    eth.blockNumber

    挖矿测试

    geth启动后,自动启动挖矿,这时运行miner.start(),返回为null
    无交易的时候不挖矿,当有交易时自动会触发挖矿流程

    #我们可以先停止挖矿
    miner.stop()
    
    #提交交易,这时候只提交,查看账户余额,但是未确认
    eth.sendTransaction({from:user1,to:user2,value:web3.toWei(3,"ether")})
    
    #启动挖矿,确认交易,再次查看账户余额
    miner.start()
    
    #那么挖矿奖励去哪儿了?查看矿工地址
    eth.coinbase
    
    #设置矿工地址
    miner.setEtherbase(eth.coinbase)
    
  • 相关阅读:
    ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
    iOS UI 12 block传值
    iOS UI 11 单例
    iOS UI 08 uitableview 自定义cell
    iOS UI 07 uitableviewi3
    iOS UI 07 uitableviewi2
    iOS UI 07 uitableview
    iOS UI 05 传值
    iOS UI 04 轨道和动画
    iOS UI 03 事件和手势
  • 原文地址:https://www.cnblogs.com/twodog/p/12137702.html
Copyright © 2011-2022 走看看