Link:
This ERC extends the concept of EIP-7291: Purpose-Bound Money by introducing multi-condition unlocking for ERC20 tokens. It enables tokens to be purpose-bound to a recipient with programmable restrictions like:
- Time-based unlocking (e.g., after a specific timestamp)
- KYC or identity verification (e.g., Merkle-based proof)
- Use-case restrictions (e.g., only for specific smart contracts or spending categories)
- Arbitrary custom conditions (pluggable checkers)
Motivation
EIP-7291 introduced a valuable idea: restrict how a token can be spent (e.g., for aid, education, donations). However, real-world use cases often require multiple overlapping conditions, not just recipient enforcement.
Use cases that benefit from this proposal:
- Public disbursements: Tokens for subsidies, aid, or education that unlock only if time + KYC conditions are met.
- Enterprise payroll: Tokens that unlock at specific dates, only for verified employees.
- Governance/incentives: Tokens that can be claimed by voters after fulfilling DAO participation.
This ERC proposes a clean, modular extension to ERC20 that supports multiple conditions per transfer, each verifiable via on-chain checkers.
How It Works
- A
bindPurpose()function locks tokens for a recipient with an array ofUnlockConditions. - Each condition includes a
conditionType(e.g., “TIME”, “KYC”) and ABI-encodedconditionData. - A global registry maps each
conditionTypeto a condition checker contract. - The
claim()function verifies that all conditions are met before releasing the tokens.
Example:
Bind tokens to user with:
- A
TIMEcondition unlocking after Sept 1, 2024 - A
KYCcondition with Merkle proof of identity
Tokens are held by the contract until both are satisfied.