如何搭建以太坊私链——小白入门

    “区块链”这个词近几个月的社会出现频率越来越高,虽然很多人是冲着币圈去的,但是还是有很多技术宅是真正在研究区块链技术的。

    今天老林就来给大家唠唠怎么搭建以太坊的私有链,小白入门级别的,大神请略过。

 

说明

一、为什么用到私有链?

在以太坊的共有链上部署智能合约、发起交易需要花费以太币。而通过修改配置,可以在本机搭建一套以太坊私有链,因为与公有链没关系,既不用同步公有链庞大的数据,也不用花钱购买以太币,很好地满足了智能合约开发和测试的要求,开发好的智能合约也可以很容易地切换接口部署到以太坊公有链上。

二、需要用到哪些工具?

  1. 以太坊客户端
    以太坊客户端用于接入以太坊网络,进行账户管理、交易、挖矿、智能合约相关的操作。目前有多种语言实现的客户端,常用的有 Go 语言实现的 go-ethereum 客户端 Geth,支持接入以太坊网络并成为一个完整节点,也可作为一个 HTTP-RPC 服务器对外提供 JSON-RPC 接口。
    其他的客户端有:
    • Parity:Rust 语言实现;
    • cpp-ethereum:C++ 语言实现;
    • ethereumjs-lib:JavaScript 语言实现;
    • Ethereum(J):Java 语言实现;
    • ethereumH:Haskell 语言实现;
    • pyethapp: Python 语言实现;
    • ruby-ethereum:Ruby 语言实现;
  2. 智能合约编译器
    以太坊支持两种智能合约的编程语言:Solidity 和 Serpent。Serpent 语言面临一些安全问题,现在已经不推荐使用了。Solidity 语法类似 JavaScript,它编译器 solc 可以把智能合约源码编译成以太坊虚拟机 EVM 可以执行的二进制码。
    现在以太坊提供更方便的在线 IDE —— Remix https://remix.ethereum.org 使用 Remix,免去了安装 solc 和编译过程,它可以直接提供部署合约所需的二进制码和 ABI。
  3. 以太坊钱包
    以太坊提供了图形界面的钱包 Ethereum Wallet 和 Mist Dapp 浏览器。钱包的功能是 Mist 的一个子集,可用于管理账户和交易;Mist 在钱包基础上,还能操作智能合约。为了演示合约部署过程,本文使用了 Geth console 操作,没有用到 Mist,当然,使用 Mist 会更简单。

安装环境

这里以 Ubuntu 16.04 为例进行介绍。

一、安装以太坊客户端

两种方式可选:PPA 直接安装、源码编译安装。

  1. PPA 直接安装
    安装必要的工具包:

    1
    
    apt install software-properties-common
    

    添加以太坊源:

    1
    2
    
    add-apt-repository -y ppa:ethereum/ethereum
    apt update
    

    安装 go-ethereum:

    1
    
    apt install ethereum
    

    安装完成后,可以使用 geth version 命令查看是否安装成功。

  2. 源码安装
    因为 go-ethereum 使用 Go 语言编写,编译源码前需要配置好 Go 环境。

    配置 Go 语言环境
    参照 https://golang.org/doc/install
    简单地,以安装 go 1.9 为例:

    1
    2
    
    wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
    tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
    

    编辑 /etc/profile 或 $HOME/.profile,在文件最后添加环境变量:

    1
    
    export PATH=$PATH:/usr/local/go/bin
    

    编辑 $HOME/profile 或 $HOME/.bashrc,添加 go 工作目录环境变量:

    1
    
    export GOPATH=$HOME/gopath
    

    下载和编译 Geth
    安装 C 编译器:

    1
    
    apt install -y build-essential
    

    下载最新源码:

    1
    
    git clone https://github.com/ethereum/go-ethereum
    

    编译安装:

    1
    2
    
    cd go-ethereum
    make geth
    

    安装完成后,可以使用 geth version 命令查看是否安装成功。记得把生成的 geth 加入到系统的环境变量中。

我在这里用的是第一种方式,最后使用geth version 得到的结果是:

root@daniel-Aspire-E5-572G:/home/daniel# geth version
Geth
Version: 1.8.2-stable
Git Commit: b8b9f7f4476a30a0aaf6077daade6ae77f969960
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9.4
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.9

 

二、安装 Solidity 编译器

Solidity 编译器也有多种方法安装,参照 http://solidity.readthedocs.io/en/latest/installing-solidity.html 这里介绍最简单快捷的安装方式:PPA 直接安装。

  1. PPA 直接安装

    1
    2
    3
    
    add-apt-repository ppa:ethereum/ethereum
    apt update
    apt install solc
    
  2. 官方推荐使用基于浏览器的 IDE 环境:Remix https://remix.ethereum.org

私有链搭建

一、配置初始状态

要运行以太坊私有链,需要定义自己的创世区块,创世区块信息写在一个 JSON 格式的配置文件中。首先将下面的内容保存到一个 JSON 文件中,例如 genesis.json

 
{
  "config": {
    "chainID": 1909,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000001",
  "difficulty": "0x400",
  "extraData": "0x888",
  "gasLimit": "0xffffffff",
  "nonce": "0x1909201819092018",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

 

 

 

 

 

 

  • chainID:指定了独立的区块链网络 ID。网络 ID 在连接到其他节点的时候会用到,以太坊公网的网络 ID 是 1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络 ID。
  • 9
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值