Lektion 2

Tauchen Sie tiefer in Multisig-Vertragsbeispiele ein

In dieser Lektion befassen wir uns eingehend mit den drei verschiedenen Multisig-Vertragsstrukturen, die in Lektion 1 eingeführt wurden: dem Lambda-Vertrag, dem MultisigAction-Vertrag und dem MultisigView-Vertrag. Aufgrund der entscheidenden Rolle, die sie im Bereich Blockchain und dezentrales Finanzwesen spielen, ist es von entscheidender Bedeutung, diese Verträge zu verstehen. Unsere Erkundung umfasst eine sorgfältige Dekonstruktion ihres Codes, eine Ausarbeitung ihrer einzigartigen Funktionen und Diskussionen über praktische Anwendungen und Anwendungsfälle.

Multisig-Lambda-Vertrag

Der Multisig-Lambda-Vertrag stellt aufgrund der Verwendung des Typs sp.lambda einen bedeutenden Fortschritt in der Smart-Contract-Programmierung dar. Es bietet die Möglichkeit, beliebige Funktionen auszuführen, die zum Zeitpunkt der Vertragsbereitstellung nicht vorab festgelegt sind. Hier finden Sie eine detaillierte Übersicht über die Hauptkomponenten:

  1. Anfangsparameter: Der Vertrag wird initialisiert (__init__) mit einer Liste der Mitglieder, die Vorschläge vorschlagen und unterzeichnen dürfen, sowie der Mindestanzahl erforderlicher Unterschriften zur Ausführung eines Vorschlags. Diese werden im Vertragsspeicher (self.data) gespeichert, Erstellen eines Referenzdatensatzes für die Vertragsausführung.

  2. Vorschlagsfunktion: Die propose dient der Erstellung neuer Vorschläge. Mitglieder können Lambda-Funktionen (bestehend aus beliebigen Operationen) einreichen, die der Vertrag ausführen soll. Diese Vorschläge werden in einer big_map Datenstruktur gespeichert, wobei jedem Vorschlag eine eindeutige Kennung zugewiesen wird.

  3. Zeichenfunktion: Die sign erleichtert die Befürwortung von Vorschlägen. Mitglieder können unterzeichnen, um Vorschläge zu unterstützen. Diese mit der eindeutigen Angebotskennung versehenen Signaturen werden in einer separaten big_map gesammelt und verwaltet.

  4. Ausführungsfunktion: Die execute stellt den Kern der Vertragsoperation dar. Wenn ein Vorschlag die erforderliche Anzahl an Signaturen gesammelt hat, können Mitglieder diese Funktion aufrufen, um die vorgeschlagene Lambda-Funktion auszuführen und sie auf den Vertragsspeicher anzuwenden.
    Der Multisig-Lambda-Vertrag bietet eine breite Vielseitigkeit und eignet sich für Szenarien, die komplexe, flexible und potenziell dynamische Kontrollstrukturen erfordern, wie z. B. DAOs (Decentralized Autonomous Organizations), Wallet-Dienste mit mehreren Eigentümern und komplexe DeFi-Protokolle.

Dieser Vertrag erfordert die Ausführung beliebiger Lambda-Funktionen mit mehreren Signaturen. Es stellt die Konzepte des Sendens und Signierens von Lambda-Funktionen vor. Lassen Sie uns seine Funktionen analysieren:

  1. submit_lambda: Mit dieser Funktion können Mitglieder Lambda-Funktionen an den Vertrag senden. Damit wird im Wesentlichen ein Vertragsvorgang vorgeschlagen, der eine Genehmigung mit mehreren Unterschriften erfordert. Im rechten Bereich der SmartPy-IDE sehen Sie nach erfolgreicher Übermittlung einer Lambda-Funktion eine neue Transaktion, die von der Absenderadresse an die Vertragsadresse initiiert wird.

  2. vote_lambda: Mit dieser Funktion können Mitglieder ihre Stimmen (Unterschriften) zugunsten einer eingereichten Lambda-Funktion abgeben. Nach der Abstimmung sehen Sie im IDE-Panel eine neue Transaktion von der Adresse des Mitglieds zur Vertragsadresse.

MultisigAction-Vertrag

Der MultisigAction-Vertrag führt einen demokratischen Abstimmungsmechanismus in den Bereich der Smart Contracts ein. Bei diesem Modell schlagen die Mitglieder bestimmte Maßnahmen vor, stimmen darüber ab und führen sie aus, sobald ein Quorum erreicht ist. Dieser Vertrag stellt eine einzigartige Mischung aus menschlichem Konsens und automatisierter Vertragsausführung dar und erzwingt eine demokratische Kontrolle über das Vertragsverhalten.

