Die Linie, die änderte, wie ich heute @MidnightNetwork las, ging nicht darum, etwas privat zu beweisen. Es ging um die Offenlegungsregel bezüglich Lesevorgängen, Entfernungen und Kontrollfluss in Compact.
Mein Anspruch ist ziemlich direkt: Bei Midnight kann die Datenschutzüberprüfung nicht bei "welche Daten on-chain geschrieben werden" aufhören. Sie muss auch "was der Vertrag offenlegen musste, nur um zu entscheiden, was zu tun ist" einbeziehen.
Der systematische Grund ist, dass das disclose()-Modell von Midnight strenger ist als der übliche Instinkt von Entwicklern. In Compact können einige Konstruktorargumente, exportierte Schaltkreisargumente, Verzweigungsbedingungen und sogar bestimmte Ledger-Lesevorgänge oder -entfernungen so beobachtbar werden, dass die Offenlegung das eigentliche Problem darstellt. Das ändert das mentale Modell. Ein Entwickler kann denken, dass er das Geheimnis bewahrt hat, weil er das Geheimnis nie öffentlich gespeichert hat, während die Vertragslogik bereits zu viel durch den Weg, den sie genommen hat, offengelegt hat. Der Wert bleibt verborgen. Die Entscheidungsspur jedoch nicht.
Deshalb denke ich, dass die Datenschutzreife von Midnight mehr von der Disziplin der Codeüberprüfung abhängen wird, als viele Menschen erwarten. Entwickler müssen nicht nur die Speicherung, sondern auch Lesevorgänge, Verzweigungen und das Verhalten gegenüber Transkripten überprüfen. Andernfalls kann ein Vertrag im lockeren Sinne "privat" sein und dennoch an den genauen Stellen, die der Entwickler als harmlos betrachtete, Bedeutung verlieren.
Meine Implikation ist einfach: Wenn Teams, die auf Midnight aufbauen, nicht lernen, disclose() als Designregel statt als Syntaxdetail zu behandeln, riskiert @midnightnetwork, Apps zu produzieren, die von außen datenschutzsicher erscheinen, während sie stillschweigend mehr lehren, als sie beabsichtigen. $NIGHT #night #night
