Version >= ^3.0.2 for Darwinia 2.0. Version < 3.0.0 is for Darwinia 1.0.
A library to help
- fetch internal substrate storages, and
- dispatch calls
- Easy-to-use derived functions(Derived API List) which are build from 1 and 2.
npm install darwinia.js@^3.2.0
NOTE:
- 3.1 changes:
- call returns
ethers.providers.TransactionResponse
instead ofethers.providers.TransactionReceipt
.
- call returns
- 3.2 changes:
- Removed pangolin and pangolin testnets.
- Removed pangolin tools.
- Added koi testnet.
storage(collatorCount): <span id="collators"></span><br />
call(remarkWithEvemt): <span id="remark"></span>
<script type="module">
import { ethers } from "https://esm.sh/[email protected]";
import { clientBuilder } from "https://esm.sh/[email protected]";
const provider = new ethers.providers.Web3Provider(window.ethereum);
const client = clientBuilder.buildKoiClient(provider);
// storage
const collatorsCount = await client.storages.darwiniaStaking.collatorCount();
const collatorsEl = document.getElementById("collators");
collatorsEl.innerHTML = collatorsCount;
// call
await window.ethereum.request({ method: "eth_requestAccounts" });
const signer = provider.getSigner();
const tx = await client.calls.system.remarkWithEvent(signer, "0x12345678");
const remarkEl = document.getElementById("remark");
remarkEl.innerHTML = `<a href="https://koi-scan.darwinia.network/tx/${tx.hash}">${tx.hash}</a>`;
</script>
Try it in jsfiddle:
The returns of this lib's functions are all json string or null.
import { ethers } from "ethers";
import { clientBuilder } from "darwinia.js";
async function main(): Promise<void> {
const provider = new ethers.providers.JsonRpcProvider(
"https://koi-rpc.darwinia.network"
);
// or
// const provider = new ethers.providers.Web3Provider(window.ethereum);
const koi = clientBuilder.buildKoiClient(provider);
let result = await koi.storages.system.account(
"0x794BF0B66926D84CB735283D849f454A2A8d9a44"
);
console.log(`${result}\n`);
}
main();
import { ethers } from "ethers";
import { clientBuilder } from "darwinia.js";
async function main(): Promise<void> {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const koi = clientBuilder.buildKoiClient(provider);
const tx = await koi.calls.session.setKeys(
signer,
{
aura: "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d",
}, // keys
"0x" // proof
);
console.log(`https://koi-scan.darwinia.network/tx/${tx.hash}`);
}
main();
import { ethers } from "ethers";
import { clientBuilder } from "darwinia.js";
async function main(): Promise<void> {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const koi = clientBuilder.buildKoiClient(provider);
// prepare calls
const setKeysCall = koi.calls.session.buildSetKeysCall(
// keys
{
aura: "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d",
},
// proof
"px"
);
const collectCall = koi.calls.staking.buildCollectCall(120000000);
// dispatch
const tx = await koi.calls.utility.batchAll(signer, [
setKeysCall,
collectCall,
]);
console.log(`https://koi-scan.darwinia.network/tx/${tx.hash}`);
}
main();
import { ethers } from "ethers";
import { clientBuilder } from "darwinia.js";
async function main(): Promise<void> {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const koi = clientBuilder.buildKoiClient(provider);
// call ended with `D` is the version that accept params encoded in scale codec
const tx = await koi.calls.session.setKeysH(
signer,
"0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d00" // encoded (keys, proof)
);
console.log(`https://koi-scan.darwinia.network/tx/${tx.hash}`);
}
main();
More examples in examples
Nominate a collator and stake tokens to the collator.
Set session keys and commission percetage. Example
Track specified events. Example
Get the latest events. You can use this function with provider.on('block', callback)
to implement the tracking functionality like trackSystemEvents
. Example
See src/derived.ts.
npm run gen