Wie kann ich eine Multisignatur-Adresse auf Ethereum erstellen?

Ich möchte meinen Ether in einer Form speichern, die mehr als eine digitale Signatur erfordert, um Ausgaben zu autorisieren. Wie mache ich das auf Ethereum?

Antworten (3)

"Multisignature"-Adressen auf Ethereum unterscheiden sich von denen von Bitcoin. Obwohl beide Netzwerke beliebig komplexe Transaktionen zulassen, sind die Konzepte an sich nicht gleich:

Bei Bitcoin gibt es zwei Hauptklassen von Transaktionen:

  • pay to pubkey (Adressen beginnend mit "1")
  • pay to script hash (Adressen beginnend mit "3", auch bekannt als P2SH)

Ersteres ist das traditionellere kontobasierte System von Bitcoin, während letzteres eine BIP-Erweiterung war, die von Gavin Andresen geschrieben wurde , um komplexere Transaktionen zu ermöglichen. Im Wesentlichen ermöglicht P2SH die Verwendung eines beliebigen Skripts zum Erstellen einer Signatur, um einige Eingaben zu verbrauchen.

Im Gegensatz dazu gibt es bei Ethereum 2 Hauptklassen von Konten:

  • Konten in externem Besitz
  • Vertragskonten

Der Hauptunterschied zwischen diesen besteht darin, dass Vertragskonten Code enthalten, der die Blockchain ausführen und mit ihr interagieren kann. Da Ethereum „turing-complete“ ist, kann der Code alles sein, einschließlich einer Brieftasche vom Typ Multisignatur. Im Vergleich dazu hat Bitcoin eine eingeschränktere Skriptsprache, die einige Skriptfunktionen von Ethereum ermöglicht, aber nicht alle.

Vertrag ausführen

Hier ist zum Beispiel ein in Solidity geschriebener Wallet-Code , der kompiliert wird, um im Ethereum-Netzwerk als Vertragskonto ausgeführt zu werden. Es verfügt über verschiedene Funktionen, darunter die Unterstützung mehrerer Unterschriften (mit unbegrenzten Teilnehmern) und tägliche Auszahlungslimits, mit denen Sie kleine Beträge ausgeben können, für große Transaktionen jedoch mehrere Unterschriften benötigen. Diese Brieftasche läuft vollständig auf der Blochchain und ist in Mist (Ethereum DApp-Browser) mit einer einfach zu bedienenden HTML-Oberfläche verfügbar, die keine Programmierkenntnisse erfordert.

Multisignaturvertrag in Mist

Ich würde Ihnen empfehlen, die Betaversion von Ethereum Wallet hier herunterzuladen.

Geben Sie hier die Bildbeschreibung ein

Das Wallet bietet Ihnen eine einfache GUI, um einen Multi-Sig-Wallet-Vertrag zu erstellen.

Kürzlich habe ich an einem universellen Solidity Smart Contract für Multi-Signatur gearbeitet: https://github.com/bitclave/Multiownable

Sie können die Multi-Signatur-Funktionalität einfach an jeden Smart Contract senden, indem Sie Unterklassen von Methoden erstellen Multiownableund Modifikatoren hinzufügen onlyManyOwners, die Sie schützen möchten. Dies ist ein Beispiel für die einfachste Multisig-Wallet, die Sie sich vorstellen können:

contract SimplestMultiWallet is Multiownable {
    function transferTo(address to, uint256 amount) onlyManyOwners {
        to.transfer(amount);
    }
}

Technisch gesehen können Sie ein transferOwnershipArray von Adressen und eine mit Modifikator geschützte onlyManyOwnersMethode nur ausführen, wenn der letzte Besitzer diese Methode mit denselben Argumenten aufruft.