الدرس رقم 2

Approfondissement des exemples de contrats multisig

Dans cette leçon, nous allons explorer en profondeur les trois différentes structures de contrat multisig présentées dans la leçon 1 : le contrat Lambda, le contrat MultisigAction et le contrat MultisigView. Ces contrats sont essentiels à comprendre en raison du rôle critique qu'ils jouent dans le domaine de la blockchain et de la finance décentralisée. Notre exploration comprendra une déconstruction méticuleuse de leur code, un développement de leurs caractéristiques uniques et des discussions sur les applications pratiques et les cas d'utilisation.

Contrat Lambda Multisig

Le contrat lambda multisig constitue un progrès significatif dans la programmation des contrats intelligents en raison de son utilisation du type sp.lambda. Il introduit la possibilité d'exécuter des fonctions arbitraires qui ne sont pas prédéterminées au moment du déploiement du contrat. Voici un aperçu détaillé de ses principaux composants :

  1. Paramètres initiaux : Le contrat est initialisé(__init__) avec une liste de membres autorisés à proposer et à signer des propositions, et le nombre minimum de signatures requises pour exécuter une proposition. Ces données sont stockées dans la mémoire du contrat(self.data), la création d'un enregistrement de référence pour le contrat à exécuter.

  2. Fonction de proposition : La fonction de proposition permet de créer de nouvelles propositions. Les membres peuvent soumettre des fonctions lambda (comprenant des opérations arbitraires) qu'ils souhaitent voir exécutées par le contrat. Ces propositions sont stockées dans une structure de données big_map, chaque proposition se voyant attribuer un identifiant unique.

  3. Fonction de signature : La fonction de signature facilite l'approbation des propositions. Les membres peuvent signer pour soutenir les propositions. Ces signatures, associées à l'identifiant unique de la proposition, sont collectées et conservées dans une big_map distincte.

  4. Fonction d'exécution : La fonction d'exécution représente le cœur du fonctionnement du contrat. Si une proposition a recueilli le nombre requis de signatures, les membres peuvent invoquer cette fonction pour exécuter la fonction lambda proposée, en l'appliquant au stockage du contrat.
    Le contrat Lambda Multisig offre une grande polyvalence, adaptée aux scénarios nécessitant des structures de contrôle complexes, flexibles et potentiellement dynamiques, telles que les DAO (Decentralized Autonomous Organizations), les services de porte-monnaie à propriétaires multiples et les protocoles DeFi complexes.

Ce contrat nécessite l'exécution de fonctions lambda arbitraires avec des signatures multiples. Il introduit les concepts de soumission et de signature des fonctions lambda. Décortiquons ses fonctions :

  1. submit_lambda : Cette fonction permet aux membres de soumettre des fonctions lambda au contrat. Il s'agit essentiellement de proposer une opération contractuelle qui nécessite une approbation multi-signature. Dans le panneau de droite de l'IDE SmartPy, lors de la soumission réussie d'une fonction lambda, vous observerez une nouvelle transaction initiée par l'adresse de l'expéditeur vers l'adresse du contrat.

  2. vote_lambda : Cette fonction permet aux membres de voter (signatures) en faveur d'une fonction lambda soumise. Après le vote, dans le panneau IDE, vous remarquerez une nouvelle transaction de l'adresse du membre vers l'adresse du contrat.

Contrat MultisigAction

Le contrat MultisigAction introduit un mécanisme de vote démocratique dans le domaine des contrats intelligents. Dans ce modèle, les membres proposent des actions spécifiques, les votent et les exécutent lorsque le quorum est atteint. Ce contrat présente un mélange unique de consensus humain et d'exécution automatisée du contrat, ce qui permet d'exercer un contrôle démocratique sur le comportement du contrat.

