❤😈🎵
Pour réaliser cette expérience, il faut suivre les contraintes suivantes: (1)sans régulation bancaire, (2) un jeux à somme nulle, (3)incitation financière évidente, (4) anonyme, (5) 100% auditable
Voici une idée de projet pour motiver la consommation locale avec l’aide d’une subvention 100 % financée. Le principe en quelques mots. Il s’agit de créer une banque qui peut émettre des xCH🧀 dont la valeur est de 1:1 avec le CHF. Ces xCH🧀 pourront être utilisés dans tous les commerces physiques ou numériques de Suisse sans discrimination (à la seule condition qu’il faut un smartphone pour les utiliser). L’émission de xCH🧀 est toujours égale à la quantité de CHF disponibles dans la banque de sorte que 1 xCH🧀 égale bien 1 CHF. Pour avoir des CHF numériques (xCH🧀) on peut soit en recevoir soit en acheter. L’option d’achat est disponible à la condition suivante.
Pour produire des xCH🧀 il faut s'assurer qu'un montant équivant est déposé en CHF (n'importe quoi de tangible 💠, 🍫, 💵, 💶, ...). Pour cette raison, nous avons créé un compte d’épargne avec un taux d'intérêt incitatif d'au moins 3% par année. Le but ici est de fournir une source de subvention pour la création des xCH🧀
- Les utilisateurs sont invités à faire un dépôt épargne avec un taux d'intérêts incitatifs d'au moins 3% par année (intérêt payé en xCH🧀).
Pour acheter des xCH🧀 il faut assez de liquidité dans la banque. Si ce n'est pas le cas, l'achat est indisponible. Si c'est le cas, un montant de 100 xCH coûte seulement 80 chf pour le consommateur. Ce sont les dépôts d'épargne qui financent la dette de 20 chf. En contrepartie, pour chaque mouvement de xCH🧀 , une taxe de 0.3% est automatiquement prélevée et distribuée à la banque à destination des comptes d'épargne. Ce qui permet de satisfaire la règle du «jeu à somme nulle» de l’énoncé. Dans la réalité, la liquidité de xCH🧀 ne peut pas être utilisée pour produire de nouveaux xCHF🧀.
- Pour chaque achat de 100 xCH🧀 numérique, une dette 20 CHF est contractée sur les comptes épargnes.
- En contrepartie, pour chaque transaction, une taxe de 0.3% est automatiquement prélevée et distribuée à la banque à destination des comptes d'épargne.
- Pour un versement de 80 chf, l'utilisateur obtient 100 xCH🧀.
- L'achat de xCH🧀 est uniquement possible si l'épargne cumulée est suffisante.
- Pour chaque transaction de xCH (dans un commerce Suisse) une taxe de 0.3% plus 3 centimes est prélevée.
- Les épargnants placent de l'argent (ETH, ou autres équivalants) dans la banque sur un compte épargne.
- Cet argent est bloqué pour au minimum N mois (le retrait de l'argent dépend de la liquidité disponible moins la liquidité bloquée en dettes).
- Chaque compte épargne bénéficie d'un intérêt annuel de minimum 3% produit en xCH 🧀.
- La valeur précise de l'intérêt est un calcul sur le montant total collecté par la somme des transactions dans une période de temps fixe.
- L'intérêt est annuel, mais son actualisation est à la seconde.
- Les paramêtres de la banque (vélocité, taux d'intérêt, dette, etc.) sont définis par le vote.
- Les épargnants peuvent modifier par le vote les paramêtres techniques de la banque.
- Pour 100'000 CHF d'épargne, on peut offrir 500'000 chf de crédit
- Cycle de vie d'une unité de 100 chf,
- il faut ~550 mouvements de 100 chf pour être consommé complètement (<1 chf) par les 0.3% + 3 centimes.
- il faut ~77 mouvements de 100 chf pour rembourser complètement la dette.
- il faut ~87 mouvements de 100 chf pour rembourser et produire 3% sur le compte épargne.
- La durée de vie d'une unité de 100 chf, c'est le nombre de transactions nécessaires pour produire un minimum de 3% d'intérêt sur 12 mois (~87).
- On peut déterminer un taux d'intérêt sur le compte épargne en fonction de la vélocité de l'argent (calculée sur 12 mois). Il faut un volume de liquidité minimum pour garantir une vélocité relativement stable.
Note: cycle de vie d'une unité de 100 chf
f(tx) = 100 *(1 - 0.3%)^tx - tx*0.03
- Ce projet est une expérience ludique & éducative.
- Il manque toutes les bonnes pratiques de sécurité
- Il manque toutes les bonnes pratiques de programmation (migration, settings, ...) [TODO].
- Les paramètres de la banque sont hardcodés (pas de vote) [TODO]
- La conversion ETH/CHF est fixée à 1:2000 (il faudrait intégrer un oracle chf/usd/dai) [TODO].
- Les valeurs initiales (vélocité, taxe de 0.3% + 0.3chf et intérêt de 3%) sont arbitraires [TODO].
- On ne doit pas pouvoir réinjecter en épargne les xCH 🧀 achetés par la dette.
L'équilibre entre la dette, les retraits et le capital disponible, s'inspire de cette fonction
mkdir my-eth-project && cd my-eth-project
npm install --save-dev hardhat
git clone https://github.com/evaletolab/simple-bank
cd simple-bank
npm i
- install Metamsk extension
- create account based on mnemonic: "test test test test test test test test test test test junk"
- use localhost:8545 network with chainId 31337
npx hardhat
npx hardhat accounts
npx hardhat node &
npx hardhat run --network localhost scripts/deploy.js
- hardhat https://www.youtube.com/watch?v=GBc3lBrXEBo
- bank (deposit, borrow) https://www.youtube.com/watch?v=xWFba_9QYmc
- bank github project https://github.com/dappuniversity/dbank
- testing contracts https://github.com/nomiclabs/hardhat/blob/0b064c8eaa58975bf84e60b1058d296fccc3d9eb/docs/tutorial/testing-contracts.md
- forked test network https://dashboard.alchemyapi.io/signup/
- https://github.com/nomiclabs/hardhat-hackathon-boilerplate/blob/6a17aeca1675649b8e2aa6d2257cb29771793a09/frontend/src/components/Dapp.js#L208
- https://github.com/Web3Modal/web3modal
- https://github.com/symfoni/hardhat-react-boilerplate
- https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract
- https://github.com/EthWorks/Waffle
- new project https://blog.chain.link/using-chainlink-with-hardhat/
- https://blog.chain.link/fetch-current-crypto-price-data-solidity/
- use oracle chf/usd(dai) https://data.chain.link/chf-usd