美文网首页
ETH 001 私有链的搭建

ETH 001 私有链的搭建

作者: 三文鱼的一生 | 来源:发表于2018-11-19 20:21 被阅读0次

    最近想给同事做一次以太坊智能合约编写的分享,PPT写着写着越来越多。想想还算是把它弄成文章。

    1.1 ETH介绍

         ETH 是我们的V神发起的一个开源的去中心化的数字货币项目。ETH在比特币的基础上提出了“智能合约”(Smart Contract)的概念。ETH更像是一个底层的操作系统。就像IOS 和安卓一样,提供丰富的API接口。 学习ETH 的相关的地址如下:

        白皮书:https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-White-Paper
        官方网站:https://www.ethereum.org
        区块查询:https://etherscan.io/   https://etherchain.org/
    

    1.2 ETC 介绍

        老有朋友问ETC 和ETH是什么关系。其实他们就是亲兄弟。ETH 是ETC出现了一次BUG,导致有人损失了资产以后分裂出来的项目。但是有一些认为数字货币就是去中心化,是民主的,BUG的产生本身也是系统规则本身。 于是他们坚持在了ETC社区。

    2.2 私有链搭建

    • 代码安装方式
    • 创世块配置
    • 编译代码

    2.2.1 代码安装方式

    初学者我们推荐使用 Installing from PPA 安装

    本人的安装目录 : ~/Library/Ethereum/geth

    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
    

    2.2.2 机器环境

    localhost:~ lei$ sw_vers
    ProductName:    Mac OS X
    ProductVersion: 10.13.2
    BuildVersion:   17C88
    

    2.2.3 GO 环境安装

    这里先不介绍GO的环境配置,请自行查询。

    版本需求为: version 1.7+ 本人使用的GO版本

    localhost:~ lei$ go version
    go version go1.9.3 darwin/amd64
    

    2.3 私有链数据准备

    2.3.1 初始化文件 genesis.json

    {
     “config”: {“
        chainId”: 88888,
        “homesteadBlock”: 0,
        “eip155Block”: 0,
        “eip158Block”: 0
      },
      “coinbase”: “0x0000000000000000000000000000000000000000”,
      “difficulty”: “0x1”,
      “extraData”: “0x00”,
      “gasLimit”: “0x47e7c5”,
      “nonce”: “0x0000000000000042”,
      “mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
      “parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
      “timestamp”: “0x00”,
      “alloc”: {
       “430e986e0cca10a174baad96871ec9cb308c6d05”: {
          “balance”: “111111”
        }
      }
    }
    
    

    2.3.2参数说明

    参数 解释说明
    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
    Data 附加信息,随便填,可以填你的个性信息
    gasLimit 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

    3启动步骤

    初始化数据

    geth --datadir "./" init genesis.json
    运行以后会出现两个目录
    geth中保存的是区块链的相关数据
    keystore中保存的是该链条中的用户信息
    
    image.png

    启动控制台

     geth --datadir "./" --nodiscover console 2>>geth.log
    

    在这个环境里也内置了一些用来操作以太坊的Javascript对象,可以直接使用这些对象。这些对象主要包括:

    1. eth:包含一些跟操作区块链相关的方法
    2. net:包含以下查看p2p网络状态的方法
    3. admin:包含一些与管理节点相关的方法
    4. miner:包含启动&停止挖矿的一些方法
    5. personal:主要包含一些管理账户的方法
    6. txpool:包含一些查看交易内存池的方法
    7. web3:包含了以上对象,还包含一些单位换算的方法

    相关文章

      网友评论

          本文标题:ETH 001 私有链的搭建

          本文链接:https://www.haomeiwen.com/subject/msoafqtx.html