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.
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:
Jeder Knoten, der zu seinem Kontoknoten führt.
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.
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.
Schrittmacher