从零开始创建专属自己的以太坊

简介: 从零开始创建专属自己的以太坊 1.安装golang 2.安装ethereum 3.实使化并启动ethereum

安装

  • 日期:2018-05-17
  • 作者:新溪

安装环境说明

cat /etc/issue

Debian GNU/Linux 9 \n \l

注: debian基本版本也可用,其他linux系统可微调后使用

Golang的安装:

1.打开go下载链接
https://golang.org/dl/
//以debian为例,安装当前最新版本1.10.2

wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz

修改文件

$HOME/.profile

or
/etc/profile

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

注:这儿默认的GOPATH目录为 $HOME/go
不懂golang的同学不用在意这个

在命令行执行

go version

看到

go version go1.10.2 linux/amd64

说明成功安装golang

ethereum的安装

打开ethereum的github地址
https://github.com/ethereum/go-ethereum
执行:

cd $HOME
git clone https://github.com/ethereum/go-ethereum.git
注: 没有git命令的,执行
apt-get install git-core

进入go-ethereum目录后,执行

cd go-ethereum
make geth
注:上面命令只安装以太坊的主要命令geth
如果想安装全部命令,使用
make all
我们这边只是入门,所以暂时只关注geth

上面命令后,如果上面一切顺利的话,就能得到文件

$HOME/go-ethereum/build/bin/geth

修改文件

$HOME/.profile

or
/etc/profile

export PATH=$PATH:/usr/local/go/bin:$HOME/go-ethereum/build/bin

创建并启动自己的ethereum

mkdir $HOME/eth

cd $HOME/eth
touch init.json
vi init.json

往init.json文件中增加如下内容

{
    "config": {   // 定义个人链的设置
          "chainId": 0,         // 你个人链的唯一标识
          "homesteadBlock": 0,  // 定义ethereum平台的version和protocol
          "eip155Block": 0,     // 用于支持non-backward-compatible协议的改变
          "eip158Block": 0      // 
      },
    "alloc"      : {},
    "coinbase"   : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x2000",    // 挖矿难度
    "extraData"  : "",
    "gasLimit"   : "0x2fefd8",  // 燃料限制,越大限制越少
    "nonce"      : "0x0000000000000042",
    "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp"  : "0x00"
  }

执行命令

// 初始化自己的ethereum

geth --datadir "$HOME/eth" init init.json

INFO [05-17|14:16:43] Maximum peer count                       ETH=25 LES=0 total=25
INFO [05-17|14:16:43] Allocated cache and file handles         database=/home/user/blockchain/geth/chaindata cache=16 h
andles=16
INFO [05-17|14:16:43] Writing custom genesis block 
INFO [05-17|14:16:43] Persisted trie from memory database      nodes=3 size=505.00B time=75.246µs gcnodes=0 gcsize=0.00
B gctime=0s livenodes=1 livesize=0.00B
INFO [05-17|14:16:43] Successfully wrote genesis state         database=chaindata                            hash=86c6b
a…345170
INFO [05-17|14:16:43] Allocated cache and file handles         database=/home/user/blockchain/geth/lightchaindata cache
=16 handles=16
INFO [05-17|14:16:43] Writing custom genesis block 
INFO [05-17|14:16:43] Persisted trie from memory database      nodes=3 size=505.00B time=36.625µs gcnodes=0 gcsize=0.00
B gctime=0s livenodes=1 livesize=0.00B
INFO [05-17|14:16:43] Successfully wrote genesis state         database=lightchaindata                            hash=
86c6ba…345170

// 启动ethereum

geth --datadir "$HOME/eth" console

