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

简介: 从零开始创建专属自己的以太坊 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!
说明启动成功

目录
相关文章
|
2月前
|
前端开发 安全 JavaScript
dapp智能合约系统开发解决方案/需求指南/案例步骤/源码程序
定义需求:明确系统的需求和功能。确定你的DApp将提供哪些服务,并了解相关的业务流程和规则。考虑如何实现这些功能,以及你打算使用的智能合约平台(如以太坊、EOS等)。
|
6月前
|
区块链 数据安全/隐私保护 UED
DAPP三三复制合约系统开发指南与方案
而未来,Web 3.0是一个由用户和建设者拥有的互联网
|
JSON 资源调度 前端开发
手摸手用Truffle开发自己的第一个DApp
手摸手用Truffle开发自己的第一个DApp
112 0
手摸手用Truffle开发自己的第一个DApp
|
安全 Linux 区块链
教你吃透以太坊的测试网络
主网络中的以太币是有价值的,在主网络上直接进行钱包软件或者智能合约的开发将会是非常危险的,稍有不慎就会损失以太币,甚至影响整个主网络的运行。同时,因为主网络使用人数多,矿工更是不计其数,如果是在开发一个wakuang软件,用一台开发软件的笔记本电脑几乎不可能挖出一个区块,这就导致测试几乎不可行。 于是,出于测试和学习的目的,便会有一小部分节点,使用与主网络不同的创世区块,开启一条全新的区块链,并在上面wakuang和测试,这就是测试网络(Testnet)。.........
605 0
教你吃透以太坊的测试网络
|
JSON JavaScript 测试技术
以太坊智能合约入门(编写、编译、创建、部署、交互、测试、交易)
什么是以太坊智能合约? 以太坊智能合约是存放在以太坊区块链具有特定地址的代码(它的功能)和数据(它的状态)集合。智能合约账户之间可以相互传递消息以实现图灵完备运算。
6242 0
|
存储 算法 区块链
以太坊原理简介
本文介绍以太坊的一些基础概念,以及基本原理。主要内容包括:以太坊是什么、以太坊网络、账户类型、账户状态、交易、费用、gas、叔块、以太坊区块链结构、以太坊结构
3868 0
|
存储 程序员 区块链
以太坊DApp如何用IPFS存储并调用数据
正在构建的一个Dapp。Dapp包括一些用户数据,如电子邮件、姓名和个人图片等。我想将用户数据内容存储在IPFS中,通过一个JSON对象,并用IPFS hash处理过。
3966 0
|
JavaScript 算法 前端开发
以太坊教程:入门学习开发以太坊dapp
一、区块链 1. 分布式去中心化 比特币设计的初衷就是要避免依赖中心化的机构,没有发行机构,也不可能操纵发行数量。既然没有中心化的信用机构,在电子货币运行的过程中,也势必需要一种机制来认可运行在区块链上的行为(包括比特币的运营,亦或是运行在区块链上的其他业务),这种机制就是共识机制。
2631 0
|
存储 Web App开发 JavaScript
以太坊开发入门
目标读者: 专业的程序员; 想深入了解以太坊/区块链及其生态的读者; 如果你已经有一定的以太坊技术基础,只想研究一些落地项目,可以直接跳到后面的项目模块。
2203 0