@posichain-js/staking
v0.0.5
Published
staking transaction package for posichain
Downloads
4
Readme
@posichain-js/staking
This package provides a collection of apis to create, sign/send staking transaction, and receive confirm/receipt.
Installation
npm install @posichain-js/staking
Usage
Create a PosiChain instance connecting to testnet
const { PosiChain } = require('@posichain-js/core');
const {
ChainID,
ChainType,
hexToNumber,
numberToHex,
fromWei,
Units,
Unit,
} = require('@posichain-js/utils');
const posi = new PosiChain(
'https://s0.posichain.org//',
{
chainType: ChainType.PosiChain,
chainId: ChainID.PosiTestnet,
},
);
Below, examples show how to send delegate, undelegate, and collect rewards staking transactions. First, set the chainId, gasLimit, gasPrice for all subsequent staking transactions
posi.stakings.setTxParams({
gasLimit: 25000,
gasPrice: numberToHex(new posi.utils.Unit('1').asGwei().toWei()),
chainId: 2
});
Note: create and edit validator transactions are not fully supported in the sdk
Create delegate staking transaction
const delegate = posi.stakings.delegate({
delegatorAddress: 'one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7',
validatorAddress: 'one1vfqqagdzz352mtvdl69v0hw953hm993n6v26yl',
amount: numberToHex(new Unit(1000).asOne().toWei())
});
const delegateStakingTx = delegate.build();
Sign and send the delegate transaction and receive confirmation
// key corresponds to one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7, only has testnet balance
posi.wallet.addByPrivateKey('45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e');
posi.wallet.signStaking(delegateStakingTx).then(signedTxn => {
signedTxn.sendTransaction().then(([tx, hash]) => {
console.log(hash);
signedTxn.confirm(hash).then(response => {
console.log(response.receipt);
});
});
});
Similarily, undelegate and collect reward transactions can be composed, signed and sent Create undelegate staking transaction
const undelegate = posi.stakings.undelegate({
delegatorAddress: 'one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7',
validatorAddress: 'one1vfqqagdzz352mtvdl69v0hw953hm993n6v26yl',
amount: numberToHex(new Unit(1000).asOne().toWei())
});
const undelegateStakingTx = undelegate.build();
Create collect rewards staking transaction
const collectRewards = posi.stakings.collectRewards({
delegatorAddress: 'one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7'
});
const collectRewardsStakingTx = collectRewards.build();
Also, similar to normal transaction, signing and sending can be performed asynchronously.