* docs: generate the API reference for developers.pezkuwichain.io Add TypeDoc (0.28.20) and `yarn docs`, which builds the reference for the nine public API packages from src/ into build-docs/, with a landing page and a getting-started guide whose examples were run against the live network. The PR workflow builds it so a broken doc comment or config is caught before merge. docs/ held only a redirect to polkadot.js.org; it now holds the guide sources. The README, packages/api/README.md and three CHANGELOG entries linked to js.pezkuwichain.app, a domain that is not ours and is listed for sale; they now point to developers.pezkuwichain.io, the Pezkuwi Portal, or the upstream polkadot.js.org pages the entries came from. * ci(docs): deploy the reference to developers.pezkuwichain.io On every master push that changes the generated reference, build it with `yarn docs` and publish it to the web host the same way pezkuwi-apps publishes the portal: an approved production environment holds the deploy key, the bundle is unpacked into releases/<sha>, and going live is one rename of the current symlink. The switch is checked through nginx for the public name (deploy sha, index, main.js, search index) and rolled back if the new release is not served. workflow_dispatch with rollback_to makes an earlier release live again. Release-bot version bumps ([CI Skip]) and changes that cannot affect the output do not ask for an approval.
2.9 KiB
title
| title |
|---|
| Getting started |
Getting started
Every example on this page was run against the live PezkuwiChain network,
except the final signAndSend, which needs a funded account. Each runs as an
ES module (node example.mjs) on Node.js 18 or newer, and works the
same way in a browser bundle.
Install
npm install @pezkuwi/api @pezkuwi/keyring
Connect
import { ApiPromise, WsProvider } from '@pezkuwi/api';
const api = await ApiPromise.create({
provider: new WsProvider('wss://rpc.pezkuwichain.io')
});
const [chain, nodeName, nodeVersion] = await Promise.all([
api.rpc.system.chain(),
api.rpc.system.name(),
api.rpc.system.version()
]);
console.log(`Connected to ${chain} via ${nodeName} v${nodeVersion}`);
ApiPromise.create resolves once the API has fetched the runtime metadata, so
from that point api.query, api.tx and api.consts reflect exactly what the
connected chain supports.
Read chain state
const header = await api.rpc.chain.getHeader();
console.log(`Best block: #${header.number}`);
const { tokenSymbol, tokenDecimals } = api.registry.getChainProperties().toHuman();
console.log('Token:', tokenSymbol, 'decimals:', tokenDecimals); // [ 'HEZ' ] [ '12' ]
const address = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';
const { data: { free } } = await api.query.system.account(address);
console.log(`Free balance: ${free} TYR`);
HEZ has 12 decimals: 1 HEZ = 10^12 TYR. Balances come back in TYR, the smallest unit.
Follow new blocks
const unsubscribe = await api.rpc.chain.subscribeNewHeads((head) => {
console.log(`New block #${head.number}`);
});
// later
unsubscribe();
Build, price and send a transfer
import { Keyring } from '@pezkuwi/keyring';
const keyring = new Keyring({ type: 'sr25519' });
const sender = keyring.addFromUri('//Alice'); // a development key: never hold real funds with it
const recipient = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';
const amount = 10n ** 12n; // 1 HEZ
const tx = api.tx.balances.transferKeepAlive(recipient, amount);
const { partialFee } = await tx.paymentInfo(sender);
console.log(`Estimated fee: ${partialFee} TYR`);
// Submitting needs a funded account:
const unsub = await tx.signAndSend(sender, ({ status, dispatchError }) => {
if (dispatchError) {
console.error(dispatchError.toString());
}
if (status.isInBlock) {
console.log(`Included in block ${status.asInBlock}`);
}
if (status.isFinalized) {
unsub();
}
});
transferKeepAlive refuses a transfer that would take the sender below the
existential deposit and reap the account. Use transferAllowDeath only when
that is what you want.
Disconnect
await api.disconnect();
Other networks
The same code works against any endpoint listed on the home page,
for example wss://asset-hub-rpc.pezkuwichain.io for PezkuwiChain Asset Hub.