A project for learning smart-contract-full-stack-whizz-bang-dApp-buidling using the incredible austintgriffith/scaffold-eth.
-
Price effect: like "staking", but without the inflation
- Raises the price by reducing amount in circulation 📥.
- Builds trust in the asset by proving an amount commited to be held 💍.
- Makes HODLing more attractive by providing a positive economic incentive 🤑.
-
Social proof / network effects: like "time lock", but with an incentive to participate
- Makes HODLing provable and shareable 🐦 .
- Increases trust in the community's / project team's long term commitment, provides a social incentive to demonstrate "skin in the game" 🙋♀️ .
-
Yield generating: like AMMs LP or lending, but without AMM's impermanent loss and doesn't depend on borrowing demand
- Vs. liquidity providing in AMMs: no dependence on trading volume, no exposure to additional assets, no bleeding value to arbitrageurs (
not-so""impermanent"" loss) 🩸. - Vs. lending: earns yield on tokens that don't have a borrowing market with high interest rates 🔄 (or any borrowing market).
- Vs. liquidity providing in AMMs: no dependence on trading volume, no exposure to additional assets, no bleeding value to arbitrageurs (
-
Volatility bonus: market volatility causes higher bonuses
- Asset price "moons" 🥳 - more "weak hands" will withdraw early to take profits, increasing the bonus 💸.
- Asset price "tanks" 😢 - more "weak hands" will withdraw early to panic-sell, increasing the bonus 💸.
-
So what tokens this should / shouldn't be used for?
- ✔️ Most tokens which don't have profitable AMM / staking / lending usage.
- ✔️✔️ Community driven tokens like meme-tokens.
- ✔️✔️✔️ Smaller (new) project tokens instead of time-lock mechanism .
- 👎 Stablecoins: they can be profitably and safely lended, or provided as liquidity in AMMs.
- 👎 Tokens which have very high trading volume but don't change in price much: they can be LPed in AMMs.
- 👎 Tokens which have profitable staking mechanisms: they can be staked for guaranteed yield.
-
v0 ✔️ (PoC)
- goal: 🚀 end-to-end bare skeleton first version deployed (to testnet).
- scope: fixed commitment params & bonus depends on ratio of current pool, only eth
- deliver ✔️ repo ✔️, tests + CI ✔️, basic UI ✔️, kovan testnet deployed & verified contract ✔️ and frontend (eth) ✔️
- stretch ✔️: erc20 support ✔️ (supporting a single token)
-
v1 ✔️ (alpha)
- goal: handle all tokens & ETH in one contract
- scope: any ERC20 token ✔️ (even fee-on-transder tokens ✔️), handle ETH as WETH ✔️, single contract for all tokens ✔️
- deliver: UI ✔️ frontend (ERC20 tokens / eth) ✔️, explanations ✔️, kovan testnet deployed & verified contract ✔️, some feedback ✔️
-
v2 ✔️ (alpha+)
- goal & scope: bonus depends on time held ✔️, flexible commitment params when depositting ✔️
- deliver: UI ✔️, frontend ✔️, kovan testnet deployed & verified contract ✔️
-
v3 ✔️ :
Basic V2 demo (Try it out):
System dependencies: Node & Yarn
- Install dependecies:
yarn install
- Start a local chain:
yarn chain
- In second terminal: deploy the contract to the chain -
yarn deploy
oryarn watch
- In third terminal: start the frontend react server
yarn start
- All tests:
yarn test
- Run some tests matching a pattern (in their description strings):
- Go to contracts package:
cd packages/hardhat
- Start a local chain:
yarn chain
- In second terminal: run e.g. "deployment" related tests -
yarn mocha -g deployment
- Go to contracts package:
In in packages/hardhat
:
- Gas report:
yarn gas-report
. It's saved topackages/hardhat/gasReportResults.txt
. - slither report:
- To install:
yarn install-slither
(this creates a python.venv
virtual environment withslither
) - To run:
yarn slither
. Report is saved topackages/hardhat/slitherReport.txt
.
- To install: