Distribution 合约用于集中管理和分发 ETH 或 ERC20 Token 给用户,支持多种分发类型(空投、治理、奖励、工资、赏金)。
特点包括:
- 可分发单个或多个不同金额的 Token/ETH。
- 支持角色权限管理(Operator 和 Admin)。
- 可安全提现 Token/ETH。
- 使用
EIP712支持签名验证(可扩展)。 - 防止重入攻击 (
ReentrancyGuard)。
| 类型名 | 值 | 说明 |
|---|---|---|
| TYPE_AIRDROP | 0 | 空投 |
| TYPE_GOVERNANCE | 1 | 治理 |
| TYPE_REWARDS | 2 | 奖励 |
| TYPE_SALARY | 3 | 工资 |
| TYPE_BOUNTY | 4 | 赏金 |
| 角色 | 权限说明 |
|---|---|
DEFAULT_ADMIN_ROLE |
管理员,可提现资产、管理 Operator 角色 |
OPERATOR_ROLE |
分发操作员,可调用分发方法进行空投、奖励等 |
初始化时,部署者地址将同时拥有 Admin 和 Operator 权限。
function initialize(address admin);function airdrop(address token, address[] calldata users, uint256[] calldata amount);
token: ERC20 token 地址,若为 address(0) 则表示分发 ETH。
users: 用户地址列表。
amount: 对应用户的分发数量列表。
事件
event DistributionEvent(
address indexed operator,
address indexed token,
address indexed user,
uint256 amount,
uint8 distType
);
说明
distType 默认为 TYPE_AIRDROP。
若 token 为 ETH,使用 _distributionETH;否则使用 _distributionToken。