MoverVM

Descripción general

MoveVM de Initia sirve como un puente innovador, integrando perfectamente Move Runtime con CosmosSDK. Esta integración se logra mediante un método inspirado en WasmVM de CosmWasm, facilitando una conexión entre el tiempo de ejecución de MoveVM, desarrollado en Rust, y la cadena Cosmos, implementada en Go. Este enfoque va más allá de la mera conectividad; Armoniza los estándares de tokens dentro de la plataforma adaptando el módulo bancario de CosmosSDK para utilizar exclusivamente el estándar de monedas Move. Además, para garantizar que los usuarios de Move puedan aprovechar plenamente las capacidades de apuesta nativas de Cosmos, se ha introducido un módulo de apuesta líquida. Esta función permite la utilización de las funciones de Cosmos Stake dentro del ecosistema Move. Además, Initia admite varios mensajes CosmosSDK dentro de Move, lo que mejora la funcionalidad y la interoperabilidad de las aplicaciones creadas en esta plataforma.

Mensajes de Cosmos admitidos

Módulo

mensaje

Replantear

delegate

Distribución

fund_community_pool

IBC

transfer

IBC

nft_transfer

IBC

pay_fee

OPinar

initiate_token_bridge

Interactuar con CLI

Este tutorial lo guía a través del proceso de interacción con la interfaz de línea de comandos (CLI) para initiady minitiad, y muestra cómo crear un módulo Move, implementar un paquete Move y ejecutar funciones de entrada y visualización en la red Initia.

Movimiento de construcción

La initiaCLI se puede utilizar para crear un paquete Move. Para crear un paquete Move, managed_coinpor ejemplo, utilice el siguiente comando.

$ initiad move build --path ./move/managed_coin --dev

Prueba de unidad

Para ejecutar una prueba unitaria localmente, utilice el siguiente comando.

$ initiad move test --path ./move/managed_coin --dev

Este es un ejemplo de respuesta:

INCLUDING DEPENDENCY InitiaStdlib
INCLUDING DEPENDENCY MoveNursery
INCLUDING DEPENDENCY MoveStdlib
BUILDING basic_coin
Running Move unit tests
[ PASS    ] 0x2::managed_coin::test_create_and_mint
Test result: OK. Total tests: 1; passed: 1; failed: 0

Cobertura de la prueba

Para generar un informe de cobertura de prueba, ejecute el siguiente comando.

$ initiad move test --path ./move/managed_coin --dev --coverage

El resultado contiene el resultado de cada caso de prueba seguido de un resumen de cobertura básica:

INCLUDING DEPENDENCY InitiaStdlib
INCLUDING DEPENDENCY MoveNursery
INCLUDING DEPENDENCY MoveStdlib
BUILDING basic_coin
Running Move unit tests
[ PASS    ] 0x2::managed_coin::test_create_and_mint
Test result: OK. Total tests: 1; passed: 1; failed: 0
+-------------------------+
| Move Coverage Summary   |
+-------------------------+
Module 0000000000000000000000000000000000000000000000000000000000000002::managed_coin
>>> % Module coverage: 100.00
+-------------------------+
| % Move Coverage: 100.00  |
+-------------------------+
Please use `initiad move coverage -h` for more detailed source or bytecode test coverage of this package

Implementación de un paquete de movimiento

Para implementar un paquete Move en la red, siga estos pasos:

  1. Crea una cuenta :

    • Úselo initiad keys add acc0para crear una nueva cuenta.

    • Analice la dirección de la cuenta creada: initiad keys parse $(initiad keys show acc0 --address).

    • Actualice your_addressa ./move/managed_coin/Move.tomlla dirección 0x de la cuenta creada.

    • Obtenga tokens del faucet Initia: https://faucet.initia.tech/ .

    • Puede encontrar un tutorial completo sobre cómo crear una cuenta aquí .

  2. Implementar el paquete : ejecute el comando de implementación y reemplace los marcadores de posición con valores reales:

$ initiad move deploy \
    --path ./move/managed_coin \
    --from acc0 \
    --gas-prices 0.15uinit \
    --gas auto \
    --gas-adjustment 1.4 \
    --node ${RPC_ADDR} \
    --chain-id ${CHAIN_ID}

Ejecutar una función de vista

Por ejemplo, para recuperar y consultar metadatos y saldo de monedas:

  1. Recuperar dirección de metadatos

initiad q move execute 0x1 coin metadata \
    --args "address:$(initiad keys show acc0 --address) string:BASIC" \
    --node ${RPC_URL}
# record METADATA=0x~~~
  1. Consultar saldo de monedas acuñadas

initiad q move execute 0x1 coin balance \
    --args "address:$(initiad keys show node0 --address) address:${METADATA}" \
    --node ${RPC_URL}

Ejecutar una función de entrada

Por ejemplo, para acuñar managed_coinla acc0cuenta, ejecute el siguiente comando, reemplazando ${RPC_URL}y ${CHAIN_ID}con sus valores específicos:

$ initiad tx move execute \
    $(initiad keys show acc0 --address) managed_coin mint_to \
    --args "u64:100 address:$(initiad keys show acc0 --address)" \
    --from acc0 \
    --gas auto \
    --gas-adjustment 1.4 \
    --gas-prices 0.15uinit \
    --node ${RPC_URL} \
    --chain-id ${CHAIN_ID}

Conclusión

Este tutorial ofrece una descripción general concisa de las operaciones esenciales que puede realizar utilizando las herramientas CLI de Initia, proporcionando una base sólida para desarrollar e implementar contratos y aplicaciones inteligentes en la red de Initia.

Para conocer ejemplos de módulos Move, visite los tutoriales de módulos Move que le proporcionamos.

Last updated