* Add .nodoc for in-flux packages * Start with clean-slate for re-generation * Update with working (although manual) config
44 lines
1.6 KiB
JavaScript
Executable File
44 lines
1.6 KiB
JavaScript
Executable File
const Api = require('@polkadot/api').default
|
|
const WsProvider = require('@polkadot/api-provider/ws').default
|
|
const extrinsics = require('@polkadot/extrinsics').default
|
|
const encodeExtrinsic = require('@polkadot/extrinsics/codec/encode/uncheckedLength').default
|
|
const encodeLength = require('@polkadot/extrinsics/codec/encode/length').default
|
|
const Keyring = require('@polkadot/util-keyring').default
|
|
const storage = require('@polkadot/storage').default
|
|
const BN = require('bn.js')
|
|
|
|
const Encoder = new TextEncoder()
|
|
const keyring = new Keyring()
|
|
const provider = new WsProvider('ws://127.0.0.1:9944')
|
|
const api = new Api(provider)
|
|
|
|
async function getAccountIndex (address) {
|
|
return api.state.getStorage([storage.system.public.accountIndexOf, address])
|
|
}
|
|
|
|
async function transfer (keyRingFrom, addressTo, amount) {
|
|
const nextAccountIndex = await getAccountIndex(keyRingFrom.address())
|
|
|
|
// encode the call for signing
|
|
const encoded = encodeExtrinsic(
|
|
keyRingFrom,
|
|
nextAccountIndex,
|
|
extrinsics.staking.public.transfer,
|
|
[addressTo, amount]
|
|
)
|
|
|
|
await api.author.submitExtrinsic(encoded)
|
|
.catch(e => console.log)
|
|
}
|
|
|
|
const Alice = keyring.addFromSeed(Encoder.encode('Alice '))
|
|
const addressBob = '5Gw3s7q4QLkSWwknsiPtjujPv3XM4Trxi5d4PgKMMk3gfGTE'
|
|
const amount = new BN(999) // on dev chain, the fee is 1, that makes it a round 1000
|
|
|
|
console.log(`Crafting and sending an extrinsic for Alice to send Bob ${amount} DOTs`)
|
|
|
|
transfer(Alice, addressBob, amount)
|
|
.then(() => console.log('Done'))
|
|
.catch((e) => console.log(e))
|
|
.finally(_ => process.exit(0))
|