zoukankan      html  css  js  c++  java
  • 转:区块链开发(一)搭建基于以太坊go-ethereum的私有链环境

    区块链开发(一)搭建基于以太坊go-ethereum的私有链环境

    wo541075754 · 2016-11-07 13:00:03 · 3730 次点击 · 预计阅读时间 3 分钟 · 约1小时前 开始浏览    
    这是一个创建于 2016-11-07 13:00:03 的文章,其中的信息可能已经有所发展或是发生改变。

    通过各方资料了解学习之后,决定自己开始搭建基于以太坊go-ethereum的私有链环境。由于本人的电脑系统为win8,为避免window环境出现过多莫名其妙的问题,特意通过vm搭建了一台ubuntu16.04版本的虚拟系统。以下内容均基于ubuntu16.04系统。

    go-ethereum客户端

    下载地址&参考手册

    首先,可以查看一下go-ethereum项目在git上的地址: 
    https://github.com/ethereum/Go-ethereum 
    、 
    可以在点击项目上的wiki标签,也可以通过一下地址访问wiki: 
    https://github.com/ethereum/Go-ethereum/wiki/Building-Ethereum

    在wiki页面选择ubuntu系统的安装说明,也可以直接访问下面链接: 
    https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

    ubuntu下安装命令

    打开命令行窗口,或通过快捷键CTL+ALT+T,依次输入以下命令,即可安装成功:

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

    PS:如果安装过程中需要依赖其他组件,则先安装其他组件。另外,在ubuntu16.04版本,sudo apt-get install命令可精简为sudo apt install。

    安装测试

    安装完成之后在命令行输入:

    geth --help

    如果现实出命令行各种参数提示信息,则说明安装成功。

    创世块

    在以上安装成功之后,直接启动,即可连接公有链。现在通过配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。

    创建一个eth的根目录,在根目录下新建创世块json文件piccgenesis.json。内容如下:

    {
     "nonce":"0x0000000000000042",
     "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
     "difficulty": "0x4000",
     "alloc": {},
     "coinbase":"0x0000000000000000000000000000000000000000",
     "timestamp": "0x00",
     "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
     "extraData": "SecBroBlock",
     "gasLimit":"0x0000ffff"
    }
    

    参数解释:

    参数名称参数描述
    mixhash 与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。
    nonce nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。
    difficulty 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度
    alloc 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。
    coinbase 矿工的账号,随便填
    timestamp 设置创世块的时间戳
    parentHash 上一个区块的hash值,因为是创世块,所以这个值是0
    extraData 附加信息,随便填,可以填你的个性信息
    gasLimit 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

    启动私有链节点

    启动私有节点所需参数

    参数名称参数描述
    identity 区块链的标示,随便填写,用于标示目前网络的名字
    init 指定创世块文件的位置,并创建初始块
    datadir 设置当前区块链网络数据存放的位置
    port 网络监听端口
    rpc 启动rpc通信,可以进行智能合约的部署和调试
    rpcapi 设置允许连接的rpc的客户端,一般为db,eth,net,web3
    networkid 设置当前区块链的网络ID,用于区分不同的网络,是一个数字
    console 启动命令行模式,可以在Geth中执行命令

    启动

    本人启动eth所在目录为:

    /home/zhuzs/eth

    此目录下放置刚才配置好的创世块json文件:piccgenesis.json

    因此直接执行如下命令:

    geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "/home/zhuzs/eth/chain" --port "30303" --rpcapi "db,eth,net,web3" -- networkid 95518 console --dev 

    PS:根据自己的环境进行对应的替换。注意,最后添加了–dev,当此服务启动成功之后,在后面会用到。

    看到一下输出说明启动成功,并且是使用的私有链: 
    这里写图片描述

    随后就是相关的命令操作,在下一篇博客中进一步说明。

     
  • 相关阅读:
    对外接口的安全性
    oracle 12c报错【ORA-28001:口令已经失效】解决办法
    linux环境下测试是否能访问外网
    Git 提交界面中文乱码解决
    SMPP协议
    什么是502 Bad Gateway错误以及如何解决(轻松修复指南)
    QPS和并发数,究竟是何种关系?
    使用 Nginx 实现灰度发布
    直播视频码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念
    sudo 使普通用户可以临时以 root 用户的身份和权限执行系统命令(centos 7.3)
  • 原文地址:https://www.cnblogs.com/liangqihui/p/8124528.html
Copyright © 2011-2022 走看看