【web3】01. 学习环境搭建及测试

1,071 阅读5分钟

在学习 web3 开发之前,我们先来学习如何搭建环境,以及不同环境的用途。

1. 测试环境搭建

1.1. Ganache

Ganache 是一个在本地运行测试区块链的工具,可以在 trufflesuite.com/ganache/ 这里下载。 下载安装完成以后,启动 Ganache,将会在本地运行一个测试区块链,后续开发等将在测试区块链进行测试运行。

一个启动好的 Ganache 如下:

image.png

其中,上面会列出来链内的账号、区块、交易等信息,并显示 rpc server 的地址和端口,在右侧设置的地方可以设置端口等信息(端口的用处后面讲)。

1.2. Remix

为了简化初学者的使用成本,可以直接在 Remix 网站下载已经打包好的桌面版本,该工具主要是为了开发智能合约使用。如果不使用 Remix,也可以使用 vscode 插件等,但是此处主要介绍 Remix IDE。

下载地址:github.com/ethereum/re…

下载完成后,安装即可。

安装后,打开,常用功能介绍如下:

image.png

image.png

  1. 我们的工作区,智能合约代码等在此处编写
  2. workspace,可以自己新建,不多介绍
  3. 搜索文件
  4. 可以选择编译的 Solidity 版本,以及是否自动编译等选项
  5. 用于智能合约的部署、运行等使用
  6. 智能合约调试使用
  7. 测试使用
  8. 在此处可以选择运行智能合约的网络,选项中有一些公共的以太坊测试网络,比如伦敦等,我们在本地测试主要连 Ganache 的网络,所以选择 Ganache Provider,选择后弹出填写 Ganache 启动的网络地址端口,在上面讲 Ganache 的时候其实和端口填进来即可
  9. 当测试一个合约时,部署该合约的地址
  10. 选择具体要运行的合约

当完成上述配置,就可以在本地开发和测试智能合约了。

2. 以太坊公网客户端

2.1. Geth

以太坊公网客户端一般使用 Geth,Geth 是一个遵循以太坊协议,使用 go 语言实现的客户端。下载地址为: geth.ethereum.org/downloads ,使用文档参考:github.com/ethereum/go…

直接执行 geth,会在本地启动以太坊节点,我们先来介绍一下 geth 相关目录: 启动的时候,会打印诸如:database=/Users/xxx/Library/Ethereum/xxx 这样的目录,该目录存放的是区块链相关的数据,我们到 Ethereum 目录下:

  • keystore 目录存储的是以太坊的账户信息,一般是一个秘钥文件,我们最好备份这个文件,如果这个目录下面本来有账户文件,那么就会读取这个文件作为当前账户,当然也可以使用 geth 的命令生成一个账户,我们查看文件下面的 address 字段,就是你的以太坊地址
  • history 文件,记录了执行 geth 的历史命令
  • geth 目录下面的 chaindata 等都是同步或者计算的区块信息,不同 geth 启动的模式,下面的区块信息完整度不一样

geth 启动参数介绍(可以保存成 geth 启动脚本):

#! /bin/zsh

# syncmode: full/snap/light 分别表示全量同步区块、只同步区块的 header 和 body、仅获取当前区块
# --mine 表示打开挖矿 --miner.threads value 表示 cpu 线程数
# 启动 http 表示打开远程调用,指定远程调用地址,在 attach 的时候或者远程 json rpc 调用的时候有用
geth --syncmode snap --http --http.addr 0.0.0.0

一些常用的 Geth 命令介绍:

# 列出当前的账户列表
geth account list
# 创建新账户
geth account new
# 从私钥导入账户,其中 privateKey.txt 存储的是账户的私钥
geth account import privateKey.txt

geth attach 模式:

我们使用上述启动脚本启动 geth 后,可以在另外一个终端窗口内使用 attach 模式通过 web3.js 远程调用当前节点:

# 打开连接到当前节点的 js 交互式窗口
geth attach http://0.0.0.0:8545

在交互式窗口下可以执行如下:

# 列出当前账户
eth.accounts
# 查看账户余额,传参为以太坊地址
eth.getBalance("0xxxxx")
# 开始挖矿
miner.start()
# 停止挖矿
miner.stop()

更多交互式命令可以参考官方文档。

2.2. 答疑解惑

Q:我的地址怎么区分是以太坊公网地址还是我内部测试的私有地址?

实际上,没有所谓公网地址还是私有地址的概念,你拥有一个公钥和私钥对,这个公钥和私钥对无论是在什么网上都可以使用,比如你可以往公网地址的这个公钥地址里面充钱,那这个地址里面就有了相应的资产,因为你有私钥,而别人没有,所以这里的资产只有你能支配,及所谓的「属于你」的概念,一旦别人拿到私钥,那这个资产也属于别人。

每个公钥地址里面的资产都是透明的,比如我的:etherscan.io/address/0x4…

如果你很想给我充值,那就往 0x40d534fb053DEABe53697e2224Ce2E8ebF070bb2 这个地址里面疯狂转账就好了。

Q:怎么管理我的公网资产?

初学者先使用一个最广泛使用的钱包吧:MetaMask:metamask.io/ 这个钱包可以安装浏览器插件、手机 APP 等,安装上根据提示操作即可。