nerve-sdk-js
Version:
nerve nerve-js nerve-sdk nerve-js-sdk
156 lines (130 loc) • 4.68 kB
JavaScript
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 nuls = require('../index');
var {
getNulsBalance,
countFee,
inputsOrOutputs,
validateTx,
broadcastTx,
getConsensusNode
} = require('./api/util');
var axios = require('axios').default;
console.log(axios.post, '---');
/**
* @disc: 注销节点 dome
* @date: 2019-10-18 10:38
* @author: Wave
*/
var pri = '';
var pub = '0243a092a010f668680238546f2b68b598bb8c606820f0d5051435adaff59e95b9';
var fromAddress = "TNVTdN9i4JSE9C1PrZZzuQpvrzdhXakSw3UxY";
var remark = 'stop agent....'; //调用注销节点
// stopAgent(pri, pub, fromAddress, 4, 1, '6e1f8aaa80f64244a024db0a1979495fb77455fa60650da48b01761e7defa908');
/**
* 注销节点
* @param pri
* @param pub
* @param fromAddress
* @param assetsChainId
* @param assetsId
* @param agentHash
* @returns {Promise<void>}
*/
function stopAgent(_x, _x2, _x3, _x4, _x5, _x6) {
return _stopAgent.apply(this, arguments);
}
/**
* @disc: 获取退出节点/退出保证金对应的追加保证金交易列表
* @params: agentHash 节点hash
* @params: reduceAmount 退出金额
* @params: quitAll 是否全部退出 0:部分 1:全部
* @date: 2020-05-15 16:03
* @author: Wave
*/
function _stopAgent() {
_stopAgent = _asyncToGenerator(function* (pri, pub, fromAddress, assetsChainId, assetsId, agentHash) {
var reduceNonceList = yield getReduceNonceList(agentHash, '0', 1); //console.log(reduceNonceList);
if (!reduceNonceList.success) {
console.log("获取退出保证金ReduceNonceList错误");
return;
}
var balanceInfo = yield getNulsBalance(fromAddress); //console.log(balanceInfo);
if (!balanceInfo.success) {
console.log("获取账户balanceInfo错误");
return;
}
var allAmount = 0;
for (var item of reduceNonceList.data) {
allAmount = allAmount + Number(item.deposit);
}
var transferInfo = {
fromAddress: fromAddress,
assetsChainId: assetsChainId,
assetsId: assetsId,
nonceList: reduceNonceList.data,
amount: allAmount,
fee: 100000,
depositHash: agentHash
}; //console.log(transferInfo);
var inOrOutputs = yield inputsOrOutputs(transferInfo, balanceInfo.data, 9); //console.log(inOrOutputs);
if (!inOrOutputs.success) {
console.log("inputOutputs组装失败!");
return;
}
var tAssemble = yield nuls.transactionAssemble(inOrOutputs.data.inputs, inOrOutputs.data.outputs, remark, 9, {
address: fromAddress,
agentHash: agentHash
}); //console.log(tAssemble);
var txhex = yield nuls.transactionSerialize(pri, pub, tAssemble);
console.log(txhex);
var result = yield validateTx(txhex); //console.log(result);
if (result.success) {
console.log(result.data.value);
var results = yield broadcastTx(txhex); //console.log(results);
if (results && results.value) {
console.log("交易完成");
} else {
console.log("广播交易失败");
}
} else {
console.log("验证交易失败");
}
});
return _stopAgent.apply(this, arguments);
}
function getReduceNonceList(_x7, _x8, _x9) {
return _getReduceNonceList.apply(this, arguments);
}
function _getReduceNonceList() {
_getReduceNonceList = _asyncToGenerator(function* (agentHash, reduceAmount, quitAll) {
var url = 'http://seede.nuls.io:17004/jsonrpc';
var data = [4, agentHash, reduceAmount, quitAll];
var params = {
"jsonrpc": "2.0",
"method": 'getReduceNonceList',
"params": data,
"id": Math.floor(Math.random() * 1000)
};
try {
var res = yield axios.post(url, params); //console.log(res.data);
if (res.data.hasOwnProperty('result')) {
return {
success: true,
data: res.data.result
};
} else {
return {
success: false,
data: res.data
};
}
} catch (err) {
return {
success: false,
data: err
};
}
});
return _getReduceNonceList.apply(this, arguments);
}