Ce projet implémente un système de gestion d'options financières de type call spread à l'aide de NFTs sur la blockchain BNB. Les call spreads sont représentés par des NFTs et le paiement à maturité est calculé et distribué automatiquement via des smart contracts.
- Création d'options call spread avec dépôt de collatéral
- Représentation des options sous forme de NFTs
- Transfert de propriété des options via les NFTs
- Calcul automatique du pay-off à maturité
- Intégration avec Chainlink pour le prix de BTC/USD
- Automatisation de l'exercice des options à maturité via Chainlink Automation
Le projet comprend:
- Contrat
NFTCallSpread.sol: Gère la création, l'achat et l'exercice des call spreads - Contrat
NFTCallSpreadKeeper.sol: Contrat Chainlink Keeper pour automatiser l'exercice des options arrivées à maturité - Intégration avec Chainlink Price Feeds pour obtenir le prix de BTC/USD
- Scripts de déploiement et de configuration
- Node.js (v18+)
- npm ou yarn
- Compte sur le testnet BNB avec des BNB de test
- Métamask ou autre wallet Ethereum/BNB
- LINK tokens pour financer l'automatisation Chainlink (sur le testnet)
- Cloner le dépôt:
git clone https://github.com/votre-username/NFT_call_spread.git
cd NFT_call_spread
- Installer les dépendances:
npm install
- Configurer les variables d'environnement:
Créer un fichier
.envà la racine du projet avec les informations suivantes:
PRIVATE_KEY=your_private_key_here
BSCSCAN_API_KEY=your_bscscan_api_key_here
- Déployer le contrat principal sur le testnet BNB:
npm run deploy:testnet
- Déployer le contrat Keeper pour l'automatisation:
npm run deploy:keeper
- Enregistrer le contrat Keeper avec Chainlink Automation:
- Visiter https://automation.chain.link/bnb-testnet
- Suivre les instructions affichées à la fin du déploiement
Exécuter les tests:
npm test
Pour créer un call spread, l'utilisateur doit:
- Approuver le contrat pour utiliser ses stablecoins
- Appeler la fonction
createCallSpreadavec les paramètres:strikePrice1: Prix d'exercice inférieur (en USD, multiplié par 10^8)strikePrice2: Prix d'exercice supérieur (en USD, multiplié par 10^8)expiry: Timestamp d'expirationcollateralAmount: Montant de collatéral à déposertokenURI: URI des métadonnées pour le NFT
Pour acheter un call spread existant:
- Appeler la fonction
buyCallSpreadavec l'ID du token
L'exercice est automatisé avec le contrat Keeper Chainlink, mais peut également être fait manuellement:
- Appeler la fonction
exerciseCallSpreadavec l'ID du token après la date d'expiration
Le pay-off d'un call spread est calculé comme suit:
- Si le prix spot ≤ strike1: Pay-off = 0
- Si strike1 < prix spot < strike2: Pay-off = prix spot - strike1
- Si prix spot ≥ strike2: Pay-off = strike2 - strike1
Le contrat NFTCallSpreadKeeper recherche périodiquement les call spreads arrivés à maturité et les exerce automatiquement. Il utilise Chainlink Automation pour:
- Vérifier quels call spreads sont arrivés à maturité (
checkUpkeep) - Exercer ces call spreads par lots (
performUpkeep) - Gérer la distribution des paiements selon la formule de pay-off
MIT