🌏 NusaQuest is an impact-to-earn platform that powered by AI 🤖 and DAO 🧠 on Lisk Sepolia 🛰️ that rewards user for joining river cleanups across Indonesia 🇮🇩. Collect trash before it reaches the ocean 🌊, earn NUSA tokens 💰, and redeem them for NFT concert tickets 🎫. With KTP-based KYC 🪪🔍, NusaQuest bridges real-world action 🌱 with the power of Web3 🌐.
The smart contracts in this project are built using the OpenZeppelin Contracts library to ensure security, modularity, and upgradability.
| 🔧 Purpose | 📦 OpenZeppelin Module | 📄 Description |
|---|---|---|
| 🪙 Fungible Token (NUSA) | ERC20, ERC20Votes, ERC20Permit |
Fungible token with support for on-chain voting and off-chain approvals (via signatures) |
| 🗳️ DAO Governance | Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl |
Complete DAO module for proposals, voting, and secured execution via timelock |
| 🎟️ NFT Concert Tickets | ERC1155, ERC1155URIStorage, ERC1155Holder |
ERC-1155 NFTs serve as concert tickets, claimable by swapping NUSA earned from beach cleanups. |
| ⏳ Timelocked Execution | TimelockController |
Adds a delay to proposal execution for enhanced security and transparency |
| 🛡️ Security | ReentrancyGuard |
Protects critical functions from reentrancy attacks |
```
├── smart-contract/
│ ├── lib/ # External dependencies or libraries (via forge install)
│ ├── scripts/ # Deployment and automation scripts using Forge
│ ├── src/ # Main smart contract source files
│ │ └── lib/ # Contains reusable code like custom errors and event declarations
│ ├── test/ # Smart contract test files (e.g., unit tests)
│ ├── .env # Environment variables (e.g., RPC URL, private key)
│ ├── .gitignore # Git ignore rules
│ ├── .gitmodules # Tracks git submodules (e.g., external contracts/libs)
│ ├── Makefile # Automation commands for building, testing, and deploying
│ └── foundry.toml # Foundry configuration file (e.g., compiler version, optimizer)
```
This project uses Foundry and a custom Makefile for a smoother development experience.
Just run make <task> without remembering long commands!
If you haven’t installed Foundry yet:
curl -L https://foundry.paradigm.xyz | bash
foundryup> git clone https://github.com/NusaQuest/smart-contract
> cd smart-contract> make install> make build> make test> make deploy-verifyBefore running deploy or verification commands, make sure your .env file is properly set up in the root directory.
# 🔑 Private key of your deployer wallet (NEVER share this)
PRIVATE_KEY=your_private_key_here
# 🌐 RPC URL of the target network
RPC_URL=https://rpc.sepolia-api.lisk.com
# 🛡️ Set verifier type: "etherscan" or "blockscout"
VERIFIER=blockscout
# 🔗 Custom verifier URL (needed for blockscout)
VERIFIER_URL=https://sepolia-blockscout.lisk.com/api/- 🧑 Yobel Nathaniel Filipus :
- 🐙 Github : View Profile
- 💼 Linkedin : View Profile
- 📧 Email : yobelnathaniel12@gmail.com