Die Kernbestandteile dieses Vertrages sind:

  1. Anfangsparameter: Genau wie im Lambda-Vertrag benötigt der MultisigAction-Vertrag während der Initialisierung eine Liste der Mitglieder und die Anzahl der erforderlichen Stimmen.

  2. Aktionsfunktion vorschlagen: Diese Funktion dient zum Hinzufügen neuer Vorschläge. Mitglieder können im Vertrag vordefinierte Aktionen einreichen und diese mit einer eindeutigen Kennung verknüpfen. Diese vorgeschlagenen Aktionen werden in einer big_map gespeichert.

  3. Aktionsfunktion abstimmen: Mit dieser Funktion können Sie für die vorgeschlagenen Aktionen stimmen. Die Stimmen sind mit der eindeutigen Kennung des Vorschlags verknüpft und werden in einer eindeutigen big_map gespeichert.

  4. Aktionsfunktion ausführen: Diese Funktion kommt ins Spiel, wenn ein Vorschlag genügend Stimmen erhalten hat. Mitglieder können diese Funktion aufrufen, um die vorgeschlagene Aktion auszuführen.
    Der MultisigAction-Vertrag eignet sich ideal für Situationen, in denen eine Gruppe von Einzelpersonen einen Konsens über bestimmte Vertragsaktionen erzielen muss, beispielsweise in DAOs, in denen Mitglieder über die Ressourcenzuteilung oder Protokolländerungen abstimmen.

  5. submit_proposal: Dies ist der Prozess des Vorschlagens einer neuen Aktion. In unserem Beispiel schlägt ein Mitglied vor, einen neuen Unterzeichner zum Vertrag hinzuzufügen.

  6. Wenn dieser Vorgang in der SmartPy-IDE ausgeführt wird, wird im rechten Bereich der IDE eine neue Transaktion erstellt. In der Transaktionszusammenfassung werden der Absender (die Adresse des vorschlagenden Mitglieds) und der Empfänger (die Vertragsadresse) angegeben. Es könnte etwa so aussehen:

Hier zeigt der Status „OK“, dass der Vorschlag erfolgreich eingereicht wurde.

  1. vote_proposal: Der nächste Schritt besteht darin, für den Vorschlag zu stimmen. Mit dieser Funktion können bestehende Unterzeichner über den im vorherigen Schritt eingereichten Vorschlag abstimmen.

  2. Wenn Unterzeichner 1 für den Vorschlag stimmt, sehen Sie eine neue Transaktion mit Unterzeichner 1 als Absender und dem Vertrag als Empfänger. Eine ähnliche Transaktion wird protokolliert, wenn Unterzeichner 2 für den Vorschlag stimmt:

Diese Transaktionen weisen darauf hin, dass sowohl Unterzeichner 1 als auch Unterzeichner 2 erfolgreich ihre Stimmen für den Vorschlag abgegeben haben.

MultisigView-Vertrag

Der MultisigView-Vertrag führt das demokratische Konsenskonzept weiter, wendet es jedoch auf beliebige Bytes anstelle vordefinierter Vertragsaktionen an. Dieser Vertrag eröffnet Möglichkeiten, einen Konsens über als Bytes dargestellte Daten zu erzielen, ohne dass sofort eine Aktion ausgeführt wird.

Die Hauptbausteine dieses Vertrages sind:

  1. Anfangsparameter: Wie bei den vorherigen Verträgen wird der MultisigView-Vertrag mit einer Liste der Mitglieder und einer Zahl initialisiert, die die erforderlichen Stimmen angibt.

  2. Funktion „Vorschlag einreichen“: Mit dieser Funktion können Mitglieder neue Vorschläge in Form von beliebigen Bytes einreichen. Die Bytes werden in einer big_map gespeichert, die durch die Bytes selbst indiziert wird und eine eindeutige Vorschlagskennung darstellt.

  3. Abstimmungsvorschlagsfunktion: Mit dieser Funktion können Mitglieder die Vorschläge unterstützen. Die Stimmen werden in einer separaten big_map verfolgt, die mit der eindeutigen Byte-ID des Vorschlags verknüpft ist.

  4. Is Voted-Funktion: Diese Funktion, eine On-Chain-Ansicht, prüft, ob ein Vorschlag die erforderlichen Stimmen erhalten hat. Es gibt einen booleschen Wert zurück, der den Abstimmungsstatus des Vorschlags angibt.
    Der MultisigView-Vertrag ist besonders nützlich in Fällen, in denen der Smart Contract eine Aufzeichnung genehmigter Vorschläge führen muss, beispielsweise in kryptografischen Anwendungen, in denen Bytes gehashte Vereinbarungen, Beweise oder jede andere Form von Daten darstellen könnten, die eine kollektive Genehmigung erfordern.

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.
Katalog
Lektion 2

