Saltar al contenido principal

Antecedentes y Requisitos

Esta es una breve descripci贸n de lo que cubrir谩 este tutorial.

  • Escribir una interfaz en Solidity
  • Generar la plantilla de la precompilaci贸n
  • Implementar las funciones de la precompilaci贸n en Golang
  • Escribir y ejecutar pruebas
caution

Las precompilaciones estatales son software en fase alfa. Construye bajo tu propio riesgo.

En este tutorial, usamos una rama basada en la versi贸n v0.5.2 de Subnet-EVM. Puedes encontrar la rama aqu铆. El c贸digo en esta rama es el mismo que Subnet-EVM, excepto por el directorio precompile/contracts/helloworld. El directorio contiene el c贸digo de la precompilaci贸n HelloWorld. Usaremos esta precompilaci贸n como ejemplo para aprender c贸mo escribir una precompilaci贸n estatal. El c贸digo en esta rama puede volverse obsoleto. Siempre debes usar la 煤ltima versi贸n de Subnet-EVM cuando desarrollas tu propia precompilaci贸n.

Precompile-EVM

Las precompilaciones de Subnet-EVM se pueden registrar desde un repositorio externo. Esto permite a los desarrolladores construir sus precompilaciones sin mantener un fork de Subnet-EVM. Las precompilaciones se registran en Subnet-EVM en tiempo de construcci贸n.

La diferencia entre usar Subnet-EVM y Precompile-EVM es que con Subnet-EVM puedes cambiar los internos de la EVM para interactuar con tus precompilaciones. Tales como cambiar la estructura de tarifas, agregar nuevas opcodes, cambiar c贸mo construir un bloque, etc. Con Precompile-EVM solo puedes agregar nuevas precompilaciones estatales que pueden interactuar con la StateDB. Las precompilaciones construidas con Precompile-EVM siguen siendo muy poderosas porque pueden acceder directamente al estado y modificarlo.

Hay un repositorio de plantilla sobre c贸mo construir una precompilaci贸n de esta manera llamado Precompile-EVM. Tanto Subnet-EVM como Precompile-EVM comparten estructuras de directorios y c贸digos comunes.

Puedes consultar la PR de Precompile-EVM que agrega la precompilaci贸n de Hello World aqu铆.

Requisitos

Este tutorial asume familiaridad con Golang y JavaScript.

Adem谩s, los usuarios deben estar profundamente familiarizados con la EVM para entender sus invariantes ya que agregar una Precompilaci贸n Estatal modifica la propia EVM.

Aqu铆 hay algunos recursos recomendados para aprender los entresijos de la EVM:

Por favor, instala lo siguiente antes de comenzar.

Primero, instala la 煤ltima versi贸n de Go. Sigue las instrucciones aqu铆. Puedes verificarlo ejecutando go version.

Configura la variable de entorno $GOPATH correctamente para que Go busque los Workspaces de Go. Por favor, lee esto para m谩s detalles. Puedes verificarlo ejecutando echo $GOPATH.

info

Consulta aqu铆 las instrucciones para configurar GOPATH basado en las configuraciones del sistema.

Como algunas cosas se instalar谩n en $GOPATH/bin, aseg煤rate de que $GOPATH/bin est茅 en tu $PATH, de lo contrario, es posible que obtengas un error al ejecutar los comandos a continuaci贸n. Para hacer eso, ejecuta el comando: export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Descarga los siguientes requisitos previos en tu $GOPATH:

cd $GOPATH
mkdir -p src/github.com/ava-labs
cd src/github.com/ava-labs

Clona el repositorio:

git clone [email protected]:ava-labs/subnet-evm.git

Luego ejecuta los siguientes comandos:

git clone [email protected]:ava-labs/avalanchego.git
curl -sSfL https://raw.githubusercontent.com/ava-labs/avalanche-network-runner/main/scripts/install.sh | sh -s
npm install -g solc

C贸digo Completo

Puedes inspeccionar la solicitud de extracci贸n de ejemplo para ver el c贸digo completo.

Para un ejemplo completo, tambi茅n puedes consultar la Precompilaci贸n del Administrador de Recompensas.

Was this page helpful?