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?
"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:
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:
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.
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.
Ich würde Ihnen empfehlen, die Betaversion von Ethereum Wallet hier herunterzuladen.
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 Multiownable
und 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 transferOwnership
Array von Adressen und eine mit Modifikator geschützte onlyManyOwners
Methode nur ausführen, wenn der letzte Besitzer diese Methode mit denselben Argumenten aufruft.