Was meine Sicht auf Mitternacht verändert hat, war nicht der Datenschutzwinkel.
Es war die Erkenntnis, dass ein Mitternachts-Tausch nicht als ein abgeschlossener Handel beginnt. Er beginnt als eine Absicht, die möglicherweise den Transaktionsraum mit anderen Aktionen teilen muss, bevor er abgeschlossen ist. Der Geldfluss von Mitternacht macht das sichtbar, anstatt es zu verbergen. Der Tauschpfad hat einen separaten makeIntent-Schritt, und diese Absicht kann entweder mit einer gewählten Segment-ID oder einer zufälligen erstellt werden. Was bei mir geblieben ist, ist, warum intentId 1 überhaupt existiert. Sie existiert, damit die Zusammenführung von Transaktionen nicht dazu führt, dass Aktionen vor der erstellten Absicht in derselben Transaktion ausgeführt werden. Das ist kein technischer Fußnote. Das ist Sequenzdruck, der direkt im Tauschfluss sitzt.
Das ist die verborgene Last, über die ich nicht genug Leute reden sehe.
Viele Menschen stellen sich immer noch einen privaten Tausch als einen Benutzer vor, der ein Angebot macht, das zu einer Abwicklung wird. Mitternacht ist komplizierter als das, und genau das ist der Grund, warum es sich für mich echter anfühlt. Eine Partei kann einen unausgeglichenen Zweck erstellen. Eine andere Partei kann ihn später abschließen. Die Wallet muss dann die versiegelte Transaktion balancieren und das endgültige Ergebnis einreichen. Das eigene Tauschbeispiel von Mitternacht ist explizit über diese Form: Eine Seite erstellt einen Zweck mit NACHT auf der einen Seite und einem geschützten Token auf der anderen, dann schließt eine zweite Partei die Transaktion ab und reicht sie ein. Die eigentliche Belastung besteht also nicht nur darin, den Handel zu verbergen. Es geht darum, den Handel zu bewahren, während er durch Erstellung, spätere Vollendung, Balancierung und zusammengeführte Ausführung geht.

Das ist die Workflow-Szene, die verändert hat, wie ich Mitternacht lese.
Ich stelle mir nicht mehr vor, dass der Benutzer ein einfaches Angebot macht. Ich stelle mir vor, dass der Benutzer ein unvollendetes Segment erstellt, das noch einen Gegenpart braucht, noch balanciert werden muss und noch eine endgültige Einreichung benötigt. Dort hört der Tausch auf, atomar zu erscheinen. Die Wallet-API ist ungewöhnlich ehrlich darüber. makeIntent erstellt den unausgeglichenen Zweck. balanceSealedTransaction existiert, weil die endgültige Transaktion nach der Tatsache noch die richtigen Eingaben und Ausgaben benötigt. Und die Segment-ID ist wichtig, weil die zusammengeführte Ausführung andernfalls andere Aktionen vor dem erstellten Zweck anstellen kann. Das Sequenzierungsproblem ist also nicht abstrakt. Es lebt in dem genauen Pfad, den die Wallet verwendet, um einen Teilhandel daran zu hindern, in etwas umgeordnet zu werden, was der Benutzer nicht gemeint hat.
Der benutzerseitige Fehler ist auch konkreter, als es zunächst klingt.
Jemand denkt, er habe einen privaten Tausch gemacht. In Wirklichkeit hat er ein Teilsegment erstellt, das noch auf die Vollendung warten muss. Später fügt eine andere Partei die fehlende Seite hinzu. Dann balanciert die Wallet die versiegelte Transaktion. Dann wird die endgültige zusammengeführte Transaktion eingereicht. Wenn die Reihenfolge auf diesem Pfad nicht erhalten bleibt, existiert der Tausch weiterhin, fühlt sich aber nicht mehr wie die eine saubere Aktion an, mit der der Benutzer dachte, er hätte begonnen. Die erste sichtbare Kosten sind nicht, dass die Privatsphäre gescheitert ist. Die erste sichtbare Kosten sind, dass die Aktion aufgehört hat, einzigartig zu erscheinen. Der Benutzer dachte, er hätte einen Handel ausgedrückt. Was er tatsächlich eingegeben hat, war eine Sequenz, die die Platzierung überstehen musste.

Das ist der Ort, an dem @MidnightNetwork wichtiger für mich zu werden begann.
Mitternacht ist durch diese genaue Last wichtig, weil es nicht vorgibt, dass privater Austausch nur eine Abwicklung mit versteckten Etiketten ist. Es baut um die Tatsache herum, dass die Erstellung von Absichten, Vollendung, Balancierung und Anordnung separate Phasen des gleichen Handels sein können. Das macht das System schwieriger. Es macht es auch ehrlicher. Der schwierige Produktjob besteht nicht nur darin, die Transaktion zu schützen. Es besteht darin, diesen mehrstufigen Pfad atomar erscheinen zu lassen, selbst wenn die Wallet weiß, dass dies nicht der Fall ist.
Das ist auch der Ort, an dem $NIGHT für mich deutlicher geklickt hat.
Im eigenen Tauschfluss von Mitternacht ist NACHT nicht nur angrenzend zum System. Es ist ein Bein des unvollendeten Zwecks selbst. Das bedeutet, dass die NACHT-Seite erstellt wird, bevor der Handel abgeschlossen ist, und dann denselben Abschluss-, Balancierungs- und Anordnungspfad wie der Rest des Tausches durchläuft. Der Token ist also hier in einem breiten Ökosystem-Sinn nicht relevant. Er sitzt direkt innerhalb des gleichen Sequenzierungsrisikos wie der Zweck, zu dem er gehört.
Die Drucktestfrage, zu der ich immer wieder zurückkomme, ist einfach.
Kann @MidnightNetwork diese Last so unsichtbar machen, dass Benutzer niemals über Segment-IDs, partielle Vollendung, Balancierung oder was auch immer sich in der gleichen zusammengeführten Transaktion um ihren Handel herum befinden könnte, nachdenken müssen? Denn wenn nicht, werden die ersten sichtbaren Kosten des privatsphären-nativen Handels nicht die Exposition sein. Es wird sein, dass der Tausch aufhört, atomar zu erscheinen, bevor der Benutzer jemals zur Privatsphäre gelangt.
Was mir geblieben ist, ist dies.
In Mitternacht ist der schwierige Teil nicht nur, den Tausch zu verbergen.
Es sorgt dafür, dass ein unvollendeter Zweck die Vollendung, das Balancieren und die zusammengeführte Reihenfolge überlebt, ohne die Bedeutung zu verlieren, die er hatte, als der Benutzer ihn zuerst erstellt hat.
