前置知识点
上下文变量初步
- 合约函数的背后是transaction,上下文变量访问的是transaction中的信息
- 两个上下文变量:tx和msg
ERC20
- 规范
- 代码实现
- Metamask测试
ganache-cli的安装
安装
npm install -g ganache-cli
启动
ganache-cli
如果出现以下这种错误提示,这是因为Node.js 和 OpenSSL 之间的兼容性问题引起的。这个问题在 Node.js 17 和更高版本中很常见,因为这些版本更改了对 OpenSSL 的处理方式。
解决方式:
- 降级 Node.js 版本,比如16
- 设置环境变量(可以设置 NODE_OPTIONS 环境变量,以使 Node.js 使用旧版 OpenSSL 接口)
- 在执行命令时临时设置,如下:
NODE_OPTIONS=--openssl-legacy-provider ganache-cli
正常启动后会开发链会生成一些测试帐号,如下图,端口号为8545,另:网络ID是1337
Ganache 的 1337 网络 ID(一些有趣的知识点)
Ganache 是一个用于以太坊开发的个人区块链,它允许开发者在本地快速部署和测试智能合约。在默认配置下,Ganache 使用本地 HTTP 服务器来提供 JSON-RPC 接口,通常运行在 http://localhost:8545 上。
Ganache 的 1337 网络 ID
网络 ID(Network ID)是以太坊网络的唯一标识符。默认情况下,Ganache 使用 1337 作为它的网络 ID。这个 ID 用于区分不同的以太坊网络,例如主网、测试网(Ropsten、Kovan、Rinkeby 等)和本地开发网络。
- 主网 的网络 ID 是 1
- Ropsten 的网络 ID 是 3
- Kovan 的网络 ID 是 42
- Rinkeby 的网络 ID 是 4
为什么选择 1337?
1337 是一个被开发者社区广泛接受的数字,来源于“leet”或“1337 speak”,这是一种互联网文化中的黑客语言,意味着“elite”或“精英”。选择 1337 作为默认的网络 ID 主要是出于以下原因:
- 避免冲突:使用一个非常高且不常用的数字,可以避免与其他公共网络 ID 的冲突。
- 便于识别:开发者可以轻松识别和记住这个 ID,因为它具有一定的文化意义。