在 Berachain 上部署 ERC20 合约

  • 小符
  • 更新于 2024-08-22 21:03
  • 阅读 725

Berachain是一个高性能EVM兼容L1区块链,本文主要讨论如何在 Berachain 测试网上部署ERC20合约。

Berachain 是一个高性能 EVM 兼容 L1 区块链,利用流动性证明 (PoL) 作为共识机制,在执行层方面,Berachain 与以太坊虚拟机(EVM)运行时环境相同,可以使用现有的未经修改的执行客户端(例如 Geth、Reth、Erigon 等)来处理智能合约的执行,并支持 EVM 自带的所有工具。

image.png

目前熊链处于测试网V2阶段,主网还未上线,所以本文主要讨论如何在测试网 Berachain bArtio 上部署ERC20合约。

领水

部署合约需要用熊链的代币(BERA)做 gas,可以到熊链水龙头领取,领取条件是需要在ETH主网有0.001ETH的资金, 一次可以领1BERA。

image.png

安装 Foundry

$ 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

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个属性设置如下:

  • Name:Betu
  • Symbol:BETU
  • Supply:100000
    
    // 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 浏览器 查看交易详情:

image.png

可以看到自己的钱包里的 BETU代币:

image.png

总结

因为 Berachain 是EVM兼容的L1链,构建在名为 BeaconKit 的模块化 EVM 共识客户端框架之上,所以部署合约和在EVM上一样,如果之前在其他EVM链上部署过合约,在 Berachain 部署就只是换了一个链而已,可以使用自己最熟练的框架进行部署。

熊链创新性的提出了流动性证明共识机制(PoL),其核心价值主张来自于它同时扩展流动性和安全性的能力,实现用户、dApp 和验证者之间激励的健康协调,以 PoL 为核心构建的应用将捕获熊链生态系统中的大部分价值。作为开发者也可以参与到熊链的生态建设中,发挥出自己的价值,推动web3技术的快速发展。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
小符
小符
0x6737...76B6
web3 builder