第2课

Préoccupations de sécurité avec les agrégateurs de rendement

Le monde de la finance décentralisée (DeFi) est plein d'innovation, mais il pose également d'importants défis en matière de sécurité. Dans cette leçon, nous nous plongeons dans le domaine de la sécurité des agrégateurs de rendement, en mettant l'accent sur les exploits du monde réel et en proposant des stratégies exploitables pour protéger vos contrats contre des menaces similaires.

Exemples concrets de violations de sécurité

  1. Piratage de Yearn Finance (février 2021)
    • Incident : Le coffre-fort v1 DAI de Yearn Finance a perdu 11 millions de dollars en raison d'une attaque complexe et multi-transactions exploitant les stratégies du coffre-fort.
    • Leçon : Cela souligne la nécessité d'une compréhension et d'une mise à l'épreuve minutieuses de la façon dont les différents composants du contrat interagissent dans divers scénarios.
  2. Pickle Finance Hack (novembre 2020)
    • Incident : Un attaquant a exploité une faille du contrat intelligent de Pickle Finance, entraînant une perte de 20 millions de dollars.
    • Leçon : Cela souligne l'importance d'audits de code approfondis et de surveillance des interactions contractuelles inhabituelles.
  3. Piratage de BarnBridge (avril 2021)
    • Incident : Une vulnérabilité dans le contrat intelligent de BarnBridge a été exploitée, causant des pertes substantielles.
    • Leçon : met l’accent sur la nécessité d’une conception robuste des contrats intelligents et sur les risques associés aux instruments financiers complexes dans la DeFi.
  4. Piratage de ForceDAO (avril 2021)
    • Incident : Les attaquants ont exploité le contrat xFORCE de ForceDAO, ce qui leur a permis de retirer illégitimement des jetons.
    • Leçon : Révèle le besoin critique d'audits de sécurité complets et de tests rigoureux pour identifier et atténuer les vulnérabilités Gate.io.

Meilleures pratiques de sécurité et stratégies de codage :

1. Tests et audits complets :

  • Meilleure pratique : Effectuer régulièrement des tests approfondis et rechercher des audits externes.
  • Exemple de codage : Mise en œuvre de tests en Solidity pour vérifier les vulnérabilités courantes et garantir l'intégrité du contrat.
// Exemple de test pour vérifier les soldescontrat TestYieldAggregator {YieldAggregator agrégateur = nouveau YieldAggregator();fonction testInitialBalance() public {    uint attendu = 0;    assertEq(aggregator.getBalance(address(this)), attendu);}}

testInitialBalance() : cette fonction fait partie d’un contrat de test pour l’agrégateur de rendement. Il vérifie si le solde initial de l’agrégateur pour une adresse spécifique est conforme aux attentes (dans ce cas, zéro). Ceci est essentiel pour s’assurer que le contrat s’initialise correctement et maintient une comptabilité exacte.

2. Simplicité et Modularité :

  • Meilleure pratique : Concevoir des contrats simples et modulaires.
  • Exemple de codage : Structurer les contrats de manière à isoler les différentes fonctionnalités.