INFO [05-17|14:16:59] Maximum peer count                       ETH=25 LES=0 total=25
INFO [05-17|14:16:59] Starting peer-to-peer node               instance=Geth/v1.8.8-unstable-d2fe83dc/linux-amd64/go1.1
0.2
INFO [05-17|14:16:59] Allocated cache and file handles         database=/home/user/blockchain/geth/chaindata cache=768 
handles=1024
WARN [05-17|14:16:59] Upgrading database to use lookup entries 
INFO [05-17|14:16:59] Initialised chain configuration          config="{ChainID: 0 Homestead: 0 DAO: <nil> DAOSupport: 
false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil> Engine: unknown}"
INFO [05-17|14:16:59] Disk storage enabled for ethash caches   dir=/home/user/blockchain/geth/ethash count=3
INFO [05-17|14:16:59] Disk storage enabled for ethash DAGs     dir=/home/user/.ethash                count=2
INFO [05-17|14:16:59] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [05-17|14:16:59] Loaded most recent local header          number=0 hash=86c6ba…345170 td=512
INFO [05-17|14:16:59] Loaded most recent local full block      number=0 hash=86c6ba…345170 td=512
INFO [05-17|14:16:59] Loaded most recent local fast block      number=0 hash=86c6ba…345170 td=512
INFO [05-17|14:16:59] Regenerated local transaction journal    transactions=0 accounts=0
INFO [05-17|14:16:59] Starting P2P networking 
INFO [05-17|14:16:59] Database deduplication successful        deduped=0
INFO [05-17|14:17:01] UDP listener up                          self=enode://89737c7e003fdd34383370931e2d035488fe561889a
990022f045fe079bbdf390f6788737613de98602798614bff218b4919cbf21dbde4f6674a2757f5ba5dbc@[::]:30303
INFO [05-17|14:17:01] IPC endpoint opened                      url=/home/user/blockchain/geth.ipc
INFO [05-17|14:17:01] RLPx listener up                         self=enode://89737c7e003fdd34383370931e2d035488fe561889a
990022f045fe079bbdf390f6788737613de98602798614bff218b4919cbf21dbde4f6674a2757f5ba5dbc@[::]:30303
Welcome to the Geth JavaScript console!

看到最后的
Welcome to the Geth JavaScript console!
说明启动成功

目录
相关文章
|
安全 区块链 数据安全/隐私保护
基于以太坊的智能合约Fomo3D游戏开发规则部署
基于以太坊的智能合约Fomo3D游戏开发规则部署
|
区块链 C# Windows
以太坊开发入门,完整入门篇
一个适合区块链新手的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1 一个用区块链、星际文件系统(IPFS)、Node.
3576 0
|
安全 Linux 区块链
教你吃透以太坊的测试网络
主网络中的以太币是有价值的,在主网络上直接进行钱包软件或者智能合约的开发将会是非常危险的,稍有不慎就会损失以太币,甚至影响整个主网络的运行。同时,因为主网络使用人数多,矿工更是不计其数,如果是在开发一个wakuang软件,用一台开发软件的笔记本电脑几乎不可能挖出一个区块,这就导致测试几乎不可行。 于是,出于测试和学习的目的,便会有一小部分节点,使用与主网络不同的创世区块,开启一条全新的区块链,并在上面wakuang和测试,这就是测试网络(Testnet)。.........
758 0
教你吃透以太坊的测试网络
|
Rust JavaScript 前端开发
区块链开发(八)以太坊不同语言客户端地址
区块链开发(八)以太坊不同语言客户端地址
150 0
|
区块链 算法 开发者
带你读《深入理解以太坊》之一:以太坊概述
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
|
JavaScript 测试技术 区块链
以太坊开发示例
关于智能合约和Solidity本文将不再介绍,可参考别的资料了解,本文重点介绍基于以太坊的Dapps开发测试及部署过程中涉及现流行的框架使用。一、重要的工具介绍1.Truffle:是以太坊的开发环境、测试框架和资产通道。
5277 0
|
存储 算法 区块链
以太坊原理简介
本文介绍以太坊的一些基础概念,以及基本原理。主要内容包括:以太坊是什么、以太坊网络、账户类型、账户状态、交易、费用、gas、叔块、以太坊区块链结构、以太坊结构
4019 0
|
存储 程序员 区块链
以太坊DApp如何用IPFS存储并调用数据
正在构建的一个Dapp。Dapp包括一些用户数据,如电子邮件、姓名和个人图片等。我想将用户数据内容存储在IPFS中,通过一个JSON对象,并用IPFS hash处理过。
4046 0