Les principaux éléments de ce contrat sont les suivants

  1. Paramètres initiaux : Tout comme le contrat Lambda, le contrat MultisigAction prend une liste de membres et le nombre de votes requis lors de l'initialisation.

  2. Fonction de proposition d'action : Cette fonction permet d'ajouter de nouvelles propositions. Les membres peuvent soumettre des actions prédéfinies dans le contrat, en les associant à un identifiant unique. Les actions proposées sont stockées dans une big_map.

  3. Fonction Vote Action : Cette fonction permet de voter en faveur des actions proposées. Les votes sont associés à l'identifiant unique de la proposition et sont conservés dans un big_map distinct.

  4. Fonction d'exécution de l'action : Cette fonction entre en jeu lorsqu'une proposition a recueilli suffisamment de votes. Les députés peuvent appeler cette fonction pour exécuter l'action proposée.
    Le contrat MultisigAction est idéal pour les situations où un groupe d'individus doit parvenir à un consensus sur des actions contractuelles spécifiques, comme dans les DAO où les membres votent sur l'allocation des ressources ou les changements de protocole.

  5. soumettre_proposition : Il s'agit du processus de proposition d'une nouvelle action. Dans le contexte de notre exemple, un membre propose d'ajouter un nouveau signataire au contrat.

  6. Lorsque cette opération est effectuée sur l'IDE SmartPy, vous verrez une nouvelle transaction créée dans le panneau de droite de l'IDE. Le résumé de la transaction indiquera l'expéditeur (l'adresse du membre proposant) et le destinataire (l'adresse du contrat). Cela pourrait ressembler à ceci :

Ici, le statut "OK" indique que la proposition a été soumise avec succès.

  1. vote_proposition : L'étape suivante consiste à voter pour la proposition. Cette fonction permet aux signataires existants de voter sur la proposition soumise à l'étape précédente.

  2. Lorsque le signataire 1 vote en faveur de la proposition, vous verrez une nouvelle transaction, avec le signataire 1 comme expéditeur et le contrat comme destinataire. Une transaction similaire sera enregistrée lorsque le signataire 2 votera en faveur de la proposition :

Ces transactions indiquent que le signataire 1 et le signataire 2 ont bien voté pour la proposition.

Contrat MultisigView

Le contrat MultisigView reprend le concept de consensus démocratique mais l'applique à des octets arbitraires au lieu d'actions contractuelles prédéfinies. Ce contrat ouvre la voie à l'obtention d'un consensus sur des données représentées sous forme d'octets, sans pour autant conduire immédiatement à l'exécution d'une action.

Les principaux éléments de ce contrat sont les suivants :

  1. Paramètres initiaux : Comme pour les contrats précédents, le contrat MultisigView s'initialise avec une liste de membres et un nombre indiquant les votes requis.

  2. Fonction "Soumettre une proposition" : Cette fonction permet aux membres d'introduire de nouvelles propositions sous la forme d'octets arbitraires. Les octets sont stockés dans un big_map, indexé par les octets eux-mêmes, représentant un identifiant de proposition unique.

  3. Fonction "Vote de la proposition" : Cette fonction permet aux membres d'approuver les propositions. Les votes sont suivis dans une big_map séparée, liée à l'identifiant unique en octets de la proposition.

  4. Fonction Is Voted : Cette fonction, une vue de la chaîne, vérifie si une proposition a obtenu les votes requis. Il renvoie une valeur booléenne indiquant le statut de vote de la proposition.
    Le contrat MultisigView est particulièrement utile dans les cas où le contrat intelligent doit conserver un enregistrement des propositions approuvées, comme dans les applications cryptographiques où les octets peuvent représenter des accords hachés, des preuves ou toute autre forme de données nécessitant une approbation collective.

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.
الكتالوج
الدرس رقم 2

Approfondissement des exemples de contrats multisig

Dans cette leçon, nous allons explorer en profondeur les trois différentes structures de contrat multisig présentées dans la leçon 1 : le contrat Lambda, le contrat MultisigAction et le contrat MultisigView. Ces contrats sont essentiels à comprendre en raison du rôle critique qu'ils jouent dans le domaine de la blockchain et de la finance décentralisée. Notre exploration comprendra une déconstruction méticuleuse de leur code, un développement de leurs caractéristiques uniques et des discussions sur les applications pratiques et les cas d'utilisation.

Contrat Lambda Multisig

Le contrat lambda multisig constitue un progrès significatif dans la programmation des contrats intelligents en raison de son utilisation du type sp.lambda. Il introduit la possibilité d'exécuter des fonctions arbitraires qui ne sont pas prédéterminées au moment du déploiement du contrat. Voici un aperçu détaillé de ses principaux composants :

  1. Paramètres initiaux : Le contrat est initialisé(__init__) avec une liste de membres autorisés à proposer et à signer des propositions, et le nombre minimum de signatures requises pour exécuter une proposition. Ces données sont stockées dans la mémoire du contrat(self.data), la création d'un enregistrement de référence pour le contrat à exécuter.

  2. Fonction de proposition : La fonction de proposition permet de créer de nouvelles propositions. Les membres peuvent soumettre des fonctions lambda (comprenant des opérations arbitraires) qu'ils souhaitent voir exécutées par le contrat. Ces propositions sont stockées dans une structure de données big_map, chaque proposition se voyant attribuer un identifiant unique.

  3. Fonction de signature : La fonction de signature facilite l'approbation des propositions. Les membres peuvent signer pour soutenir les propositions. Ces signatures, associées à l'identifiant unique de la proposition, sont collectées et conservées dans une big_map distincte.

  4. Fonction d'exécution : La fonction d'exécution représente le cœur du fonctionnement du contrat. Si une proposition a recueilli le nombre requis de signatures, les membres peuvent invoquer cette fonction pour exécuter la fonction lambda proposée, en l'appliquant au stockage du contrat.
    Le contrat Lambda Multisig offre une grande polyvalence, adaptée aux scénarios nécessitant des structures de contrôle complexes, flexibles et potentiellement dynamiques, telles que les DAO (Decentralized Autonomous Organizations), les services de porte-monnaie à propriétaires multiples et les protocoles DeFi complexes.

Ce contrat nécessite l'exécution de fonctions lambda arbitraires avec des signatures multiples. Il introduit les concepts de soumission et de signature des fonctions lambda. Décortiquons ses fonctions :

  1. submit_lambda : Cette fonction permet aux membres de soumettre des fonctions lambda au contrat. Il s'agit essentiellement de proposer une opération contractuelle qui nécessite une approbation multi-signature. Dans le panneau de droite de l'IDE SmartPy, lors de la soumission réussie d'une fonction lambda, vous observerez une nouvelle transaction initiée par l'adresse de l'expéditeur vers l'adresse du contrat.

  2. vote_lambda : Cette fonction permet aux membres de voter (signatures) en faveur d'une fonction lambda soumise. Après le vote, dans le panneau IDE, vous remarquerez une nouvelle transaction de l'adresse du membre vers l'adresse du contrat.

Contrat MultisigAction

Le contrat MultisigAction introduit un mécanisme de vote démocratique dans le domaine des contrats intelligents. Dans ce modèle, les membres proposent des actions spécifiques, les votent et les exécutent lorsque le quorum est atteint. Ce contrat présente un mélange unique de consensus humain et d'exécution automatisée du contrat, ce qui permet d'exercer un contrôle démocratique sur le comportement du contrat.

Les principaux éléments de ce contrat sont les suivants

  1. Paramètres initiaux : Tout comme le contrat Lambda, le contrat MultisigAction prend une liste de membres et le nombre de votes requis lors de l'initialisation.

  2. Fonction de proposition d'action : Cette fonction permet d'ajouter de nouvelles propositions. Les membres peuvent soumettre des actions prédéfinies dans le contrat, en les associant à un identifiant unique. Les actions proposées sont stockées dans une big_map.

  3. Fonction Vote Action : Cette fonction permet de voter en faveur des actions proposées. Les votes sont associés à l'identifiant unique de la proposition et sont conservés dans un big_map distinct.

  4. Fonction d'exécution de l'action : Cette fonction entre en jeu lorsqu'une proposition a recueilli suffisamment de votes. Les députés peuvent appeler cette fonction pour exécuter l'action proposée.
    Le contrat MultisigAction est idéal pour les situations où un groupe d'individus doit parvenir à un consensus sur des actions contractuelles spécifiques, comme dans les DAO où les membres votent sur l'allocation des ressources ou les changements de protocole.

  5. soumettre_proposition : Il s'agit du processus de proposition d'une nouvelle action. Dans le contexte de notre exemple, un membre propose d'ajouter un nouveau signataire au contrat.

  6. Lorsque cette opération est effectuée sur l'IDE SmartPy, vous verrez une nouvelle transaction créée dans le panneau de droite de l'IDE. Le résumé de la transaction indiquera l'expéditeur (l'adresse du membre proposant) et le destinataire (l'adresse du contrat). Cela pourrait ressembler à ceci :

Ici, le statut "OK" indique que la proposition a été soumise avec succès.

  1. vote_proposition : L'étape suivante consiste à voter pour la proposition. Cette fonction permet aux signataires existants de voter sur la proposition soumise à l'étape précédente.

  2. Lorsque le signataire 1 vote en faveur de la proposition, vous verrez une nouvelle transaction, avec le signataire 1 comme expéditeur et le contrat comme destinataire. Une transaction similaire sera enregistrée lorsque le signataire 2 votera en faveur de la proposition :

Ces transactions indiquent que le signataire 1 et le signataire 2 ont bien voté pour la proposition.

Contrat MultisigView

Le contrat MultisigView reprend le concept de consensus démocratique mais l'applique à des octets arbitraires au lieu d'actions contractuelles prédéfinies. Ce contrat ouvre la voie à l'obtention d'un consensus sur des données représentées sous forme d'octets, sans pour autant conduire immédiatement à l'exécution d'une action.

Les principaux éléments de ce contrat sont les suivants :

  1. Paramètres initiaux : Comme pour les contrats précédents, le contrat MultisigView s'initialise avec une liste de membres et un nombre indiquant les votes requis.

  2. Fonction "Soumettre une proposition" : Cette fonction permet aux membres d'introduire de nouvelles propositions sous la forme d'octets arbitraires. Les octets sont stockés dans un big_map, indexé par les octets eux-mêmes, représentant un identifiant de proposition unique.

  3. Fonction "Vote de la proposition" : Cette fonction permet aux membres d'approuver les propositions. Les votes sont suivis dans une big_map séparée, liée à l'identifiant unique en octets de la proposition.

  4. Fonction Is Voted : Cette fonction, une vue de la chaîne, vérifie si une proposition a obtenu les votes requis. Il renvoie une valeur booléenne indiquant le statut de vote de la proposition.
    Le contrat MultisigView est particulièrement utile dans les cas où le contrat intelligent doit conserver un enregistrement des propositions approuvées, comme dans les applications cryptographiques où les octets peuvent représenter des accords hachés, des preuves ou toute autre forme de données nécessitant une approbation collective.

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.