¿Quiere conocer el mecanismo operativo del contrato aplicado en AO? Así que tomemos el código del contrato y averigüémoslo. Utilice un subprograma de Python para obtener fácilmente el contrato del Proceso especificado.

Autor: txohyeah

Revisado por: outprog

Fuente: Content Guild - Noticias

Introducción a la AO

¿Qué es la AO?

Ha pasado menos de medio año desde que se lanzó la red de prueba de AO y hay mucho contenido sobre AO. El contenido de este artículo se centra principalmente en el proceso y los contratos inteligentes, incluido qué es AO, qué es el proceso y la vida. ciclo de Proceso. Finalmente, nos centraremos en cómo ver el código del contrato de Proceso.

AO es una función informática desarrollada aún más por Arweave basada en la mejora del almacenamiento distribuido. Su objetivo es lograr un soporte integral de aplicaciones descentralizadas, correspondiente a la ruta de desarrollo del cálculo de Ethereum primero y el almacenamiento después. En pocas palabras, AO representa contratos inteligentes o potencia informática en la plataforma Arweave y es una extensión de capa lógica además de su solución de almacenamiento permanente.

AO consta de tres unidades, MU/SU/CU

MU: Recibe mensajes enviados por los usuarios para asegurarse de que estén firmados.

SU: marca la hora y ordena los mensajes, luego los agrupa y publica en Arweave. SU también es el protagonista que usaremos hoy y jugará un papel importante cuando revisemos el contrato más adelante.

CU: Procesa el mensaje y calcula el resultado.

¿Qué proceso se ejecuta en AO?

AO es esencialmente una computadora súper paralela construida sobre la base de un protocolo de datos, donde los datos existen en la forma del elemento básico Mensaje definido en AO. Entonces, el Proceso juega un papel importante en el procesamiento del Mensaje y es la unidad básica para procesar mensajes en AO. El proceso se ejecuta en CU y puede considerarse como una máquina virtual en CU. Por lo tanto, Process contiene la capacidad básica de recibir y enviar mensajes dentro de la red. Luego, los desarrolladores crean capacidades de procesamiento de mensajes para Process agregando controladores a Process. El contrato que se discutirá más adelante en realidad se implementa enviando un mensaje a Process y luego usando el controlador _eval incorporado. El controlador agregado puede entenderse como la función de procesamiento de mensajes del contrato.

Ciclo de vida del proceso

Si queremos encontrar una analogía en nuestro mundo actual, entonces creo que el contenedor en Docker puede ser una buena comparación y comprensión del proceso. A continuación, utilizaré la analogía del ciclo de vida del Contenedor en la ventana acoplable para comparar el ciclo de vida del Proceso.

Todos sabemos que la creación de un contenedor en la ventana acoplable depende de una imagen (Imagen). Por ejemplo, cree un contenedor MySQL basado en la imagen MySQL y luego podrá llamar al servicio MySQL en este contenedor. Lo mismo ocurre con el Proceso en AO. La creación del Proceso depende del Módulo, y también habrá Módulos con diferentes funciones. Hay módulos más simples, módulos que admiten tareas programadas y módulos que incluyen sqlite. Actualmente existen cientos de Módulos entre los que los desarrolladores pueden elegir para crear su propio Proceso. Además, también puedes crear tu propio módulo personalizado. Creo que en un futuro próximo también habrá módulos que admitan GPU y módulos que admitan diversas capacidades de IA.

El proceso en AO también es diferente del contenedor en la ventana acoplable. Los contenedores en Docker admiten varias acciones, como iniciar, detener y eliminar. Actualmente, no existen tales operaciones en el Proceso de AO. Después de todo, en el mundo de las aplicaciones descentralizadas, estas funciones controladas por individuos centralizados son muy inconsistentes. La ejecución del Proceso en AO depende completamente del valor del Proceso en sí. Si tiene suficiente valor, entonces definitivamente más CU estarán dispuestas a ejecutarlo. Por el contrario, si un Proceso no tiene valor, ninguna CU estará dispuesta a ejecutarlo. Entonces este proceso desaparecerá silenciosamente.

Función de evaluación e implementación del contrato AO

¿Qué es un contrato AO? Compare los contratos inteligentes de Ethereum. El código Lua en proceso que se ejecuta en AO puede considerarse aproximadamente como un contrato inteligente.

Cuando creamos un Proceso, cada Módulo cargado tendrá dos controladores predeterminados (los controladores pueden entenderse como funciones abiertas a otros Procesos), uno de los cuales es el controlador _eval. La función principal de este controlador es ejecutar código Lua. Por ejemplo, si ingresa 1+1 en aos, se devolverá un 2, que es procesado por este controlador. Luego, implementar el contrato en realidad significa enviar un mensaje al Proceso y agregar un Controlador personalizado que pueda manejar la lógica empresarial del Proceso a través del controlador _eval.

Hay una cosa a tener en cuenta: consulte el código a continuación. Esta es la sección de código en Process.lua en el proyecto oficial de código abierto AO. El controlador _eval solo se puede ejecutar cuando el remitente del mensaje es coherente con el Propietario del Proceso (el Propietario es la dirección de la billetera cuando se creó el contrato). En otras palabras, si el Propietario se establece en nulo (es decir, el Proceso no tiene Propietario), entonces el contrato en este Proceso se convierte en un contrato que nadie puede modificar.

