nerve-sdk-js
Version:
nerve nerve-js nerve-sdk nerve-js-sdk
219 lines (184 loc) • 6.53 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 nerve = require('../index');
nerve.testnet();
var {
getNulsBalance,
getBalance,
countFee,
inputsOrOutputs,
validateTx,
broadcastTx
} = require('./api/util');
var {
currentTime
} = require('../utils/swap');
var numberUtil = require("../utils/numberUtil");
var {
acc0,
acc1,
acc2,
acc3
} = require('./testAcc');
function deploy() {
return _deploy.apply(this, arguments);
}
function _deploy() {
_deploy = _asyncToGenerator(function* () {
var {
pri,
pub,
fromAddress
} = acc0(); // let toAddress = 'TNVTdTSPmyc6wVo7DTBjsJJ4kCHuzCS4tqsHx';//dev
var toAddress = 'TNVTdTSQ2wdoL5pCz97r3UYtcesxy79YhUDo8'; //testnet
var amount = "900" + "000000000000000000";
var minutesForWhitelist = "0";
var tokenAmountForLp = "0";
var lockDayForLp = "0";
var radio = 45; // 当加池比例大于0时,项目方需要额外存入的token = HardTop * 95% * radio%
if (radio > 0) {
lockDayForLp = "30";
var tokenDecimals = 18; // 项目方发行的token精度, mint asset
var tokenBase = numberUtil.Power(tokenDecimals);
tokenAmountForLp = numberUtil.Times(amount, 95 * radio).times(tokenBase).div(10000).div(tokenBase);
}
var deploy = {
"p": "nerve-mint",
//固定
"op": "deploy",
// 发布项目 - deploy, 铸币 - mint
"tick": "2-58",
// 项目方token, Mint Asset
"max": amount,
// 项目方发行总量, Hard Top
"lim": "100" + "000000000000000000",
// single mint amount
"feetick": "5-1",
// mint fee asset
"fee": "10" + "00000000",
// mint fee amount
"addr": "TNVTdTSPQmKV5o9dhsN6TiXKot4mPLQXQLyHz",
// mint fee addr
"count": "100",
// mint limits
"start": "" + (currentTime() + 60 * 3),
// mint time
"unlock": "" + (currentTime() + 60 * 10),
// mint asset unlock time
// "whitelist": "TNVTdTSPQh3RLFhij1X8JiE5CyYgDcGcPReKF,TNVTdTSPTXQudD2FBSefpQRkXTyhhtSjyEVAF",
"minutes": "" + minutesForWhitelist,
//白名单mint时间
"ratio": "" + radio,
//LP Addition Ratio
"days": "" + lockDayForLp //LP Lock Dayas
};
var remark = JSON.stringify(deploy); //调用
transferTransaction(pri, pub, fromAddress, toAddress, 2, 58, numberUtil.Plus(amount, tokenAmountForLp), remark);
});
return _deploy.apply(this, arguments);
}
function mint(_x, _x2, _x3, _x4) {
return _mint.apply(this, arguments);
}
function _mint() {
_mint = _asyncToGenerator(function* (pri, pub, fromAddress, pid) {
// let toAddress = 'TNVTdTSPmyc6wVo7DTBjsJJ4kCHuzCS4tqsHx';//dev
var toAddress = 'TNVTdTSQ2wdoL5pCz97r3UYtcesxy79YhUDo8'; //testnet
var amount = "80" + "00000000";
var mint = {
"p": "nerve-mint",
"op": "mint",
"pid": "" + pid
};
var remark = JSON.stringify(mint); //调用
yield transferTransaction(pri, pub, fromAddress, toAddress, 5, 1, amount, remark);
});
return _mint.apply(this, arguments);
}
function test() {
return _test.apply(this, arguments);
}
function _test() {
_test = _asyncToGenerator(function* () {
var {
pri,
pub,
fromAddress
} = acc2();
var pid = 24;
yield mint(pri, pub, fromAddress, pid); // await mint(pri, pub, fromAddress, pid);
// await mint(pri, pub, fromAddress, pid);
// let {pri: pri1, pub: pub1, fromAddress: fromAddress1} = acc3();
// await mint(pri1, pub1, fromAddress1, pid);
// await mint(pri1, pub1, fromAddress1, pid);
// await mint(pri1, pub1, fromAddress1, pid);
});
return _test.apply(this, arguments);
}
test(); // deploy();
// console.log(currentTime())
/**
* 转账交易
* @param pri
* @param pub
* @param fromAddress
* @param toAddress
* @param assetsChainId
* @param assetsId
* @param amount
* @param remark
* @returns {Promise<void>}
*/
function transferTransaction(_x5, _x6, _x7, _x8, _x9, _x10, _x11, _x12) {
return _transferTransaction.apply(this, arguments);
}
function _transferTransaction() {
_transferTransaction = _asyncToGenerator(function* (pri, pub, fromAddress, toAddress, assetsChainId, assetsId, amount, remark) {
var balanceInfo = yield getBalance(nerve.chainId(), assetsChainId, assetsId, fromAddress);
console.log(balanceInfo);
if (!balanceInfo.balance) {
console.log("获取账户balanceInfo错误");
return;
}
var transferInfo = {
fromAddress: fromAddress,
toAddress: toAddress,
assetsChainId: assetsChainId,
assetsId: assetsId,
amount: amount,
fee: 0
};
var newAmount = numberUtil.Plus(transferInfo.amount, transferInfo.fee);
if (numberUtil.isLessThan(balanceInfo.balance, newAmount)) {
console.log("余额不足,请更换账户");
return;
}
var inOrOutputs = yield inputsOrOutputs(transferInfo, balanceInfo, 2);
if (!inOrOutputs.success) {
console.log("inputOutputs组装失败!");
return;
}
var tAssemble = yield nerve.transactionAssemble(inOrOutputs.data.inputs, inOrOutputs.data.outputs, remark, 2); //交易组装
var txhex = yield nerve.transactionSerialize(pri, pub, tAssemble);
console.log(txhex);
var results = yield broadcastTx(txhex);
if (results && results.value) {
console.log("交易完成", JSON.stringify(results));
} else {
console.log("广播交易失败");
}
/*let result = await validateTx(txhex);
if (result.success) {
console.log(result.data.value);
let results = await broadcastTx(txhex);
if (results && results.value) {
console.log("交易完成")
} else {
console.log("广播交易失败")
}
} else {
console.log("验证交易失败:" + JSON.stringify(result.error))
}*/
});
return _transferTransaction.apply(this, arguments);
}