added calculate_fee, estimated_tx_network_fee, estimate_rct_tx_size bridge fns

pull/41/head
Paul Shapiro 6 years ago
parent ba5681be39
commit 1675952d68

@ -38,6 +38,7 @@ mymonero_core_js.monero_sendingFunds_utils = require("./monero_utils/monero_send
mymonero_core_js.monero_requestURI_utils = require("./monero_utils/monero_requestURI_utils");
mymonero_core_js.monero_keyImage_cache_utils = require("./monero_utils/monero_keyImage_cache_utils");
mymonero_core_js.monero_paymentID_utils = require("./monero_utils/monero_paymentID_utils");
mymonero_core_js.monero_amount_format_utils = require("./monero_utils/monero_amount_format_utils");
mymonero_core_js.api_response_parser_utils = require("./hostAPI/response_parser_utils");
//
mymonero_core_js.nettype_utils = require("./cryptonote_utils/nettype");

@ -309,6 +309,56 @@ class MyMoneroCoreBridge
return ret.retVal;
}
estimate_rct_tx_size(n_inputs, mixin, n_outputs, optl__extra_size, optl__bulletproof)
{
const args =
{
n_inputs: "" + n_inputs,
mixin: "" + mixin,
n_outputs: "" + n_outputs,
extra_size: "" + (typeof optl__extra_size !== 'undefined' && optl__extra_size ? optl__extra_size : 0),
bulletproof: "" + (optl__bulletproof == true ? true : false) /* if undefined, false */,
};
const args_str = JSON.stringify(args);
const ret_string = this.Module.estimate_rct_tx_size(args_str);
const ret = JSON.parse(ret_string);
if (typeof ret.err_msg !== 'undefined' && ret.err_msg) {
return { err_msg: ret.err_msg } // TODO: maybe return this somehow
}
return parseInt(ret.retVal); // small enough to parse
}
calculate_fee(fee_per_kb__string, num_bytes, fee_multiplier)
{
const args =
{
fee_per_kb: fee_per_kb__string,
num_bytes: "" + num_bytes,
fee_multiplier: "" + fee_multiplier
};
const args_str = JSON.stringify(args);
const ret_string = this.Module.calculate_fee(args_str);
const ret = JSON.parse(ret_string);
if (typeof ret.err_msg !== 'undefined' && ret.err_msg) {
return { err_msg: ret.err_msg } // TODO: maybe return this somehow
}
return ret.retVal; // this is a string - pass it to new JSBigInt(…)
}
estimated_tx_network_fee(fee_per_kb__string, priority)
{
const args =
{
fee_per_kb: fee_per_kb__string,
priority: "" + priority,
};
const args_str = JSON.stringify(args);
const ret_string = this.Module.estimated_tx_network_fee(args_str);
const ret = JSON.parse(ret_string);
if (typeof ret.err_msg !== 'undefined' && ret.err_msg) {
return { err_msg: ret.err_msg } // TODO: maybe return this somehow
}
return ret.retVal; // this is a string - pass it to new JSBigInt(…)
}
create_signed_transaction(
from_address_string,
sec_keys,

@ -42,6 +42,9 @@ exports.bridgedFn_names =
"seed_and_keys_from_mnemonic",
"validate_components_for_login",
"generate_key_image",
"estimate_rct_tx_size",
"calculate_fee",
"estimated_tx_network_fee",
"create_signed_transaction",
"create_signed_transaction__nonIPCsafe"
];

@ -32,6 +32,7 @@ console.time("Load module")
async function tests()
{
const monero_utils = await require("../monero_utils/monero_utils")
const Module = monero_utils.Module;
console.timeEnd("Load module")

@ -22,5 +22,41 @@ async function t1()
} catch (e) {
console.log(e)
}
try {
var tx_size = (await mymonero.monero_utils_promise).estimate_rct_tx_size(
2, // inputs
6,
2, // outputs
0, //optl__extra_size,
false // optl__bulletproof
);
console.log("estimate_rct_tx_size", tx_size)
} catch (e) {
console.log(e)
}
try {
var fee = new mymonero.JSBigInt((await mymonero.monero_utils_promise).calculate_fee(
"9000000", 13762, 4
// fee_per_kb__string, num_bytes, fee_multiplier
));
console.log("calculate_fee", mymonero.monero_amount_format_utils.formatMoneyFull(fee), "XMR")
} catch (e) {
console.log(e)
}
try {
var fee = new mymonero.JSBigInt((await mymonero.monero_utils_promise).estimated_tx_network_fee(
"9000000", 2
// fee_per_kb__string, priority
));
console.log("estimated_tx_network_fee", mymonero.monero_amount_format_utils.formatMoneyFull(fee), "XMR")
} catch (e) {
console.log(e)
}
}
t1()

Loading…
Cancel
Save