Berachain是一个高性能EVM兼容L1区块链,本文主要讨论如何在 Berachain 测试网上部署ERC20合约。
Berachain
是一个高性能 EVM 兼容 L1 区块链,利用流动性证明 (PoL) 作为共识机制,在执行层方面,Berachain 与以太坊虚拟机(EVM)运行时环境相同,可以使用现有的未经修改的执行客户端(例如 Geth、Reth、Erigon 等)来处理智能合约的执行,并支持 EVM 自带的所有工具。
目前熊链处于测试网V2阶段,主网还未上线,所以本文主要讨论如何在测试网 Berachain bArtio
上部署ERC20合约。
部署合约需要用熊链的代币(BERA
)做 gas,可以到熊链水龙头领取,领取条件是需要在ETH主网有0.001ETH的资金, 一次可以领1BERA。
$ curl -L https://foundry.paradigm.xyz | bash
$ foundryup
我们现在开始在熊链测试网上部署一个代币名为 Betu(BETU)
的ERC20合约。
使用 forge
初始化一个项目 betu
:
$ forge init betu;
forge
会初始化生成项目的结构,并包含默认的合约及测试文件。
$ cd betu
$ tree -L 2
.
├── foundry.toml
├── lib
│ └── forge-std
├── README.md
├── script
│ └── Counter.s.sol
├── src
│ └── Counter.sol
└── test
└── Counter.t.sol
删除默认的文件:
$ rm src/Counter.sol test/Counter.t.sol script/Counter.s.sol
OpenZeppelin 提供各种 ERC 标准(包括 ERC-20)的常用接口和实现,使用 OpenZeppelin 提供的 ERC-20 接口可以快速创建ERC20合约而无需重新造轮子。
$ forge install openzeppelin/openzeppelin-contracts --no-commit
新建路径映射文件 remappings.txt
方便引用:
$ vim remappings.txt
文件中使用以下内容告诉 Foundry 在编译合约时在哪里可以找到 @openzeppelin
库:
ds-test/=lib/forge-std/lib/ds-test/src/
forge-std/=lib/forge-std/src/
@openzeppelin/=lib/openzeppelin-contracts/ //[!code focus]
在 src/
文件夹中创建一个名为 BETU.sol
的新文件,并导入 OpenZeppelin ERC-20 合约。对于代币的3个属性设置如下:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.20;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract BETU is ERC20 { uint256 public constant INITIAL_SUPPLY = 100_000 * 1 ether;
constructor() ERC20("Betu", "BETU"){
_mint(msg.sender, INITIAL_SUPPLY);
}
}
这是一个最简单的代币合约,在部署的时候会向部署合约的钱包(`msg.sender`)中铸造10万个代币。
## 部署合约
使用 `forge` 将合约部署到 Berachain 测试网:
```bash
$ forge create --rpc-url https://bartio.rpc.berachain.com/ --private-key <YOUR_PRIVATE_KEY> src/BETU.sol:BETU --legacy
# Deployer: 0xF386257B526C76123deCBf1A94428e8EC9A3E259
# Deployed to: 0x624ab6d3c40ca2EcAB272dc457d49B3e46CE6FCd
# Transaction hash: 0x0aa279ff173b0f111ce2e067c0a210e26f74503266e6ac2bd83e856ac3807b1f
<YOUR_PRIVATE_KEY>
替换为要部署合约的钱包的私钥,为了方便使用部署命令同时避免存储私钥,可以写一个脚本进行部署,以命令行参数的形式接收私钥,实现一个脚本 deploy.sh
:
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 <YOUR_PRIVATE_KEY>"
exit 1
fi
forge create --rpc-url https://bartio.rpc.berachain.com/ --private-key $1 src/BETU.sol:BETU --legacy
使用 deploy.sh
部署:
$ ./deploy.sh <YOUR_PRIVATE_KEY>
注意:开发用的钱包不要用有资金的钱包,同时避免把私钥上传到 github
可以在 Berachain 浏览器 查看交易详情:
可以看到自己的钱包里的 BETU
代币:
因为 Berachain
是EVM兼容的L1链,构建在名为 BeaconKit 的模块化 EVM 共识客户端框架之上,所以部署合约和在EVM上一样,如果之前在其他EVM链上部署过合约,在 Berachain 部署就只是换了一个链而已,可以使用自己最熟练的框架进行部署。
熊链创新性的提出了流动性证明共识机制(PoL
),其核心价值主张来自于它同时扩展流动性和安全性的能力,实现用户、dApp 和验证者之间激励的健康协调,以 PoL
为核心构建的应用将捕获熊链生态系统中的大部分价值。作为开发者也可以参与到熊链的生态建设中,发挥出自己的价值,推动web3技术的快速发展。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!