Implementar un contrato inteligente sobre la implementación de Arbitrum

Descripción general

Bienvenido a la guía sobre la implementación de un contrato inteligente para su implementación de Arbitrum. En este tutorial, aprenderá cómo implementar un contrato inteligente utilizando el devnet L2 Nitro y las claves públicas y privadas proporcionadas para fines de prueba.

Requisitos previos

Configuración

Primero, en tu $HOME directorio, configure una nueva carpeta de proyecto para este tutorial e inicie el proyecto con npm:

bash

cd $HOME
mkdir counter-project && cd counter-project && npm init -y

A continuación, inicializa un proyecto de Foundry con el siguiente comando:

bash

forge init counter_contract

Crea tu contrato inteligente

Echa un vistazo a la Counter.sol archivo en tu counter-project/counter_contract/src directorio:

solidez

El contrato contiene una variable entera pública sin firmar llamada "número". Hay dos funciones públicas en este contrato. El setNumber la función permite a cualquiera establecer un nuevo valor para la variable "número", mientras que el increment la función aumenta el valor del "número" en uno cada vez que se llama.

Puedes obtenga más información sobre Solidity y programación de contratos inteligentes.

Para compilar el contrato, ejecute el siguiente comando forge del $HOME/counter-project/counter_contract/ directorio:

bash

Su salida debe ser similar a la siguiente:

bash

Prueba tu contrato inteligente

Ahora, abre el test/Counter.t.sol archivo:

solidez

Este archivo realiza pruebas unitarias en el contrato que creamos en la sección anterior. Esto es lo que está haciendo la prueba:

  • El contrato incluye una variable de tipo "Contador" pública llamada "contador". En el setUp función, inicializa una nueva instancia del contrato "Contador" y establece la variable "número" en 0.

  • Hay dos funciones de prueba en el contrato: testIncrement y testSetNumber.

  • El testIncrement la función prueba la función de "incremento" del contrato de "Contador" llamándolo y luego afirmando que el "número" en el contrato de "Contador" es 1. Verifica si la operación de incremento aumenta correctamente el número en uno.

  • El testSetNumber la función es más genérica. Toma un argumento entero sin firmar 'x' y prueba la función "setNumber" del contrato "Counter. Después de llamar a la función "setNumber" con 'x', afirma que el "número" en el contrato "Counter" es igual a 'x'. Esto verifica que la función "setNumber" actualiza correctamente el "número" en el contrato "Counter.

Ahora, para probar su código, ejecute lo siguiente:

bash

Si la prueba es exitosa, su salida debe ser similar a esto:

bash

Implementación de su contrato inteligente

Cuentas financiadas

Su L2 Nitro devnet tendrá un clave pública y privada financiada como un grifo para usar para pruebas:

  • Tanto en L1 como en L2

    • Clave pública: 0x3f1Eae7D46d88F08fc2F8ed27FCb2AB183EB2d0E

    • Clave privada: 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659

Alternativamente, puedes financia otras direcciones utilizando los scripts send-l1 y send-l2.

El L1 Geth devnet se ejecutará en http://localhost:8545 y el L2 Nitro devnet estará encendido http://localhost:8547 y ws://localhost:8548.

Usando nuestro Arbitrum devnet

Utilizaremos el punto final local de RPC (http://localhost:8547) y cuentas anteriores para probar con.

Desplieguemos el contrato ahora. Primero, establezca una clave privada del yunque:

bash

Ahora, implemente el contrato:

bash

Una implementación exitosa devolverá una salida similar a la siguiente:

bash

Una vez que haya implementado el contrato, ¡está listo para interactuar con él!

Primero, lo estableceremos como una variable:

bash

Interactuando con su contrato inteligente

Usos de fundición cast, una CLI para realizar llamadas RPC de Ethereum.

Para escribir al contrato, usaremos el cast send comando:

bash

Su salida se verá similar:

bash

Ahora, podemos hacer una llamada de lectura para ver el estado de la variable numérica, utilizando el cast call comando:

bash

El resultado se verá similar:

bash

Convierta el resultado de hexadecimal a un valor base 10 con:

bash

Próximos pasos

¡Felicitaciones! Ha aprendido cómo implementar un contrato inteligente en su devnet de implementación Arbitrum.

¿Qué construirás a continuación? En nuestro próximo tutorial, repasaremos cómo implementar un dapp en su implementación de Arbitrum.

Last updated