https://github.com/refcell/faucet
fungibility-agnostic and gas-efficient token contracts for gamifying TVL
https://github.com/refcell/faucet
Last synced: 7 months ago
JSON representation
fungibility-agnostic and gas-efficient token contracts for gamifying TVL
- Host: GitHub
- URL: https://github.com/refcell/faucet
- Owner: refcell
- License: apache-2.0
- Created: 2021-02-13T08:12:34.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-02-27T05:54:02.000Z (almost 5 years ago)
- Last Synced: 2024-11-09T07:53:44.500Z (over 1 year ago)
- Language: TypeScript
- Size: 2.27 MB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog-template.hbs
- License: LICENSE
- Audit: audit-checklist.md
Awesome Lists containing this project
README
# Faucet



SDK Package [faucet-sdk](https://github.com/abigger87/faucet-sdk)
[](https://npmjs.org/package/faucet-sdk)
Fungibility-agnostic and gas-efficient token contracts for gamifying TVL.
Built on top of OpenZeppelin's ERC 1155 Implementation.
### How it works
The Faucet contract located in `contracts/Faucet.sol` is the base contract.
This is a Faucet that manages how Pool TVL-based NFT tokens are distributed to pool members.
Faucet has an Adapter (interface: `contracts/interfaces/IAdapter.sol` and implemented in `contracts/adapters/`)
that specifies how to interact with various pools.
So, Faucet is easily extensible by creating an adapter to manage the interaction between Faucet.sol and your pool.
### Structure
Base Contracts: `contracts/`
Adapters: `contracts/adapters/`
Interfaces: `contracts/interfaces/`
Various Abstract Parent Contracts: `contracts/abstracts/`
Tests: `tests/`
Hardhat Deployment: `tasks.ts`
NOTE: Scripts and Migrations are redundand
Migrations: `migrations/`
Scripts: `scripts/`
### Major Roadmap/TODO
- [x] Basic Tranche Implementation
- [x] Basic Tranche Tests
- [ ] Uri substitutions
- [ ] Token Redemptions
- Need to ensure tokens are transferred correctly
- Still needs more tests
- [x] Emergency Pausing
- Implemented with the Pausible functionality
- [ ] Liquidations
- [ ] Rug Pull Functionality
### Backlog
- [ ] Governing points
- [ ] Discord role points
- [ ] Private Pool Access
- [ ] Twitter shoutouts?
### Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
### License
[MIT](https://choosealicense.com/licenses/mit/)
### Noted Issues
`SyntaxError: Cannot use import statement outside a module`
Specifically for `hardhat.config.ts`
fix is to change tsconfig.json module to commonjs from usually "es5" or "es6"