Tauchen Sie tiefer in Multisig-Vertragsbeispiele ein

In dieser Lektion befassen wir uns eingehend mit den drei verschiedenen Multisig-Vertragsstrukturen, die in Lektion 1 eingeführt wurden: dem Lambda-Vertrag, dem MultisigAction-Vertrag und dem MultisigView-Vertrag. Aufgrund der entscheidenden Rolle, die sie im Bereich Blockchain und dezentrales Finanzwesen spielen, ist es von entscheidender Bedeutung, diese Verträge zu verstehen. Unsere Erkundung umfasst eine sorgfältige Dekonstruktion ihres Codes, eine Ausarbeitung ihrer einzigartigen Funktionen und Diskussionen über praktische Anwendungen und Anwendungsfälle.

Multisig-Lambda-Vertrag

Der Multisig-Lambda-Vertrag stellt aufgrund der Verwendung des Typs sp.lambda einen bedeutenden Fortschritt in der Smart-Contract-Programmierung dar. Es bietet die Möglichkeit, beliebige Funktionen auszuführen, die zum Zeitpunkt der Vertragsbereitstellung nicht vorab festgelegt sind. Hier finden Sie eine detaillierte Übersicht über die Hauptkomponenten:

  1. Anfangsparameter: Der Vertrag wird initialisiert (__init__) mit einer Liste der Mitglieder, die Vorschläge vorschlagen und unterzeichnen dürfen, sowie der Mindestanzahl erforderlicher Unterschriften zur Ausführung eines Vorschlags. Diese werden im Vertragsspeicher (self.data) gespeichert, Erstellen eines Referenzdatensatzes für die Vertragsausführung.

  2. Vorschlagsfunktion: Die propose dient der Erstellung neuer Vorschläge. Mitglieder können Lambda-Funktionen (bestehend aus beliebigen Operationen) einreichen, die der Vertrag ausführen soll. Diese Vorschläge werden in einer big_map Datenstruktur gespeichert, wobei jedem Vorschlag eine eindeutige Kennung zugewiesen wird.

  3. Zeichenfunktion: Die sign erleichtert die Befürwortung von Vorschlägen. Mitglieder können unterzeichnen, um Vorschläge zu unterstützen. Diese mit der eindeutigen Angebotskennung versehenen Signaturen werden in einer separaten big_map gesammelt und verwaltet.

  4. Ausführungsfunktion: Die execute stellt den Kern der Vertragsoperation dar. Wenn ein Vorschlag die erforderliche Anzahl an Signaturen gesammelt hat, können Mitglieder diese Funktion aufrufen, um die vorgeschlagene Lambda-Funktion auszuführen und sie auf den Vertragsspeicher anzuwenden.
    Der Multisig-Lambda-Vertrag bietet eine breite Vielseitigkeit und eignet sich für Szenarien, die komplexe, flexible und potenziell dynamische Kontrollstrukturen erfordern, wie z. B. DAOs (Decentralized Autonomous Organizations), Wallet-Dienste mit mehreren Eigentümern und komplexe DeFi-Protokolle.

Dieser Vertrag erfordert die Ausführung beliebiger Lambda-Funktionen mit mehreren Signaturen. Es stellt die Konzepte des Sendens und Signierens von Lambda-Funktionen vor. Lassen Sie uns seine Funktionen analysieren:

  1. submit_lambda: Mit dieser Funktion können Mitglieder Lambda-Funktionen an den Vertrag senden. Damit wird im Wesentlichen ein Vertragsvorgang vorgeschlagen, der eine Genehmigung mit mehreren Unterschriften erfordert. Im rechten Bereich der SmartPy-IDE sehen Sie nach erfolgreicher Übermittlung einer Lambda-Funktion eine neue Transaktion, die von der Absenderadresse an die Vertragsadresse initiiert wird.

  2. vote_lambda: Mit dieser Funktion können Mitglieder ihre Stimmen (Unterschriften) zugunsten einer eingereichten Lambda-Funktion abgeben. Nach der Abstimmung sehen Sie im IDE-Panel eine neue Transaktion von der Adresse des Mitglieds zur Vertragsadresse.

MultisigAction-Vertrag

Der MultisigAction-Vertrag führt einen demokratischen Abstimmungsmechanismus in den Bereich der Smart Contracts ein. Bei diesem Modell schlagen die Mitglieder bestimmte Maßnahmen vor, stimmen darüber ab und führen sie aus, sobald ein Quorum erreicht ist. Dieser Vertrag stellt eine einzigartige Mischung aus menschlichem Konsens und automatisierter Vertragsausführung dar und erzwingt eine demokratische Kontrolle über das Vertragsverhalten.

