Möchten Sie wissen, welcher Vertragsmechanismus auf AO angewendet wird? Schnappen wir uns also den Vertragscode und finden es heraus. Verwenden Sie ein Python-Applet, um den Vertrag des angegebenen Prozesses einfach abzurufen.
Autor: txohyeah
Rezensiert von: outprog
Quelle: Content Guild – News
Einführung in AO
Was ist AO?
Es ist weniger als ein halbes Jahr her, seit das AO-Testnetz veröffentlicht wurde, und es gibt viele Inhalte über AO. Der Inhalt dieses Artikels konzentriert sich hauptsächlich auf Prozesse und intelligente Verträge, einschließlich dessen, was AO ist, was Prozesse sind und wie sie funktionieren Zyklus des Prozesses. Abschließend konzentrieren wir uns auf die Anzeige des Vertragscodes von Process.
AO ist eine von Arweave weiterentwickelte Rechenfunktion, die auf der Verbesserung der verteilten Speicherung basiert. Sie zielt darauf ab, eine umfassende dezentrale Anwendungsunterstützung zu erreichen, die dem Entwicklungspfad der Berechnung zuerst und der Speicherung später von Ethereum entspricht. Vereinfacht ausgedrückt repräsentiert AO intelligente Verträge oder Rechenleistung auf der Arweave-Plattform und ist eine logische Ebenenerweiterung zusätzlich zu ihrer permanenten Speicherlösung.
AO besteht aus drei Einheiten, MU/SU/CU
MU: Empfängt von Benutzern gesendete Nachrichten, um sicherzustellen, dass sie signiert sind.
SU: Nachrichten mit einem Zeitstempel versehen und sortieren, dann bündeln und in Arweave veröffentlichen. SU ist auch der Protagonist, den wir heute verwenden werden, und wird bei der späteren Überprüfung des Vertrags eine wichtige Rolle spielen.
CU: Verarbeiten Sie die Nachricht und berechnen Sie das Ergebnis.
Welcher Prozess läuft auf AO?
AO ist im Wesentlichen ein Superparallelcomputer, der auf einem Datenprotokoll basiert, wobei Daten in Form des in AO definierten Grundelements „Nachricht“ vorliegen. Dann spielt der Prozess eine wichtige Rolle bei der Verarbeitung von Nachrichten und ist die Grundeinheit für die Verarbeitung von Nachrichten auf AO. Der Prozess läuft auf CU und kann als virtuelle Maschine auf CU betrachtet werden. Daher enthält Process die grundlegende Fähigkeit, Nachrichten innerhalb des Netzwerks zu empfangen und zu senden. Anschließend erstellen Entwickler Nachrichtenverarbeitungsfunktionen für Process, indem sie Handler zu Process hinzufügen. Der später zu besprechende Vertrag wird tatsächlich bereitgestellt, indem eine Nachricht an Process gesendet und dann der integrierte _eval-Handler verwendet wird. Der hinzugefügte Handler kann als Nachrichtenverarbeitungsfunktion des Vertrags verstanden werden.
Prozesslebenszyklus
Wenn wir eine Analogie in unserer aktuellen Welt finden wollen, dann denke ich, dass der Container (Container) in Docker ein guter Vergleich und ein gutes Verständnis für den Prozess sein kann. Als Nächstes werde ich die Lebenszyklusanalogie von Containern in Docker verwenden, um den Lebenszyklus von Prozessen zu vergleichen.
Wir alle wissen, dass die Erstellung eines Containers in Docker von einem Image (Image) abhängt. Erstellen Sie beispielsweise einen MySQL-Container basierend auf dem MySQL-Image, und dann können Sie den MySQL-Dienst für diesen Container aufrufen. Dasselbe gilt für Prozesse in AO. Die Erstellung von Prozessen hängt vom Modul ab, und es gibt auch Module mit unterschiedlichen Funktionen. Es gibt die einfachsten Module, Module, die geplante Aufgaben unterstützen, und Module, die SQLite enthalten. Derzeit stehen Entwicklern Hunderte von Modulen zur Auswahl, um ihren eigenen Prozess zu erstellen. Darüber hinaus können Sie auch Ihr eigenes benutzerdefiniertes Modul erstellen. Ich glaube, dass es in naher Zukunft auch Module geben wird, die GPUs unterstützen, und Module, die verschiedene KI-Funktionen unterstützen.
Der Prozess in AO unterscheidet sich auch vom Container in Docker. Container in Docker unterstützen verschiedene Aktionen wie Starten, Stoppen und Löschen. Derzeit gibt es im AO-Prozess keine derartigen Vorgänge. Schließlich sind diese von zentralisierten Personen gesteuerten Funktionen in der Welt der dezentralen Anwendungen sehr inkonsistent. Die Ausführung eines Prozesses in AO hängt vollständig vom Wert des Prozesses selbst ab. Wenn er ausreichend Wert hat, sind definitiv mehr CUs bereit, ihn auszuführen. Wenn ein Prozess hingegen keinen Wert hat, ist kein CU bereit, ihn auszuführen Dann wird dieser Prozess stillschweigend verschwinden.
Evaluierungsfunktion und AO-Vertragsbereitstellung
Was ist ein AO-Vertrag? Vergleichen Sie die Smart Contracts von Ethereum. Der Lua-Code in Process, der auf AO läuft, kann ungefähr als Smart Contract betrachtet werden.
Wenn wir einen Prozess erstellen, verfügt jedes geladene Modul über zwei Standardhandler (Handler können als Funktionen verstanden werden, die für andere Prozesse offen sind), von denen einer der _eval-Handler ist. Die Hauptfunktion dieses Handlers besteht darin, Lua-Code auszuführen. Wenn Sie beispielsweise 1+1 in aos eingeben, wird eine 2 zurückgegeben, die von diesem Handler verarbeitet wird. Dann bedeutet die Bereitstellung des Vertrags tatsächlich, eine Nachricht an den Prozess zu senden und einen benutzerdefinierten Handler hinzuzufügen, der die Geschäftslogik über den _eval-Handler für den Prozess verarbeiten kann.
Eines ist zu beachten: Bitte beachten Sie den folgenden Code. Dies ist der Codeabschnitt in process.lua im offiziellen Open-Source-AO-Projekt. Der _eval-Handler kann nur ausgeführt werden, wenn der Absender der Nachricht mit dem Eigentümer des Prozesses übereinstimmt (der Eigentümer ist die Wallet-Adresse, als der Vertrag erstellt wurde). Mit anderen Worten: Wenn der Eigentümer auf Null gesetzt ist (d. h. der Prozess ist so eingestellt, dass er keinen Eigentümer hat), wird der Vertrag in diesem Prozess zu einem Vertrag, den niemand ändern kann.
Da AO tatsächlich auf dem speicherbasierten Konsensparadigma (SCP, speicherbasiertes Konsensparadigma) basiert, muss der laufende Vertrag außerdem auf dem „Speicherkonsens“ basieren, d. h. auf allen im Prozess ausgeführten Nachrichten, einschließlich durch Der vom _eval-Handler bereitgestellte Vertragscode wird auf Arweave gespeichert. Daher kann jeder den Vertragscode auf diesem „Speicherkonsens“ finden.
Vertrag ansehen
Kommen wir nun zum heutigen Thema: Wie finde ich den Vertragscode? Im Folgenden werde ich die beiden Methoden vorstellen und ein Python-Programm zum Erfassen des Vertrags angeben.
Arweave
Die erste Methode besteht natürlich darin, direkt auf Arweave abzufragen (Sie können graphql https://arweave.net/graphql verwenden). Dieser Ansatz erfordert, dass die Daten in Arweave gepackt werden, um nützlich zu sein.
SU – Browser
Die zweite Methode ist die heute hauptsächlich eingeführte Methode. Da alle Daten über SU hochgeladen werden, können diese auch über SU abgefragt werden. Ich persönlich denke, dass jede SU über einen lokalen Cache der von ihr hochgeladenen Daten verfügt, sodass der entsprechende Vertragscode durch Abfragen der SU gefunden werden kann. Zunächst können Sie direkt durch Eingabe der Adresse im Browser abfragen. Allerdings liegen auch die Mängel dieser Methode auf der Hand: 1. Einige Prozesse senden und empfangen große Mengen an Nachrichten, sodass auch die in die Kette hochgeladene Datenmenge riesig ist. Allerdings ist die Datenmenge, die der Browser laden kann, begrenzt und es kommt häufig zu Browserabstürzen. 2. Es ist schwierig, aus der riesigen Datenmenge die gewünschten Vertragsdaten herauszufiltern.
Die folgende Abbildung zeigt alle Nachrichten des Prozesses (AO-Token-Prozess) mit der Prozess-ID m3PaWzK4PTG9lAaqYQPaPdOcXdO8hYqi5Fe9NWqXd0w innerhalb von zwei Zeitstempeln.
SU – SDK
Hier habe ich ein kleines Programm geschrieben, das ein auf Python basierendes Ao-SDK eines Branchenführers verwendet, um die Nachrichten herauszufiltern, deren Aktion Eval ist. (Nachrichten, deren Aktion Eval ist, sind alle Nachrichten, die vom _eval-Handler verarbeitet werden, einschließlich des geladenen Vertragscodes.) Das folgende Bild ist die Nachricht, die ich von SU abgerufen habe, in der der Inhalt des Datenfelds durch Zeichen maskiert ist. Ein Vertragscode. Natürlich enthalten die erfassten Nachrichten auch Inhalte, die nicht zur Bereitstellung von Vertragscodes gehören, z. B. die Ausführung von 1 + 1 usw. Allerdings ist die Anzahl der Nachrichten nach dem Filtern nicht mehr groß und der Vertragscode kann manuell ausgewählt werden.
Das Programm ist Open Source, hier ist die Github-Adresse: https://github.com/txohyeah/ao-sc
AO-Token-Vertrag
Lassen Sie uns also gespannt sein und einen Blick auf den Vertragscode des Ao-Tokens werfen. (Der erfasste Vertragscode wird auch im Open-Source-Code-Warehouse abgelegt)
Zunächst wird bei der Initialisierung des Status TotalSupply = „21000000000000000000“ so definiert, dass es mit der Ausgabe von Bitcoin übereinstimmt.
Denomination = Denomination oder 12 definiert auch den Dezimalpunkt als 12-stellig.
Es ist definiert, dass, wenn die Übertragungsfunktion ausgeführt wird, bevor 100.000 Blöcke generiert wurden, direkt „Übertragung ist gesperrt“ zurückgegeben wird.
Da alle fünf Minuten ein Block generiert wird, werden es etwa im Februar nächsten Jahres 100.000 Blöcke sein.
Es gibt relevantere Informationen, daher werde ich nicht auf Details eingehen. Jeder kann diesen klassischen AO-Vertrag gerne durchstöbern.
Programmanweisungen
Ich habe den oben erfassten Vertragscode vorgestellt. Als nächstes werde ich dieses Programm kurz vorstellen. Es ist sehr einfach. Ich glaube, dass Leute, die sich mit Code nicht auskennen, es problemlos verwenden können.
Der erste Schritt besteht darin, die Python-Version 3.12 zu installieren. Das Programm ist in Python geschrieben und eine Installation von Python ist erforderlich.
Der zweite Schritt besteht darin, die erforderlichen Pakete zu installieren. Dieses Programm basiert auf dem SDK von Branchenführern und everpay.
Der dritte Schritt besteht darin, start_time/end_time/process in fetch_sc_record.py zu ändern. und führen Sie fetch_sc_record.py aus.
start_time und end_time sind die Zeiträume, die Sie erfassen müssen. Prozess ist die ID des Prozesses, den Sie zum Erfassen des Vertrags benötigen.
Im vierten Schritt erscheint die entsprechende Eval-Nachricht in der Datei msg_eval.json. Durchsuchen Sie die Nachrichten und finden Sie den Vertragscode, den Sie benötigen!
PS: Es muss auch dasselbe sein wie das Ausführen von aos. Legen Sie HTTPS_PROXY fest.
🏆 Preise für „Bugs fangen“: Wenn Sie in diesem Artikel Tippfehler, falsche Sätze oder falsche Beschreibungen finden, klicken Sie auf mich, um es zu melden, und Sie erhalten Anreize.
Haftungsausschluss: Dieser Artikel gibt nicht die Ansichten oder Positionen von PermaDAO wieder. PermaDAO bietet keine Anlageberatung an und unterstützt kein Projekt. Leser werden gebeten, die Gesetze des Landes einzuhalten, in dem sie sich befinden, und Web3-Aktivitäten entsprechend durchzuführen.
🔗 关于 PermaDAO:Website | Twitter | Telegramm | Discord | Mittel | Youtube