fixed minor issues in primary operations

This commit is contained in:
Abhishek Sinha 2019-05-22 16:14:19 +05:30
parent 6b5565f806
commit 915c2d7cd4

View File

@ -15796,6 +15796,7 @@
} }
break; break;
case "trade_balance_updates": case "trade_balance_updates":
if(!localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(res_obj.nodePubKey)) return;
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") { if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
const trade_balance_res = res_obj.params[0]; const trade_balance_res = res_obj.params[0];
// Verify data // Verify data
@ -15809,40 +15810,35 @@
`${trade_info_str}${buyer_cash_data_str}${seller_cash_data_str}${buyer_btc_data_str}${seller_btc_data_str}`; `${trade_info_str}${buyer_cash_data_str}${seller_cash_data_str}${buyer_btc_data_str}${seller_btc_data_str}`;
let hashed_data = Crypto.SHA256(res_str); let hashed_data = Crypto.SHA256(res_str);
RM_RPC.filter_legit_requests(trade_balance_res.trade_infos.buyer_flo_id, if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
function (is_valid_request) { trade_balance_res.supernodePubKey)) {
if (is_valid_request !== true) return false; if (RM_WALLET.verify(hashed_data,
trade_balance_res.supernode_sign, trade_balance_res.supernodePubKey)) {
// Delete orders in clients DB
try {
removeinDB("buyOrders", trade_balance_res.trade_infos.buy_order_id);
removeinDB("sellOrders", trade_balance_res.trade_infos.sell_order_id);
} catch (error) {
callback(false);
throw new Error(error);
}
if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes( // Update balances in clients DB
trade_balance_res.supernodePubKey)) { try {
if (RM_WALLET.verify(hashed_data, updateinDB("cash_balances", trade_balance_res.buyer_cash_data,
trade_balance_res.supernode_sign, trade_balance_res.supernodePubKey)) { trade_balance_res.trade_infos.buyer_flo_id);
// Delete orders in clients DB updateinDB("cash_balances", trade_balance_res.seller_cash_data,
try { trade_balance_res.trade_infos.seller_flo_id);
removeinDB("buyOrders", trade_balance_res.trade_infos.buy_order_id); updateinDB("crypto_balances", trade_balance_res.buyer_btc_data,
removeinDB("sellOrders", trade_balance_res.trade_infos.sell_order_id); trade_balance_res.trade_infos.buyer_flo_id);
} catch (error) { updateinDB("crypto_balances", trade_balance_res.seller_btc_data,
callback(false); trade_balance_res.trade_infos.seller_flo_id);
throw new Error(error); } catch (error) {
} callback(false);
throw new Error(error);
// Update balances in clients DB
try {
updateinDB("cash_balances", trade_balance_res.buyer_cash_data,
trade_balance_res.trade_infos.buyer_flo_id);
updateinDB("cash_balances", trade_balance_res.seller_cash_data,
trade_balance_res.trade_infos.seller_flo_id);
updateinDB("crypto_balances", trade_balance_res.buyer_btc_data,
trade_balance_res.trade_infos.buyer_flo_id);
updateinDB("crypto_balances", trade_balance_res.seller_btc_data,
trade_balance_res.trade_infos.seller_flo_id);
} catch (error) {
callback(false);
throw new Error(error);
}
} }
} }
}); }
} }
break; break;
case "store_shamirs_secret_pvtkey_shares": case "store_shamirs_secret_pvtkey_shares":
@ -16267,31 +16263,27 @@
break; break;
case "updateUserCryptoBalanceRequest": case "updateUserCryptoBalanceRequest":
let updateUserCryptoBalanceResponseObject = res_obj.params[0]; if (localbitcoinplusplus.master_configurations.supernodesPubKeys
let SuPubKey = readDB('userPublicData', updateUserCryptoBalanceResponseObject.trader_flo_address) .includes(res_obj.nodePubKey)) {
.then(user_data => { let updateUserCryptoBalanceResponseObject = res_obj.params[0];
if (typeof user_data !== "object" || user_data.supernode_flo_public_key.length < let updateUserCryptoBalanceResponseString = JSON.stringify(
1) updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject);
throw new Error(`No such user exists.`); let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString,
let updateUserCryptoBalanceResponseString = JSON.stringify( updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign,
updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject); res_obj.nodePubKey
let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString, );
updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign, if (isBalanceLegit) {
user_data.supernode_flo_public_key updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject);
); if (localbitcoinplusplus.wallets.my_local_flo_address ==
if (isBalanceLegit) { updateUserCryptoBalanceResponseObject.trader_flo_address) {
updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject, displayBalances(updateUserCryptoBalanceResponseObject.trader_flo_address);
user_data.trader_flo_address); showMessage(`INFO: Your balance is updated.`);
if (localbitcoinplusplus.wallets.my_local_flo_address ==
updateUserCryptoBalanceResponseObject.trader_flo_address) {
displayBalances(updateUserCryptoBalanceResponseObject.trader_flo_address);
showMessage(`INFO: Your balance is updated.`);
}
return true;
} else {
showMessage(`WARNING: Failed to update balance in your DB. Please refresh.`);
} }
}); return true;
} else {
showMessage(`WARNING: Failed to update balance in your DB. Please refresh.`);
}
}
break; break;
case "addNewKbucketNode": case "addNewKbucketNode":
@ -17029,6 +17021,7 @@
} }
break; break;
case "trade_balance_updates": case "trade_balance_updates":
if(!localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(res_obj.nodePubKey)) return;
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") { if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
const trade_balance_res = res_obj.params[0]; const trade_balance_res = res_obj.params[0];
// Verify data // Verify data
@ -17042,60 +17035,57 @@
`${trade_info_str}${buyer_cash_data_str}${seller_cash_data_str}${buyer_btc_data_str}${seller_btc_data_str}`; `${trade_info_str}${buyer_cash_data_str}${seller_cash_data_str}${buyer_btc_data_str}${seller_btc_data_str}`;
let hashed_data = Crypto.SHA256(res_str); let hashed_data = Crypto.SHA256(res_str);
RM_RPC.filter_legit_backup_requests(trade_balance_res.trade_infos.buyer_flo_id, if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
function (is_valid_request) {
if (is_valid_request !== true) return false;
if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
trade_balance_res.supernodePubKey)) { trade_balance_res.supernodePubKey)) {
if (RM_WALLET.verify(hashed_data, if (RM_WALLET.verify(hashed_data,
trade_balance_res.supernode_sign, trade_balance_res.supernodePubKey)) { trade_balance_res.supernode_sign, trade_balance_res.supernodePubKey)) {
// Delete orders in clients DB // Delete orders in clients DB
try { try {
removeinDB("buyOrders", trade_balance_res.trade_infos.buy_order_id); removeinDB("buyOrders", trade_balance_res.trade_infos.buy_order_id);
removeinDB("sellOrders", trade_balance_res.trade_infos.sell_order_id); removeinDB("sellOrders", trade_balance_res.trade_infos.sell_order_id);
} catch (error) { } catch (error) {
callback(false); callback(false);
throw new Error(error); throw new Error(error);
} }
// Update balances in clients DB // Update balances in clients DB
try { try {
updateinDB("cash_balances", trade_balance_res.buyer_cash_data, updateinDB("cash_balances", trade_balance_res.buyer_cash_data,
trade_balance_res.trade_infos.buyer_flo_id); trade_balance_res.trade_infos.buyer_flo_id);
updateinDB("cash_balances", trade_balance_res.seller_cash_data, updateinDB("cash_balances", trade_balance_res.seller_cash_data,
trade_balance_res.trade_infos.seller_flo_id); trade_balance_res.trade_infos.seller_flo_id);
updateinDB("crypto_balances", trade_balance_res.buyer_btc_data, updateinDB("crypto_balances", trade_balance_res.buyer_btc_data,
trade_balance_res.trade_infos.buyer_flo_id); trade_balance_res.trade_infos.buyer_flo_id);
updateinDB("crypto_balances", trade_balance_res.seller_btc_data, updateinDB("crypto_balances", trade_balance_res.seller_btc_data,
trade_balance_res.trade_infos.seller_flo_id); trade_balance_res.trade_infos.seller_flo_id);
} catch (error) { } catch (error) {
callback(false); callback(false);
throw new Error(error); throw new Error(error);
}
} }
} }
}); }
} }
break; break;
case "store_shamirs_secret_pvtkey_shares": case "store_shamirs_secret_pvtkey_shares":
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") { if (localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
if(typeof res_obj.params[0].trader_flo_address !="string") return;
localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.params[0].trader_flo_address)
.then(my_closest_su_list=>{
const primarySupernodeOfThisUser = my_closest_su_list[0].data.id;
const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernodeOfThisUser];
if(typeof res_obj.params[0].trader_flo_address !="string") return; if(typeof backup_server_db_instance !== "object") {
localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.params[0].trader_flo_address) let backup_db_error_msg = `WARNING: Unknown DB instance. DB Backup failed.`;
.then(my_closest_su_list=>{ showMessage(backup_db_error_msg);
const primarySupernodeOfThisUser = my_closest_su_list[0].data.id; throw new Error(backup_db_error_msg);
const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernodeOfThisUser]; };
delete res_obj.params[0].trader_flo_address;
if(typeof backup_server_db_instance !== "object") { backup_server_db_instance.backup_addDB("supernode_private_key_chunks", res_obj.params[0]);
let backup_db_error_msg = `WARNING: Unknown DB instance. DB Backup failed.`; });
showMessage(backup_db_error_msg); }
throw new Error(backup_db_error_msg);
};
delete res_obj.params[0].trader_flo_address;
backup_server_db_instance.backup_addDB("supernode_private_key_chunks", res_obj.params[0]);
});
} }
break; break;
case "send_back_shamirs_secret_supernode_pvtkey": case "send_back_shamirs_secret_supernode_pvtkey":
@ -17596,31 +17586,29 @@
break; break;
case "updateUserCryptoBalanceRequest": case "updateUserCryptoBalanceRequest":
let updateUserCryptoBalanceResponseObject = res_obj.params[0]; if (localbitcoinplusplus.master_configurations.supernodesPubKeys
let SuPubKey = readDB('userPublicData', updateUserCryptoBalanceResponseObject.trader_flo_address) .includes(res_obj.nodePubKey)) {
.then(user_data => { let updateUserCryptoBalanceResponseObject = res_obj.params[0];
if (typeof user_data !== "object" || user_data.supernode_flo_public_key.length < let updateUserCryptoBalanceResponseString = JSON.stringify(
1) updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject);
throw new Error(`No such user exists.`); let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString,
let updateUserCryptoBalanceResponseString = JSON.stringify( updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign,
updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject); res_obj.nodePubKey
let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString, );
updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign, if (isBalanceLegit) {
user_data.supernode_flo_public_key updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject,
); updateUserCryptoBalanceResponseObject.trader_flo_address);
if (isBalanceLegit) { if (localbitcoinplusplus.wallets.my_local_flo_address ==
updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject, updateUserCryptoBalanceResponseObject.trader_flo_address) {
user_data.trader_flo_address); displayBalances(updateUserCryptoBalanceResponseObject.trader_flo_address);
if (localbitcoinplusplus.wallets.my_local_flo_address == showMessage(`INFO: Your balance is updated.`);
updateUserCryptoBalanceResponseObject.trader_flo_address) {
displayBalances(updateUserCryptoBalanceResponseObject.trader_flo_address);
showMessage(`INFO: Your balance is updated.`);
}
return true;
} else {
showMessage(`WARNING: Failed to update balance in your DB. Please refresh.`);
} }
}); return true;
} else {
showMessage(`WARNING: Failed to update balance in your DB. Please refresh.`);
}
}
break; break;
case "addNewKbucketNode": case "addNewKbucketNode":
@ -18165,7 +18153,7 @@
buyOrders_data.supernodePubKey); buyOrders_data.supernodePubKey);
if (isDataSignedBySuperNode === true) { if (isDataSignedBySuperNode === true) {
let getPrimarySuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj[0].trader_flo_address); let getPrimarySuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(buyOrders_data.trader_flo_address);
const primarySupernode = getPrimarySuObj[0].data.id; const primarySupernode = getPrimarySuObj[0].data.id;
const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernode]; const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernode];
@ -18192,7 +18180,7 @@
.verify(sellOrders_data.data_hash, sellOrders_data.supernode_sign, .verify(sellOrders_data.data_hash, sellOrders_data.supernode_sign,
sellOrders_data.supernodePubKey); sellOrders_data.supernodePubKey);
if (isDataSignedBySuperNode === true) { if (isDataSignedBySuperNode === true) {
let getPrimarySuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj[0].trader_flo_address); let getPrimarySuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(sellOrders_data.trader_flo_address);
const primarySupernode = getPrimarySuObj[0].data.id; const primarySupernode = getPrimarySuObj[0].data.id;
const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernode]; const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernode];
@ -18331,6 +18319,8 @@
break; break;
case "trade_balance_updates": case "trade_balance_updates":
if(!localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(res_obj.nodePubKey)) return;
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") { if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
const trade_balance_res = res_obj.params[0]; const trade_balance_res = res_obj.params[0];
// Verify data // Verify data
@ -18705,49 +18695,47 @@
break; break;
case "updateUserCryptoBalanceRequest": case "updateUserCryptoBalanceRequest":
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") { if (localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(res_obj.nodePubKey)) {
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
let updateUserCryptoBalanceResponseObject = res_obj.params[0]; let updateUserCryptoBalanceResponseObject = res_obj.params[0];
console.log(res_obj.params[0]);
if(typeof res_obj.params[0].trader_flo_address !="string") return; if(typeof res_obj.params[0].trader_flo_address !="string") return;
localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.params[0].trader_flo_address) localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.params[0].trader_flo_address)
.then(my_closest_su_list=>{ .then(my_closest_su_list=>{
const primarySupernodeOfThisUser = my_closest_su_list[0].data.id; const primarySupernodeOfThisUser = my_closest_su_list[0].data.id;
const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernodeOfThisUser]; const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernodeOfThisUser];
if(typeof backup_server_db_instance !== "object") { if(typeof backup_server_db_instance !== "object") {
let backup_db_error_msg = `WARNING: Unknown DB instance. DB Backup failed.`; let backup_db_error_msg = `WARNING: Unknown DB instance. DB Backup failed.`;
showMessage(backup_db_error_msg); showMessage(backup_db_error_msg);
throw new Error(backup_db_error_msg); throw new Error(backup_db_error_msg);
}; };
let SuPubKey = backup_server_db_instance.backup_readDB('userPublicData', updateUserCryptoBalanceResponseObject.trader_flo_address) let updateUserCryptoBalanceResponseString = JSON.stringify(
.then(user_data => { updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject);
if (typeof user_data !== "object" || user_data.supernode_flo_public_key.length < let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString,
1) updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign,
throw new Error(`No such user exists.`); res_obj.nodePubKey
let updateUserCryptoBalanceResponseString = JSON.stringify( );
updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject); if (isBalanceLegit) {
let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString, backup_server_db_instance.backup_updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject);
updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign, if (localbitcoinplusplus.wallets.my_local_flo_address ==
user_data.supernode_flo_public_key updateUserCryptoBalanceResponseObject.trader_flo_address) {
); displayBalances(updateUserCryptoBalanceResponseObject.trader_flo_address);
if (isBalanceLegit) { showMessage(`INFO: Your balance is updated.`);
backup_server_db_instance.backup_updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject, }
user_data.trader_flo_address); return true;
if (localbitcoinplusplus.wallets.my_local_flo_address == } else {
updateUserCryptoBalanceResponseObject.trader_flo_address) { showMessage(`WARNING: Failed to update balance in your DB. Please refresh.`);
displayBalances(updateUserCryptoBalanceResponseObject.trader_flo_address);
showMessage(`INFO: Your balance is updated.`);
} }
return true; });
} else { }
showMessage(`WARNING: Failed to update balance in your DB. Please refresh.`); }
}
}); break;
});
}
break;
default: default:
break; break;