Die Kernbestandteile dieses Vertrages sind:

  1. Anfangsparameter: Genau wie im Lambda-Vertrag benötigt der MultisigAction-Vertrag während der Initialisierung eine Liste der Mitglieder und die Anzahl der erforderlichen Stimmen.

  2. Aktionsfunktion vorschlagen: Diese Funktion dient zum Hinzufügen neuer Vorschläge. Mitglieder können im Vertrag vordefinierte Aktionen einreichen und diese mit einer eindeutigen Kennung verknüpfen. Diese vorgeschlagenen Aktionen werden in einer big_map gespeichert.

  3. Aktionsfunktion abstimmen: Mit dieser Funktion können Sie für die vorgeschlagenen Aktionen stimmen. Die Stimmen sind mit der eindeutigen Kennung des Vorschlags verknüpft und werden in einer eindeutigen big_map gespeichert.

  4. Aktionsfunktion ausführen: Diese Funktion kommt ins Spiel, wenn ein Vorschlag genügend Stimmen erhalten hat. Mitglieder können diese Funktion aufrufen, um die vorgeschlagene Aktion auszuführen.
    Der MultisigAction-Vertrag eignet sich ideal für Situationen, in denen eine Gruppe von Einzelpersonen einen Konsens über bestimmte Vertragsaktionen erzielen muss, beispielsweise in DAOs, in denen Mitglieder über die Ressourcenzuteilung oder Protokolländerungen abstimmen.

  5. submit_proposal: Dies ist der Prozess des Vorschlagens einer neuen Aktion. In unserem Beispiel schlägt ein Mitglied vor, einen neuen Unterzeichner zum Vertrag hinzuzufügen.

  6. Wenn dieser Vorgang in der SmartPy-IDE ausgeführt wird, wird im rechten Bereich der IDE eine neue Transaktion erstellt. In der Transaktionszusammenfassung werden der Absender (die Adresse des vorschlagenden Mitglieds) und der Empfänger (die Vertragsadresse) angegeben. Es könnte etwa so aussehen:

Hier zeigt der Status „OK“, dass der Vorschlag erfolgreich eingereicht wurde.

  1. vote_proposal: Der nächste Schritt besteht darin, für den Vorschlag zu stimmen. Mit dieser Funktion können bestehende Unterzeichner über den im vorherigen Schritt eingereichten Vorschlag abstimmen.

  2. Wenn Unterzeichner 1 für den Vorschlag stimmt, sehen Sie eine neue Transaktion mit Unterzeichner 1 als Absender und dem Vertrag als Empfänger. Eine ähnliche Transaktion wird protokolliert, wenn Unterzeichner 2 für den Vorschlag stimmt:

Diese Transaktionen weisen darauf hin, dass sowohl Unterzeichner 1 als auch Unterzeichner 2 erfolgreich ihre Stimmen für den Vorschlag abgegeben haben.

MultisigView-Vertrag

Der MultisigView-Vertrag führt das demokratische Konsenskonzept weiter, wendet es jedoch auf beliebige Bytes anstelle vordefinierter Vertragsaktionen an. Dieser Vertrag eröffnet Möglichkeiten, einen Konsens über als Bytes dargestellte Daten zu erzielen, ohne dass sofort eine Aktion ausgeführt wird.

Die Hauptbausteine dieses Vertrages sind:

  1. Anfangsparameter: Wie bei den vorherigen Verträgen wird der MultisigView-Vertrag mit einer Liste der Mitglieder und einer Zahl initialisiert, die die erforderlichen Stimmen angibt.

  2. Funktion „Vorschlag einreichen“: Mit dieser Funktion können Mitglieder neue Vorschläge in Form von beliebigen Bytes einreichen. Die Bytes werden in einer big_map gespeichert, die durch die Bytes selbst indiziert wird und eine eindeutige Vorschlagskennung darstellt.

  3. Abstimmungsvorschlagsfunktion: Mit dieser Funktion können Mitglieder die Vorschläge unterstützen. Die Stimmen werden in einer separaten big_map verfolgt, die mit der eindeutigen Byte-ID des Vorschlags verknüpft ist.

  4. Is Voted-Funktion: Diese Funktion, eine On-Chain-Ansicht, prüft, ob ein Vorschlag die erforderlichen Stimmen erhalten hat. Es gibt einen booleschen Wert zurück, der den Abstimmungsstatus des Vorschlags angibt.
    Der MultisigView-Vertrag ist besonders nützlich in Fällen, in denen der Smart Contract eine Aufzeichnung genehmigter Vorschläge führen muss, beispielsweise in kryptografischen Anwendungen, in denen Bytes gehashte Vereinbarungen, Beweise oder jede andere Form von Daten darstellen könnten, die eine kollektive Genehmigung erfordern.

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.