Die neueste Beta-Version rund um @NewtonProtocol wird im Kreis nicht gerade wenig diskutiert, und ich habe mit kleinem Kapital die Prozesse von PolicyFactory und IdentityRegistry einmal praktisch durchlaufen. Vorweg das Fazit: Beim Thema „Sicherheit durch Vorverlagerung von Prüfungen vor der Transaktion“ liege ich richtig. Wenn man Identitäten schon vor der Abwicklung prüft und Risiken abfängt, kann man theoretisch viele On-Chain-Risiken an der Quelle blockieren – das ist tatsächlich eine spürbare Verbesserung der Sicherheit.
In der Praxis gibt es aber auch einige schmerzhafte Punkte.
Am meisten nervt die Prüf-Logik für die Sitzungs-Schlüssel (Session Keys). Vom Grundsatz her sollte es reichen, einen nicht registrierten Schlüssel zur Verifikation zu verwenden, worauf das System einfach sofort ablehnt. Tatsächlich ist es jedoch so, dass es still und heimlich alle zugehörigen IdentityRegistry-Instanzen der Reihe nach durchgeht, um eine passende Übereinstimmung zu finden. Dadurch wird eine eigentlich schnell fehlschlagende Transaktion zäh in die Länge gezogen – am Ende gibt es erst die Meldung „Transaktion fehlgeschlagen“. Gas wird dabei einfach verbrannt, und beim Debuggen sieht man stundenlang nicht, dass es eigentlich nur am nicht registrierten Schlüssel liegt. Das ist wirklich zermürbend.
Noch komplizierter ist das in Szenarien mit mehreren Registry-Instanzen. Zwischen den Instanzen gibt es keine automatische Synchronisierung. Wenn derselbe Schlüssel an mehreren Orten wirksam sein soll, muss man ihn bei jeder Instanz manuell registrieren – der zusätzliche Aufwand ist entsprechend enorm. Außerdem gibt es bei Abfragen über Instanzen hinweg keinen Cache, sodass der Gasverbrauch mit der Anzahl der Instanzen geradezu linear ansteigt. Als Gas-Token wird NEWT dabei zum unsichtbaren Kostentreiber für Berechtigungsaktionen. Für Projekte, die langfristig in großem Maßstab deployen wollen, ist der Druck, der sich über die Zeit aufbaut, nicht gerade gering.
Auch Dokumentation und Fehlermeldungen sind nicht benutzerfreundlich genug. Viele Details muss man erst durch eigenes Ausprobieren und „Hängenbleiben“ herausfinden, die Lernkurve ist steiler als erwartet.
Aber wie sagt man so schön: Alles hat zwei Seiten. Der Ansatz, Transaktionen vorzuprüfen, ist richtig. Wenn es gelingt, die oben genannten Probleme Schritt für Schritt sauber zu optimieren, bekommen Projekt-Nützlichkeit und Vertrauen einen echten Quantensprung. Ich persönlich bin auf längere Sicht orientiert: Wenn die Beta-Version die Abfrage-Logik sowie Dokumentation und Fehlermeldungen so weiter verfeinert, dass es sich deutlich leichter nutzen lässt, werde ich definitiv darüber nachdenken, mehr zu investieren. Denn wenn Sicherheit erst einmal gut gemacht ist, gibt es danach reichlich Chancen für die Weiterentwicklung des Ökosystems.
Aktuell beobachte ich die Iterationen weiterhin mit kleinem Kapital, die Kern-Position bleibt vorerst unverändert. Ich hoffe, das Team kann das Optimierungstempo beschleunigen. Wer ähnliche Praxiserfahrungen gemacht hat: Herzlich willkommen zum Austausch.
#Newt $NEWT
In der Praxis gibt es aber auch einige schmerzhafte Punkte.
Am meisten nervt die Prüf-Logik für die Sitzungs-Schlüssel (Session Keys). Vom Grundsatz her sollte es reichen, einen nicht registrierten Schlüssel zur Verifikation zu verwenden, worauf das System einfach sofort ablehnt. Tatsächlich ist es jedoch so, dass es still und heimlich alle zugehörigen IdentityRegistry-Instanzen der Reihe nach durchgeht, um eine passende Übereinstimmung zu finden. Dadurch wird eine eigentlich schnell fehlschlagende Transaktion zäh in die Länge gezogen – am Ende gibt es erst die Meldung „Transaktion fehlgeschlagen“. Gas wird dabei einfach verbrannt, und beim Debuggen sieht man stundenlang nicht, dass es eigentlich nur am nicht registrierten Schlüssel liegt. Das ist wirklich zermürbend.
Noch komplizierter ist das in Szenarien mit mehreren Registry-Instanzen. Zwischen den Instanzen gibt es keine automatische Synchronisierung. Wenn derselbe Schlüssel an mehreren Orten wirksam sein soll, muss man ihn bei jeder Instanz manuell registrieren – der zusätzliche Aufwand ist entsprechend enorm. Außerdem gibt es bei Abfragen über Instanzen hinweg keinen Cache, sodass der Gasverbrauch mit der Anzahl der Instanzen geradezu linear ansteigt. Als Gas-Token wird NEWT dabei zum unsichtbaren Kostentreiber für Berechtigungsaktionen. Für Projekte, die langfristig in großem Maßstab deployen wollen, ist der Druck, der sich über die Zeit aufbaut, nicht gerade gering.
Auch Dokumentation und Fehlermeldungen sind nicht benutzerfreundlich genug. Viele Details muss man erst durch eigenes Ausprobieren und „Hängenbleiben“ herausfinden, die Lernkurve ist steiler als erwartet.
Aber wie sagt man so schön: Alles hat zwei Seiten. Der Ansatz, Transaktionen vorzuprüfen, ist richtig. Wenn es gelingt, die oben genannten Probleme Schritt für Schritt sauber zu optimieren, bekommen Projekt-Nützlichkeit und Vertrauen einen echten Quantensprung. Ich persönlich bin auf längere Sicht orientiert: Wenn die Beta-Version die Abfrage-Logik sowie Dokumentation und Fehlermeldungen so weiter verfeinert, dass es sich deutlich leichter nutzen lässt, werde ich definitiv darüber nachdenken, mehr zu investieren. Denn wenn Sicherheit erst einmal gut gemacht ist, gibt es danach reichlich Chancen für die Weiterentwicklung des Ökosystems.
Aktuell beobachte ich die Iterationen weiterhin mit kleinem Kapital, die Kern-Position bleibt vorerst unverändert. Ich hoffe, das Team kann das Optimierungstempo beschleunigen. Wer ähnliche Praxiserfahrungen gemacht hat: Herzlich willkommen zum Austausch.
#Newt $NEWT