UNPKG

@harmony-js/transaction

Version:

transaction package for harmony

166 lines (149 loc) 4.98 kB
"use strict"; /** # @harmony-js/transaction This package provides a collection of apis to create, sign/send transaction, and receive confirm/receipt. ## Installation ``` npm install @harmony-js/transaction ``` ## Usage Create a Harmony instance connecting to testnet ```javascript * 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, * }, * ); ``` Creating a new transaction using parameters ```javascript * const txn = hmy.transactions.newTx({ * to: 'one166axnkjmghkf3df7xfvd0hn4dft8kemrza4cd2', * value: new Unit(1).asOne().toWei(), * // gas limit, you can use string * gasLimit: '21000', * // send token from shardID * shardID: 0, * // send token to toShardID * toShardID: 0, * // gas Price, you can use Unit class, and use Gwei, then remember to use toWei(), which will be transformed to BN * gasPrice: new hmy.utils.Unit('1').asGwei().toWei(), * }); ``` Recovering transaction from raw transaction hash ```javascript * const raw = '0xf86d21843b9aca00825208808094d6ba69da5b45ec98b53e3258d7de756a567b6763880de0b6b3a76400008028a0da8887719f377401963407fc1d82d2ab52404600cf7bea37c27bd2dfd7c86aaaa03c405b0843394442b303256a804bde835821a8a77bd88a2ced9ffdc8b0a409e9'; * const tx = hmy.transactions.recover(raw); ``` Getting the RLP encoding of a transaction (rawTransaction), along with raw transaction field values that were encoded ```javascript * const [encoded, raw] = txn.getRLPUnsigned() ``` Sign the transaction using a wallet and send the transaction, wait for confirmation and print receipt ```javascript * // key corresponds to one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7, only has testnet balance * hmy.wallet.addByPrivateKey('45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'); * hmy.wallet.signTransaction(txn).then(signedTxn => { * signedTxn.sendTransaction().then(([tx, hash]) => { * console.log('tx hash: ' + hash); * signedTxn.confirm(hash).then(response => { * console.log(response.receipt); * }); * }); * }); ``` Asynchronous transaction sign, send, and confirm ```javascript * async function transfer() { * hmy.wallet.addByPrivateKey('45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'); * const signedTxn = await hmy.wallet.signTransaction(txn); * signedTxn * .observed() * .on('transactionHash', (txnHash) => { * console.log(''); * console.log('--- hash ---'); * console.log(''); * console.log(txnHash); * console.log(''); * }) * .on('receipt', (receipt) => { * console.log(''); * console.log('--- receipt ---'); * console.log(''); * console.log(receipt); * console.log(''); * }) * .on('cxReceipt', (receipt) => { * console.log(''); * console.log('--- cxReceipt ---'); * console.log(''); * console.log(receipt); * console.log(''); * }) * .on('error', (error) => { * console.log(''); * console.log('--- error ---'); * console.log(''); * console.log(error); * console.log(''); * }); * const [sentTxn, txnHash] = await signedTxn.sendTransaction(); * const confiremdTxn = await sentTxn.confirm(txnHash); * // if the transactino is cross-shard transaction * if (!confiremdTxn.isCrossShard()) { * if (confiremdTxn.isConfirmed()) { * console.log('--- Result ---'); * console.log(''); * console.log('Normal transaction'); * console.log(`${txnHash} is confirmed`); * console.log(''); * console.log('please see detail in explorer:'); * console.log(''); * console.log('https://explorer.testnet.harmony.one/#/tx/' + txnHash); * console.log(''); * process.exit(); * } * } * if (confiremdTxn.isConfirmed() && confiremdTxn.isCxConfirmed()) { * console.log('--- Result ---'); * console.log(''); * console.log('Cross-Shard transaction'); * console.log(`${txnHash} is confirmed`); * console.log(''); * console.log('please see detail in explorer:'); * console.log(''); * console.log('https://explorer.testnet.harmony.one/#/tx/' + txnHash); * console.log(''); * process.exit(); * } * } * transfer(); ``` * * @packageDocumentation * @module harmony-transaction */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TxStatus = void 0; var TxStatus; (function (TxStatus) { TxStatus["NONE"] = "NONE"; TxStatus["INTIALIZED"] = "INITIALIZED"; TxStatus["SIGNED"] = "SIGNED"; TxStatus["PENDING"] = "PENDING"; TxStatus["CONFIRMED"] = "CONFIRMED"; TxStatus["REJECTED"] = "REJECTED"; })(TxStatus = exports.TxStatus || (exports.TxStatus = {})); //# sourceMappingURL=types.js.map