Bot-optimized RWA Vault smart contracts for Ethereum
| analytics | ||
| automation | ||
| contracts | ||
| docs | ||
| frontend | ||
| mint-assets | ||
| publishing | ||
| reference | ||
| scripts | ||
| subgraph | ||
| test | ||
| .env.deployer | ||
| .gitignore | ||
| ACTION_ITEMS.md | ||
| AUDIT_REPORT.md | ||
| DEFILLAMA_SETUP.md | ||
| DEPLOYMENT_SUMMARY.md | ||
| DUNE_SETUP.md | ||
| ENV_TEMPLATE.txt | ||
| GELATO_SETUP.md | ||
| hardhat.config.js | ||
| ORACLE_TESTING.md | ||
| package-lock.json | ||
| package.json | ||
| PRE_LAUNCH_CHECKLIST.md | ||
| README.md | ||
| ROADMAP.md | ||
| TENDERLY_SETUP.md | ||
| test-mint.js | ||
SKGentis RWA Vault - V3 Modular Platform
Real World Asset Tokenization on Ethereum
ZKP Compliance • Multi-Currency Deposits • Fractionalization • Oracle Rewards
🚀 Quick Start
Prerequisites
- Node.js 18+
- Hardhat
- MetaMask or compatible wallet
- ETH for gas
Installation
git clone https://github.com/smilinTux/skgentis-rwavault-contracts.git
cd skgentis-rwavault-contracts
npm install
cp ENV_TEMPLATE.txt .env
# Edit .env with your private key
Deploy to Sepolia (Testnet)
npx hardhat run scripts/deploy-v3.js --network sepolia
Deploy to Mainnet
npx hardhat run scripts/deploy-v3.js --network mainnet
📋 Contract Addresses
Mainnet (Ethereum)
| Contract | Address |
|---|---|
| SK_RWA_Core | 0x2b5C41E79b2ad581b7889FE5eDa8924EF5B77E48 |
| SK_RWA_Funding | 0xCaBd09716D07373ab79E219e9A5373504f10947e |
| SK_RWA_Rewards | 0x8A4a40e5a4A4C13176FcCB9FD9213a5e64e92aB7 |
| SK_RWA_Fractions | 0x427fC7A6D4266De276D22d90D0c1DE10D1CcfE14 |
Sepolia (Testnet)
| Contract | Address |
|---|---|
| SK_RWA_Core | 0x8A4a40e5a4A4C13176FcCB9FD9213a5e64e92aB7 |
| SK_RWA_Funding | 0x0ee0C30839bc1B8A56df948cB94C6e3083903723 |
| SK_RWA_Rewards | 0x1FC9667eeC7fAd9ae70244d80c118D57767ce1c5 |
| SK_RWA_Fractions | 0x64015260035a15AD191f657E4164a400C6a15959 |
🏗️ Architecture
┌─────────────────────────────────────────────────────────────────┐
│ SK_RWA V3 PLATFORM │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ SK_RWA_CORE │ │
│ │ • ERC721 NFT + ZKP Minting + Compliance │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────┼──────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ SK_RWA_FUNDING│ │ SK_RWA_REWARDS│ │SK_RWA_FRACTIONS│ │
│ │ ETH + Stable │ │ Oracle Claims │ │ ERC20 Shares │ │
│ │ Deposits │ │ Dividends │ │ Buyout │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Modules
| Contract | Purpose |
|---|---|
| SK_RWA_Core | ERC721 NFTs, ZKP minting (Controllers 51-53), compliance controls, royalties |
| SK_RWA_Funding | ETH/stablecoin deposits, Chainlink price feeds, milestone tracking |
| SK_RWA_Rewards | Oracle-signed rewards, dividend distribution |
| SK_RWA_Fractions | NFT fractionalization into ERC20, buyout mechanism |
✨ Features
NFT Minting
- ✅ Direct minting (owner)
- ✅ ZKP-verified minting (public)
- ✅ Batch minting
- ✅ IPFS metadata support
Compliance
- ✅ Account freezing
- ✅ Transfer whitelisting
- ✅ Token lockup periods
- ✅ EIP-2981 royalties (5%)
Funding
- ✅ ETH deposits
- ✅ USDC/USDT/DAI stablecoins
- ✅ Milestone tracking (25/50/75/100%)
- ✅ Early depositor bonuses
- ✅ Chainlink ETH/USD oracle
Rewards
- ✅ Oracle-signed milestone rewards
- ✅ Dividend distribution
- ✅ Multi-oracle support
Fractionalization
- ✅ Split NFT into ERC20 shares
- ✅ De-fractionalize with 100% ownership
- ✅ Buyout mechanism
📖 Documentation
- Architecture & Contracts
- Minting Workflows
- Funding Deposits
- Rewards & Dividends
- Fractionalization
- ZKP System
- Admin Operations
- Integration Guide
🔧 Usage Examples
Mint a Token (Owner)
const core = new ethers.Contract(CORE_ADDRESS, CORE_ABI, signer);
const tx = await core.mint(
recipientAddress,
100000, // $1000 in cents
"ipfs://QmXXXXXX"
);
Deposit ETH
const funding = new ethers.Contract(FUNDING_ADDRESS, FUNDING_ABI, signer);
await funding.deposit(tokenId, { value: ethers.parseEther("0.1") });
Check Progress
const progress = await funding.getFundingProgress(tokenId);
console.log(`Progress: ${progress / 10}%`);
Fractionalize NFT
const fractions = new ethers.Contract(FRACTIONS_ADDRESS, FRACTIONS_ABI, signer);
await core.approve(FRACTIONS_ADDRESS, tokenId);
await fractions.fractionalize(tokenId, "Asset Shares", "ASHR", 1000);
🧪 Testing
# Run all tests
npx hardhat test
# Run V3 specific tests
npx hardhat test test/v3/*.test.js
# Test with coverage
npx hardhat coverage
🔐 Security
- All contracts verified on Etherscan
- OpenZeppelin base contracts
- ReentrancyGuard on all state-changing functions
- Pausable for emergency stops
- Multi-sig treasury recommended
📜 License
MIT License - see LICENSE
🤝 Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
📞 Contact
- Website: skgentis.io
- Oracle API: https://skgentis-oracle-api.skstack01.gentistrust.com
- GitHub: smilinTux
© 2025 SKGentis - S&K Holding QT
SK = staycuriousANDkeepsmilin 🐧