从零开始以太坊区块链开发指南一

万事开头来,无论是开发什么。首先就是搭建开发环境,今天尝试把自己搭建ethereum区块链开发环境的经验写出来,希望能对你有帮助。

说明


以太坊是一个开源的,能够部署和运行智能合约的提供去中心化的虚拟机,你可以把它理解为运行各种去中心化app的操作系统,最著名的应用就是比特币了。以太坊网络是由一个个节点组成的。然后,我们把自己写的智能合约部署到以太坊网络上去,以太坊的应用就是一个部署,操作,智能合约的程序。由于以太坊的公链对于我们开发程序来说太慢,所以首先需要先搭建一个以太坊的私有链。这过程中主要需要geth。

1.geth

首先需要安装geth,我们使用geth来创建私有链。
Mac平台


1.1 使用 Homebrew安装

brew tap ethereum/ethereum
brew install ethereum

1.2 从源码安装

git clone https://github.com/ethereum/go-ethereum
brew install go
cd go-ethereum
make geth

1.3 从网站下载命令行工具

https://ethereum.github.io/go-ethereum/downloads/

Windows平台
从下面网站下载windows平台

https://ethereum.github.io/go-ethereum/downloads/

Ubuntu平台

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

安装好geth之后,使用命令行

geth version

如果输出类似

Geth
Version: 1.7.3-stable
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9
Operating System: darwin
GOPATH=
GOROOT=/usr/local/Cellar/go/1.9/libexec

表示安装成功

2.使用geth创建私有链

运行命令

mkdir enode1
mkdir enode2

分别创建两个文件夹,作为两个私有链节点的datadir
两个节点要能链接,必须是由同一个创始文件创建的链。

geth --datadir "enode1" init genesis.json

enode1是上文创建的文件之一, genesis.json是创世的配置文件
genesis.json如下

{
  "coinbase"   : "0x0000000000000000000000000000000000000001",
  "difficulty" : "0x400",
  "extraData"  : "",
  "gasLimit"   : "4712388",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00",
  "alloc": {},
  "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
}

创建完成之后
使用命令

geth --identity "newEth" --rpc --rpccorsdomain "*" --datadir "enode1" --port 30303 --rpcapi "personal,db,net,eth,web3" --networkid 999 --rpcport 8080 console

我们可以看到这些信息


从零开始以太坊区块链开发指南一_第1张图片
节点端口

来启动另外一个节点
使用命令启动另外一个节点

geth --datadir "enode2" init genesis.json
geth --identity "newEth" --rpc --rpccorsdomain "*" --datadir "enode2" --port 30304 --rpcapi "personal,db,net,eth,web3" --networkid 999 --rpcport 8081 console
从零开始以太坊区块链开发指南一_第2张图片
另外一个节点

注意,两个节点不同的地点在datadir,port,rpcport。因为我们是在同一个计算机上运行两个节点,所以datadir,port,rpcport必须不同,如果不是在同一个计算机上则无所谓。


运行admin.peers


节点信息

可以看到该节点并没有和任何节点链接

从零开始以太坊区块链开发指南一_第3张图片
添加另外一个节点

运行admin.addPeer('')添加另外一个节点,节点的地址 enode://6b944fdc0a3460977e67682428b29cec7b28a400a2a5c3ef6b56673eb9f4abc8fe7316018c2073e43569ec63e6542eb7dc8b23cc93f397bc41a1f077b8cec6e4@[::]:30304就是上图我们enode2的节点地址。
我们再运行admin.peers看看
从零开始以太坊区块链开发指南一_第4张图片
image.png

可以看到,两个节点已经运行在同一个链上。


好了,最重要的运行环境已经搭建完了,下一章我们试图部署一个智能合约。下一章地址

你可能感兴趣的:(从零开始以太坊区块链开发指南一)