
Autorin: Shew & amp;
Zusammenfassung
-
Die wichtigsten technischen Merkmale von Starknet, einschließlich der Kairo -Sprache, die dem ZK -Beweis förderlich ist.Native Level AA, Intelligentes Vertragsmodell der Geschäftslogik und Statusspeicher.
-
Cairo ist eine gemeinsame ZK -Sprache, die intelligente Verträge auf Starknet implementieren kann oder zur Entwicklung herkömmlicher Anwendungen verwendet werden kann.Die Einführung von Sierra als Zwischensprache in seinem Kompilierungsprozess ermöglicht es Kairo, häufig zu iterieren, aber es besteht keine Notwendigkeit, die untere Schicht von Bytecode zu ändern.In der Standardbibliothek von Kairo benötigen viele grundlegende Datenstrukturen, die für eine Kontoabstraktion erforderlich sindWesen
-
Starknet Smart Contracts Separate Geschäftslogik und Statusdaten.„Zusammenstellung, Erklärung, Einsatz“In der dritten Stufe wird die Geschäftslogik in der Vertragsklasse deklariert.
-
Das oben genannte intelligente Vertragsmodell von Starknet ist für die Code -Wiederverwendung, die Wiederverwendung von Vertragsstatus, die Speicherebenen und die Erkennung von Müllverträgen förderlich.Es ist auch der Verwirklichung des Speichersystems und der Transaktionsparallelisierung förderlich.Obwohl die beiden letztgenannten noch nicht gelandet sind, hat die Architektur des Kairo -Smart -Vertrags „notwendige Bedingungen“ dafür geschaffen.
-
In der Starknet -Kette gibt es nur ein Smart Contract -Konto und es gibt kein EOA -Konto.Von Anfang an unterstützt es einheimische AA -Kontoabstraktion.Seine AA-Lösung absorbiert die Idee von ERC-4337 bis zu einem gewissen Grad und ermöglicht es den Benutzern, ein stark angepasstes Transaktionsverarbeitungsschema auszuwählen.Um potenzielle Angriffsszenen zu verhindern, hat Starknet viele Gegenmaßnahmen getroffen und wichtige Erkundungen für das AA -Ökosystem gemacht.
Nach Starknets ausstellenden Token ist Strk nach und nach zu einem der unverzichtbaren Elemente in den Augen von Ethereum -Beobachtern.Der Ethereum Layer2 -Stern, der für „Einzigartigkeit“ bekannt ist und „nicht auf Benutzererfahrung achten“ ist wie ein Einsiedler mit der Welt
Da es von den Benutzern zu ignoriert war und sogar öffentlich den „Electronic Brotgar“ -Kanal auf Discord eröffnete, wurde Starknet einmal von der MAO -Partei angegriffen. „Es scheint, dass nur UX- und Reichtumseffekte alles sind.Der Ausdruck „nicht als mein einziger Stolz“ in „Golden Pavilion Temple“ ist einfach ein Selbstporträt von Starknet.
Abgesehen von diesen trivialen Angelegenheiten beginnt es einfach vom „technischen Geschmack“ der Code -Geeks Die Köpfe einiger aller -Ketten -Spieleentwickler, Starknet und Kairo, sind alles in Web3, weder Solidität noch Bewegung sind vergleichbar.Heutzutage ist die größte Lücke zwischen „technischen Geeks“ und „Benutzer“ die größte Generationslücke eher auf die mangelnde Wahrnehmung von Starknet durch die Menschen.
Mit dem Interesse und der Erforschung der Blockchain -Technologie und dem Wert des Wertes von Starknet,Der Autor startet mit dem Smart Contract -Modell von Starknet und dem nativen AA, um seine technische Lösung und sein Mechanismus -Design für alle einfach zu klären.Während ich mehr Menschen die technischen Eigenschaften des Starknets zeigt, hoffe ich auch, dass die Leute diesen „nicht verständlichen einzigen Mann“ verstehen.
Minimalistische Wissenschaft von Cairro -Sprache
Im Folgenden werden wir uns darauf konzentrieren, das Smart -Vertragsmodell von Starknet und die Abstraktion nativer Konten zu diskutieren und zu erklären, wie Starknet native AA erreicht.Nach dem Lesen dieses Artikels kann jeder auch verstehen, warum die Hilfe verschiedener Brieftaschen in Starknet nicht gemischt werden kann.
Aber bevor Sie native Account Abstraktion einführen,Lassen Sie uns zunächst die ursprüngliche Kairo -Sprache von Starknet verstehen.Während der Entwicklung von Kairo erschien eine frühe Version namens Cairo0 sowie spätere moderne Versionen.Die allgemeine Grammatik der modernen Version von Kairo ähnelt Rost, was eigentlich eine gemeinsame ZK -Sprache ist.Neben dem Schreiben von intelligenten Verträgen auf Starknet kann es auch für die Entwicklung allgemeiner Anwendungen verwendet werden.
Zum Beispiel können wir das ZK -Identitätsprüfungssystem in Kairo -Sprache entwickeln.Es kann gesagt werden, dass jedes Programm, das überprüft werden muss, in der Kairo -Sprache implementiert werden kann.UndKairo ist wahrscheinlich die Programmiersprache, die für die Erzeugung von ZK am besten förderlich ist.
Nach dem Kompilierungsprozess zu urteilen, verwendet Kairo die Kompilierungsmethode basierend auf der Zwischensprache, wie in der folgenden Abbildung gezeigt.Die Sierra in der Abbildung ist eine Zwischenform (IR) im Kairo -Sprachkompilierungsprozess, und Sierra wird in ein zugrunde liegenderes Binärcodeform mit dem Namen Casm zusammengestellt, das direkt mit dem Starknet -Knotenausrüstung betrieben wird.
Stellen Sie Sierra als Zwischenform ein, die für die Kairo -Sprache bequem ist, um die neuen Funktionen zu erhöhen.Dies spart viel Ärger, und der Knoten Client von Starknet muss nicht häufig aktualisiert werden.Auf diese Weise kann es häufige Iterationen der Kairo -Sprache erreichen, ohne die zugrunde liegende Logik des Starknet zu ändern.UndIn der Kairo -Standardbibliothek benötigen viele grundlegende Datenstrukturen, die für die Kontoabstraktion erforderlich sind.
Andere Innovationen in Kairo, einschließlich einer theoretischen Lösung namens Cairo Native Verbesserung der Codeausführungsgeschwindigkeit erheblich [sie befindet sich noch in der theoretischen Phase und wurde nicht gelandet].
Starknet Smart Contract Model: Codelogik und State Speicherstreifen
Im Gegensatz zu EVM und fähiger Kette hat Starknet bahnbrechende Innovationen in der Gestaltung intelligenter Vertragssysteme.Hier müssen wir das in der traditionellen öffentlichen Kette wie Ethereum wissen,Die Bereitstellung intelligenter Verträge folgt häufig der Methode „Post -Compilation Deployment“ und verwendet ETH -Smart -Verträge beispielsweise:
1. Nachdem der Entwickler den Smart -Vertrag lokal geschrieben hatte, erstellt der Entwickler das Soliditätsprogramm in den Byte -Code von EVM über den Editor, damit die EVM direkt verstanden und verarbeitet werden kann.
2. Entwickler initiieren eine Transaktionsanforderung, um intelligente Verträge für die Bereitstellung von kompilierten EVM -Bytecode auf der Ethereum -Kette bereitzustellen.
(Bildquelle: nicht-satoshi.com)
Obwohl der intelligente Vertrag von Starknet auch der Idee von „kompilieren und dann bereitstellen“ folgt, folgtIntelligente Verträge werden in der Kette in Form von Casm -Bytecode eingesetzt, die von Cairovm unterstützt werden.In Bezug auf den Anruf- und Statusspeichermodus von intelligenten Verträgen sind Starknet und EVM -kompatible Ketten jedoch enorm.
Präzise sein,Ethereum Smart Contract = Business Logic+Statusinformationen,Zum Beispiel implementieren USDT -Verträge nicht nur gemeinsame Funktionen wie Übertragung, Genehmigung usw., sondern speichern auch den Vermögensstatus aller USDT -Inhaber.Code und Status sind miteinander verbunden, was viel Ärger bringt. Last.
In dieser Hinsicht hat Starknet die Speichermethode des Staates verbessert.In seinem Smart Contract -Implementierungsplan sind die Geschäftslogik und der Vermögensstatus von DAPP vollständig entkoppelt und an verschiedenen Orten gespeichert.Die Vorteile davon sind zuerst offensichtlich.Das Prinzip hier ist:
Ethereums Smart Contract = Business Logic+Statusdaten,Wenn die Geschäftslogik mehrerer Verträge vollständig konsistent ist, die Statusdaten unterschiedlich sind, ist auch der Hash dieser Verträge unterschiedlich. Verträge „.
UndIn Starknets Schema werden die Code -Teil- und Statusdaten direkt getrennt.Weil ihr Hash der gleiche ist.Dies ist praktisch, um die Bereitstellung der doppelten Code zu stoppen und den Speicherplatz der Starknet -Knoten zu speichern.
Im Smart Contract System von Starknet werden die Bereitstellung und Verwendung des Vertrags in unterteilt in„Zusammenstellung, Erklärung, Einsatz“Drei Phasen.Wenn der Emittent des Vermögenswerts den Kairo -Vertrag bereitstellen möchte, besteht der erste Schritt darin, den geschriebenen Kairo -Code für Sierra und das zugrunde liegende Bytecode -Casm -Formular zu kompilieren.
Anschließend gibt der Vertragsanbieter eine Erklärung zur „Declare“ -Transaktion aus, den Casm -Bytecode des Vertrags und den Sierra -Intermediate -Code des Vertrags in der Kette einVertragsklasseWesen
(Bildquelle: Starknets offizielle Website)
Wenn Sie die im Asset -Vertrag definierte Funktionsfunktion verwenden möchten, können Sie eine „Bereitstellung“ -Transaktion über das vordere Ende des DAPP einleiten und eine bereitstellenVertragsinstanzDiese Instanz speichert den Status des Vermögens.Danach kann der Benutzer die Funktionsfunktion in der Vertragsklasse aufrufen, um den Status der Vertragsinstanz zu ändern.
Tatsächlich sollte jeder, der das von der Objekt orientierte Programmierung versteht, leicht verstehen, was die Klasse und die Instanz von Starknet darstellen.Die vom Entwickler deklarierte Vertragsklasse enthält nur die Geschäftslogik von intelligenten Verträgen
SollenNachdem der Benutzer eine bestimmte Vertragsinstanz bereitstellt, vervollständigt die Vermögenswerte die „Physikalisierung“.Wenn Sie den Status des Vermögenswerts „Entität“ ändern möchten, z. B. das Übertragen Ihres Tokens auf andere, können Sie die in der Vertragsklasse geschriebene Funktionsfunktion direkt aufrufen.Der obige Prozess ist in der traditionellen Programmiersprache etwas ähnlich (aber nicht vollständig konsistent).
Nachdem der intelligente Vertrag als Klasse und Instanzen getrennt ist, bringt die Dekoele für Geschäftslogik und Statusdaten die folgenden Funktionen mit:
1. Versäumnis bei der Speicherung von Schichten und der Verwirklichung des „Speicher -Lease -Systems“
Die sogenannte Speicherschichtung bedeutet, dass Entwickler Daten in einer individuellen Position entsprechend ihren eigenen Bedürfnissen wie der Starknet -Kette in eine individuelle Position bringen können.Starknet ist mit der DA -Schicht wie Celestia kompatibel, und DAPP -Entwickler können Daten in diesen dritten Teile -DA -Schichten speichern.Ein Spiel kann beispielsweise die wichtigsten Anlagendaten im Hauptnetz von Starknet speichern und andere Daten auf der DA -Schicht unter der Verbindung von Celestia speichern.Diese Lösung für die DA -Schicht entsprechend der Anpassung der Sicherheitsanforderungen wurde von Starknet als „Wesentliche“ bezeichnet.
Das sogenannte Speicher -Leasing -System bedeutet, dass jeder weiterhin den Speicherplatz bezahlen sollte, den er besetzt.Wie viel Platz für Sie für Sie nehmen, sollten Sie die Miete weiterhin bezahlen.
Im Smart-Vertragsmodell von Ethereum ist das Eigentum des Vertrags nicht klar, und es ist schwierig, den ERC-20-Vertrag zu unterscheiden, sollte vom Einsatz oder dem Vermögensinhaber zur Bezahlung „Miete“ bezahlt werden.Die Speichermietvertragsfunktion hat dem Einsatz nicht während der Vertragsbereitstellung eine Gebühr erhoben.
Im Rahmen der Smart Contract -Modelle von Starknet und Sui und CKB und Solana ist das Eigentum des Smart -Vertrags klarer, was für die Sammlung von Speicherfonds geeignet ist die Zukunft]
2. Erkennen Sie die reale Code -Wiederverwendung und verringern Sie den Einsatz von Müllverträgen
Wir können einen universellen Token -Vertrag als in der Kette gespeicherte Klasse deklarieren, und dann kann jeder die Funktion in dieser Klasse anrufen, um eine eigene Token -Instanz bereitzustellen.Und der Vertrag kann den Code auch direkt in der Klasse aufrufen, wodurch die Auswirkung der Bibliotheksfunktionsbibliothek ähnlich der Bibliotheksfunktionsbibliothek in Solidität erzielt wird.
Gleichzeitig dieses intelligente Vertragsmodell von Starknet,Hilft, den „Müllvertrag“ zu unterscheiden.Zuvor erklärte dies.Nach der Unterstützung der Code -Wiederverwendung und der Erkennung von Müllvertrag kann Starknet die Datenmenge in der Kette erheblich reduzieren und den Speicherdruck von Knoten so weit wie möglich minimieren.
3. Realer „Status“ des wirklichen Vertrags
Das Vertrags -Upgrade der Blockchain beinhaltet hauptsächlich Änderungen in der Geschäftslogik. Das Business Logic Upgrade ist nicht erforderlich, um den Vermögensstatus an einen neuen Ort zu migrieren.
Um die Geschäftslogik des Ethereum -Vertrags zu ändern, ist es häufig erforderlich, die Geschäftslogik in den Vertrag der Agentur zu „auslagern“
(Bildquelle: WTF Academy)
Wenn der alte Ethereum -Vertrag durchgehend abgebrochen wird, kann der Vermögensstatus im Inneren nicht direkt an einen neuen Ort migriert werden, der sehr problematisch ist. „Der alte Zustand. Staat.
4. Versagen bei der Transaktionsparallelisierung
Um den parallelen Grad verschiedener Transaktionsanweisungen so weit wie möglich zu erhöhen, muss der Vermögensstatus verschiedener Personen verteilt und gespeichert werden, die auf Bitcoin, CKB und SUI zu sehen sind.Die Voraussetzung für die oben genannten Ziele besteht darin, die Daten der Geschäftslogik und der Vermögensstatus von intelligenten Verträgen abzuziehen.Obwohl Starknet noch nicht in der technologischen Umsetzung paralleler Transaktionen durchgeführt wurde, wird es in Zukunft parallele Transaktionen als wichtiges Ziel dauern.
Starknets native AA- und Kontovertragsbereitstellung
Tatsächlich sind die sogenannten Account -Abstraktion und AA die einzigartigen Konzepte, die von der Ethereum -Community erfunden wurden. von Anfang an vermieden.Unter der Einstellung von Ethereum muss beispielsweise der EOA -Account Controller ETH in der Kette haben, um Transaktionen zu initiieren.Einige Leute denken sogar, dass die Gestaltung dieses Berichts in Ethereum einfach antimenschlich ist.
Wenn wir Starknet oder ZkSyncera usw. beobachten, usw.„Native AA“Die Kette kann den offensichtlichen Unterschied beobachten: Erstens,Starknet und ZkSyncera vereinen den Kontoentyp.(ZkSync ERA wird standardmäßig eine Reihe von Vertragscode auf dem neu erstellten Bericht des Benutzers bereitstellen, um die Merkmale des EOA -Kontos Ethereum zu simulieren, was für die Kompatibilität mit Metamask geeignet ist.)
Starknet betrachtet nicht direkt kompatibel mit Metamask und anderen Einrichtungen in der Nähe von Ethereum.Wenn Benutzer die Starknet -Brieftasche zum ersten Mal verwenden, werden sie automatisch ein dediziertes Vertragskonto bereitstellen.Diese Vertragsinstanz wird mit der von der Wallet Project Party im Voraus eingesetzten Vertragsklasse in Verbindung gebracht, die einige der in der Klasse geschriebenen Funktionen direkt aufrufen kann.
Im Folgenden werden wir über ein interessantes Thema sprechen:Bei der Erzielung des STRK -Airdrops stellen viele Menschen fest, dass Argent und die Brieftasche von Braavos nicht miteinander kompatibel sind.Nach dem Importieren von Argents Notizen in Braavos kann das entsprechende Konto nicht exportiert werden.Dies liegt tatsächlich daran, dass Argent und Bravos verschiedene Berechnungsmethoden für die Kontogenerierung verwenden.Die von denselben AIDS generierte Kontoadresse ist unterschiedlich.
In der Starknet kann die neu eingesetzte Vertragsadresse durch einen Sicherheitssalgorithmus verwendet werden.
Pedersen () In der obigen Formel ist ein Prozess, der im ZK -System einfach zu verwenden ist, um ein Konto zu erzeugen. Kontoadresse Essenz
Das obige Bild zeigt einige Parameter, wenn Starknet „neue Vertragsadresse“ generiert.
Salz ist der Salzwert der Vertragsadresse.Diese Variable besteht tatsächlich darin, die Vertragsadresse wiederholt einzuführen.Class_hash wird früher eingeführt und die Klassenhash -Werte, die der Vertragsinstanz entsprechen.Constructor_calldata_hash repräsentiert den Hash im Namen des Vertrags zur Initialisierung des Vertrags.
Basierend auf den oben genannten Formeln können Benutzer die generierte Vertragsadresse im Voraus vor der Vertragsbereitstellung in die Kette vorab kalkulieren.Mit Starknet können Benutzer Verträge ohne das Starknet -Konto im Voraus direkt bereitstellen.
1. Der Benutzer ermittelt zunächst die Vertragsinstanz, die er bereitstellen möchte, welche Vertragsklasse zugeordnet werden soll, und verwenden den Klassenhash als einen der Initialisierungsparameter und berechnen das Salz, um mehr über die Vertragsadresse des Vertrags zu erfahren.
2. Nachdem der Benutzer wusste, wo er den Vertrag bereitstellt, übertragen Sie zunächst die Adresse in eine bestimmte ETH -Menge als Vertragsbereitstellungsgebühr.Im Allgemeinen ist dieser Teil der ETH über die Kettenbrücke von L1 zum Starknet Network;
3. Der Benutzer initiiert eine Transaktionsanforderung für die Vertragsbereitstellung.
Genau genommen,Alle Starknet -Konten werden über den obigen Prozess bereitgestellt, aber die meisten Brieftaschen schützen die Details im Inneren.Es ist, als ob das Vertragskonto nach der Überweisung zur ETH bereitgestellt wird.
Die obige Lösung bringt einige Kompatibilitätsprobleme mit sich, da die resultierenden Ergebnisse nicht konsistent sind, wenn verschiedene Brieftaschen Kontoadressen generieren.Nur Brieftaschen, die die folgenden Bedingungen erfüllen, können gemischt werden:
-
Der von Brieftaschen verwendete private Schlüssel, der von Brieftaschen verwendet wird, entspricht dem Signaturalgorithmus.
-
Der Salzberechnungsprozess der Brieftasche ist der gleiche;
-
Die intelligente Vertragsklasse der Wallet unterscheidet sich in den Implementierungsdetails nicht grundlegend.
-
Ob die digitale Signatur der Transaktion korrekt ist.
-
Kann der Restbetrag des Transaktionsinitiators bezahlt werden?
-
Während der Einheitszeit kann die Anzahl der Transaktionsstifte in der Einheitszeit begrenzt werden.
-
Die benutzerdefinierte Signaturüberprüfungsfunktion im StarkNet -Kontovertrag hat eine Grenzen der Komplexität, und es wird eine über -komplizierte Unterschriftenfunktion nicht ausgeführt.Starknet begrenzt die Obergrenze des Gasverbrauchs der Unterzeichnungsfunktion.Gleichzeitig dürfen andere Verträge im Kontovertrag keine anderen Verträge im Kontovertrag anrufen.
-
Die erste Transaktion genehmigt das Token zum Defi -Vertrag
-
Die zweite Transaktion löst die Defi -Vertragslogik aus
-
Die dritte Transaktion ist berechtigt, den Defi -Vertrag zu genehmigen
-
Die wichtigsten technischen Merkmale von Starknet, einschließlich der Kairo -Sprache, der AA sowie der Geschäftslogik- und Staatspeicher -unabhängigen Smart Contract -Modelle, die ZK förderlich sind.
-
Kairo ist eine gemeinsame ZK -Sprache, die nicht nur intelligente Verträge auf Starknet implementieren oder traditionelle Anwendungen entwickelt. Schicht der Bytecode muss in die Standardsprache von Kairo übertragen werden.
-
Starknet Smart Contracts Separate Geschäftslogik und Statusdaten.
-
Das oberhalb von Starknet über ein maßgeschneiderte intelligentes Vertragsmodell ist für die Wiederverwendung, Wiederverwendung von Vertragsstatus, die Lagerung der Lagerung, die Erkennung von Müllverträgen und die Verwirklichung der Parallelisierung von Leasing und Transaktion förderlich.Obwohl die beiden letztgenannten noch nicht gelandet sind, hat die Architektur des Kairo -Smart -Vertrags „notwendige Bedingungen“ dafür geschaffen.
-
Es gibt nur ein intelligentes Vertragskonto in der Starknet -Kette und kein EOA -Konto.Seine AA-Lösung absorbiert die Idee von ERC-4337 bis zu einem gewissen Grad und ermöglicht es den Benutzern, ein stark angepasstes Transaktionsverarbeitungsschema auszuwählen.Um potenzielle Angriffsszenen zu verhindern, hat Starknet viele Gegenmaßnahmen getroffen und wichtige Erkundungen für das AA -Ökosystem gemacht.
In den vorherigen Fällen verwenden Argent und Braavos den ECDSA -Signaturalgorithmus, aber die Salzberechnungsmethode beider Seiten ist unterschiedlich.
Wir kehren zum Thema Kontoabstraktion zurück.Die Starknet und ZkSync -Ära erstellen eine Reihe von Prozessen, die am Transaktionsverarbeitungsprozess beteiligt sind, wie z. B. Authentifizierung (digitale Signatur der Verifizierung) und die Zahlung von Gasgebühren, die alle außerhalb des „Bodens der Kette“ verschoben werden.Benutzer können die Details der obigen Logik in ihrem Konto anpassen.
Beispielsweise können Sie eine digitierte Funktion Digital Signature -Überprüfung in Ihrem Starknet Smart Contract -Konto bereitstellen.Wenn der Starknet -Knoten die von Ihnen eingeleitete Transaktion empfängt, rufen Sie eine Reihe von Transaktionsverarbeitungslogik auf, die Sie auf dem Konto in der Kette angepasst haben.Dies ist offensichtlich flexibler.
In der Gestaltung von Ethereum wird die Logik wie Authentifizierung (digitale Signatur) im Knoten -Client -Code geschrieben und kann die Anpassung der Kontofunktionen nicht nativ unterstützen.
(Das vom Starknet Architect angegebene ursprüngliche AA -schematische Diagramm, die Transaktionsüberprüfung und die Bestätigung von Gas wurden in den Vertrag übertragen, um sie zu verarbeiten. Die zugrunde liegende virtuelle Maschine der Kette kann die benutzerdefinierte oder angegebene Funktion des Benutzers aufrufen.)
Nach Angaben des offiziellen Personals von ZkSyncera und Starknet wurde diese Reihe von Kontofunktionen modularisiert, und der EIP-4337 wird gelernt.Der Unterschied besteht jedoch darin, dass ZkSync und Starknet den Kontostyp von Anfang an zusammengeschlossen haben, den Handelstyp vereinigten und alle Transaktionen mit einem einheitlichen Eingang erhielten.Da Ethereum historische Belastungen hat und die Stiftung hofft, so weit wie möglich raue iterative Programme wie harte Gabeln zu vermeiden, unterstützt es die „Kurve, um das Land“ -Programm EIP-4337 zu vermeiden.Dieser Effekt ist jedoch, dass das EOA -Konto und die 4337 -Lösung jeweils einen unabhängigen Transaktionsverarbeitungsprozess anwenden, der im Gegensatz zum nativen AA -Geist umständlich und aufgebläht aussieht.
(Bildquelle: Argentwallet)
Die Abstraktion von Starknets nativem Konto hat jedoch noch keine vollständige Reife erreicht.Aus der Sicht des praktischen Fortschritts hat das AA -Konto von Starknet die Anpassung von Signaturüberprüfungsalgorithmen erkannt, aber für die Anpassung der Handhabungsgebühren unterstützt Starknet tatsächlich nur ETH- und STRK -Zahlungsgasgebühren und hat die dritte Zahlungsgas nicht unterstütztDer Fortschritt von Starknet zu nativem AA kann also gesagt werden„Die theoretische Lösung ist im Grunde genommen ausgereift, und die praktische Lösung geht immer noch vor.“
Da in Starknet nur ein Smart Contract -Konto vorhanden ist, berücksichtigt der gesamte Prozess seiner Transaktionen den Einfluss von Account -intelligenten Verträgen.Zunächst wird eine Transaktion vom Speicherpool des Starknet -Knotens (Mempool) akzeptiert, und die Überprüfungsschritte umfassen:
Es ist hier zu beachten, dass die Verwendung der benutzerdefinierten Signaturüberprüfungsfunktion im intelligenten Vertrag des Kontos bedeutet, dass ein Angriffsszenario vorhanden ist.Da der Speicherpool die Gasgebühr bei der Unterzeichnung der neuen Transaktionsüberprüfung nicht berechnet(Wenn Sie die Gasgebühr direkt berechnen, werden ernsthaftere Angriffsszenarien mit sich bringen.)Bösartige Benutzer können Super -Complicated Signing -Funktionen in ihrem Kontovertrag anpassen und dann eine große Anzahl von Transaktionen initiieren, damit diese Transaktionen überprüft werden, die benutzerdefinierte komplexe Signaturfunktion aufrufen.
Um diese Situation zu vermeiden, hat Starknet die folgenden Grenzen für Transaktionen:
Das Flussdiagramm der Starknet -Transaktion lautet wie folgt:
Es ist erwähnenswert,Um den Transaktionsprüfungsprozess weiter zu beschleunigen, implementiert der Starknet -Knoten -Client den Signaturüberprüfungsalgorithmus von Bravos und Argent -Brieftaschen direkt.Wenn der Knoten feststellt, dass die Transaktion die beiden Mainstream -Starknet -Brieftaschen erzeugt, wird der mit dem Client gelieferte Bravos/Argent -Signaturalgorithmus aufgerufen.
Nachdem die Transaktionsdaten vom Sortierer verifiziert wurden (die Überprüfungsschritte des Sortiers sind viel tiefer als die Überprüfung des Speicherpools), packt der Sortierer die Transaktion aus dem Speicherpool und übermittelt sie dem ZK, um den Generator zu beweisen.Die Transaktion, die in diesen Link eintritt, wird auch dann aufgeladen, wenn sie fehlschlägt.
Aber wenn der Leser die Geschichte von Starknet versteht,Sie werden feststellen, dass das frühe Starknet keine Handhabungsgebühr für die Transaktion erhebt, die nicht ausführt.Der häufigste Transaktionsfehler ist, dass Benutzer nur 1 ETH -Fonds haben, aber 10 ETH von außen übertragen werden.
Starknet wird jedoch in der Vergangenheit keine Gebühren für solche Fehlertransaktionen berechnen.Dieser kostenlose Handel verschwendet die Rechenressourcen des Starknet -Knotens, die die DDOS -Angriffsszene ableiten.An der Oberfläche scheint es, dass die Handhabungsgebühr für falsche Transaktionen sehr einfach zu erreichen scheint, aber tatsächlich ziemlich kompliziert ist.Starknet startete die neue Version der Kairo1 -Sprache, die größtenteils dazu dient, das Problem des Sammelns des Gass von Fehlertransaktionen zu lösen.
Wir alle wissen, dass ZK -Proof ein effektiver Beweis ist, und das Ergebnis, das nicht ausführt, ist ungültig und können die Ausgabeergebnisse in der Kette nicht hinterlassen.Versuchen Sie, es mit Wirksamkeit zu beweisen, um zu beweisen, dass die Ausführung eines bestimmten Anweisungen ungültig ist und das Ausgabeergebnis nicht generiert werden kann.Daher waren in der Vergangenheit, als das Starknet erzeugt wurde, die Ausfalltransaktionen, die die Ausgangsergebnisse nicht erzeugen konnten, direkt geplant.
Das Starknet -Team nahm später eine intelligentere Lösung ein,Eine neue Vertragssprache Cairo1 wird konstruiert, sodass „alle Transaktionsanweisungen Ausgabeergebnisse und Onchain generieren können“.Auf den ersten Blick können alle Transaktionen eine Ausgabe erzeugen, was bedeutet, dass es keinen logischen Fehler gibt, und die Transaktion ist meistens fehlschlägt, da auf einige Fehler stoßen, was dazu führt, dass die Anweisungsausführung unterbrochen wird.
Es ist schwierig, die uneingeschränkte Ausgabe der Transaktion zu erreichen, aber in der Tat gibt es eine sehr einfache Alternative, dass die Transaktion, wenn sie logische Fehler begegnet, aber zu diesem Zeitpunkt das Ausgabeergebnis erzeugen kann. Eine Rücksendung kehrt zu einer Rückgabe zurück.
Achten Sie jedoch darauf, geben Sie den falschen Wert zurück und geben Sie das Ausgabeergebnis zurück, dh,In Kairo1 kann das Ausgabeergebnis erzeugt und Onchain erzeugt werden, unabhängig davon, ob die Anweisung auf logische Fehler gestoßen ist oder ob ein temporärer Interrupt vorliegt.Dieses Ausgabeergebnis kann korrekte oder falsche Fehlerinformationen sein.
Für Exmple, wenn es das folgende Codesegment gibt:
Die _Balances :: Read (von) -Amount kann aufgrund des Überlaufs einen Fehler melden Schreiben Sie es für das folgende Formular um, ein Ausgangsergebnis wird weiterhin zurückgegeben, wenn die Transaktion ausfällt und die Kette verlässt.Aus der Perspektive der Wahrnehmung ist dies so, als ob alle Transaktionen die Handelsleistung in der Kette reibungslos belassen können, und es erscheint vernünftig, die Handhabungsgebühren zu sammeln.
Überblick über den Starknetaa -Vertrag
In Anbetracht der Tatsache, dass einige Leser in diesem Artikel möglicherweise einen Programmierhintergrund haben, wird die Schnittstelle des Kontoabstraktionsvertrags in Starknet kurz angezeigt:
Das __Validate_declare__ in der obigen Schnittstelle wird verwendet, um die vom Benutzer initiierte Deklar -Transaktion zu überprüfen, während __Validat__ zur Überprüfung allgemeiner Transaktionen verwendet wird.Wir können sehen, dass das Starknet -Vertragskonto Multical unterstützt, was standardmäßig mehrere Anrufe entspricht.Multi -Calling kann einige sehr interessante Funktionen erzielen, z. B. das Packen der folgenden drei Transaktionen bei der Durchführung einer Defi -Interaktion:
Da mehrere Anrufe atomar sind, gibt es natürlich eine kompliziertere Verwendung, z. B. die Durchführung bestimmter Arbitrage -Transaktionen.