Initia.js es un SDK de JavaScript escrito en TypeScript diseñado para la cadena de bloques de Initia, que mejora la experiencia de desarrollo con definiciones de TypeScript fáciles de usar y la integración con las estructuras de datos centrales de Initia.
Principales características
Definiciones de TypeScript mejoradas: ofrece integración integral con las estructuras de datos centrales de Initia para una experiencia de desarrollador mejorada.
Capa central: incluye administración de claves, serialización BCS y soporte para initia.proto.
Capa de cliente: facilita la generación de solicitudes de API y la interacción con el proveedor de LCD.
Requisitos previos
Para utilizar Initia.js de forma eficaz, debe tener instalado lo siguiente:
Node.js versión 14 o superior
npm
Instalación
Para instalar Initia.js, ejecute el siguiente comando:
npm install @initia/initia.js
Ejemplos
Cliente LCD
La clase LCD (Light Client Daemon) permite una fácil interacción con la cadena de bloques Initia.
import { LCDClient } from '@initia/initia.js'
const lcd = new LCDClient('https://lcd.[chain-id].initia.xyz', {
chainId: '[chain-id]',
gasPrices: '0.15uinit', // default gas prices
gasAdjustment: '2.0', // default gas adjustment for fee estimation
})
Ajuste gasPricesy gasAdjustmentde acuerdo con las condiciones actuales de la red para un procesamiento óptimo de las transacciones.
Gestión de claves
El SDK proporciona una interfaz de clave abstracta para la firma de transacciones y la derivación de direcciones/claves públicas.
import { MnemonicKey } from '@initia/initia.js'
const key = new MnemonicKey({
mnemonic: 'bird upset ... evil cigar', // (optional) if undefined, generate a new Mnemonic key
account: 0, // (optional) BIP44 account number. default = 0
index: 0, // (optional) BIP44 index number. defualt = 0
coinType: 118, // (optional) BIP44 coinType. default = 118
})
Guarde de forma segura su mnemotécnico. Si no se proporciona, se generará un nuevo mnemónico, que deberá guardar en una ubicación segura.
BCS
BCS (serialización canónica binaria) es crucial para las interacciones del contrato Move. Asegúrese de que los tipos de datos coincidan con las expectativas del contrato.
import { bcs } from '@initia/initia.js'
// serialize value to BCS and encode it to base64
const serializedU64 = bcs
.u64() // type
.serialize(1234) // value
.toBase64()
// deserialize
const deserializedU64 = bcs
.u64() // type
.parse(
Uint8Array.from(Buffer.from(serializedU64, 'base64'))
)
// vector
const serializedVector = bcs
.vector(bcs.u64())
.serialize([123, 456, 789])
.toBase64();
// option
const serializedSome = bcs.option(bcs.u64()).serialize(123);
const serializedNone = bcs.option(bcs.u64()).serialize(null);
Los mensajes son objetos cuyo objetivo final es desencadenar transiciones de estado. Están envueltos en transacciones, que pueden contener uno o más de ellos.
viewfunction(): consulta las funciones de vista de contrato de movimiento
const res = await lcd.move.viewFunction(
'0x1', // owner of the module
'dex', // name of the module
'get_swap_simulation', // function name
['0x1::native_uinit::Coin', '0x1::native_uusdc::Coin'], // type arguments
[bcs.u64().serialize(10000).toBase64()] // arguments
)