以太坊(Ethereum)是一个建立在区块链技术之上的去中心化应用平台。它允许任何人在其平台上创建和使用通过区块链技术运行的去中心化应用(DApp)。
一、Metamask钱包
钱包是管理账户的重要工具,用户可以使用钱包创建账户、进行交易签名,并在需要时连接到区块链节点来执行交易。需要注意的是,钱包本身并不存储用户的资产,而是管理访问这些资产的密钥和签名功能。
MetaMask 是一个浏览器插件,支持多种主流浏览器,如 Chrome、Firefox 和 Opera。它不仅可以用于管理账户,还可以用于部署和执行智能合约。开发者通常使用 MetaMask 与 Remix IDE 等工具结合使用,以便更轻松地开发和测试智能合约。
1、MetaMask插件下载
MetaMask 有移动端版本和浏览器插件(也称为扩展程序)版本, 本文介绍的浏览器版。MetaMask 在 Chrome谷歌浏览器(同Microsoft Edge浏览器)、FireFox火狐浏览器 均提供了插件。
我们打开MetaMask钱包的官网首页 https://metamask.io/ 后,可以点接跳转到插件市场安装。
2、创建钱包账号
点击MetaMask图标进入,按照系统提示输出密码和助记词完成钱包账户的创建。
出现了以下账户的界面即完成了钱包账户的创建
这里account下面的字符串就是钱包的地址,地址类似于银行卡账号,钱包之间转账就是使用该地址。
3、给账户钱包充值
创建好账户后,在体验转账或交易之前, 我们需要先给账号充值,我们可以先去测试网的水龙头(Faucet)获取一些测试。下面是faucet的一些网站。
这里我们使用sepolia示例
https://cloud.google.com/application/web3/faucet/ethereum/sepolia
回到MetaMask下找到sepolia下的地址
然后点击receive 0.05 sepolia ETH,等待一会后会看到下图交易成功的提示,并刷新MetaMask界面,账户接收到了0.05 sepolia ETH。
二、Remix IDE
Remix 对初学者来说,是开发智能合约的最佳开发集成环境(IDE),它无需安装,可以直接快速上手。
Remix 开箱即用,你可以打开 Remix 网站:Remix - Ethereum IDE , 进入到 Remix IDE:
1、新建合约
既可以新建文件、也可以从本机或 GitHub 加载文件,这里我们新建一个 counter.sol
合约。
2、合约代码编写
可以在代码区输入示例代码
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Counter {
uint counter;
constructor() {
counter = 0;
}
function count() public {
counter = counter + 1;
}
function get() public view returns (uint) {
return counter;
}
}
这是一个简单的计数器合约,这个智能合约的作用是在区块链上存储一个计数器变量 counter
, counter
值将会被永久保存在区块链上。
count()
函数让计数器加1,get()
函数用来获取计数器值。
智能合约不需要编写入口函数(如main函数),其实编译器会帮助合约生成main入口函数,EVM 在入口函数里用函数选择器去匹配调用的函数。
3、合约编译
合约编译成功后,会输出两个重要的内容: ABI (合约接口描述
) 和 Bytecode
字节码。
ABI
是 Application Binary Interface,即应用程序二进制接口,ABI 用来描述当前合约的所有接口,当我们与合约交互时,就需要使用 ABI。
Bytecode
是部署合约所需的字节码(也称为创建时字节码),部署合约时,就是把该字节码作为交易的输入数据发送链上。
4、合约部署
编译之后, 如果代码没有错误,就可以部署到区块链网络上。
一个正式的产品推荐的部署流程是:
- 在本地的开发者网络(模拟网络)进行部署,测试及验证代码逻辑的正确性
- 在测试网络进行灰度发布
- 一切 OK 后部署在主网
(1)部署到VM
通常这些都有默认值,初学者使用默认值即可。
点击deploy后可看到成功部署到VM的输出
(2)部署到真实网络
部署到真实网络,不管是测试网还是主网,在 Remix 的环境里选择Injected Provider - MetaMask
Remix 会加载我们在 MetaMask 中选择的网络,之前在第一部分MetaMask中我选择的事Sepolia,所以这里加载出来的是sepolia环境,并弹出下图中的交易对话框。
让我们确认交易费用,点击“确认”时,同时会对这笔交易签名,并发送到 sepolia 网络中。
待交易完成后,同样会在功能操作区域的下方列出合约地址及对应的函数。
(3)调用合约函数
橙色按钮来这个动作会修改区块链的状态,蓝色按钮则表示调用仅仅是读取状态。
根据我们之前编写的智能合约的逻辑,count功能是让状态加一,也就是会发起一笔交易,交易打包后,计数器变量加1;点击get可以获得当前计数器的值。
Remix 对初学者非常友好,非常适合开发小合约及验证性代码。
对于大一点的的项目,在本地开发结合 GitHub 管理代码是更理想的选择,就很适合使用 Hardhat 或 Foundry 开发框架。