以太坊开发教程
Posted 计划是动力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊开发教程相关的知识,希望对你有一定的参考价值。
以太坊开发教程
- 一、以太坊环境搭建
一、以太坊环境搭建
线上测试不需要额外代码就可以自动部署,学习的时候可以节约大量时间。但是最后我们的项目还是要落地到我们自己的节点中,所以后面会有本地配置流程
我这里使用的是以太坊提供的Remix
1.配置编译参数
左侧菜单第二项为编译菜单
可以设置编译器版本,bilibili教程中所教的代码语法为0.4.x版本的语法,所以这里我们选择0.4.x版本的
编译器
2.部署并调试
左侧菜单第三项为调试菜单
可以部署并调试智能合约,环境我们这里选择javascript的虚拟机。
3.本地配置流程
安装linux虚拟机
后面的测试用环境对windows的支持并不友好,经常会出现命名冲突,windows10新版自带的linux子
系统不能完全满足开发需要,偶尔有兼容性上的一些问题。这里建议windows平台的朋友装一个linux
虚拟机,mac平台的朋友可以跳过这一步。
这里我使用的是VMware workstation 16虚拟机平台和Ubuntu20的系统镜像。
3.1 配置虚拟机
这里选择之前下载的ubuntu20系统镜像
这里注意选择自定义硬件
将网络连接模式改为桥接
根据自己设备的情况分配处理器、内存和硬盘,建议内存大于等于4g,处理器大于等于本机处理
器线程数的1/2,硬盘大于等于30g。(因为调试时需要本机挖矿来生成区块链,所以处理器算力,内存大小很重要)
一直下一步,直到虚拟机部署并自动安装系统。
安装系统过程中最好断开网络连接,这样安装会快一些
3.2 配置镜像源(可选)
这一步的目的是加快ubuntu软件安装和更新的速度,不需要的同学可以跳过。
教程
清华镜像源官网
3.3 虚拟机配置
设置语言为中文(可选),设置方法:
打开应用抽屉
打开设置
选择地区和语言
手动安装语言
安装/删除语言
勾选简体中文,点击apply
等安装完成后,点击
修改这两项为中文
4 安装Node.js
在桌面上右键打开终端,输入命令
sudo apt install nodejs -y
sudo apt install npm -y
换源
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
等待安装结束(终端下面会显示进度条)
5 安装truffle
安装truffle(根据网络情况可能需要很久)
sudo cnpm install -g truffle
在本地项目目录下打开新终端,输入
truffle version
出现如下输出证明truffle安装成功
建立项目模版
在本地项目目录下打开终端,输入
truffle unbox vue-box
正常情况等待一段时间会输出如下内容,表示模版建立成功
默认模版是针对mac系统的,linux系统可能会报一些warnning但不影响正常使用
如果遇到如下报错,需要梯子,详情见搞一个梯子。
6 安装vue
安装vue
sudo cnpm install -g vue
安装vue脚手架
sudo cnpm install -g @vue/cli
测试安装是否成功
vue -V
启动脚手架可视化界面
vue ui
导入vue项目所在目录,即项目目录下的vapp
7 使用一个IDE
这里我按照习惯用的是VScode,bilibili教程中有其他支持solidity语法提示的IDE可供选择。以下是VScode的配置方法
下载并安装VScode
如果是在ubuntu的firefox浏览器中下载,这一步记得选择保存
等待下载完成
找到安装包所在目录,双击安装包,在弹出的SoftwareStore界面中点击安装
安装后在应用抽屉中就可以找到VScode
7.1 安装VScode插件
- 中文语言包
- JavaScript语法提示插件
- solidity语法提示插件
- vetur语法提示插件
- 以及其他开发过程中需要的插件
这些是我安装的插件以及插件的作者
8 编写代码
在VScode里打开项目所在文件夹就可以开始编写自己的代码啦,下面开始我们第一次本地运行私链和智能合约吧
第一次本地测试项目(前端)
配了半天环境了,终于是时候试试让我们的代码跑起来了。让我们看看现在我们的环境里都有什么,都能做到什么。
Node.js、truffle、vue、IDE,看起来前端需要的东西我们都有了。记得前面用truffle建的vue-box模
版么?我们试着跑起来吧。
启动测试网络
- 用VScode打开项目
- 点击终端-新终端,启动一个终端
- 启动开发用区块链
truffle develop
编译智能合约
compile
部署智能合约
migrate
9 命令行方式进行交互
刚才我们实际上进入了truffle的命令行界面
实际上这个命令行是一个交互式的JavaScript窗口,这里输入的指令与JavaScript语法是完全一致
的。
比如输入
let token
token = TutorialToken.deployed().then(instance => token = instance);
我们实际上使用了JavaScript里面的匿名函数获取了部署的TutorialToken智能合约的一个引用
token,接下来我们可以利用这个引用来调用智能合约了。
还记得之前启动网络之后输出的那些账号么?他们现在被保存在accounts这个对象中。
token.balanceOf(accounts[0]);
我们得到了0号账户中所拥有的货币数2ee0,化成十进制恰好是我们合约中生成的初始货币量12000
接下来我们转账到1号账户
token.transfer(accounts[1], 10) token.balanceOf(accounts[1])
我们可以看到余额是a,待办转账10个货币成功
其他truffle命令行中可以使用的对象和方法(实际上是Web3.js提供的)见以太坊中文文档和官方文档
10 用网页来进行交互
命令行的界面我们自己用用可以,给用户们的界面可必须是图形化的。我们之前的vue项目这事就
派上用场了。
点击VScode当前终端旁边的+号,打开一个新终端
输入
cd vapp
vue ui
我们进入了vue-cli的图形化界面
进入任务菜单,选择serve
点击运行,等待编译部署完成后点击启动app
我们就可以看到图形化的网页啦,至于怎么把这个网页变成我们想要的样子就要靠前端的朋友了。
虽然我们现在已经成功的在本地跑起了智能合约项目,但是我们其实跳过了一个步骤,那就是私链。我们现在的私链是利用truffle集成的Ganache一键部署的,这个私链是什么,长什么样,我们怎么操控还一无所知。所以接下来我们要弄一个自己的私链。
10 以太坊私链搭建
10.1 安装Go编译器、curl、file、git
sudo apt install build-essential curl file git -y
10.2 安装brew包管理器
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
配置环境变量,在同一个终端输入
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
test -r ~/.bash_profile && echo "eval \\$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile echo "eval \\$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
重启
测试并安装依赖
网络状态不好的话可能要等待很久,不要急
brew install hello
安装go编译器,总计475M,注意网络
brew install go
10.3 安装geth
这一步可能会遇到许多不确定的问题,下面提供3种方法,可以挨个试一下,我是方法二安装成功的
方法一:编译git源码
从ftp或官网下载geth项目压缩包
解压到linux的任意目录中
在解压出的目录中打开终端输入
make geth
具体请见教程
方法二: 利用brew包管理器安装
brew tap ethereum/ethereum
brew install ethereum
brew install geth
方法三:利用PPAs为apt包管理器添加源
注意:仅Ubuntu系统和debian系统包含apt包管理器,其他系统请优先尝试其他方法
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt update
sudo apt install ethereum
10.4 安装solidity
这一步也可能会遇到许多不确定的问题,下面提供三种方法,我用的是方法三
方法一:利用brew包管理器
mac可用,linux目前有些问题
brew install solidity
方法二: 利用snap包管理器
linux可用
sudo snap install solc
方法三:利用PPAs为apt包管理器添加源
注意:仅Ubuntu系统和debian系统包含apt包管理器,其他系统请优先尝试其他方法
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev
sudo apt update
sudo apt install solc
10.5 建立私链
定义私链初始化配置文件
- 新建一个目录privateChain用于存放私链相关数据
- 新建一个名为genesis.json的文件(可以用VScode,也可以直接用vi)
- 将如下内容写入genesis文件
"config":
"chainId": 111,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0 ,
"alloc": ,
"coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x000000000000023d",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
difficulty是指挖矿难度,配置低的机器建议调低难度,我这里使用的是默认值20000
gaslimit指单次操作消耗gas的限制
alloc中的内容为预分配的账户地址和余额
chainId指当前链的ID
nonce指区块链目标nonce值
coinbase指矿工基址
10.6 初始化区块链网络
在privateChain中打开终端,输入:
geth --datadir dataD init ./genesis.json
建立第一个节点
privateChain中打开终端,输入:
将–rpcaddr参数后面的地址换成本机ip地址,查看本机ip地址方法见查看本机ip地址
geth --datadir dataD --http --http.addr 192.168.126.129 --http.port 8989 --port 3000
geth命令的详细说明在github上
10.7 使用钱包连接私链
后端开发过程中总不能一直依赖命令行与geth交互,那样虽然非常程序员,但是太浪费时间了,而且不直观。我们需要搞一个别人写好的图形化客户端——钱包。
目前常见的开发过程中使用的钱包有三种,MetaMask、Mist的变种myetherwallet、parity。
我们这里使用MetaMask作为我们的工具,MetaMask是一个浏览器插件,不需要像其他钱包那样依赖本地环境运行,非常方便。
安装教程
11 其他
11.1 搞一个梯子
由于众所周知的原因,我们通常无法访问托管在Azune或者google上的项目,很不巧ethereum的许多工具都托管在Azune和Google上。所以我们需要搞一个梯子。大家可以用自己的梯子,没有梯子的可以修改hosts。 以下是一种梯子和一种修改hosts的手段
- 安装SSR客户端
查看教程,根据方法2安装图形化的客户端并配置
里面已经挂掉的项目安装包ftp上有备份,可以下载。 - 修改hosts的方法
mac教程 linux教程
linux系统hosts替换方法: 找到目标hosts文件放到任意目录,在目录中打开终端,输入
sudo cp ./hosts /etc/hosts
后面开发过程中遇到的无法下载某一个工具的问题,可以试一试翻一下
11.2 查看本机ip地址
之前虚拟机硬件配置中如果选择了桥接,这里看到的就是与物理机同级的内网地址,可以与物理机互相访问,可以通过配置上级路由器实现公网访问。但如果选择了nat,这里看到的是以物理机为二级路由的下一级内网地址,物理机无法直接访问,也很难进行公网穿透。
打开终端输入:
ifconfig -a
找到如下字段,即为本机ip地址
12 一些或许有用的资料
brew官网
brew——GitHub
truffle文档
drizzle文档
drizzle文档
中文以太坊项目实战教程——文档
solidity教程——视频
从零构建以太坊教程——视频 !有非常多的错误,但是东西很全,只建议参考,不建议跟着做
在线solidityIDE-Remix
geth——GitHub
以太坊官方搜集的资料
web3.js英文文档
web3.js中文文档
vue官网
Mist——GitHub
EthFans指南!推荐
MetaMask下载
MetaMask文档
以上是关于以太坊开发教程的主要内容,如果未能解决你的问题,请参考以下文章