币安智能链(BSC,现更名为BNB Smart Chain)作为以太坊兼容的高性能公链,凭借低Gas费、快速确认等优势,成为DeFi、NFT等应用的热土,智能合约是BSC生态的核心,本文将以简单代币合约为例,解析BSC智能合约的代码结构与实现逻辑。
环境准备:开发工具与依赖
在编写BSC智能合约前,需搭建开发环境,推荐使用Hardhat(主流以太坊开发框架,支持BSC)或Remix IDE(在线开发工具,无需配置),以Hardhat为例,首先安装Node.js,然后初始化项目:
mkdir bsc-smart-contract cd bsc-smart-contract npm init -y npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox @openzeppelin/contracts
安装完成后,通过npx hardhat创建合约文件,默认路径为contracts/Token.sol。
简单代币合约代码示例
以下是一个基于BSC的标准代币合约(兼容ERC-20),使用OpenZeppelin库确保安全性,代码简洁且功能完整:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract BscSimpleToken is ERC20 {
constructor(string memory name, string memory symbol) ERC20(name, symbol) {
// 初始供应量:1亿代币,18位小数(与BSC原生BNB一致)
_mint(msg.sender, 100000000 * 10**18);
}
}
代码核心逻辑解析
-
版本与许可证声明
SPDX-License-Identifier: MIT:声明MIT开源许可证,允许自由使用与修改。pragma solidity ^0.8.20:指定Solidity编译器版本(0.8.20以上,兼容BSC节点支持的版本)。
-
导入ERC-20标准合约
import "@openzeppelin/contracts/token/ERC20/ERC20.sol":引入OpenZeppelin的ERC-20实现,避免重复造轮子,确保代币兼容主流交易所和钱包。
-
构造函数与代币初始化
constructor(string memory name, string memory symbol):构造函数,在合约部署时执行,用于设置代币名称(如“MyBscToken”)和符号(如“MBT”)。_mint(msg.sender, 100000000 * 10**18):调用ERC-20内置的_mint函数,将1亿代币(18位小数,实际值为100000000 * 10^18)铸造给部署者(msg.sender)。
部署与交互
编译合约
在Hardhat项目中运行:
npx hardhat compile
编译成功后,合约字节码会生成在artifacts/contracts/Token.sol/BscSimpleToken.json。
部署到BSC测试网(如BSC Testnet)
配置Hardhat的hardhat.config.js,添加BSC测试网节点信息(推荐使用Infura或Alchemy的RPC节点):
require("@nomicfoundation/hardhat-toolbox");
module.exports = {
solidity: "0.8.20",
networks: {
bscTestnet: {
url: "https://data-seed-prebsc-1-s1.binance.org:8545", // BSC测试网RPC
accounts: ["你的私钥"], // 部署账户私钥
chainId: 97, // BSC测试网Chain ID
},
},
};
编写部署脚本scripts/deploy.js:
async function main() {
const BscSimpleToken = await ethers.getContractFactory("BscSimpleToken");
const token = await BscSimpleToken.deploy("MyBscToken", "MBT");
await token.deployed();
console.log("合约部署地址:", token.address);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
执行部署:
npx hardhat run scripts/deploy.js --network bscTestnet
部署成功后,记录合约地址,即可在测试网进行代币转账、查询等操作。
与合约交互
使用Remix IDE或Ethers.js与合约交互,通过Ethers.js查询代币余额:
import { ethers } from "ethers";
const provider = new ethers.providers.JsonRpcProvider("https://data-seed-prebsc-1-s1.binance.org:8545");
const contractAddress = "部署的合约地址";
const abi = ["function balanceOf(address) view returns (uint256)"]; // 合约ABI
const contract = new ethers.Contract(contractAddress, abi, provider);
const balance = await contract.balanceOf("0x..."); // 查指定地址余额
console.log(`余额: ${ethers.utils.formatUnits(balance, 18)}`);
BSC简单智能合约代码展示了代币创建的核心逻辑,结合OpenZepp

_mint、balanceOf)以及部署流程是入门BSC智能合约的关键,后续可基于此扩展功能,如添加权限控制(如管理员黑名单)、手续费机制等,构建更复杂的DApp应用,BSC的低成本与高性能,为智能合约创新提供了理想土壤。








