diff --git a/monero_utils/MyMoneroCoreBridge.js b/monero_utils/MyMoneroCoreBridge.js index 9b3a25d..6f89ee0 100644 --- a/monero_utils/MyMoneroCoreBridge.js +++ b/monero_utils/MyMoneroCoreBridge.js @@ -476,6 +476,24 @@ class MyMoneroCoreBridge } return ret.retVal; // this is a string - pass it to new JSBigInt(…) } + estimate_rct_tx_size(n_inputs, mixin, n_outputs, extra_size, bulletproof) + { + const args = + { + n_inputs, + mixin, + n_outputs, + extra_size, + bulletproof + }; + 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 } + } + return parseInt(ret.retVal, 10); + } // // Send __key_for_fromCpp__send_funds__get_unspent_outs(task_id) @@ -774,4 +792,4 @@ module.exports = function(options) }, 1) } }); -}; \ No newline at end of file +}; diff --git a/src/index.cpp b/src/index.cpp index 58187ff..c78c9d9 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -57,6 +57,7 @@ EMSCRIPTEN_BINDINGS(my_module) emscripten::function("address_and_keys_from_seed", &serial_bridge::address_and_keys_from_seed); // emscripten::function("estimated_tx_network_fee", &serial_bridge::estimated_tx_network_fee); + emscripten::function("estimate_rct_tx_size", &serial_bridge::estimate_rct_tx_size); // emscripten::function("generate_key_image", &serial_bridge::generate_key_image); emscripten::function("generate_key_derivation", &serial_bridge::generate_key_derivation); diff --git a/tests/MyMoneroCoreCpp.node.js b/tests/MyMoneroCoreCpp.node.js index ee84fe9..4062a2b 100644 --- a/tests/MyMoneroCoreCpp.node.js +++ b/tests/MyMoneroCoreCpp.node.js @@ -133,6 +133,13 @@ function tests(Module) console.timeEnd("estimated_tx_network_fee") console.log("estimated_tx_network_fee ret", ret_string) } + { + console.time("estimate_rct_tx_size") + const args_str = '{"n_inputs":1,"mixin":10,"n_outputs":2,"extra_size":0,"bulletproof":true}' + const ret_string = Module.estimate_rct_tx_size(args_str) + console.timeEnd("estimate_rct_tx_size") + console.log("estimate_rct_tx_size ret", ret_string) + } { console.time("generate_key_image") const args_str = '{"sec_viewKey_string":"7bea1907940afdd480eff7c4bcadb478a0fbb626df9e3ed74ae801e18f53e104","sec_spendKey_string":"4e6d43cd03812b803c6f3206689f5fcc910005fc7e91d50d79b0776dbefcd803","pub_spendKey_string":"3eb884d3440d71326e27cc07a861b873e72abd339feb654660c36a008a0028b3","tx_pub_key":"fc7f85bf64c6e4f6aa612dbc8ddb1bb77a9283656e9c2b9e777c9519798622b2","out_index":"0"}'