Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
@initia/initia.js
Advanced tools
Initia.js is a TypeScript-written JavaScript SDK tailored for the Initia blockchain, enhancing the development experience with user-friendly TypeScript definitions and integration with Initia's core data structures.
Before installation, check the latest version of npm:
npm install @initia/initia.js
The usage section of this document provides detailed explanations and code examples of the most commonly used classes of the Initia.js library, which can be utilized both in a Node.js environment and within a browser.
REST(previously LCD) class facilitates interaction with the Initia blockchain.
import { RESTClient } from '@initia/initia.js'
const rest = new RESTClient('https://rest.testnet.initia.xyz', {
chainId: 'initiation-2',
gasPrices: '0.15uinit', // default gas prices
gasAdjustment: '1.75', // default gas adjustment for fee estimation
})
gasPrices
and **gasAdjustment
**are optional, but essential for the fee estimation
An abstract key interface that enables transaction signing and provides Bech32 address and public key derivation from a public key.
import { MnemonicKey } from '@initia/initia.js'
const key = new MnemonicKey({
mnemonic: 'bird upset ... evil cigar', // (optional) if null, generate a new Mnemonic key
account: 0, // (optional) BIP44 account number. default = 0
index: 0, // (optional) BIP44 index number. default = 0
coinType: 118, // (optional) BIP44 coinType. default = 118
})
BCS(Binary Canonical Serialization) is the binary encoding for Move resources and other non-module values published on-chain.
import { bcs } from '@initia/initia.js'
// serialize, 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)
Support types for BCS
`u8`, `u16`, `u32`, `u64`, `u128`, `u256`, `bool`, `vector`, `address`, `string`, `option`, `fixed_point32`, `fixed_point64`, `decimal128`, `decimal256`
Msgs are object whose end-goal is to trigger state-transitions. They are wrapped in transactions, which may contain one or more of them.
MsgSend()
Send coins to others.
import { MsgSend } from '@initia/initia.js'
const msg = new MsgSend(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // sender address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // recipient address
'1000uinit', // send amount
)
MsgDelegate()
Delegate governance coin to validators (staking).
import { MsgDelegate } from '@initia/initia.js'
const msg = new MsgDelegate(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // delegator address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // validator's operator address
'100000uinit', // delegate amount
)
MsgUndelegate()
Undelegate governance coin from validators (unstaking).
import { MsgUndelegate } from '@initia/initia.js'
const msg = new MsgUndelegate(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // delegator address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // validator's operator address
'100000uinit', // undelegate amount
)
MsgExecute()
Execute move contract function.
import { MsgExecute } from '@initia/initia.js'
const msg = new MsgExecute(
'init1kdwzpz3wzvpdj90gtga4fw5zm9tk4cyrgnjauu', // sender address
'0x1', // owner of the module
'dex', // name of the module
'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
]
)
createAndSignTx()
Create a wallet and sign transaction.
import { Wallet, RESTClient, MnemonicKey } from '@initia/initia.js'
const key = new MnemonicKey({
mnemonic:
'moral wise tape glance grit gentle movie doll omit you pet soon enter year funny gauge digital supply cereal city ring egg repair coyote',
})
const rest = new RESTClient('https://rest.testnet.initia.xyz', {
chainId: 'initiation-2',
gasPrices: '0.15uinit', // default gas prices
gasAdjustment: '1.75', // default gas adjustment for fee estimation
})
const wallet = new Wallet(rest, key)
const sendMsg = new MsgSend(
'init14l3c2vxrdvu6y0sqykppey930s4kufsvt97aeu', // sender address
'init18sj3x80fdjc6gzfvwl7lf8sxcvuvqjpvcmp6np', // recipient address
'1000uinit', // send amount
)
const signedTx = await wallet.createAndSignTx({
msgs: [sendMsg],
memo: 'sample memo',
})
When sending coins with MsgSend
, sender address should be same with wallet address.
broadcast()
broadcast()
is the action that sends your transaction to the blockchain code.
const broadcastResult = await rest.tx.broadcast(signedTx)
balance()
Query the balance of the account.
const balances = await rest.bank.balance('init14l3c2vxrdvu6y0sqykppey930s4kufsvt97aeu')
viewfunction()
Obtain the return values of a Move view function.
const res = await rest.move.viewFunction(
'0x1', // owner of the module
'dex', // name of the module
'get_swap_simulation', // 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
]
)
FAQs
The JavaScript SDK for Initia
The npm package @initia/initia.js receives a total of 1,179 weekly downloads. As such, @initia/initia.js popularity was classified as popular.
We found that @initia/initia.js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.