diff --git a/supernode/index.html b/supernode/index.html
index f5e6ba7..629b238 100644
--- a/supernode/index.html
+++ b/supernode/index.html
@@ -11130,6 +11130,7 @@
this.rpc_req_id = id;
(async function(request) {
+
if (typeof localbitcoinplusplus.wallets.my_local_flo_address == "string") {
request.globalParams.senderFloId = localbitcoinplusplus.wallets.my_local_flo_address;
@@ -11157,7 +11158,7 @@
if (typeof params[0].receiver_flo_address == "string") {
request.globalParams.receiverFloId = params[0].receiver_flo_address;
}
-
+
return resolve(request.toString());
})(request);
@@ -11174,11 +11175,11 @@
if (typeof user_keys == "object" && typeof user_keys.pubKeyHex == "string") {
if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(user_keys.pubKeyHex)) {
if (typeof flo_id !== null || typeof flo_id !== 'undefined') {
- let karr = KBucket.toArray();
- let karr_floIds = karr.map(f=>f.data.id);
- if (!karr_floIds.includes(flo_id)) {
- return callback(false);
- }
+ // let karr = KBucket.toArray();
+ // let karr_floIds = karr.map(f=>f.data.id);
+ // if (!karr_floIds.includes(flo_id)) {
+ // return callback(false);
+ // }
localbitcoinplusplus.kademlia.determineClosestSupernode(flo_id)
.then(my_closest_su=>{
@@ -15438,8 +15439,6 @@
case "trade_balance_updates":
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
const trade_balance_res = res_obj.params[0];
- // Only the relevent user node should get response
- if(res_obj.params[0].trader_flo_address !== localbitcoinplusplus.wallets.my_local_flo_address) return;
// Verify data
let trade_info_str = JSON.stringify(trade_balance_res.trade_infos);
let buyer_cash_data_str = JSON.stringify(trade_balance_res.buyer_cash_data);
@@ -15778,6 +15777,51 @@
}
break;
+ case "updateUserCryptoBalanceRequest":
+ if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
+
+ let updateUserCryptoBalanceResponseObject = res_obj.params[0];
+
+ 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 backup_server_db_instance !== "object") {
+ let backup_db_error_msg = `WARNING: Unknown DB instance. DB Backup failed.`;
+ showMessage(backup_db_error_msg);
+ throw new Error(backup_db_error_msg);
+ };
+
+ let SuPubKey = backup_server_db_instance.backup_readDB('userPublicData', updateUserCryptoBalanceResponseObject.trader_flo_address)
+ .then(user_data => {
+ if (typeof user_data !== "object" || user_data.supernode_flo_public_key.length <
+ 1)
+ throw new Error(`No such user exists.`);
+ let updateUserCryptoBalanceResponseString = JSON.stringify(
+ updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject);
+ let isBalanceLegit = RM_WALLET.verify(updateUserCryptoBalanceResponseString,
+ updateUserCryptoBalanceResponseObject.updatedBTCBalanceObjectSign,
+ user_data.supernode_flo_public_key
+ );
+ if (isBalanceLegit) {
+ backup_server_db_instance.backup_updateinDB("crypto_balances", updateUserCryptoBalanceResponseObject.updatedBTCBalanceObject,
+ user_data.trader_flo_address);
+ 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.`);
+ }
+ });
+ });
+ }
+ break;
+
default:
break;
}
@@ -16020,13 +16064,13 @@
return;
} else if(typeof res_obj.globalParams.primarySupernode=="string"
&& res_obj.globalParams.primarySupernode !== localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS) {
- processBackupUserOnMesssageRequest(response);
- return;
+ if (typeof res_obj.globalParams.receiverFloId !== 'string' ||
+ res_obj.globalParams.receiverFloId !== localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS) {
+ processBackupUserOnMesssageRequest(response);
+ return;
+ }
}
-
- // Temporary. Remove this line
- showMessage(`INFO: PRIMARY SUPERNODE FLO ID: ${res_obj.globalParams.primarySupernode}.`);
-
+
if (typeof res_obj.method !== "undefined") {
let response_from_sever;
@@ -16723,6 +16767,8 @@
break;
case "addNewKbucketNode":
+ if (!localbitcoinplusplus.master_configurations.supernodesPubKeys
+ .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) return;
try {
let mss = '';
let tid = res_obj.params[0].trader_flo_address || res_obj.globalParams.senderFloId;
@@ -17029,10 +17075,7 @@
console.log(res_obj);
return;
}
-
- // Temporary. Remove this line
- showMessage(`INFO: PRIMARY SUPERNODE FLO ID: ${res_obj.globalParams.primarySupernode}.`);
-
+
if (typeof res_obj.method !== "undefined") {
let response_from_sever;
@@ -17878,11 +17921,15 @@
break;
case "addNewKbucketNode":
+ if (!localbitcoinplusplus.master_configurations.supernodesPubKeys
+ .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) return;
try {
let mss = '';
let tid = res_obj.params[0].trader_flo_address || res_obj.globalParams.senderFloId;
localbitcoinplusplus.kademlia.determineClosestSupernode(tid)
.then(async my_closest_su=>{
+
+ if (my_closest_su[0].data.id !== localbitcoinplusplus.wallets.my_local_flo_address) return;
const newKbucketObjectObj = res_obj.params[0];
const primarySupernodeOfThisUser = my_closest_su_list[0].data.id;
@@ -18311,9 +18358,7 @@
if (!request_array.includes(msgObj.method)) {
const RM_WALLET = new localbitcoinplusplus.wallets;
- if (typeof message !== "string") {
- message = JSON.stringify(message);
- }
+ message = JSON.stringify(msgObj);
const message256hash = Crypto.SHA256(message);
if(typeof localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY !== "string")
@@ -19356,10 +19401,10 @@
// Build Supernodes KBuckets
launchSupernodesKBuckects = await localbitcoinplusplus.kademlia.launchSupernodesKBucket();
// Request other supernodes KBucket data
- let requestSupernodeKBData = await localbitcoinplusplus.rpc.prototype
- .send_rpc
- .call(this, "requestSupernodesKBucketData", {});
- doSend(requestSupernodeKBData);
+ // let requestSupernodeKBData = await localbitcoinplusplus.rpc.prototype
+ // .send_rpc
+ // .call(this, "requestSupernodesKBucketData", {});
+ // doSend(requestSupernodeKBData);
}
// Send your id to Supernode kbucket
@@ -19965,6 +20010,7 @@
}
let explorer;
+ let decimal = 100000000;
switch (trader_deposits.product) {
case "BTC":
explorer = localbitcoinplusplus.server.btc_mainnet;
@@ -19974,18 +20020,23 @@
break;
case "FLO":
explorer = localbitcoinplusplus.server.flo_mainnet;
+ decimal = 1;
break;
case "FLO_TEST":
explorer = localbitcoinplusplus.server.flo_testnet;
+ decimal = 1;
break;
default:
break;
}
try {
let url = `${explorer}/api/addr/${trader_deposits.btc_address}/balance`;
+ console.log(url);
helper_functions.ajaxGet(url).then(balance => {
if (!isNaN(balance) && parseFloat(balance) > 0) {
- balance = parseFloat(balance);
+ balance = Number(parseFloat(balance/decimal));
+ console.log(balance);
+
/************************ Case of dispute *****************/
if (0) {