Wie funktioniert das Signieren mehrerer Personen?

Ich hatte einen DAO Smart Contract erstellt, bei dem etwa 20 Personen für Vorschläge stimmen. Sie machen jeweils neue Tx.

Das Offline-Signieren ist schön, um die Benzinkosten zu minimieren. Sie fragen sich, wie das Offline-Signieren mit Vertragsfunktionen funktioniert, auch wenn mehrere Personen unterschiedliche Stimmen unterzeichnen?

Ich habe gehört, dass mehrere Personen ihr Guthaben im Kanalstatus des Beleuchtungsnetzwerks signieren.

Antworten (2)

Sie verwenden das Signieren auf die gleiche Weise, als ob eine Person signieren würde. Jede Person muss die Transaktionskosten bezahlen, die für die Einreichung ihrer Unterschrift erforderlich sind. Sie könnten jedoch eine einzelne Funktion erstellen, die automatisch alle signierten Nachrichten etwas billiger analysiert, als wenn Sie eine neue Transaktion zum Analysieren jeder signierten Nachricht einreichen würden. Sie könnten möglicherweise so etwas wie Merkle Airdrops implementieren ( https://blog.ricmoo.com/merkle-air-drops-e6406945584d )

Es gibt ein paar Fallstricke, die mit der Überprüfung signierter Nachrichten einhergehen. Ich habe eine Reihe von Verträgen und ein Python-Unterzeichnerprogramm, die den zum Signieren von Nachrichten erforderlichen Arbeitsablauf demonstrieren:

Beim Signieren von Nachrichten werden ihnen die folgenden Daten vorangestellt: https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L12

Ich habe auch ein Python-Skript, das zum Signieren von Nachrichten verwendet werden kann: https://github.com/postables/Postables-Payment-Channel/blob/develop/python/signer.py

Die folgende Solidity-Funktion beschreibt, wie die signierte ORIGINAL- Nachricht zusammen mit dem Unterzeichner der signierten Nachricht überprüft wird : https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol# L257

Die folgende Solidity-Funktion beschreibt, wie der Unterzeichner einer Nachricht überprüft wird: https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L192

Sie sagten "für etwas billiger". Wie viel Gaskosten können anteilig mit dieser genannten Methode eingespart werden?
Den genauen Betrag konnte ich nicht berechnen, aber jede Transaktion, die Sie einreichen, muss ein Gas von 21000 enthalten, also würden Sie theoretisch 21.000 Gas für jede Transaktion sparen, die Sie nicht einreichen. Zugegeben, es wird nicht genau so funktionieren, aber Sie werden einiges sparen.

Ja, Sie können Personen offline unterschreiben lassen, alle Unterschriften zusammentragen und als Teil des Datenabschnitts einer einzelnen Transaktion senden und den Vertrag die Anzahl gültiger Unterschriften überprüfen lassen. Dies sollte Ihnen Benzin sparen und ermöglicht oft einen einfacheren Vertrag.

Sehen Sie sich dieses Beispiel einer Multisig-Wallet an, die so funktioniert: https://medium.com/@ChrisLundkvist/exploring-simpler-ethereum-multisig-contracts-b71020c19037

Denken Sie jedoch daran, dass jede von Ihnen hinzugefügte Signatur die Gaskosten der Transaktion erhöht, die sie sendet, und dass das Gesamtgas, das Sie in einer einzelnen Transaktion verwenden können, durch das Blockgaslimit begrenzt ist, das sich ändern kann. Wenn also die Anzahl der möglicherweise erforderlichen Unterschriften hoch oder unbegrenzt ist, müssen Sie den Vertrag möglicherweise trotzdem so schreiben, dass die Unterschriften auf mehrere Transaktionen aufgeteilt werden können.