以太坊开发基础(1)以太坊开发环境的搭建
一、以太坊开发环境
首先,以太坊上开发区块链应用需要哪些工具?我们首先要在系统中搭建怎样的开发环境?
以太坊相较于比特币,有着更加完整的生态系统:
- geth:最常用的以太坊客户端,用go语言编写,是以太坊协议的具体实现。功能强大,能够实现账户管理、合约部署和执行、搭建私链、开启挖矿等。
- Mist / ethereum wallet:图形化的以太坊钱包客户端,仅用于实现以太坊账户管理相关的功能。
- solidity:以太坊智能合约的编程语言,具有与javascript类似的特性。
- browser-solidity / Remix:官方发布的基于浏览器的智能合约编译器,可以直接用来编写智能合约。
- Web3.js:提供了用于和geth通信的JavaScript API。内部使用JSON RPC协议与geth通信。web3中有eth对象 - web3.eth 具体来表示与以太坊区块链之间的交互。
- 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 ...