inicia.js
Descripción general
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 gasPrices
y gasAdjustment
de 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);
Tipos admitidos para BCS
`u8`, `u16`, `u32`, `u64`, `u128`, `u256`, `bool`, `vector`, `dirección`, `cadena`, `opción`, 'punto_fijo32', 'punto_fijo64 ', 'decimal128', 'decimal256'
Objetos de mensaje
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.
MsgSend()
: enviar monedas a otra dirección
import { MsgSend } from '@initia/initia.js'
const msg = new MsgSend(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // sender address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // recipient address
'1000uinit' // send amount
)
MsgDelegate()
: delegar la moneda de gobernanza a los validadores (apostar)
import { MsgDelegate } from '@initia/initia.js'
const msg = new MsgDelegate(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // delegator address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // validator's operator addres
'100000uinit', // delegate amount
)
MsgExecute()
: ejecutar funciones de entrada de contrato de movimiento
import { MsgExecute } from '@initia/initia.js'
const msg = new MsgExecute(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // sender address
'0x1', // module owner address
'dex', // module name
'swap_script', // function name
[], // type arguments
[
bcs.address().serialize('0x2').toBase64(), // arguments, BCS-encoded
bcs.address().serialize('0x3').toBase64(), // arguments, BCS-encoded
bcs.u64().serialize(10000).toBase64() // arguments, BCS-encoded
],
)
Transmisión de TX
createAndSignTx()
: crear y firmar transacción
import { Wallet, LCDClient, MnemonicKey } from '@initia/initia.js'
const key = new MnemonicKey({ mnemonic: 'moral wise ... repair coyote' })
const lcd = new LCDClient('https://lcd.[chain-id].initia.xyz')
const wallet = new Wallet(lcd, key)
const sendMsg = new MsgSend(
'init14l3c2vxrdvu6y0sqykppey930s4kufsvt97aeu', // sender address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // recipient address
'1000uinit', // send amount
)
const signedTx = await wallet.createAndSignTx({
msgs: [sendMsg],
memo: 'sample memo',
})
broadcast()
: envía/transmite tu transacción a blockchain
const broadcastResult = await lcd.tx.broadcast(signedTx)
Consultas
balance()
: consultar el saldo de una cuenta
const balances = await lcd.bank.balance('init14l3c2vxrdvu6y0sqykppey930s4kufsvt97aeu')
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
)
Last updated