AptosVM<>MEVM
En esta guía aprenderá cómo enviar transacciones entre AptosVM y MEVM.
Descripción general
¡Bienvenido al tutorial para usar la cadena de bloques de Movement Labs y el lenguaje Move! En este tutorial, cubriremos dos partes:
Parte 1 : Firma de transacciones de múltiples partes con cuentas de firma múltiple, ¡incluida una billetera segura multifirma MEVM!
Parte 2 : Llamar a un contrato inteligente EVM desde una billetera AptosVM
Requisitos
Nodo.js
npm
Configuración
Clona nuestro repositorio de demostración para acceder a los archivos necesarios:
Copiar
Accede al directorio de la aplicación:
Copiar
Instale todas las dependencias:
Copiar
Abre tu IDE favorito. Recomendamos usar VSCode:
Copiar
Encontrará un .env
archivo en el directorio de la aplicación. La mayoría de las variables ya están completadas, pero preste atención a MOVE_PRIVATE_KEY
y ETHEREUM_PRIVATE_KEY
. Asegúrese de utilizar claves privadas para las billeteras que hayan sido financiadas. Puedes utilizar nuestro Faucet para financiarlos.
Nota: Se necesitan las siguientes variables para la demostración:
MOVE_MULTISIG_OTHER_OWNER_ADDR
MOVE_FRAMEWORK
EVM_PRECOMPILE_CONTRACT
Después de configurar sus claves privadas, echemos un vistazo a nuestra configuración. En la parte superior, importamos nuestras dependencias:
ethers
: Monedero y utilidades de Ethereum@safe-global/protocol-kit
: Kit de herramientas para interactuar con el protocolo Safeaptos
: Biblioteca para interactuar con el protocolo Aptosdotenv
: Módulo para cargar variables de entorno desde un.env
archivo aprocess.env
Copiar
Parte 1: MEVM a AptosVM
Dirigirse a mevm-to-aptosvm.js
. Encontrarás varias funciones. Siéntete libre de explorarlos y comprender lo que hacen.
deploySafe()
: Implementa un nuevo contrato MEVM SafesetupMoveMultisigAccount(safeAddress)
: configura una nueva cuenta Move multifirmavote(safeAddress, multiAccount)
: Votos sobre una propuesta Move de un contrato SafecheckSafeContractVoted(safeAddress, multiAccount)
: Comprueba si se ha votado un contrato segurosubmitTx(rawTxn)
: envía una transacciónzeroPad(multiAccount)
: Se rellena con ceros si la dirección de varias cuentas tiene un tamaño diferente al tipo de dirección Mover.
Ahora, todo lo que tienes que hacer es ejecutar:
Copiar
Básicamente, lo siguiente es lo que realizará el script:
Crea un contrato inteligente de Gnosis Safe utilizando la billetera EVM.
Crea una cuenta multifirma utilizando la billetera Move y establece el contrato Gnosis Safe creado en el paso 1 como uno de los propietarios.
Crea una transacción multifirma (el contenido puede ser arbitrario, pero para esta demostración agregaremos un propietario a la cuenta multifirma) y vota usando la billetera Move.
Crea una transacción utilizando la billetera EVM para votar por la transacción creada en el paso anterior en la cuenta multifirma Move.
Propone y confirma la transacción creada por la billetera EVM al servicio Safe implementado.
Ejecuta la transacción la transacción confirmada.
Comprueba si la cuenta multifirma de EVM ha votado correctamente.
Como puede ver, estamos interactuando entre AptosVM y MEVM cuando finalmente firmamos una transacción Move desde EVM multisig. Para ello debemos prestar atención a la vote()
función:
Copiar
Para interactuar entre AptosVM y MEVM, preste atención a la vote()
función, donde codificamos una transacción Move y la pasamos a la callMove()
función precompilada, que sirve como punto de entrada para llamar a funciones Move desde MEVM.
Parte 2: AptosVM a MEVM
Ahora, dirígete a aptosvm-to-mevm.js.
Encontrarás un guión más estricto:
deployNumberRegistry()
: Implementa un nuevoNumberRegistry
contrato inteligente de SoliditysubmitTx(rawTxn)
: Envía una transacción AptosVMgetNonce(addr)
: obtiene el nonce EVM de una cuenta AptosVM.setNumber(contract)
: Llama a la función setNumber presente en elNumberRegistry
contrato inteligente
Ahora puedes ejecutar el script:
Copiar
Esto es lo que realizará el guión:
Crea un
NumberRegistry.sol
contrato inteligente utilizando la billetera EVM.Llama a la
setNumber()
función del contrato NumberRegistry utilizando la billetera Move.Comprueba si el número se configuró correctamente.
Aquí debemos prestar especial atención a la setNumber()
función:
Copiar
Aquí estamos codificando una función EVM y pasándola a la 0x1::evm::send_move_tx_to_evm
función presente en nuestro evm
marco.
En la setNumber()
función, codificamos una función EVM y la pasamos a la 0x1::evm::send_move_tx_to_evm
función en nuestro marco EVM.
Conclusión
¡Esto concluye nuestro tutorial! Hemos cubierto la firma de transacciones de múltiples partes con cuentas de múltiples firmas desde un EVM multisig y la llamada a contratos inteligentes de EVM desde una billetera AptosVM.
No dudes en comunicarte con nosotros en Discord si tienes algún problema, pregunta o comentario. ¡Nos encantaría saber de usted!
Last updated