This repository contains the smart contracts for the Oro (ORO) token on worldchain, a Sybil-resistant ERC20 token that uses World ID for proof of personhood. ORO can be claimed once a day by any user who has a valid World ID proof.
Oro is an ERC20 token with a unique minting mechanism that requires World ID verification, ensuring that tokens can only be minted by real human users. The contract implements a time-gated minting system where verified users can mint a fixed amount of tokens periodically.
- World ID Integration: Uses World ID for Sybil resistance and proof of personhood
- Time-Gated Minting: Configurable waiting period between mints for each user
- Fixed Mint Amount: Each successful mint yields a configurable amount of tokens
- Owner Controls: Authorized owner can adjust mint amounts and waiting periods
- Token Name: ORO
- Token Symbol: ORO
- Minting System:
- 1 ORO per mint
- Required wait time between mints is 24hrs
- Requires World ID verification proof
- Tracks mint history per nullifier hash
mint(uint256 root, uint256 nullifierHash, uint256[8] calldata proof)
: Mint new tokens with World ID verificationsetAmountPerMint(uint256 _amountPerMint)
: Update the amount of tokens per mint (owner only)setWaitBetweenMints(uint40 _waitBetweenMints)
: Update the required wait time between mints (owner only)
- Clone the repository:
git clone https://github.com/PartyDAO/oro-contracts
cd oro-contracts
- Install dependencies:
forge install
forge build
forge test
- OpenZeppelin Contracts (ERC20, Ownable)
- World ID Interface
- ByteHasher utility
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.
forge install