Además, debido a que AO en realidad se basa en el paradigma de consenso basado en almacenamiento (SCP, paradigma de consenso basado en almacenamiento), el contrato en ejecución debe encontrarse en el "consenso de almacenamiento", es decir, todos los mensajes que se ejecutan en el proceso, incluidos a través de Los códigos de contrato implementados por el controlador _eval se almacenan en Arweave. Por lo tanto, cualquiera puede encontrar el código del contrato en este "consenso de almacenamiento".

Ver contrato

Llegando al tema de hoy, ¿cómo encontrar el código de contrato? A continuación, presentaré los dos métodos y proporcionaré un programa Python para capturar el contrato.

tejer

El primer método es, por supuesto, consultar directamente en Arweave (puede usar Graphql https://arweave.net/graphql). Este enfoque requiere que los datos se empaqueten en Arweave para que sean útiles.

SU - Navegador

El segundo método es el método que se presenta principalmente hoy. Dado que todos los datos se cargarán a través de SU, también se pueden consultar en SU. Personalmente, creo que cada SU tendrá un caché local de los datos cargados por ella misma, por lo que puede encontrar el código de contrato correspondiente consultando la SU. Primero, puede realizar la consulta directamente ingresando la dirección en el navegador. Sin embargo, las deficiencias de este método también son obvias: 1. Algunos procesos envían y reciben grandes cantidades de mensajes, por lo que la cantidad de datos cargados en la cadena también es enorme. Sin embargo, los datos que el navegador puede cargar son limitados y con frecuencia se producen fallos del navegador. 2. Es difícil filtrar los datos del contrato que desea entre los datos masivos.

La siguiente figura muestra todos los mensajes del proceso (proceso de token AO) con ID de proceso m3PaWzK4PTG9lAaqYQPaPdOcXdO8hYqi5Fe9NWqXd0w dentro de dos marcas de tiempo.

SU - SDK

Aquí escribí un pequeño programa, usando un SDK ao escrito por un líder de la industria basado en Python, para filtrar los mensajes cuya acción es Eval. (Los mensajes cuya acción es Eval son todos los mensajes procesados ​​por el controlador _eval, incluido el código de contrato cargado). La siguiente imagen es el mensaje que tomé de SU, en el que el contenido del campo de datos es un código de contrato con carácter de escape. Por supuesto, los mensajes capturados también contendrán contenido de código de contrato que no sea de implementación, como ejecutar 1 + 1, etc. Sin embargo, la cantidad de mensajes después del filtrado ya no es grande y el código de contrato se puede seleccionar manualmente.

El programa ha sido de código abierto, aquí está la dirección de github: https://github.com/txohyeah/ao-sc

Contrato de token AO

Entonces, emocionémonos y echemos un vistazo al código de contrato de ao token. (El código del contrato capturado también se colocará en el almacén de código fuente abierto)

Primero, al inicializar el estado, TotalSupply = "210000000000000000000" se define para que sea coherente con la emisión de Bitcoin.

Denominación = Denominación o 12 también define el punto decimal como 12 dígitos.

Se define que si la función de transferencia se ejecuta antes de que se generen 100.000 bloques, se devolverá directamente "La transferencia está bloqueada".

Dado que se genera un bloque cada cinco minutos, alrededor de febrero del próximo año se generarán 100.000 bloques.

Hay información más relevante, por lo que no entraré en detalles. Todos pueden navegar felizmente por este contrato AO clásico.

Instrucciones del programa

Presenté el código de contrato capturado arriba. A continuación, presentaré brevemente este programa. Es muy simple, creo que las personas que no conocen el código pueden usarlo fácilmente.

El primer paso es instalar la versión 3.12 de Python. El programa está escrito en Python y es necesario instalar Python.

El segundo paso es instalar los paquetes necesarios. Este programa se basa en el SDK de los líderes de la industria y en everpay.

El tercer paso es modificar start_time/end_time/process en fetch_sc_record.py. y ejecute fetch_sc_record.py.

start_time y end_time son los períodos de tiempo que necesita capturar. El proceso es el ID del proceso que necesita para capturar el contrato.

En el cuarto paso, el mensaje de evaluación correspondiente aparecerá en el archivo msg_eval.json. ¡Explore los mensajes y podrá encontrar el código de contrato que necesita!

PD: También debe ser lo mismo que ejecutar aos. Establezca HTTPS_PROXY.

🏆 Premios por "detectar errores": si encuentras errores tipográficos, oraciones incorrectas o descripciones incorrectas en este artículo, haz clic en mí para informarlo y obtendrás incentivos.

Descargo de responsabilidad: este artículo no representa los puntos de vista ni las posiciones de PermaDAO. PermaDAO no brinda asesoramiento de inversión ni respalda ningún proyecto. Se solicita a los lectores que cumplan con las leyes del país donde se encuentran y realicen actividades Web3 de conformidad.

🔗 关于 PermaDAO: Sitio web | Gorjeo | Telegrama | Discordia | Medio | YouTube