UNPKG

nerve-sdk-js

Version:
117 lines (94 loc) 3.8 kB
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var nerve = require('../index'); var { getNulsBalance, countFee, inputsOrOutputs, validateTx, broadcastTx } = require('./api/util'); // nerve.customnet(5, "http://127.0.0.1:17004/jsonrpc"); nerve.testnet(); require('dotenv').config(); /** * @disc: 转账 dome * @date: 2020-05-20 13:47 * @author: Wave */ var pri = process.env.acc4; var pub = nerve.getPubByPri(pri); var fromAddress = nerve.getAddressByPri(nerve.chainId(), pri); console.log('fromAddress', fromAddress); var toAddress = 'TNVTdTSPUZYyUW8ThLzJXWdgWaDFSy5trakjk'; var amount = 800000000; var remark = 'transfer transaction remark...'; //调用 transferTransaction(pri, pub, fromAddress, toAddress, 5, 1, amount, remark); /** * 转账交易 * @param pri * @param pub * @param fromAddress * @param toAddress * @param assetsChainId * @param assetsId * @param amount * @param remark * @returns {Promise<void>} */ function transferTransaction(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) { return _transferTransaction.apply(this, arguments); } function _transferTransaction() { _transferTransaction = _asyncToGenerator(function* (pri, pub, fromAddress, toAddress, assetsChainId, assetsId, amount, remark) { var balanceInfo = yield getNulsBalance(fromAddress); console.log(balanceInfo); if (!balanceInfo.success) { console.log("获取账户balanceInfo错误"); return; } var transferInfo = { fromAddress: fromAddress, toAddress: toAddress, assetsChainId: assetsChainId, assetsId: assetsId, amount: amount, fee: 100000 }; var newAmount = transferInfo.amount + transferInfo.fee; if (balanceInfo.data.balance < newAmount) { console.log("余额不足,请更换账户"); return; } var inOrOutputs = yield inputsOrOutputs(transferInfo, balanceInfo.data, 2); if (!inOrOutputs.success) { console.log("inputOutputs组装失败!"); return; } var tAssemble = yield nerve.transactionAssemble(inOrOutputs.data.inputs, inOrOutputs.data.outputs, remark, 2); //交易组装 var txhex = ""; //交易签名 var newFee = countFee(tAssemble, 1); //获取手续费 //手续费大于0.001的时候重新组装交易及签名 if (transferInfo.fee !== newFee) { transferInfo.fee = newFee; inOrOutputs = yield inputsOrOutputs(transferInfo, balanceInfo.data, 2); tAssemble = yield nerve.transactionAssemble(inOrOutputs.data.inputs, inOrOutputs.data.outputs, remark, 2); txhex = yield nerve.transactionSerializeWithPS(pri, pub, tAssemble); } else { txhex = yield nerve.transactionSerializeWithPS(pri, pub, tAssemble); } console.log(txhex); var result = yield validateTx(txhex); if (result.success) { console.log(result.data.value); var results = yield broadcastTx(txhex); if (results && results.value) { console.log("交易完成"); } else { console.log("广播交易失败"); } } else { console.log("验证交易失败:" + JSON.stringify(result.error)); } }); return _transferTransaction.apply(this, arguments); }