版本: SuperPaymaster V3.0.0 / Registry V3.0.0 状态: Release Candidate (v3.0.0-dev)
V3 在保留 V2 核心业务逻辑(Gas 代付、多币种结算)的基础上,对底层治理架构进行了重构:
- Registry 重构: 从静态枚举 (
Enum Types) 升级为动态 Role-Based 系统 (bytes32 roleId),支持更灵活的角色扩展。 - Staking 重构: 从
Locker授权模式升级为 Role-Based Locking,质押直接绑定角色,安全性更高。 - 注册流程统一: 所有角色(用户、社区、Paymaster、KMS)统一通过
Registry.registerRole入口注册。 - 经济模型落地: 实装了 Entry Burn (注册销毁) 和 Exit Fee (退出费) 机制。
SuperPaymaster 项目的核心目标是提供符合 ERC-4337 标准的 Paymaster 服务,支持 EntryPoint v0.7。通过在 UserOp 中指定 Paymaster 合约地址,用户可以实现 Gasless (免 Gas) 交易,使用社区代币 (xPNTs) 支付网络费用。
| 模式 | 合约 | 说明 | 适用场景 |
|---|---|---|---|
| V3 共享模式 | SuperPaymasterV3 | 多租户托管 Paymaster,集成 V3 Registry | 普通社区 / DAO |
| V4 独立模式 | PaymasterV4 | 社区独立部署,自主管理 ETH 存款 | 高级技术团队 |
graph TD
User((User/Wallet))
subgraph Core[核心层]
Registry[Registry V3<br/>(角色管理中心)]
Staking[GTokenStaking V3<br/>(资金管理中心)]
GToken[(GToken)]
MySBT[MySBT V3<br/>(身份凭证)]
end
subgraph Service[服务层]
SP[SuperPaymaster V3<br/>(Gas 代付服务)]
EP[EntryPoint v0.7]
end
subgraph CommunityLayer[社区层]
DAO[Community DAO]
xPNTs[xPNTs Token<br/>(Gas Payment)]
end
%% Relationships
User --1. Register Role--> Registry
Registry --2. Mint SBT--> MySBT
Registry --3. Lock Stake--> Staking
User --Stake GToken--> Staking
User --4. Send UserOp--> EP
EP --5. Validate & Pay--> SP
SP --6. Check Role--> Registry
SP --7. Deduct xPNTs--> DAO
- 统一注册: 用户和社区都通过
Registry注册身份。 - 资金托管: 所有质押资金 (GToken) 由
GTokenStaking统一管理,不再分散。 - 身份凭证:
MySBT作为链上身份凭证,记录用户所在的社区和角色。 - 服务鉴权:
SuperPaymaster V3不再维护白名单,而是实时查询Registry确认用户和运营商的资格。
| 合约 | 版本 | 说明 | 关键职责 |
|---|---|---|---|
| Registry | 3.0.0 | 核心大脑 | 管理 Role Config、用户注册、权限验证 |
| GTokenStaking | 3.0.0 | 金库 | 管理质押、Entry Burn (销毁)、Exit Fee (退出费) |
| SuperPaymasterV3 | 3.0.0 | 服务入口 | ERC-4337 Paymaster,负责 Gas 代付和 xPNTs 扣费 |
| MySBT | 3.0.0 | 身份层 | ERC721 SBT,即"会员卡",与 Registry 联动 |
| GToken | 2.0.0 | 治理代币 | 系统质押代币 |
V3 使用 bytes32 标识符定义角色。
- Role ID:
keccak256("ENDUSER") - 描述: 使用 Gasless 服务的普通用户。
- 前置要求:
- 持有 GToken (约 0.4 GT)
- 通过
Registry.registerRole注册
- 成本模型:
- Stake: 0.3 GT (退出时退还)
- Entry Burn: 0.1 GT (注册费,直接销毁)
- Exit Fee: 0 GT (目前设置为 0)
- Role ID:
keccak256("COMMUNITY") - 描述: 在系统内建立 DAO 的组织。
- 功能: 发行 xPNTs,为成员提供 Gas 赞助。
- 成本模型:
- Stake: 30 GT
- Entry Burn: 3 GT
- Role ID:
keccak256("PAYMASTER_AOA")或keccak256("PAYMASTER_SUPER") - 描述: 为 SuperPaymaster 提供流动性支持的节点。
- 鉴权: SuperPaymaster 会检查 Operator 是否拥有上述角色之一。
- 成本模型:
- Stake: 30 GT (AOA) / 50 GT (SUPER)
- Entry Burn: 10% Stake
- Role ID:
keccak256("KMS")/keccak256("ANODE") - 描述: 提供密钥管理或计算服务的节点。
当用户调用 Registry.registerRole(roleId) 时:
- 用户
approveGToken 给GTokenStaking。 GTokenStaking划转Stake + Burn总额。Burn部分直接转入 0x...dEaD 地址销毁。Stake部分记入用户的RoleLock,不可流动。
当用户调用 Registry.exitRole(roleId) 时:
GTokenStaking解锁质押。- 计算 Exit Fee (如有配置,如 2%)。
- Exit Fee 转入协议财库 (Treasury)。
- 剩余资金 (Net Amount) 全额退还给用户钱包。
- Registry 移除用户角色,SBT 可能会被标记失效或销毁。
这部分继承自 V2 逻辑,核心没有变化:
- 用户发起: UserOp 携带
paymasterAndData。 - 验证: SuperPaymaster 询问 Registry:"该用户是 ENDUSER 吗?该 Operator 是 COMMUNITY 吗?"
- 执行: EntryPoint 执行交易。
- 扣费 (PostOp):
- 计算实际 Gas 消耗 (ETH)。
- 通过 Oracle 获取 ETH/USD 和 xPNTs/USD 价格。
- 计算所需 xPNTs 数量。
- 从用户在 Operator 处的余额中扣除 xPNTs。
- GToken (Existing)
- GTokenStaking V3 (Deploy check: GToken, Treasury)
- MySBT V3 (Deploy check: Staking, Registry placeholder)
- Registry V3 (Deploy check: Staking, MySBT)
- SuperPaymaster V3 (Deploy check: Registry, PriceFeed)
部署完成后必须执行的连接操作:
- Registry -> Staking: Registry 必须被设定为 Staking 的
Registry地址 (用于触发 Lock)。 - MySBT -> Registry: MySBT 需指向正确的 Registry (用于 Mint)。
- SuperPaymaster -> Config: 设置
setProtocolTreasury和setAPNTsToken。
mapping(bytes32 => RoleConfig) public roleConfigs; // 角色配置 (Stake, Burn参数)
mapping(bytes32 => mapping(address => bool)) public hasRole; // 用户角色状态
mapping(bytes32 => address[]) public roleMembers; // 角色成员列表
mapping(address => bytes) public roleMetadata; // 用户元数据 (IPFS等)mapping(address => mapping(bytes32 => RoleLock)) public roleLocks; // 用户->角色->锁定资金
mapping(address => StakeInfo) public stakes; // 用户总质押信息
mapping(bytes32 => RoleExitConfig) public roleExitConfigs; // 角色推出费率配置Q: V3 还能使用 V2 的 PaymasterFactory 吗?
A: 不可以。V3 是全新的生态。如果需要独立部署 Paymaster,请使用适配 V3 Registry 的 PaymasterV4。
Q: 用户退出社区需要支付罚金吗?
A: 取决于 RoleExitConfig。目前的 EndUser 角色配置为 0 Exit Fee,即免费退出 (仅需 gas)。Community 角色可能会配置一定的 Exit Fee 以防止恶意频繁进出。
Q: 旧的 SuperPaymasterV2 还能用吗? A: V2 合约仍在链上运行,但 V3 系统上线后,新用户应注册到 V3 Registry 使用 V3 Paymaster。V2 将进入维护模式。