Wie kann eine Bitcoin-Börse ihre Zahlungsfähigkeit unter Wahrung der Privatsphäre beweisen?

Welche Methoden kann eine Börsenwebsite anwenden, um nachzuweisen, dass sie tatsächlich über alle Bitcoins ihrer Benutzer verfügt?

Dies sind die Anforderungen:

  • Die Privatsphäre der Benutzer ist ein Muss. Niemand sollte in der Lage sein zu sagen, wie viele Bitcoins ein Konto hat (außer seinen eigenen).

  • Die Gesamtzahl der Konten sollte geheim gehalten werden.

  • Die Gesamtzahl der Bitcoins sollte (wenn möglich) geheim gehalten werden.

Ich bin auf das Transkript von gmaxwell gestoßen, aber es scheinen viele Kerndetails zu fehlen, und ich konnte es nicht wirklich in seiner Gesamtheit erfassen.

Siehe auch bifubao.com

Antworten (4)

Wir beginnen damit, dass der Austausch zwei Dinge hat. Es hat eine Reihe von Bitcoin-Adressen, die es besitzt, von denen jede ein gewisses Gleichgewicht hat. Es hat auch eine Reihe von Konten, denen es jeweils eine bestimmte Anzahl von Bitcoin schuldet. Das Ziel ist es zu beweisen, dass die Börse jede Bitcoin-Adresse auf dieser Liste kontrolliert und dass die Summe aller Kontoschulden geringer ist als der Gesamtsaldo aller Konten, ohne jemandes Saldo oder Gesamtsummen offenzulegen.

Dazu muss die Börse zunächst Konten zu Bitcoin-Adressen zuweisen, damit keine einzelne Adresse zu viel ausgegeben wird. Dies kann erfordern, dass Bitcoins bewegt werden. Jetzt stellt die Börse einen riesigen Merkle-Radix-Baum zusammen. Von der Wurzel sind innere Knoten, die durch die Bitcoin-Adresse indiziert sind, mit der sie verknüpft sind. Wenn Sie eine Bitcoin-Adresse erreichen, enthalten die Knoten Salden. Wenn also eine Adresse beispielsweise 10 Bitcoins enthält, haben die untergeordneten Knoten Salden, die sich auf nicht mehr als 10 summieren. Knoten außerhalb des Saldos sind Kontoknoten – diese halten die Person Benutzerkonten. Jeder Benutzerkontoknoten wird mit dem Schlüssel signiert, der der Bitcoin-Adresse entspricht.

Die Börse veröffentlicht nun den Hash der Spitze dieses Baumes. Jeder Benutzer, der den Austausch anfechten möchte, erhält Folgendes:

  1. Jeder Knoten, der zu seinem Kontoknoten führt.

  2. Jeder andere innere Knoten, der am Adressknoten hängt, hängt an seinem Kontoknoten.

Dies sagt ihnen keine Summen, da sie keine Adressknoten haben, außer dem, dem ihr Konto zugeordnet ist. Dadurch können sie nicht das Guthaben anderer sehen, da sie nur ihren eigenen Kontoknoten haben.

Sie können nun bestätigen, dass es eine echte Bitcoin-Adresse gibt, die von der Börse kontrolliert wird (weil ihr Kontoknoten mit diesem Schlüssel signiert ist) und dass ihnen ein Teil dieses Guthabens in Höhe ihrer Schulden eindeutig zugewiesen wurde.

