bsv-sdk
Version:
bsv sdk
323 lines (271 loc) • 10.8 kB
JavaScript
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import { API_TARGET, bsv, SensibleFT } from "sensible-sdk";
import { getMergeTime, reverceFtByteString } from "../utils/CommonUtils";
import { defaultSigners, signersMap } from "../utils/SingersMap";
import fetch from "node-fetch";
function getFtGenesisInfo(_x) {
return _getFtGenesisInfo.apply(this, arguments);
}
function _getFtGenesisInfo() {
_getFtGenesisInfo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(ftGenesisTxid) {
var response;
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return fetch('https://api.showmoney.app' + '/aggregation/v2/app/sensible/getFtGenesisByTxId', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
txId: ftGenesisTxid
})
}).then(function (response) {
return response.json();
});
case 2:
response = _context4.sent;
return _context4.abrupt("return", response);
case 4:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return _getFtGenesisInfo.apply(this, arguments);
}
var Sensible = /*#__PURE__*/function () {
function Sensible(network, feeb, tokenWif, metasvAuth) {
this.network = network;
this.feeb = feeb;
this.tokenWif = tokenWif;
this.metasvAuth = metasvAuth;
}
var _proto = Sensible.prototype;
_proto.ftMergeTime = /*#__PURE__*/function () {
var _ftMergeTime = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(codehash, genesis, sensibleId) {
var signersRaw, ftGenesisTxid, res, ft, senderAddress, balanceDetailRes, ftUtxoCount, _getMergeTime, remainUtxoCount, mergeTime;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
signersRaw = signersMap.get(sensibleId);
if (!(signersRaw == undefined)) {
_context.next = 7;
break;
}
ftGenesisTxid = reverceFtByteString(sensibleId);
_context.next = 5;
return getFtGenesisInfo(ftGenesisTxid);
case 5:
res = _context.sent;
if (res.code == 0 && res.data.signers) {
signersRaw = res.data.signers;
} else {
signersRaw = defaultSigners;
}
case 7:
ft = new SensibleFT({
network: this.network,
purse: this.tokenWif,
feeb: this.feeb,
apiTarget: API_TARGET.METASV,
signers: signersRaw
});
ft.sensibleApi.authorize(this.metasvAuth);
senderAddress = bsv.PrivateKey.fromWIF(this.tokenWif).toAddress(this.network).toString();
_context.next = 12;
return ft.getBalanceDetail({
codehash: codehash,
genesis: genesis,
address: senderAddress
});
case 12:
balanceDetailRes = _context.sent;
ftUtxoCount = balanceDetailRes.utxoCount;
_getMergeTime = getMergeTime(ftUtxoCount), remainUtxoCount = _getMergeTime[0], mergeTime = _getMergeTime[1];
return _context.abrupt("return", mergeTime);
case 16:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function ftMergeTime(_x2, _x3, _x4) {
return _ftMergeTime.apply(this, arguments);
}
return ftMergeTime;
}();
_proto.ftMergeOne = /*#__PURE__*/function () {
var _ftMergeOne = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(codehash, genesis, sensibleId, purseWif) {
var signersRaw, ftGenesisTxid, res, _yield$SensibleFT$sel, signers, signerSelecteds, ft, senderAddress, _yield$ft$merge, txid;
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
signersRaw = signersMap.get(sensibleId);
if (!(signersRaw == undefined)) {
_context2.next = 7;
break;
}
ftGenesisTxid = reverceFtByteString(sensibleId);
_context2.next = 5;
return getFtGenesisInfo(ftGenesisTxid);
case 5:
res = _context2.sent;
if (res.code == 0 && res.data.signers) {
signersRaw = res.data.signers;
} else {
signersRaw = defaultSigners;
}
case 7:
_context2.next = 9;
return SensibleFT.selectSigners(signersRaw);
case 9:
_yield$SensibleFT$sel = _context2.sent;
signers = _yield$SensibleFT$sel.signers;
signerSelecteds = _yield$SensibleFT$sel.signerSelecteds;
ft = new SensibleFT({
network: this.network,
purse: purseWif,
feeb: this.feeb,
apiTarget: API_TARGET.METASV,
signers: signers,
signerSelecteds: signerSelecteds
});
ft.sensibleApi.authorize(this.metasvAuth);
senderAddress = bsv.PrivateKey.fromWIF(this.tokenWif).toAddress(this.network).toString();
_context2.prev = 15;
_context2.next = 18;
return ft.merge({
codehash: codehash,
genesis: genesis,
ownerWif: this.tokenWif
});
case 18:
_yield$ft$merge = _context2.sent;
txid = _yield$ft$merge.txid;
console.log("merge token success,txid: " + txid);
_context2.next = 27;
break;
case 23:
_context2.prev = 23;
_context2.t0 = _context2["catch"](15);
console.log(_context2.t0);
return _context2.abrupt("return", false);
case 27:
return _context2.abrupt("return", true);
case 28:
case "end":
return _context2.stop();
}
}
}, _callee2, this, [[15, 23]]);
}));
function ftMergeOne(_x5, _x6, _x7, _x8) {
return _ftMergeOne.apply(this, arguments);
}
return ftMergeOne;
}();
_proto.ftMerge = /*#__PURE__*/function () {
var _ftMerge = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(codehash, genesis, sensibleId, purseWif) {
var signersRaw, ftGenesisTxid, res, _yield$SensibleFT$sel2, signers, signerSelecteds, ft, senderAddress, balanceDetailRes, ftUtxoCount, _getMergeTime2, remainUtxoCount, mergeTime, receiverCount, i, _yield$ft$merge2, txid;
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
signersRaw = signersMap.get(sensibleId);
if (!(signersRaw == undefined)) {
_context3.next = 7;
break;
}
ftGenesisTxid = reverceFtByteString(sensibleId);
_context3.next = 5;
return getFtGenesisInfo(ftGenesisTxid);
case 5:
res = _context3.sent;
if (res.code == 0 && res.data.signers) {
signersRaw = res.data.signers;
} else {
signersRaw = defaultSigners;
}
case 7:
_context3.next = 9;
return SensibleFT.selectSigners(signersRaw);
case 9:
_yield$SensibleFT$sel2 = _context3.sent;
signers = _yield$SensibleFT$sel2.signers;
signerSelecteds = _yield$SensibleFT$sel2.signerSelecteds;
ft = new SensibleFT({
network: this.network,
purse: purseWif,
feeb: this.feeb,
apiTarget: API_TARGET.METASV,
signers: signers,
signerSelecteds: signerSelecteds
});
ft.sensibleApi.authorize(this.metasvAuth);
senderAddress = bsv.PrivateKey.fromWIF(this.tokenWif).toAddress(this.network).toString();
_context3.next = 17;
return ft.getBalanceDetail({
codehash: codehash,
genesis: genesis,
address: senderAddress
});
case 17:
balanceDetailRes = _context3.sent;
ftUtxoCount = balanceDetailRes.utxoCount;
_getMergeTime2 = getMergeTime(ftUtxoCount), remainUtxoCount = _getMergeTime2[0], mergeTime = _getMergeTime2[1];
receiverCount = 1;
if (receiverCount > 10 && remainUtxoCount > 3) {
//3to100
mergeTime++;
} else if (receiverCount > 6 && receiverCount <= 10 && remainUtxoCount > 10) {
//10to10
mergeTime++;
} else if (receiverCount > 3 && receiverCount <= 6 && remainUtxoCount > 6) {
//6to6
mergeTime++;
}
i = 0;
case 23:
if (!(i < mergeTime)) {
_context3.next = 32;
break;
}
_context3.next = 26;
return ft.merge({
codehash: codehash,
genesis: genesis,
ownerWif: this.tokenWif
});
case 26:
_yield$ft$merge2 = _context3.sent;
txid = _yield$ft$merge2.txid;
console.log("merge token success " + i + ",txid: " + txid); // await sleep(15)
case 29:
i++;
_context3.next = 23;
break;
case 32:
return _context3.abrupt("return");
case 33:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function ftMerge(_x9, _x10, _x11, _x12) {
return _ftMerge.apply(this, arguments);
}
return ftMerge;
}();
return Sensible;
}();
export { Sensible as default };