feat: 完成 Mini Swap DEX AMM 项目开发
- 添加智能合约: TokenA, TokenB, MiniSwapAMM - 实现 AMM 流动性池功能 (x * y = k 公式) - 支持添加/移除流动性和代币交换 - 包含完整的测试套件 - 创建 React 前端界面,支持钱包连接 - 添加 Web3 集成和现代化 UI 设计 - 包含部署脚本和完整的项目配置
This commit is contained in:
34
contracts/TokenB.sol
Normal file
34
contracts/TokenB.sol
Normal file
@ -0,0 +1,34 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.19;
|
||||
|
||||
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
||||
import "@openzeppelin/contracts/access/Ownable.sol";
|
||||
|
||||
/**
|
||||
* @title TokenB
|
||||
* @dev 用于 DEX 的第二个 ERC-20 代币
|
||||
*/
|
||||
contract TokenB is ERC20, Ownable {
|
||||
constructor() ERC20("Token B", "TKB") Ownable(msg.sender) {
|
||||
// 初始铸造 1,000,000 个代币给部署者
|
||||
_mint(msg.sender, 1000000 * 10**decimals());
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev 允许所有者铸造更多代币
|
||||
* @param to 接收代币的地址
|
||||
* @param amount 铸造的代币数量
|
||||
*/
|
||||
function mint(address to, uint256 amount) public onlyOwner {
|
||||
_mint(to, amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev 允许任何人铸造代币用于测试(仅限测试环境)
|
||||
* @param amount 铸造的代币数量
|
||||
*/
|
||||
function faucet(uint256 amount) public {
|
||||
require(amount <= 10000 * 10**decimals(), "TokenB: Maximum 10,000 tokens per faucet call");
|
||||
_mint(msg.sender, amount);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user