Innerhalb eines Vertrages Schlüssel einer Multisig-Wallet zuweisen?

Dies hängt tangential mit dieser Frage zusammen:
Kann ich einen Vertrag mit einem Keyholder für ein Multisig-Wallet abschließen?

Ist es möglich, eine Multisignatur-Wallet direkt aus einem Vertrag heraus einzurichten? Meine Intuition sagt nein, weil alle generierten privaten Schlüssel, die den Schlüsselinhabern zugewiesen werden sollen, auf der öffentlichen Kette sichtbar wären.

Wenn es möglich wäre, scheint die Grundidee äußerst nützlich für Verträge zu sein, die Crowdfunding erleichtern, oder für Situationen, in denen große Mengen an Ether dezentral verwaltet werden müssen, aber mit genügend Flexibilität, dass es unmöglich wäre, zu versuchen, jede mögliche zukünftige Verwendung der Ether durchzusetzen Mittel über explizite Verträge.

Soweit ich weiß, existiert derzeit nichts dergleichen in Solidity. Aber hat jemand eine Idee, wie man das umsetzen könnte? Ich dachte an etwas in der Art einer Funktion, die ein Schlüsselpaar generieren könnte, ohne den privaten Schlüssel im Vertragszustand zu speichern.

Ich nehme an, wenn Sie ein Schlüsselpaar mit Javascript generieren können, könnten Sie ein Orakel haben, das in einer Dapp auf ein Ereignis in der Blockchain lauscht. Dann könnten Sie eine Funktion aufrufen, die den öffentlichen Schlüssel als Argument akzeptiert und den öffentlichen Schlüssel im Vertragszustand speichert. Das wäre also eine mögliche Problemumgehung zum Generieren einer einzigen Adresse/Wallet. Aber das Generieren einer Multisig-Brieftasche erfordert das Senden privater Schlüssel an andere Knoten, und darin liegt der Haken.

Antworten (2)

Meiner Meinung nach kann ein leichter Paradigmenwechsel helfen. Verträge sind so konzipiert, dass sie auf bestimmte Weise verwendet werden können, die zunächst kontraintuitiv sind.

Sie können Subjektivität und menschliche Aufsicht sowie Flexibilität haben, indem Sie ein flexibles System von Vorschlägen und Abstimmungen erstellen . Die Vorschläge sind der flexible Teil. Zum Beispiel Vorschlag, „ 1 eth from: account with data: payload to address: receiver “ zu senden.

Die Abstimmung ist der deterministische Teil: Tun Sie dies nur/immer nach einer Mehrheitsabstimmung von einem Mindestquorum (zum Beispiel).

Möglicherweise stellen Sie fest, dass Sie wirklich einen Governance-Vertrag wünschen, der Gelder halten und flexibel Maßnahmen einleiten kann, die der Aufsicht durch/Genehmigung der Vorstandsmitglieder unterliegen.

Ich hoffe es hilft.

Es gibt zwei Arten von Konten auf Ethereum. Externally Owned Accounts (EOA), die über einen öffentlichen und privaten Schlüssel verfügen, und Vertragskonten. Vertragskonten benötigen keinen privaten Schlüssel, da ihr Code und Status zusammen als ihre Autorität fungieren.

Alle Konten auf Ethereum können Ether- oder sogar ERC20-Token besitzen. Wenn Sie einen Vertrag zum Signieren einer Transaktion auf der Blockchain wünschen, ist dies derzeit möglich, ohne dass ein privater Schlüssel für den Vertrag erforderlich ist.

Referenz: http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html

Mir ist bewusst, dass mein Vertrag seine eigenen Transaktionen signieren kann. Das Problem besteht darin, im Vertrag eine Multisig-Wallet für den späteren Geldtransfer zwischen nicht vertrauenswürdigen Parteien aufzubauen, ohne sich zu stark auf explizite Vertragslogik verlassen zu müssen.