以太坊开发基础(1)以太坊开发环境的搭建

一、以太坊开发环境

首先,以太坊上开发区块链应用需要哪些工具?我们首先要在系统中搭建怎样的开发环境?

以太坊相较于比特币,有着更加完整的生态系统:

  1. geth:最常用的以太坊客户端,用go语言编写,是以太坊协议的具体实现。功能强大,能够实现账户管理、合约部署和执行、搭建私链、开启挖矿等。
  2. Mist / ethereum wallet:图形化的以太坊钱包客户端,仅用于实现以太坊账户管理相关的功能。
  3. solidity:以太坊智能合约的编程语言,具有与javascript类似的特性。
  4. browser-solidity / Remix:官方发布的基于浏览器的智能合约编译器,可以直接用来编写智能合约。
  5. Web3.js:提供了用于和geth通信的JavaScript API。内部使用JSON RPC协议与geth通信。web3中有eth对象 - web3.eth 具体来表示与以太坊区块链之间的交互。
  6. Truffle :Truffle是目前最流行的以太坊开发框架,采用JavaScript编写,支持智能合约的编译、部署和测试。Truffle深度集成了solidity语言,开发、测试、部署都可以一行命令直接执行,提供自动化项目构建机制,提供了合约抽象接口,对web3.js进行了进一步的封装,简化了开发流程。

注意:geth和Mist共享同一个文件夹,在linux系统中位于./ethereum文件夹中,所以两者启动后都可以将以太坊现有的区块同步到这个文件夹里。

二、安装

1、geth的安装

(1)下载安装包:

(2)在线安装:

Ubuntu用户可以选择在线安装的方式,在终端中依次执行以下命令即可:

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

(3)源码编译:

编译安装推荐使用Linux系统。

geth是用go语言写的,编译geth源码需要go语言和C语言编译器,因此需要先安装go语言!go语言版本推荐用go1.7及以上。

首先下载geth源码 go-ethereum,地址:https://github.com/ethereum/go-ethereum/releases

tar -xzf go-ethereum-1.8.13.tar.gz

用下面的命令编译:

cd go-ethereum-1.8.13
make geth

等待十几秒,编译就完成了,此时会在 go-ethereum-1.8.13/build/bin 中生成geth可执行文件。

输入 geth help 命令,会显示geth所有的命令和选项:

cd build/bin
./geth help

2、Mist / ethereum wallet的安装

最新版本的Mist / Ethereum wallet下载地址:https://github.com/ethereum/mist/releases/

Mist是一个是一个去中心化的分散的web3.0应用的浏览器,里面集成了wallet的功能;而ethereum wallet本质上是一个只有Wallet功能的浏览器,这两个安装其中一个即可。

3、browser-solidity / Remix的安装

    但是这平台只能撰写和编译Solidity代码,如果想真正运行代码的话,需要有一个以太坊的本地环境。

在线版:

    无需安装,只要打开这个网址( http://remix.ethereum.org/  ),既可编译简单的智能合约。

离线版:

    Github地址:https://github.com/ethereum/remix-ide

// installation
npm install remix-ide -g
remix-ide

// 或者克隆github仓库
git clone https://github.com/ethereum/remix-ide.git
cd remix-ide
npm install
npm run setupremix  # this will clone https://github.com/ethereum/remix for you and link it to remix-ide
npm start

运行npm start 可以在浏览器中打开http://127.0.0.1:8080

5、Truffle和ethereum-textrpc的安装

# 安装Truffle
npm install -g truffle
// 初始化一个智能合约项目
truffle init 或 truffle unbox webpack
// 编译合约
truffle compile
// 列出所有命令
truffle list

# 安装ethereum-testrpc
npm install -g ethereum-testrpc

// 安装后再输入testrpc看是否成功启动,testrpc默认是监听8545端口
jliu@jliu-PC:~/Desktop$ testrpc
EthereumJS TestRPC v6.0.3 (ganache-core: 2.0.2)

Available Accounts
==================
(0) 0x70a0e7a61a3ff8514709b375ddac06a96dcdcbbc
(1) 0x020fad463d6264a7a7207d42186713ad94c06766
(2) 0x01f532ac2089b94746b97cca614eb3530ba45de5
(3) 0x66c18b49d55b2b37cb1ae144d315a48930d835af
(4) 0x7cf733478a298018c4d671661e78f69fb3677f83
(5) 0x161995914d0ce6910dbffdbf74f91518395097a7
(6) 0xc7e3f5c82dc3ce5f48171e81ed84e2789f10e6ea
(7) 0xc2ef687bc88860573917c8f7c35272529bc861eb
(8) 0x7abc7b12394a256543f6a40549f265a703513115
(9) 0xebd973a027c95b40b1bbd61ccbe37f63ef8cb094

Private Keys
==================
(0) d297cdfc5160b199b75e2c95c42512404f5c74a708679e8915527a4d55ce6a29
(1) dc04fefc8335309a4fae68f67809d1dd64e6125b91aed469405d6df8cc83225c
(2) 737eca17d2e571a1b7518a242d14cda941897dd0f16ee76ae8bd764cc70691eb
(3) 752cb818b55567b39202c177e1cb872f332a948f31cc7542144b7051545e9209
(4) e1366a206972e860bd95c6a003dc42508c3c1140dde84462fb7f8bfb76b46203
(5) 57aad38ec6cef6c93744f65120be62e5905397acb285b152e997f9d613309802
(6) c15da862a30cb2386d4b2778c6400850ea843e09f3d4684472ab5548f28889ad
(7) e11b41554d403c856dd42129c16ea3d6d49b9c3257dee2d6ad3b7dc5f6a559ca
(8) a06484bab26b14e63c99cfe439e0e4e1179e76f258205206145551a941987c7f
(9) 63d1619dee654e90710fee6ebb629bfa2f2224d6f8b900c3684b1079ebe94410

HD Wallet
==================
Mnemonic:      firm shrimp maximum heart glad income defense regret pulp atom despair scout
Base HD Path:  m/44'/60'/0'/0/{account_index}

Listening on localhost:8545

6、web3.js安装

// 在项目中安装web3.js
npm init
npm install web3

 

 

 
 

一、创建以太坊初始区块文件 genesis.json { "config": { "chainId": 101, "homesteadBlock": 0, "eip155Block": 0 ...