Wie sollten zentrale Wallets mit Benutzerkonten umgehen?

Ich habe versucht, diese Frage aus einer zu verallgemeinern, die ich auf der BitcoinJ-Entwicklungsliste gestellt habe.

Ich arbeite an einem Projekt, das eine zentralisierte Brieftasche erfordert. Soweit ich weiß, verlassen sich diese Arten von Diensten im Allgemeinen auf einfache Kontostandsprüfungen, um sicherzustellen, dass ein einzelner Benutzer nicht mehr ausgibt, als in seiner Brieftasche ist. Das heißt, alle Benutzer teilen sich einen Pool von Schlüsseln, und das Einzige, was das Guthaben jedes Benutzers verfolgt, ist die Datenbank des Dienstes.

Der Bitcoin-Daemon stellt Funktionen bereit, die nicht in der GUI enthalten sind, nämlich die von Konten. Ein Konto ist eine Zeichenfolge, die Schlüssel gruppiert. Sie können von einem Konto aus senden, und es werden nur Münzen gesammelt, die den Schlüsseln in diesem Konto gehören. Dies ist vorteilhaft, aber ziemlich begrenzt. Wenn Sie dies jedoch verwenden, könnten Sie jedes Konto zu einer eindeutigen Kennung für einen Benutzer machen, und dieser Benutzer "besitzt" dann die zugehörigen Schlüssel. Ein scheinbarer Nachteil dabei ist, dass es einen zentralen Ort gibt, an dem Sie den Besitz eines Kontos ändern können.

Ich habe eine möglicherweise bessere Lösung gefunden. Jedes Konto „besitzt“ einen oder mehrere Public-Key-Hashes (das Fleisch einer Bitcoin-Adresse). Beim Erstellen einer Transaktion überträgt der Dienst diese Hashes und teilt der Brieftasche mit, dass beim Scannen nicht ausgegebener Ausgaben nur solche mit einem öffentlichen Schlüssel-Hash verwendet werden, der dem Benutzer gehört. Auf diese Weise können wir, ohne ein Benutzerkonto mit dem privaten Schlüssel selbst zu verknüpfen, dem Benutzer den exklusiven Zugriff auf eine beliebige Anzahl von Schlüsseln ermöglichen.

Scheint das eine gute Lösung für das Problem zu sein? Gibt es etwas Besseres, das ich vermisse?

Ihre Frage enthält eine falsche Annahme. Wenn Sie von einem Konto aus senden, legt dies lediglich fest, welches Konto belastet wird. Der Kunde betrachtet bestimmte Münzen nicht als Eigentum von Konten.

Antworten (1)

Auf diese Weise können wir, ohne ein Benutzerkonto mit dem privaten Schlüssel selbst zu verknüpfen, dem Benutzer den exklusiven Zugriff auf eine beliebige Anzahl von Schlüsseln ermöglichen.

Ein sehr bedeutender Vorteil, den Wallet-Dienste bieten können, ist die sofortige und unsichtbare Übertragung von Coins zwischen ihren Konten, indem sie einfach ihre internen Datenbanken aktualisieren, ohne die Blockchain zu durchlaufen. Auf diese Weise können Sie zum Beispiel den Handel auf MtGox erleichtern und es bietet auch mehr Anonymität, da Sie jetzt Transaktionen durchführen können, die in der Blockchain nicht sichtbar sind (und die sichtbaren Transaktionen sind Abhebungen und Einzahlungen in den Dienst als Ganzes). , und diese Adressen werden von vielen Benutzern geteilt, also auch effektiv anonymisiert). Offensichtlich wird dies nicht funktionieren, es sei denn, der Dienst kann alle Münzen in allen seinen Adressen nach Belieben intern "umverteilen". (Und natürlich funktioniert das auch nur, wenn jeder Kontoinhaber darauf vertraut, dass der Wallet-Service nicht alle Coins nimmt und davonläuft).

Jedes Konto „besitzt“ einen oder mehrere Public-Key-Hashes (das Fleisch einer Bitcoin-Adresse).

Eigentlich funktioniert das für Einzahlungen bereits mit Wallet-Diensten. Es gibt eine (oder mehrere) Empfangsadressen (manchmal zur einmaligen Verwendung, manchmal stabil und zur Veröffentlichung geeignet), die jedem Kontoinhaber zugeordnet sind. Sie zahlen auf das Konto mit dieser Adresse ein. Der private Schlüssel verbleibt jedoch beim Wallet-Service und kann von diesem für alle Arten von unabhängigen Zahlungen verwendet werden.

Exakt. Wenn man ein zentrales Wallet implementieren will, dann verwendet man ein zentrales Wallet und verwaltet die Kundensalden „out of band“. Das in der Frage erläuterte System scheint alle Nachteile einer zentralen Brieftasche und keinen der Vorteile zu haben.