Javascript SDK of WoopChain protocol
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
sdk/packages/harmony-staking
Ganesha Upadhyaya c49abc5691 v0.1.55 4 years ago
..
src change const enums exports to enum 4 years ago
test Cleaned up the redundant content of the remaining 6 packages 5 years ago
LICENSE staking signing 5 years ago
README.md Improve README with clear examples throughout packages 4 years ago
package-lock.json v0.1.55 4 years ago
package.json v0.1.55 4 years ago
tsconfig.json adding sendTrasaction for staking and refactoring common code between Transaction and StakingTransaction to TransactionBase for code reuse 5 years ago
tsconfig.test.json staking signing 5 years ago

README.md

@harmony-js/staking

This package provides a collection of apis to create, sign/send staking transaction, and receive confirm/receipt.

Installation

npm install @harmony-js/staking

Usage

Create a Harmony instance connecting to testnet

const { Harmony } = require('@harmony-js/core');
const {
  ChainID,
  ChainType,
  hexToNumber,
  numberToHex,
  fromWei,
  Units,
  Unit,
} = require('@harmony-js/utils');

const hmy = new Harmony(
    'https://api.s0.b.hmny.io/',
    {
        chainType: ChainType.Harmony,
        chainId: ChainID.HmyTestnet,
    },
);

Below, examples show how to send delegate, undelegate, and collect rewards staking transactions. First, set the chainId, gasLimit, gasPrice for all subsequent staking transactions

hmy.stakings.setTxParams({
  gasLimit: 25000,
  gasPrice: numberToHex(new hmy.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 = hmy.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
hmy.wallet.addByPrivateKey('45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e');

hmy.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 = hmy.stakings.undelegate({
  delegatorAddress: 'one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7',
  validatorAddress: 'one1vfqqagdzz352mtvdl69v0hw953hm993n6v26yl',
  amount: numberToHex(new Unit(1000).asOne().toWei())
});
const undelegateStakingTx = undelegate.build();

Create collect rewards staking transaction

const collectRewards = hmy.stakings.collectRewards({
  delegatorAddress: 'one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7'
});
const collectRewardsStakingTx = collectRewards.build();

Also, similar to normal transaction, signing and sending can be performed asynchronously.