-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
SharingWishVault
功能概述
SharingWishVault 是一个基于以太坊的智能合约,用于管理愿望分享和资金分配。它允许用户创建愿望资金库(Vault),接受捐赠,并通过管理员(Admin)审核后分配资金给指定的接收者(Claimer)。
主要特性
-
Vault 创建
- 用户可以创建带有消息的 Vault
- 支持
ETH和指定的ERC20代币 - 每个 Vault 都有唯一的
ID和锁定期
-
资金管理
- 支持多人向 Vault 捐赠(
donate) - 资金锁定期(
lockTime)为 14 天 - 创建者可在锁定期后提取(
withdraw)未分配的资金
- 支持多人向 Vault 捐赠(
-
资金分配
- 管理员可以设置资金接收者(
settle) - 支持多次分配和领取
- 接收者可以随时领取(
claim)已分配的资金
- 管理员可以设置资金接收者(
-
安全特性
- 紧急模式(
Emergency Mode)开关 - 管理员紧急提款功能
- 防重入(
ReentrancyGuard)保护 - 支持的代币白名单
- 紧急模式(
合约接口
核心功能
- 创建 Vault
function createVault(string calldata message, address token, uint256 lockDuration) external returns (uint256 vaultId)- 创建新的 Vault
- 参数:消息内容、指定接受代币地址(
token)和锁定期(lockDuration) - 返回:
Vault ID
- 捐赠资金
function donate(uint256 vaultId, uint256 amount) external payable- 向指定 Vault 捐赠资金
- 支持
ETH和ERC20代币
- 分配资金
function settle(uint256 vaultId, address claimer, uint256 amount) external- 管理员分配资金给指定接收者(
Claimer) - 可以多次分配
- 领取资金
function claim(uint256 vaultId) external- 接收者领取已分配的资金
- 提取资金
function withdraw(uint256 vaultId, uint256 amount) external- 创建者在锁定期后提取未分配资金
查询功能
- 查询已领取金额
function getClaimedAmount(uint256 vaultId, address claimer) external view returns (uint256)- 查询指定接收者已领取的金额(
claimedAmount)
- 查询最大可领取金额
function getMaxClaimableAmount(uint256 vaultId, address claimer) external view returns (uint256)- 查询指定接收者可领取的最大金额(
maxClaimableAmount)
管理功能
- 代币白名单管理
function addAllowedToken(address token) external
function removeAllowedToken(address token) external
function isAllowedToken(address token) external view returns (bool)- 紧急功能
function toggleEmergencyMode() external
function emergencyWithdraw(uint256 vaultId, uint256 amount) externalFLow
graph TD
A[User] -->|createVault| B(Create Vault)
B -->|Return vaultId| C[Vault Created]
D[Donor] -->|donate| E(Donate)
E -->|Update totalAmount| F[Funds Deposited]
G[Admin] -->|settle| H(Allocate Funds)
H -->|Set maxClaimableAmount| I[Funds Allocated]
J[Claimer] -->|claim| K(Request Claim)
K -->|Check maxClaimableAmount| L{Has Claimable Amount?}
L -->|Yes| M[Transfer to Claimer]
L -->|No| N[Claim Failed]
O[Creator] -->|After lockTime| P(withdraw)
P -->|Check lockTime| Q{Lock Period Expired?}
Q -->|Yes| R[Withdraw Funds]
Q -->|No| S[Withdraw Failed]
T[Admin] -->|Emergency| U(toggleEmergencyMode)
U -->|Enable Emergency Mode| V[Pause Operations]
V -->|emergencyWithdraw| W[Emergency Withdraw]
Events
VaultCreated: Vault 创建事件FundsDonated: 资金捐赠事件VaultSettled: 资金分配事件FundsClaimed: 资金领取事件FundsWithdrawn: 资金提取事件EmergencyModeToggled: 紧急模式切换事件
Errors
InvalidVaultId: 无效的 Vault IDEmergencyModeActive: 紧急模式已激活EmergencyModeNotActive: 紧急模式未激活InsufficientBalance: 余额不足InvalidClaimer: 无效的接收者地址NoFundsToClaim: 无可领取资金LockPeriodNotExpired: 锁定期未到ETHTransferFailed: ETH 转账失败ExceedsTotalAmount: 超出总金额
前端需求
官网sharing增加 wish list 页面, 让大家可以提出自己期望听到的
- 展示 wish list
- 创建 wish ,包含字段
- 期望的分享主题
- tag
- wish 创建者
- wish 点赞人员列表
- 奖励金额(细节待定)
- ...
- wish 详情页
- 主题
- tag
- 创建者
- 点赞列表
- 点赞按钮
- 认领按钮
- 管理wish list功能(修改,删除)
Metadata
Metadata
Labels
No labels
Type
Projects
Status
In Progress