Ich denke, es ist sinnvoller, sich auf den Nachweis von Cold-Storage-Fonds zu konzentrieren. Schließlich erwarten Sie, dass die Börse die Guthaben auf den Adressen, die den Benutzern gegeben wurden, an eine Cold-Storage-Adresse weiterleitet.
@AntonA. Nun, das ist sehr einfach. Die Börse kann einfach die Liste der Cold-Storage-Adressen bereitstellen, die sie verwendet, und diese Liste mit den Schlüsseln signieren, die jeder dieser Adressen entsprechen. Das Problem ist, sagen wir, eine Börse beweist, dass sie 11.000 BTC im Cold Storage haben, und sie beweisen das – woher weiß ich, dass sie ihren Kunden keine 83.000 BTC schulden?
WAHR. Etwa so: audit.btctrader.com. Aber diese Frage bleibt auch in Ihrem Ansatz, nicht wahr? Denn bei einem Austausch erwarten wir, dass sich die hinterlegten Bitcoins mit anderen vermischen. Die Guthaben auf Bitcoin-Adressen werden nicht an tatsächliche Benutzerguthaben gebunden.
@AntonA. Diese Frage bleibt nicht in meinem Ansatz. Es ermöglicht der Börse zu beweisen, dass sie wirklich einen bestimmten Geldbetrag hält und dass der Gesamtbetrag, den sie allen ihren Kunden schuldet, geringer ist. (Es unterstützt perfekt eine einzelne Adresse, die Gelder hält, die mehr als einem Kunden gehören.)
WAHR. Es sei denn, sie entscheiden sich für einen Kühlraum. Was halten Sie davon, Benutzerguthaben als zufällige Tabelle zu veröffentlichen und einzelnen Benutzern die Möglichkeit zu geben, ihre Guthaben auf dieser Tabelle mit der für ihr Guthaben generierten zufälligen Zeichenfolge zu überprüfen? Vielleicht können Sie das Gesamtguthaben eines einzelnen Benutzers in einer zufälligen Anzahl von Zeilen anzeigen. Wenn Sie diese Tabelle für jede Anzeige dynamisch machen, können Sie einige Datenschutzprobleme vermeiden.
@AntonA. Lesen Sie meine Antwort. Ich habe genau erklärt, wie das geht. (Ich weiß nicht, was Sie mit Cold Storage meinen. Der springende Punkt ist, zu beweisen, dass Sie über ausreichende Mittel im Cold Storage verfügen.)

Es war vielleicht noch nicht da, als Sie es gelesen haben, da ich es in letzter Zeit ergänzt habe, aber es gibt eine begleitende Seite mit hübschen Diagrammen, Implementierungen und Implementierungshinweisen, die wahrscheinlich klarer sein werden.

(Ich würde dies als Kommentar hinzufügen, habe aber nicht den Ruf.)

Das ist ziemlich spät, aber wir haben tatsächlich eine Arbeit zu genau diesem Thema geschrieben:

https://freedom-to-tinker.com/2015/10/26/provisions-how-bitcoin-exchanges-can-prove-their-solvency/

Bitcoin-Börsen können die Zahlungsfähigkeit nachweisen und gleichzeitig die Privatsphäre für sich und ihre Kunden wahren:

Tatsächlich werden weder die Guthaben der Kunden noch die Börsenadressen oder die Gesamtzahl der an der Börse gespeicherten Bitcoins offengelegt.

Ein binärer Baum wird zu einem bestimmten Zeitpunkt so konstruiert, dass die Konto-ID und der Kontostand jedes Benutzers in einem Blattknoten aufgezeichnet werden und jeder Elternknoten die Summe der Kontowerte seiner Kinder enthält, dann ist der Wurzelknoten die Summe Kontostand zu diesem Zeitpunkt.

Der Austausch hasht dann die Daten in jedem Blattknoten und berechnet für jeden übergeordneten Knoten den Hash der Verkettung von Hashes für seine Kinder (wie ein Merkel-Baum) und veröffentlicht schließlich den Merkel-Root-Hash.

Wenn ein Benutzer die Authentizität des Hashs in Frage stellen möchte, enthüllt der Austausch dem Benutzer dann alle Hashes und den Knotensaldo (aber nicht die Konto-IDs), die zu den Knoten auf dem Pfad des Binärbaums zwischen dem Stamm und dem gehören Blattknoten, der dem Konto des Benutzers zugeordnet ist, und die Hashes der unmittelbaren Geschwisterknoten, sodass der Benutzer anhand seines tatsächlichen Kontostands überprüfen kann, ob der Merkle-Hash tatsächlich korrekt berechnet wurde.

Meinen Sie damit, dass jedes Mal, wenn ich an der Börse handele (z. B. 30 BTCs kaufe/verkaufe), tatsächliche Bitcoin-Transaktionen auf der Blockchain durchgeführt werden müssen?
Nein. Das hat nichts mit der Blockchain zu tun. Der Nachweis der Zahlungsfähigkeit muss nur zwei Dinge gleichzeitig belegen (1) die Summe der Kundenkonten (die Verbindlichkeit der Börse) und (2) einen beträchtlichen Kühlraum (das Vermögen der Börse). Der Merkel-Baum löst (1) und eine signierte Nachricht, die durch die Cold-Storage-Adresse verifizierbar ist, löst (2).
Nein, ich versuche, nach einer Lösung zu suchen, bei der nicht die Gesamtzahl der Konten und Bitcoins in der Börse veröffentlicht werden muss. Mit anderen Worten, alle 50.000 Benutzer können selbst nachweisen, dass ihre Münzen in der Börse existieren, aber sie haben darüber hinaus keine anderen Informationen, da dies das absolute Minimum ist, das für die Prüfung erforderlich ist.