fixed all errors in deposit, withdraw, buy and sell
This commit is contained in:
parent
e613a94a73
commit
8c251f889f
@ -42,6 +42,7 @@
|
||||
<input type="text" id="ask_flo_addr" class="form-control">
|
||||
<input type="button" id="ask_flo_addr_btn" value="Submit">
|
||||
<br>
|
||||
<input type="button" id="reset_flo_keys" value="Reset Keys">
|
||||
<div id="localbitcoinuserdiv"></div>
|
||||
</div>
|
||||
|
||||
@ -51,6 +52,12 @@
|
||||
<ul id="new_flo_keys_ul"></ul>
|
||||
</div>
|
||||
|
||||
<h5>Change preffered fiat currency</h5>
|
||||
<div class="box">
|
||||
<div id="preffered_fiat_div"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<h5>Asset Box</h5>
|
||||
<div class="box">
|
||||
<div id="asset_box"></div>
|
||||
@ -112,7 +119,7 @@
|
||||
code.google.com/p/crypto-js/wiki/License
|
||||
*/
|
||||
/** @preserve
|
||||
(c) 2012 by Cédric Mesnil. All rights reserved.
|
||||
(c) 2012 by C<EFBFBD>dric Mesnil. All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
@ -9102,7 +9109,8 @@
|
||||
RMAssets =
|
||||
`tradableAsset1=BTC,FLO#!#tradableAsset2=INR,USD,BTC,FLO#!#supernodes=127.0.0.1,212.88.88.2#!#MASTER_NODE=023B9F60692A17FAC805D012C5C8ADA3DD19A980A3C5F0D8A5B3500CC54D6E8B75
|
||||
#!#MASTER_RECEIVING_ADDRESS=oVRq2nka1GtALQT8pbuLHAGjqAQ7PAo6uy#!#validTradingAmount=10000,50000,100000#!#btcTradeMargin=5000
|
||||
#!#supernodesPubKeys=029FDA7EA817F7A035F81C8A6B35AA53649690DF741E13C0B3DB99B06360F14385,#!#d3js=58f54395efa8346e8e94d12609770f66b916897e7f4e05f6c98780cffa5c70a3`;
|
||||
#!#supernodesPubKeys=033038E5F9A9CD59F21E4E1577BAC732DF7F4988634CF1ADE2EB74FC512689FC27,038C6D5C0DF3AA49501C20DD8333F9F67A854E87AA639A688FAE4F434718F2792D,
|
||||
#!#d3js=58f54395efa8346e8e94d12609770f66b916897e7f4e05f6c98780cffa5c70a3#!#ShamirsMaxShares=8`;
|
||||
let floAssetsArray = RMAssets.split('#!#');
|
||||
|
||||
if (floAssetsArray.length > 0 && typeof floAssetsArray[0] !== undefined &&
|
||||
@ -9454,13 +9462,16 @@
|
||||
},
|
||||
rebuild_my_private_key: function(transactionKey) {
|
||||
let my_pvt_key = localbitcoinplusplus.wallets.prototype.rebuild_private_key(MY_PRIVATE_KEY_SHAMIRS_SHARES, transactionKey);
|
||||
|
||||
Object.defineProperty(localbitcoinplusplus.wallets, 'MY_SUPERNODE_PRIVATE_KEY', {
|
||||
value: my_pvt_key,
|
||||
writable: false,
|
||||
configurable: false,
|
||||
enumerable: true
|
||||
});
|
||||
if (typeof localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY=="undefined") {
|
||||
alert(`Failed to create your private keys.`);
|
||||
throw new Error(`Failed to create your private keys.`);
|
||||
}
|
||||
},
|
||||
rebuild_private_key: function(private_key_shamirs_shares, transactionKey) {
|
||||
let decoded_shares = private_key_shamirs_shares.map(encryptedShares=>{
|
||||
@ -9520,7 +9531,7 @@
|
||||
return callback(false);
|
||||
},
|
||||
|
||||
receive_rpc_response(request) {
|
||||
async receive_rpc_response(request) {
|
||||
var request = JSON.parse(request);
|
||||
var params = request.params[0];
|
||||
var method = request.method;
|
||||
@ -9532,48 +9543,48 @@
|
||||
|
||||
/** CHECK HERE IF USER IS INDULGED IN ANY MORE TRADE.
|
||||
IF TRUE RETURN ERROR */
|
||||
// readAllDB("deposit").then(function(res) {
|
||||
// if (typeof res == "object" && res.length>0) {
|
||||
// let canUserTrade = res.map(function(user) {
|
||||
// return respective_trader_id == user.trader_flo_address;
|
||||
// });
|
||||
// if (canUserTrade.includes(true)) {
|
||||
// request.response = `Trader id ${respective_trader_id} is not clear for trade currently.
|
||||
// You must finish your previous pending orders to qualify again to trade.`;
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
await readAllDB("deposit").then(function(res) {
|
||||
if (typeof res == "object" && res.length>0) {
|
||||
let canUserTrade = res.map(function(user) {
|
||||
return respective_trader_id == user.trader_flo_address;
|
||||
});
|
||||
if (canUserTrade.includes(true)) {
|
||||
request.response = `Trader id ${respective_trader_id} is not clear for trade currently.
|
||||
You must finish your previous pending orders to qualify again to trade.`;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Check if user id is in deposit or withdraw. If true prevent him from trading
|
||||
// try {
|
||||
// readAllDB('withdraw_cash').then(function(res) {
|
||||
// if (typeof res=="object") {
|
||||
// let check_deposit_withdraw_id_array = res.filter(f=>f.status===2)
|
||||
// .map(m=>{
|
||||
// if (m.trader_flo_address==respective_trader_id||m.deposit_withdraw_id_array==respective_trader_id) {
|
||||
// let server_msg = `Trader id ${respective_trader_id} is not clear for trade currently.
|
||||
// You must finish your previous pending deposit/withdraw action to qualify again to trade.`;
|
||||
try {
|
||||
await readAllDB('withdraw_cash').then(function(res) {
|
||||
if (typeof res=="object") {
|
||||
let check_deposit_withdraw_id_array = res.filter(f=>f.status===2)
|
||||
.map(m=>{
|
||||
if (m.trader_flo_address==respective_trader_id||m.deposit_withdraw_id_array==respective_trader_id) {
|
||||
let server_msg = `Trader id ${respective_trader_id} is not clear for trade currently.
|
||||
You must finish your previous pending deposit/withdraw action to qualify again to trade.`;
|
||||
|
||||
// let server_response = localbitcoinplusplus.rpc.prototype
|
||||
// .send_rpc
|
||||
// .call(this, "supernode_message",
|
||||
// {"trader_flo_id":respective_trader_id, "server_msg":server_msg});
|
||||
// doSend(server_response);
|
||||
// throw new Error("User has not finished previous pending actions.");
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// } catch (error) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
let server_response = localbitcoinplusplus.rpc.prototype
|
||||
.send_rpc
|
||||
.call(this, "supernode_message",
|
||||
{"trader_flo_id":respective_trader_id, "server_msg":server_msg});
|
||||
doSend(server_response);
|
||||
throw new Error("User has not finished previous pending actions.");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
throw new Error(error);
|
||||
}
|
||||
|
||||
switch (method) {
|
||||
case "trade_buy":
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(function (is_valid_request) {
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(async function (is_valid_request) {
|
||||
if (is_valid_request !== true) return false;
|
||||
|
||||
await localbitcoinplusplus.trade.prototype.resolve_current_btc_price_in_fiat(params.currency);
|
||||
request.response = localbitcoinplusplus.trade.prototype.trade_buy.call(this,
|
||||
...request.params,
|
||||
function (supernode_signed_res) {
|
||||
@ -9584,18 +9595,16 @@
|
||||
supernode_signed_res);
|
||||
doSend(buy_request_response);
|
||||
// Init trading
|
||||
localbitcoinplusplus.trade.prototype.createTradePipes(request.params.currency);
|
||||
localbitcoinplusplus.trade.prototype.createTradePipes(params.currency);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
});
|
||||
break;
|
||||
case "trade_sell":
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(function (is_valid_request) {
|
||||
if (is_valid_request !== true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(async function (is_valid_request) {
|
||||
if (is_valid_request !== true) return false;
|
||||
await localbitcoinplusplus.trade.prototype.resolve_current_btc_price_in_fiat(params.currency);
|
||||
request.response = localbitcoinplusplus.trade.prototype.trade_sell.call(
|
||||
this, ...request.params,
|
||||
function (supernode_signed_res) {
|
||||
@ -9606,7 +9615,7 @@
|
||||
supernode_signed_res);
|
||||
doSend(sell_request_response);
|
||||
// Init trading
|
||||
localbitcoinplusplus.trade.prototype.createTradePipes(request.params.currency);
|
||||
localbitcoinplusplus.trade.prototype.createTradePipes(params.currency);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -9648,12 +9657,14 @@
|
||||
&& params.trader_flo_address.length > 0
|
||||
) {
|
||||
localbitcoinplusplus.wallets.prototype.getUserPublicKey(params.trader_flo_address,
|
||||
function(requester_public_key) {
|
||||
async function(requester_public_key) {
|
||||
if (requester_public_key==undefined||requester_public_key==null) {
|
||||
throw new Error('Failed to get public key of the user.');
|
||||
}
|
||||
params.depositor_public_key = requester_public_key;
|
||||
|
||||
await localbitcoinplusplus.trade.prototype.resolve_current_btc_price_in_fiat(params.currency);
|
||||
|
||||
if (params.product == "BTC") {
|
||||
/**************************************************************************
|
||||
// YOU HAVE TO PROVIDE BTC KEYS HERE. CHANGE IT LATER
|
||||
@ -9789,6 +9800,8 @@
|
||||
} else if (!localbitcoinplusplus.master_configurations.tradableAsset1.includes(params.product)) {
|
||||
params.id = helper_functions.unique_id();
|
||||
params.status = 1;
|
||||
// IMPORTANT - If deposit is a fiat make sure product and currency are both same
|
||||
params.currency = params.product;
|
||||
let receivedTradeInfo = { ...params };
|
||||
|
||||
readDB("localbitcoinUser", "00-01").then(function (su_data) {
|
||||
@ -9809,8 +9822,7 @@
|
||||
try {
|
||||
addDB("deposit", receivedTradeInfo);
|
||||
readDBbyIndex("withdraw_cash", "status", 1).then(
|
||||
function (
|
||||
withdrawers_list) {
|
||||
function (withdrawers_list) {
|
||||
if (typeof withdrawers_list == "object") {
|
||||
if (withdrawers_list.length > 0) {
|
||||
withdrawers_list.filter(wd=>wd.product == params.currency).map(
|
||||
@ -9893,13 +9905,13 @@
|
||||
});
|
||||
break;
|
||||
case "withdraw_request_method":
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(function (is_valid_request) {
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(async function (is_valid_request) {
|
||||
|
||||
if (is_valid_request !== true) return false;
|
||||
|
||||
if (typeof params.product !== "undefined"
|
||||
&& (localbitcoinplusplus.master_configurations.tradableAsset1.include(params.product)
|
||||
|| localbitcoinplusplus.master_configurations.tradableAsset2.includes(params.product)) &&
|
||||
&& (localbitcoinplusplus.master_configurations.tradableAsset1.includes(params.product)
|
||||
|| localbitcoinplusplus.master_configurations.tradableAsset2.includes(params.currency)) &&
|
||||
typeof params.withdrawing_amount !== "undefined" &&
|
||||
typeof localbitcoinplusplus.master_configurations.validTradingAmount !==
|
||||
'undefined' &&
|
||||
@ -9910,6 +9922,7 @@
|
||||
typeof params.receivinAddress == "string" && params.receivinAddress.length >
|
||||
0 && typeof params.currency !== "undefined"
|
||||
) {
|
||||
await localbitcoinplusplus.trade.prototype.resolve_current_btc_price_in_fiat(params.currency);
|
||||
params.id = helper_functions.unique_id();
|
||||
params.status = 1;
|
||||
if (params.product == "BTC") {
|
||||
@ -9923,13 +9936,14 @@
|
||||
let withdrawer_btc_balance = parseFloat(btc_balance_res.btc_balance);
|
||||
let withdrawing_btc_amount_in_cash = parseFloat(params.withdrawing_amount);
|
||||
if(!localbitcoinplusplus.master_configurations.tradableAsset2.includes(params.currency)) {
|
||||
params.currency = "USD";
|
||||
throw new Error("Invalid or unsupported currency.");
|
||||
}
|
||||
let eqBTC = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(
|
||||
withdrawing_btc_amount_in_cash, params.currency);
|
||||
eqBTC = parseFloat(eqBTC).toFixed(8);
|
||||
let withdrawer_new_btc_balance = withdrawer_btc_balance - eqBTC;
|
||||
if (withdrawer_btc_balance > 0 &&
|
||||
if (withdrawer_new_btc_balance > 0 &&
|
||||
withdrawer_btc_balance > 0 &&
|
||||
withdrawing_btc_amount_in_cash > 0 &&
|
||||
eqBTC > 0 && eqBTC <= withdrawer_btc_balance) {
|
||||
|
||||
@ -9975,6 +9989,7 @@
|
||||
utxo_addr: deposit_arr.btc_address,
|
||||
receiverBTCAddress: params.receivinAddress,
|
||||
receiverBTCEquivalentInCash: withdrawing_btc_amount_in_cash,
|
||||
currency: params.currency,
|
||||
change_adress:deposit_arr.btc_address,
|
||||
timestamp: + new Date()
|
||||
}
|
||||
@ -10118,7 +10133,8 @@
|
||||
case "retrieve_shamirs_secret_btc_pvtkey":
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(function (is_valid_request) {
|
||||
if (is_valid_request !== true) return false;
|
||||
if (typeof params.btc_private_key_array !== "string" || typeof params.retrieve_pvtkey_req_id !== "number") return false;
|
||||
|
||||
if (typeof params.btc_private_key_array !== "string" || typeof params.retrieve_pvtkey_req_id !== "string") return false;
|
||||
|
||||
let btc_private_key_str = params.btc_private_key_array;
|
||||
let retrieve_pvtkey_req_id = params.retrieve_pvtkey_req_id;
|
||||
@ -10129,6 +10145,7 @@
|
||||
let btc_pk_shares_array = btc_private_key_object.map(pkChunks=>{
|
||||
if(typeof pkChunks.private_key_chunk !== "undefined") return pkChunks.private_key_chunk.privateKeyChunks;
|
||||
}).filter(val => val !== undefined);
|
||||
console.log(btc_pk_shares_array);
|
||||
|
||||
readDB('withdraw_btc', withdraw_id).then(function(withdraw_res) {
|
||||
if (typeof withdraw_res == "object") {
|
||||
@ -10137,17 +10154,20 @@
|
||||
let transaction_key = btc_reserves.supernode_transaction_key;
|
||||
if (transaction_key.length>0) {
|
||||
let btc_private_key = localbitcoinplusplus.wallets.prototype.rebuild_private_key(btc_pk_shares_array, transaction_key);
|
||||
console.log(btc_private_key);
|
||||
|
||||
localbitcoinplusplus.trade.prototype.sendTransaction(withdraw_res.utxo_addr, btc_private_key, withdraw_res.receiverBTCAddress,
|
||||
withdraw_res.receiverBTCEquivalentInCash, withdraw_res.currency, withdraw_res.change_adress, function(res) {
|
||||
withdraw_res.receiverBTCEquivalentInCash, withdraw_res.currency, withdraw_res.change_adress, async function(res) {
|
||||
console.log(res);
|
||||
if (typeof res == "string" && res.length>0) {
|
||||
try {
|
||||
let msg = `Transaction Id for your withdrawn BTC: ${res.txid.result}`;
|
||||
let resp_obj = JSON.parse(res);
|
||||
let msg = `Transaction Id for your withdrawn BTC: ${resp_obj.txid.result}`;
|
||||
writeToScreen(msg);
|
||||
alert(msg);
|
||||
return true;
|
||||
} catch (error) {
|
||||
throw new Error(error);
|
||||
console.warn(error);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10157,33 +10177,35 @@
|
||||
*******************CHECK ACTUAL BTC BALANCE HERE THROUGH AN API AND UPDATE DEPOSIT TABLE****************************************************
|
||||
************************************************************************************************************************************/
|
||||
|
||||
await localbitcoinplusplus.trade.prototype.resolve_current_btc_price_in_fiat(withdraw_res.currency);
|
||||
|
||||
readDBbyIndex('deposit', 'btc_address', withdraw_res.utxo_addr).then(function(deposit_arr_resp) {
|
||||
if (typeof deposit_arr_resp=="object") {
|
||||
deposit_arr_resp.map(deposit_arr=>{
|
||||
let eqBTC = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(withdraw_res.receiverBTCEquivalentInCash, withdraw_res.currency);
|
||||
eqBTC = parseFloat(eqBTC);
|
||||
deposit_arr.bitcoinToBePaid -= eqBTC;
|
||||
|
||||
readDBbyIndex('deposit', 'btc_address', withdraw_res.utxo_addr).then(function(deposit_arr) {
|
||||
if (typeof deposit_arr=="object") {
|
||||
let eqBTC = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(withdraw_res.receiverBTCEquivalentInCash, withdraw_res.currency);
|
||||
eqBTC = parseFloat(eqBTC);
|
||||
deposit_arr.bitcoinToBePaid -= eqBTC;
|
||||
|
||||
if (deposit_arr.bitcoinToBePaid > 0) {
|
||||
// update deposits in db
|
||||
deposit_arr.status = 2; // UTXO ready to be used again
|
||||
updateinDB(
|
||||
"deposit",
|
||||
deposit_arr,
|
||||
deposit_arr
|
||||
.trader_flo_address
|
||||
);
|
||||
|
||||
} else {
|
||||
// delete entry in deposits in db
|
||||
removeinDB
|
||||
(
|
||||
if (deposit_arr.bitcoinToBePaid > 0) {
|
||||
// update deposits in db
|
||||
deposit_arr.status = 2; // UTXO ready to be used again
|
||||
updateinDB(
|
||||
"deposit",
|
||||
deposit_arr,
|
||||
deposit_arr
|
||||
.trader_flo_address
|
||||
);
|
||||
}
|
||||
|
||||
} else {
|
||||
// delete entry in deposits in db
|
||||
removeinDB
|
||||
(
|
||||
"deposit",
|
||||
deposit_arr
|
||||
.trader_flo_address
|
||||
);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@ -10577,16 +10599,15 @@
|
||||
},
|
||||
sendTransaction(utxo_addr, utxo_addr_wif, receiver_address, receiving_amount, receiving_amount_currency="USD", change_adress, callback) {
|
||||
let url = `${localbitcoinplusplus.flocha}/api/addr/${utxo_addr}/utxo`;
|
||||
helper_functions.ajaxGet(url).then(res=>{
|
||||
helper_functions.ajaxGet(url).then(utxo_list=>{
|
||||
|
||||
if (res.length > 0) {
|
||||
if (utxo_list.length > 0) {
|
||||
try {
|
||||
if (!localbitcoinplusplus.master_configurations.validTradingAmount.includes(receiving_amount)) {
|
||||
throw new Error('Invalid amount');
|
||||
}
|
||||
let btc_eq_receiving_amount = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(receiving_amount, receiving_amount_currency);
|
||||
btc_eq_receiving_amount = parseFloat(btc_eq_receiving_amount).toFixed(8);
|
||||
let utxo_list = JSON.parse(res);
|
||||
let trx = bitjs.transaction();
|
||||
let sum = 0;
|
||||
|
||||
@ -10728,7 +10749,7 @@
|
||||
.toFixed(8);
|
||||
let sell_price_in_inr = parseFloat(sellPipeObj.buy_price);
|
||||
let eqBTCSeller = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(
|
||||
sell_price_in_inr, buy_price_btc.currency);
|
||||
sell_price_in_inr, buyPipeObj.currency);
|
||||
if (!isNaN(eqBTCSeller) && eqBTCSeller != "" && eqBTCSeller !=
|
||||
undefined) {
|
||||
eqBTCSeller = parseFloat(eqBTCSeller);
|
||||
@ -11160,7 +11181,7 @@
|
||||
/* Websocket Code Starts here */
|
||||
|
||||
//var wsUri = "ws://localhost:9000/";
|
||||
var wsUri = "ws://ranchimall786.duckdns.org:9000/";
|
||||
var wsUri = "ws://ranchimall.duckdns.org:9000/";
|
||||
var output;
|
||||
|
||||
function init() {
|
||||
@ -11208,23 +11229,23 @@
|
||||
switch (res_obj.method) {
|
||||
case "supernode_message":
|
||||
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
|
||||
let received_resp = res_obj.params[0];
|
||||
try {
|
||||
if (received_resp.trader_flo_id.length>0 && received_resp.server_msg.length>0) {
|
||||
readDB("localbitcoinUser", "00-01").then(function(res) {
|
||||
if (typeof res=="object" && res.myLocalFLOAddress.length>0) {
|
||||
if (res.myLocalFLOAddress===received_resp.trader_flo_id) {
|
||||
writeToScreen(received_resp.server_msg);
|
||||
alert(received_resp.server_msg);
|
||||
return false;
|
||||
}
|
||||
let received_resp = res_obj.params[0];
|
||||
try {
|
||||
if (received_resp.trader_flo_id.length>0 && received_resp.server_msg.length>0) {
|
||||
readDB("localbitcoinUser", "00-01").then(function(res) {
|
||||
if (typeof res=="object" && res.myLocalFLOAddress.length>0) {
|
||||
if (res.myLocalFLOAddress===received_resp.trader_flo_id) {
|
||||
writeToScreen(received_resp.server_msg);
|
||||
alert(received_resp.server_msg);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
throw new Error(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
throw new Error(error);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "trade_buy":
|
||||
response_from_sever = localbitcoinplusplus.rpc.prototype.receive_rpc_response.call(this,
|
||||
@ -11431,8 +11452,10 @@
|
||||
}
|
||||
if (MY_PRIVATE_KEY_SHAMIRS_SHARES.length==5) {
|
||||
localbitcoinplusplus.wallets.prototype.rebuild_my_private_key(localbitcoinplusplus.wallets.supernode_transaction_key);
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new Error(`Failed to build your private key.`);
|
||||
break;
|
||||
case "send_back_shamirs_secret_btc_pvtkey":
|
||||
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
|
||||
@ -11458,6 +11481,13 @@
|
||||
let shamirs_shares_response = res_obj.params[0];
|
||||
let retrieve_pvtkey_req_id = res_obj.params[0].retrieve_pvtkey_req_id;
|
||||
let withdraw_id = res_obj.params[0].withdraw_id;
|
||||
// if (typeof btc_pvt_arr[retrieve_pvtkey_req_id]=="undefined") btc_pvt_arr[retrieve_pvtkey_req_id] = [];
|
||||
// btc_pvt_arr[retrieve_pvtkey_req_id].push(shamirs_shares_response);
|
||||
// if (btc_pvt_arr[retrieve_pvtkey_req_id].length===localbitcoinplusplus.master_configurations.ShamirsMaxShares) {
|
||||
// delete res_obj.params[0].private_key_chunk;
|
||||
// res_obj.params[0].btc_private_key_array = JSON.stringify(btc_pvt_arr[retrieve_pvtkey_req_id]);
|
||||
// localbitcoinplusplus.rpc.prototype.receive_rpc_response.call(this, JSON.stringify(res_obj));
|
||||
// }
|
||||
eval(`if (typeof btc_pvt_arr${retrieve_pvtkey_req_id}=="undefined") btc_pvt_arr${retrieve_pvtkey_req_id} = [];
|
||||
btc_pvt_arr${retrieve_pvtkey_req_id}.push(shamirs_shares_response);
|
||||
if (btc_pvt_arr${retrieve_pvtkey_req_id}.length===localbitcoinplusplus.master_configurations.ShamirsMaxShares) {
|
||||
@ -11513,35 +11543,37 @@
|
||||
doSend(update_withdraw_cash_obj);
|
||||
} else if (withdraw_data.trader_flo_address==user_id) {
|
||||
// Withdrawer confirmed the payment
|
||||
readDBbyIndex('cash_balances', 'trader_flo_address', withdraw_data.depositor_flo_id).then(function(depositor_cash_data) {
|
||||
if (typeof depositor_cash_data=="object") {
|
||||
if (depositor_cash_data.length==0) {
|
||||
depositor_cash_data = {cash_balance:0, trader_flo_address:withdraw_data.depositor_flo_id, currency:localbitcoinplusplus.trade.user_preffered_currency};
|
||||
addDB('cash_balances', depositor_cash_data);
|
||||
}
|
||||
depositor_cash_data.cash_balance += parseFloat(withdraw_data.withdraw_amount);
|
||||
updateinDB('cash_balances', depositor_cash_data);
|
||||
removeByIndex('deposit', 'trader_flo_address', depositor_cash_data.trader_flo_address);
|
||||
removeinDB('withdraw_cash', withdraw_data.id);
|
||||
readDBbyIndex('cash_balances', 'trader_flo_address', withdraw_data.depositor_flo_id).then(function(depositor_cash_data_res) {
|
||||
if (typeof depositor_cash_data_res=="object") {
|
||||
depositor_cash_data_res.map(depositor_cash_data=>{
|
||||
if (depositor_cash_data.length==0) {
|
||||
depositor_cash_data = {cash_balance:0, trader_flo_address:withdraw_data.depositor_flo_id, currency:localbitcoinplusplus.trade.user_preffered_currency};
|
||||
addDB('cash_balances', depositor_cash_data);
|
||||
}
|
||||
depositor_cash_data.cash_balance += parseFloat(withdraw_data.withdraw_amount);
|
||||
updateinDB('cash_balances', depositor_cash_data);
|
||||
removeByIndex('deposit', 'trader_flo_address', depositor_cash_data.trader_flo_address);
|
||||
removeinDB('withdraw_cash', withdraw_data.id);
|
||||
|
||||
let update_cash_balance_obj = {
|
||||
depositor_cash_data:depositor_cash_data
|
||||
}
|
||||
let update_cash_balance_str = JSON.stringify(update_cash_balance_obj);
|
||||
let update_cash_balance_hash = Crypto.SHA256(update_cash_balance_str);
|
||||
let update_cash_balance_sign = localbitcoinplusplus.wallets.prototype
|
||||
.sign(update_cash_balance_hash, localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY);
|
||||
|
||||
update_cash_balance_obj.publicKey = localbitcoinplusplus.wallets.my_local_flo_public_key;
|
||||
update_cash_balance_obj.sign = update_cash_balance_sign;
|
||||
update_cash_balance_obj.hash = update_cash_balance_hash;
|
||||
update_cash_balance_obj.withdraw_id = withdraw_data.id;
|
||||
let update_cash_balance_obj = {
|
||||
depositor_cash_data:depositor_cash_data
|
||||
}
|
||||
let update_cash_balance_str = JSON.stringify(update_cash_balance_obj);
|
||||
let update_cash_balance_hash = Crypto.SHA256(update_cash_balance_str);
|
||||
let update_cash_balance_sign = localbitcoinplusplus.wallets.prototype
|
||||
.sign(update_cash_balance_hash, localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY);
|
||||
|
||||
update_cash_balance_obj.publicKey = localbitcoinplusplus.wallets.my_local_flo_public_key;
|
||||
update_cash_balance_obj.sign = update_cash_balance_sign;
|
||||
update_cash_balance_obj.hash = update_cash_balance_hash;
|
||||
update_cash_balance_obj.withdraw_id = withdraw_data.id;
|
||||
|
||||
let update_cash_balance_req = localbitcoinplusplus.rpc.prototype
|
||||
.send_rpc
|
||||
.call(this, "update_all_deposit_withdraw_success",
|
||||
update_cash_balance_obj);
|
||||
doSend(update_cash_balance_req);
|
||||
let update_cash_balance_req = localbitcoinplusplus.rpc.prototype
|
||||
.send_rpc
|
||||
.call(this, "update_all_deposit_withdraw_success",
|
||||
update_cash_balance_obj);
|
||||
doSend(update_cash_balance_req);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -12111,7 +12143,27 @@
|
||||
// localbitcoinUser Databse
|
||||
const dataBaseOperations = function () {
|
||||
let ask_flo_addr_btn = document.getElementById('ask_flo_addr_btn');
|
||||
ask_flo_addr_btn.addEventListener('click', function () {
|
||||
let reset_flo_keys_btn = document.getElementById('reset_flo_keys');
|
||||
|
||||
reset_flo_keys_btn.onclick = function() {
|
||||
if (confirm(`This will reset your old keys along with data associated with it.
|
||||
Are you sure you want to continue?`)) {
|
||||
const promise1 = updateinDB('localbitcoinUser', {
|
||||
id: "00-01",
|
||||
myLocalFLOAddress: "",
|
||||
myLocalFLOPublicKey: "",
|
||||
myAddressTrustLevel: 1,
|
||||
preferredTradeCurrency: "USD"
|
||||
}, "00-01")
|
||||
|
||||
const promise2 = removeAllinDB('my_supernode_private_key_chunks');
|
||||
|
||||
Promise.all([promise1, promise2]).then(function(values) {
|
||||
alert(`Your FLO keys have been deleted. Please generate new keys to continue.`);
|
||||
});
|
||||
}
|
||||
}
|
||||
ask_flo_addr_btn.addEventListener('click', async function () {
|
||||
let ask_flo_addr = document.getElementById('ask_flo_addr');
|
||||
let ask_flo_addr_val = ask_flo_addr.value.trim();
|
||||
|
||||
@ -12119,6 +12171,24 @@
|
||||
"") {
|
||||
throw new Error('Empty or invalid FLO address.');
|
||||
}
|
||||
|
||||
// rebuild private key
|
||||
let supernode_transaction_key_arr = [];
|
||||
const chunks = await readAllDB("my_supernode_private_key_chunks");
|
||||
if (typeof chunks == "object" && chunks.length>0) {
|
||||
let txKey = chunks.map(chunk=>{
|
||||
let retrieve_pvtkey_req = localbitcoinplusplus.rpc.prototype
|
||||
.send_rpc
|
||||
.call(this, "send_back_shamirs_secret_supernode_pvtkey",
|
||||
{chunk_val:chunk.id});
|
||||
doSend(retrieve_pvtkey_req);
|
||||
supernode_transaction_key_arr.push(chunk.supernode_transaction_key);
|
||||
return supernode_transaction_key_arr;
|
||||
}).filter(function (e, i, c) {
|
||||
return c.indexOf(e) === i;
|
||||
});
|
||||
const TRANSACTION_KEY = localbitcoinplusplus.wallets.supernode_transaction_key = txKey[0][0];
|
||||
}
|
||||
|
||||
try {
|
||||
readDB("localbitcoinUser", "00-01").then(function (idbData) {
|
||||
@ -12161,30 +12231,49 @@
|
||||
}
|
||||
});
|
||||
|
||||
// rebuild private key
|
||||
let supernode_transaction_key_arr = [];
|
||||
readAllDB("my_supernode_private_key_chunks").then(function(chunks) {
|
||||
if (typeof chunks == "object" && chunks.length>0) {
|
||||
let txKey = chunks.map(chunk=>{
|
||||
let retrieve_pvtkey_req = localbitcoinplusplus.rpc.prototype
|
||||
.send_rpc
|
||||
.call(this, "send_back_shamirs_secret_supernode_pvtkey",
|
||||
{chunk_val:chunk.id});
|
||||
doSend(retrieve_pvtkey_req);
|
||||
supernode_transaction_key_arr.push(chunk.supernode_transaction_key);
|
||||
return supernode_transaction_key_arr;
|
||||
}).filter(function (e, i, c) {
|
||||
return c.indexOf(e) === i;
|
||||
});
|
||||
const TRANSACTION_KEY = localbitcoinplusplus.wallets.supernode_transaction_key = txKey[0][0];
|
||||
}
|
||||
});
|
||||
|
||||
localbitcoinplusplus.actions.sync_with_supernode(MY_LOCAL_FLO_ADDRESS);
|
||||
|
||||
//localbitcoinuserdiv
|
||||
document.getElementById("localbitcoinuserdiv").innerHTML = `<p>Address: ${idbData.myLocalFLOAddress}<p>`;
|
||||
|
||||
/*To change preferred fiat currency*/
|
||||
const preffered_fiat_div = document.getElementById("preffered_fiat_div");
|
||||
|
||||
const current_preffered_fiat_h5 = document.createElement("H5");
|
||||
var current_preffered_fiat_text = document.createTextNode(`
|
||||
Current Default Trading Currency: ${MY_PREFFERED_TRADE_CURRENCY}`);
|
||||
current_preffered_fiat_h5.appendChild(current_preffered_fiat_text);
|
||||
|
||||
const fiat_currency_select = document.createElement('select');
|
||||
fiat_currency_select.id = "fiat_currency_select";
|
||||
|
||||
const change_preferred_fiat_btn = document.createElement('button');
|
||||
const change_preferred_fiat_btn_text = document.createTextNode('Change Currency');
|
||||
change_preferred_fiat_btn.appendChild(change_preferred_fiat_btn_text);
|
||||
|
||||
preffered_fiat_div.appendChild(current_preffered_fiat_h5);
|
||||
preffered_fiat_div.appendChild(fiat_currency_select);
|
||||
preffered_fiat_div.appendChild(change_preferred_fiat_btn);
|
||||
|
||||
change_preferred_fiat_btn.onclick = function() {
|
||||
readDB("localbitcoinUser", "00-01").then(function (idbData) {
|
||||
idbData.preferredTradeCurrency = fiat_currency_select.value;
|
||||
updateinDB('localbitcoinUser', idbData, "00-01").then(()=>{alert(`
|
||||
You successfully changed your default trading fiat currency to ${idbData.preferredTradeCurrency}.
|
||||
`)}).catch(e=>alert("Warning: System failed to update your preferred currency. Please try again."));
|
||||
});
|
||||
}
|
||||
|
||||
localbitcoinplusplus.master_configurations.tradableAsset2
|
||||
.filter(assets=>!localbitcoinplusplus.master_configurations.tradableAsset1.includes(assets))
|
||||
.map(cryptos=>{
|
||||
let option = document.createElement("option");
|
||||
option.value = cryptos;
|
||||
option.text = cryptos;
|
||||
fiat_currency_select.appendChild(option);
|
||||
});
|
||||
|
||||
|
||||
/* Give user the facillity to trade */
|
||||
|
||||
const tradebox = document.getElementById("tradebox");
|
||||
@ -12579,8 +12668,10 @@
|
||||
|
||||
readDBbyIndex('system_btc_reserves_private_keys', 'btc_address', trader_deposits.btc_address).then(function(reserve_res) {
|
||||
if (typeof reserve_res=="object") {
|
||||
reserve_res.balance = balance;
|
||||
updateinDB('system_btc_reserves_private_keys', reserve_res, reserve_res.id);
|
||||
reserve_res.map(reserves=>{
|
||||
reserves.balance = balance;
|
||||
updateinDB('system_btc_reserves_private_keys', reserves, reserves.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user