Modular Contract Designcontract InvestmentStrategy {// Logique de stratégie}contract YieldAggregator {// Intégration de différentes stratégiesfunction setStrategy(InvestmentStrategy _strategy) external { // Logique de définition de la stratégie}}

setStrategy(InvestmentStrategy _strategy): Dans le contrat du Yield Aggregator, cette fonction permet de changer la stratégie d'investissement. Elle accepte un contrat InvestmentStrategy en tant que paramètre, permettant à l'agrégateur de mettre à jour sa stratégie de manière modulaire. Cette conception améliore la maintenabilité et l'adaptabilité à différentes stratégies.

3. Disjoncteurs et verrous temporisés :

  • Meilleure pratique : Mettez en place des arrêts d'urgence et des mises à jour progressives.
  • Exemple de codage : Ajout de fonctionnalités pour mettre en pause les opérations de contrat et imposer des retards sur les fonctions critiques.
// Implémentation du disjoncteur de circuitcontrat YieldAggregator {bool public stopped = false;// Fonction d'arrêt d'urgencefunction stopContract() external {    stopped = true;}}// Implémentation de la serrure temporellecontrat Timelock {// Logique des restrictions basées sur le temps sur les fonctions}

stopContract(): Cette fonction est une partie cruciale du pattern du disjoncteur. Lorsqu'elle est exécutée, elle définit un indicateur booléen arrêté à vrai, indiquant que le contrat est dans un état d'arrêt d'urgence. Cela peut être utilisé pour temporairement interrompre certaines fonctionnalités dans le contrat en réponse à des anomalies ou des attaques détectées.

Le domaine des agrégateurs de rendement dans la DeFi est aussi difficile que gratifiant. Cette leçon souligne l’importance de la sécurité dans les agrégateurs de rendement, en soulignant la nécessité d’une approche globale et multicouche de la protection des actifs. Les exemples concrets nous rappellent les risques encourus, tandis que les meilleures pratiques et les exemples de codage offrent des stratégies concrètes pour améliorer la sécurité. Au fur et à mesure que nous progressons dans le développement d’agrégateurs de rendement, l’intégration de ces mesures de sécurité sera cruciale pour construire des systèmes résilients et dignes de confiance dans le paysage volatile de la DeFi.

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第2课

Préoccupations de sécurité avec les agrégateurs de rendement

Le monde de la finance décentralisée (DeFi) est plein d'innovation, mais il pose également d'importants défis en matière de sécurité. Dans cette leçon, nous nous plongeons dans le domaine de la sécurité des agrégateurs de rendement, en mettant l'accent sur les exploits du monde réel et en proposant des stratégies exploitables pour protéger vos contrats contre des menaces similaires.

Exemples concrets de violations de sécurité

  1. Piratage de Yearn Finance (février 2021)
    • Incident : Le coffre-fort v1 DAI de Yearn Finance a perdu 11 millions de dollars en raison d'une attaque complexe et multi-transactions exploitant les stratégies du coffre-fort.
    • Leçon : Cela souligne la nécessité d'une compréhension et d'une mise à l'épreuve minutieuses de la façon dont les différents composants du contrat interagissent dans divers scénarios.
  2. Pickle Finance Hack (novembre 2020)
    • Incident : Un attaquant a exploité une faille du contrat intelligent de Pickle Finance, entraînant une perte de 20 millions de dollars.
    • Leçon : Cela souligne l'importance d'audits de code approfondis et de surveillance des interactions contractuelles inhabituelles.
  3. Piratage de BarnBridge (avril 2021)
    • Incident : Une vulnérabilité dans le contrat intelligent de BarnBridge a été exploitée, causant des pertes substantielles.
    • Leçon : met l’accent sur la nécessité d’une conception robuste des contrats intelligents et sur les risques associés aux instruments financiers complexes dans la DeFi.
  4. Piratage de ForceDAO (avril 2021)
    • Incident : Les attaquants ont exploité le contrat xFORCE de ForceDAO, ce qui leur a permis de retirer illégitimement des jetons.
    • Leçon : Révèle le besoin critique d'audits de sécurité complets et de tests rigoureux pour identifier et atténuer les vulnérabilités Gate.io.

Meilleures pratiques de sécurité et stratégies de codage :

1. Tests et audits complets :

  • Meilleure pratique : Effectuer régulièrement des tests approfondis et rechercher des audits externes.
  • Exemple de codage : Mise en œuvre de tests en Solidity pour vérifier les vulnérabilités courantes et garantir l'intégrité du contrat.
// Exemple de test pour vérifier les soldescontrat TestYieldAggregator {YieldAggregator agrégateur = nouveau YieldAggregator();fonction testInitialBalance() public {    uint attendu = 0;    assertEq(aggregator.getBalance(address(this)), attendu);}}

testInitialBalance() : cette fonction fait partie d’un contrat de test pour l’agrégateur de rendement. Il vérifie si le solde initial de l’agrégateur pour une adresse spécifique est conforme aux attentes (dans ce cas, zéro). Ceci est essentiel pour s’assurer que le contrat s’initialise correctement et maintient une comptabilité exacte.

2. Simplicité et Modularité :

  • Meilleure pratique : Concevoir des contrats simples et modulaires.
  • Exemple de codage : Structurer les contrats de manière à isoler les différentes fonctionnalités.
Modular Contract Designcontract InvestmentStrategy {// Logique de stratégie}contract YieldAggregator {// Intégration de différentes stratégiesfunction setStrategy(InvestmentStrategy _strategy) external { // Logique de définition de la stratégie}}

setStrategy(InvestmentStrategy _strategy): Dans le contrat du Yield Aggregator, cette fonction permet de changer la stratégie d'investissement. Elle accepte un contrat InvestmentStrategy en tant que paramètre, permettant à l'agrégateur de mettre à jour sa stratégie de manière modulaire. Cette conception améliore la maintenabilité et l'adaptabilité à différentes stratégies.

3. Disjoncteurs et verrous temporisés :

  • Meilleure pratique : Mettez en place des arrêts d'urgence et des mises à jour progressives.
  • Exemple de codage : Ajout de fonctionnalités pour mettre en pause les opérations de contrat et imposer des retards sur les fonctions critiques.
// Implémentation du disjoncteur de circuitcontrat YieldAggregator {bool public stopped = false;// Fonction d'arrêt d'urgencefunction stopContract() external {    stopped = true;}}// Implémentation de la serrure temporellecontrat Timelock {// Logique des restrictions basées sur le temps sur les fonctions}

stopContract(): Cette fonction est une partie cruciale du pattern du disjoncteur. Lorsqu'elle est exécutée, elle définit un indicateur booléen arrêté à vrai, indiquant que le contrat est dans un état d'arrêt d'urgence. Cela peut être utilisé pour temporairement interrompre certaines fonctionnalités dans le contrat en réponse à des anomalies ou des attaques détectées.

Le domaine des agrégateurs de rendement dans la DeFi est aussi difficile que gratifiant. Cette leçon souligne l’importance de la sécurité dans les agrégateurs de rendement, en soulignant la nécessité d’une approche globale et multicouche de la protection des actifs. Les exemples concrets nous rappellent les risques encourus, tandis que les meilleures pratiques et les exemples de codage offrent des stratégies concrètes pour améliorer la sécurité. Au fur et à mesure que nous progressons dans le développement d’agrégateurs de rendement, l’intégration de ces mesures de sécurité sera cruciale pour construire des systèmes résilients et dignes de confiance dans le paysage volatile de la DeFi.

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。