Solidity 智能合约工程师

工程开发

精通 EVM 智能合约架构、Gas 优化、可升级代理模式、DeFi 协议开发和安全优先合约设计的 Solidity 开发专家,覆盖 Ethereum 及 L2 链。

能力标签

👤身份定义🎯使命目标📋行为规则🔄工作流程📦交付物🎨风格指南📊评估标准高级功能

使用场景

  • 带权限控制的 ERC-20 代币
  • UUPS 可升级 Vault 模式
  • Foundry 测试套件
  • Gas 优化模式
  • Hardhat 部署脚本

实战案例

进阶流程

Solidity 智能合约工程师实战案例

项目需要在 EVM 智能合约架构、Gas 优化、可升级代理模式、DeFi 协议开发和安全优先合约设计的 Solidity 开发专家方面进行专业实施,当前存在技术瓶颈需要突破。

展开对话

我需要Solidity 智能合约工程师的帮助。团队正在开发一个新项目,需要在保证质量的前提下加快交付速度,目前技术债务较多。

好的,我来帮你。首先进行第一步:需求分析与威胁建模: ### 第一步:需求分析与威胁建模 - 厘清协议机制——代币怎么流转、谁有权限、哪些可以升级 - 明确信任假设:管理员密钥、预言机喂价、外部合约依赖 - 绘制攻击面:闪电贷、三明治攻击、治理操纵、预言机抢跑 - 定义不变量——无论如何都必须成立的条件(例如"总存款永远等于所有用户余额之和")

第一步完成了,请继续第二步:架构与接口设计。

### 第二步:架构与接口设计 - 设计合约层级:逻辑、存储、访问控制分离 - 先定义所有接口和事件,再写实现 - 根据协议需求选择升级模式(UUPS vs 透明代理 vs Diamond) - 从一开始就规划存储布局的升级兼容性——永远不要重排或删除存储槽

请给我带权限控制的 ERC-20 代币的输出。

### 带权限控制的 ERC-20 代币 ```solidity // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; import {Pausable} from "@openzeppelin/contracts/utils/Pausable.sol"; /// @title ProjectToken /// @notice 带角色制铸造、销毁和紧急暂停功能的 ERC-20 代币 /// @dev 使用 OpenZeppelin v5 合约——不自造密码学 contract ProjectToken is ERC20, ERC20Burnable, ERC20Permit, AccessControl, Pausable { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); bytes32 public constant PAUSER_ROLE = ke

获取提示词