2.2.0-beta.0 • Published 1 year ago

@msmania/pocketjs-transaction-builder v2.2.0-beta.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

TransactionBuilder

This package houses the TransactionBuilder, which lets you build a transaction to then send into the network.

Installation

Install through your package manager of choice:

pnpm install @pokt-foundation/pocketjs-transaction-builder

Usage

import { TransactionBuilder } from '@pokt-foundation/pocketjs-transaction-builder'

// Initializing the TransactionBuilder is simple:
// 1. Instanciate a provider
export const provider = new JsonRpcProvider({
  rpcUrl: MAINNET_RPC_URL,
})

// 2. Instanciate a signer
export const signer = await KeyManager.fromPrivateKey(process.env.PRIVATE_KEY)

// 3. Instanciate the TransactionBuilder
export const builder = new TransactionBuilder({
  signer,
  provider,
})

// Create a new `Send` Message which is used to send funds over the network.
const sendMsg = transactionBuilder.send(
  signer.getAddress(),
  '07a6fca4dea9f01e4c19f301df0d0afac128561b',
  // Amount in uPOKT (1 POKT = 1*10^6 uPOKT)
  '1000000'
)
// Send it over the network!
const txresponse = await transactionBuilder.submit({
  memo: 'POKT Payment',
  txMsg: sendMsg,
})

TransactionBuilder API

Constructor

signer

  • type: KeyManager The KeyManager instance that holds the staked app in the blockchain.

provider

  • type: JsonRpcProvider | IsomorphicProvider The provider instance with available dispatchers to talk to the network.

chainID (optional)

  • type: mainnet | localnet | testnet ChainID to send the transactions to. The provider endpoint must be connected to that chain ID.

Methods

getChainID(): ChainID

Gets the current chain ID this transaction builder has been initialized for.

Returns ChainID: 'mainnet', 'localnet', or 'testnet'.

setChainID(id): void

Sets the chainID to one of the supported networks.

ParamTypeDescription
idstringThe chain to send transactions to. The provider must be connected to that chain

createTransaction({ fee, memo, txMsg }): Promise

Signs and creates a transaction object that can be submitted to the network given the parameters and called upon Msgs.

Returns Promise<RawTxRequest>: The raw transaction request which can be sent over the network.

ParamTypeDescription
feestringThe amount to pay as a fee for executing this transaction, in uPOKT (1 POKT = 1*10^6 uPOKT)
memostringMemo field for this transaction.
txMsgTxMsgTransaction message generated with one of the available methods.

submit({ fee, memo, txMsg }): Promise

Submit receives a valid transaction message, creates a Raw Transaction Request and sends it over the network.

Returns Promise<TransactionResponse: The transaction response from the network, containing the transaction hash.

ParamTypeDescription
feestringThe amount to pay as a fee for executing this transaction, in uPOKT (1 POKT = 1*10^6 uPOKT)
memostringMemo field for this transaction.
txMsgTxMsgTransaction message generated with one of the available methods.

submitRawTransaction(tx): Promise

Submit receives an already made Raw Transaction Request and sends it over the network.

Returns Promise<TransactionResponse: The transaction response from the network, containing the transaction hash.

ParamTypeDescription
txRawTxRequestThe raw transaction request, created with createTransaction.

send({ fromAddress, toAddress, amount }): MsgProtoSend

Adds a MsgSend TxMsg for this transaction.

Returns a MsgProtoSend: An unsigned Send transaction message.

ParamTypeDescription
fromAddressstringOrigin address, which is the address that the signer holds.
toAddressstringDestination address
amountstringAmount of uPOKT to send.

appStake({ appPubKey, chains, amount }): MsgProtoAppStake

Adds a MsgAppStake TxMsg for this transaction.

Returns a MsgProtoAppStake: The unsigned App Stake message.

ParamTypeDescription
appPubKeystringApplication Public Key
chainsstring[]Chains that the apps wants access to by staking POKT. Throughput will be equally divided through all chains.
amountstringAmount of uPOKT to stake.

appUnstake(address): MsgProtoAppUnstake

Adds a MsgProtoAppUnstake TxMsg for this transaction.

Returns MsgProtoAppUnstake: The unsigned app unstake message.

ParamTypeDescription
addressstringAddress of the account.

nodeStake({ nodePubKey, chains, amount, serviceURL }): MsgProtoNodeStakeTx

Adds a NodeStake TxMsg for this transaction.

Returns a MsgProtoNodeStakeTx: The unsigned node stake message.

ParamTypeDescription
nodePubKeystringNode Public Key
chainsstring[]Chains that the node wants to service to by staking POKT.
amountstringAmount of uPOKT to stake.
serviceURLURLNode service URL that will be used to send requests through.

nodeUnstake(address): MsgProtoNodeUnstake

Adds a MsgProtoNodeUnstake for this transaction.

Returns MsgProtoNodeUnstake: The unsigned node unstake message.

ParamTypeDescription
addressstringAddress of the account.

nodeUnjail(address): MsgAProtoNodeUnjail

Adds a MsgUnjail for this transaction.

Returns a MsgProtoNodeUnstake: The unsigned node unjail message.

ParamTypeDescription
addressstringAddress of the account.

govDAOTransfer({ toAddress, amount, action }): MsgProtoGovUpgrade

Adds a MsgProtoGovDAOTransferTxMsg for this transaction.

Returns a MsgProtoGovDAOTransfer: The unsigned upgrade message

ParamTypeDescription
actionDAOActionthe action the dao transfer represent (i.e transfer or burn)
amountstringthe Amount of uPOKT to perform with specified action
toAddressstringthe recipient of the dao action once executed for transfers. Not required for burning.

govChangeParam({ paramKey, paramValue, overrideGovParamsWhitelistValidation }): MsgProtoGovUpgrade

Adds a MsgProtoGovChangeParamTxMsg for this transaction.

Returns a MsgProtoGovChangeParam: The unsigned upgrade message

ParamTypeDescription
paramKeyGovParameter, stringthe governance parameter key
paramValuestringthe new governance parameter value in ASCII (plain text) format.
overrideGovParamsWhitelistValidationboolean (optional)used to override the validation check for a governance parameter not found in GovParameter enum

govUpgradeHeight({ height, version }): MsgProtoGovUpgrade

Adds a MsgProtoGovUpgradeTxMsg for this transaction.

The GovUpgradeTxMsg is multipurpose. This function acts as an opinionated way of applying the protocol's upgrade height

Returns a MsgProtoGovUpgrade: The unsigned upgrade message

ParamTypeDescription
heightintheight to upgrade the protocol's version
versionstringthe new protocol's version

govUpgradeFeatures({ features }): MsgProtoGovUpgrade

Adds a MsgProtoGovUpgradeTxMsg for this transaction.

The GovUpgradeTxMsg is multipurpose. This function acts as an opinionated way of applying the protocol's upgrade features.

Returns a MsgProtoGovUpgrade: The unsigned upgrade message

ParamTypeDescription
featuresstring[]array of features [ "RSCAL:30000", "{featureName2}:{height2}" ]

govUpgrade({ features, height, version }): MsgProtoGovUpgrade

The GovUpgradeTxMsg is multipurpose, use this only if you are familiar with the tx msg, otherwise rely on govUpgradeHeight and govUpgradeFeatures

Returns a MsgProtoGovUpgrade: The unsigned upgrade message

ParamTypeDescription
heightintheight to upgrade the protocol's version
versionstringthe new protocol's version
featuresstring[]array of features to deactivate / activate with the notation: [ "RSCAL:30000", "{featureName2}:{height2}" ]