fixed type of crypto check during operations
This commit is contained in:
parent
63010c4ca3
commit
5427badb3b
@ -9085,7 +9085,7 @@
|
||||
let RMAssets = floData.slice(5);
|
||||
|
||||
// remove this line later
|
||||
// btcTradeMargin is tolerable difference between BTC trader should deposit and BTC he actually deposited
|
||||
// btcTradeMargin is tolerable difference between Crypto trader should deposit and cryptos he actually deposited
|
||||
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
|
||||
@ -9663,7 +9663,7 @@
|
||||
case "sync_with_supernode":
|
||||
localbitcoinplusplus.rpc.prototype.filter_legit_requests(function (is_valid_request) {
|
||||
if (is_valid_request === true && params.job=="SYNC_MY_LOCAL_DB_WITH_SUPERNODE_DB" && params.trader_flo_address.length>0) {
|
||||
const tableArray = ["deposit", "withdraw_cash", "withdraw_btc", "btc_balances", "cash_balances", "userPublicData"];
|
||||
const tableArray = ["deposit", "withdraw_cash", "withdraw_btc", "crypto_balances", "cash_balances", "userPublicData"];
|
||||
localbitcoinplusplus.actions.get_sharable_db_data(tableArray).then(function(su_db_data) {
|
||||
if (typeof su_db_data == "object") {
|
||||
su_db_data.trader_flo_address = params.trader_flo_address;
|
||||
@ -9703,17 +9703,13 @@
|
||||
|
||||
await localbitcoinplusplus.trade.prototype.resolve_current_btc_price_in_fiat(params.currency);
|
||||
|
||||
if (params.product == "BTC") {
|
||||
if (localbitcoinplusplus.master_configurations.tradableAsset1.includes(params.product)) {
|
||||
/**************************************************************************
|
||||
// YOU HAVE TO PROVIDE BTC KEYS HERE. CHANGE IT LATER
|
||||
****************************************************************************/
|
||||
let generate_btc_keys_for_requester = localbitcoinplusplus.wallets.prototype
|
||||
.generateFloKeys.call();
|
||||
|
||||
/************************************************************************************
|
||||
// Need to do: Super Node saves the private keys and sends the BTC address to the requester
|
||||
// THIS IS VERY DANGEROUS STEP BCOZ BTC PRIVATE KEY DATA CAN BE LEAKED HERE IF ANYTHING GOES WRONG
|
||||
*****************************************************************************/
|
||||
params.id = helper_functions.unique_id();
|
||||
params.status = 1;
|
||||
params.btc_address = generate_btc_keys_for_requester.address;
|
||||
@ -9963,15 +9959,15 @@
|
||||
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") {
|
||||
// Check how much Bitcoins the user can withdraw
|
||||
readDB("btc_balances", params.trader_flo_address).then(function (
|
||||
btc_balance_res) {
|
||||
if (localbitcoinplusplus.master_configurations.tradableAsset1.includes(params.product)) {
|
||||
// Check how much cryptos the user can withdraw
|
||||
let withdrawer_btc_id = `${params.trader_flo_address}_${params.product}`;
|
||||
readDB("crypto_balances", withdrawer_btc_id).then(function (btc_balance_res) {
|
||||
if (typeof btc_balance_res == "object" && typeof btc_balance_res
|
||||
.trader_flo_address == "string" &&
|
||||
typeof btc_balance_res.btc_balance == "number" &&
|
||||
btc_balance_res.btc_balance > 0) {
|
||||
let withdrawer_btc_balance = parseFloat(btc_balance_res.btc_balance);
|
||||
typeof btc_balance_res.crypto_balance == "number" &&
|
||||
btc_balance_res.crypto_balance > 0) {
|
||||
let withdrawer_btc_balance = parseFloat(btc_balance_res.crypto_balance);
|
||||
let withdrawing_btc_amount_in_cash = parseFloat(params.withdrawing_amount);
|
||||
if(!localbitcoinplusplus.master_configurations.tradableAsset2.includes(params.currency)) {
|
||||
throw new Error("Invalid or unsupported currency.");
|
||||
@ -10001,7 +9997,7 @@
|
||||
deposit_list.length > 0) {
|
||||
deposit_list = deposit_list.filter(
|
||||
deposits => deposits.status == 2
|
||||
&& deposits.product == "BTC");
|
||||
&& localbitcoinplusplus.master_configurations.tradableAsset1.includes(deposits.product));
|
||||
for (const dl in deposit_list) {
|
||||
if (deposit_list.hasOwnProperty(dl)) {
|
||||
const deposit_dl = deposit_list[dl];
|
||||
@ -10201,7 +10197,7 @@
|
||||
if (typeof res == "string" && res.length>0) {
|
||||
try {
|
||||
let resp_obj = JSON.parse(res);
|
||||
let msg = `Transaction Id for your withdrawn BTC: ${resp_obj.txid.result}`;
|
||||
let msg = `Transaction Id for your withdrawn crypto asset: ${resp_obj.txid.result}`;
|
||||
writeToScreen(msg);
|
||||
alert(msg);
|
||||
return true;
|
||||
@ -10488,12 +10484,13 @@
|
||||
throw new Error("Invalid sell request.");
|
||||
}
|
||||
|
||||
// Check BTC balance of the seller
|
||||
readDB("btc_balances", params.trader_flo_address).then(function (res) {
|
||||
// Check crypto balance of the seller
|
||||
let seller_btc_id = `${params.trader_flo_address}_${params.product}`;
|
||||
readDB("crypto_balances", seller_btc_id).then(function (res) {
|
||||
if (typeof res !== "undefined" && typeof res.trader_flo_address == "string" && res.trader_flo_address
|
||||
.length > 0 &&
|
||||
typeof res.btc_balance == "number" && res.btc_balance > 0) {
|
||||
let seller_btc_balance = parseFloat(res.btc_balance);
|
||||
typeof res.crypto_balance == "number" && res.crypto_balance > 0) {
|
||||
let seller_btc_balance = parseFloat(res.crypto_balance);
|
||||
let sell_price_in_inr = parseFloat(params.buy_price);
|
||||
let eqBTC = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(sell_price_in_inr, params.currency);
|
||||
eqBTC = parseFloat(eqBTC);
|
||||
@ -10777,11 +10774,12 @@
|
||||
eqBTCBuyer = parseFloat(eqBTCBuyer);
|
||||
}
|
||||
|
||||
// Check seller's BTC balance
|
||||
readDB("btc_balances", sellPipeObj.trader_flo_address).then(function (sellPipeBTCRes) {
|
||||
if (typeof sellPipeBTCRes == "object" && typeof sellPipeBTCRes.btc_balance ==
|
||||
// Check seller's crypto balance
|
||||
let seller_btc_id = `${sellPipeObj.trader_flo_address}_${sellPipeObj.product}`;
|
||||
readDB("crypto_balances", seller_btc_id).then(function (sellPipeBTCRes) {
|
||||
if (typeof sellPipeBTCRes == "object" && typeof sellPipeBTCRes.crypto_balance ==
|
||||
"number") {
|
||||
let seller_btc_balance = parseFloat(sellPipeBTCRes.btc_balance)
|
||||
let seller_btc_balance = parseFloat(sellPipeBTCRes.crypto_balance)
|
||||
.toFixed(8);
|
||||
let sell_price_in_inr = parseFloat(sellPipeObj.buy_price);
|
||||
let eqBTCSeller = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash(
|
||||
@ -10793,21 +10791,24 @@
|
||||
throw new Error("Insufficient BTC balance of seller.");
|
||||
}
|
||||
|
||||
// Increase buyer's BTC balance
|
||||
// Increase buyer's crypto balance
|
||||
let buyerBTCResponseObject;
|
||||
readDB("btc_balances", buyPipeObj.trader_flo_address).then(
|
||||
let buyer_btc_id = `${buyPipeObj.trader_flo_address}_${buyPipeObj.product}`;
|
||||
readDB("crypto_balances", buyPipeObj.trader_flo_address).then(
|
||||
function (buyPipeBTCRes) {
|
||||
if (typeof buyPipeBTCRes == "object" && typeof buyPipeBTCRes
|
||||
.btc_balance == "number") {
|
||||
buyPipeBTCRes.btc_balance = parseFloat(
|
||||
buyPipeBTCRes.btc_balance) +
|
||||
.crypto_balance == "number") {
|
||||
buyPipeBTCRes.crypto_balance = parseFloat(
|
||||
buyPipeBTCRes.crypto_balance) +
|
||||
eqBTCBuyer;
|
||||
buyerBTCResponseObject = buyPipeBTCRes;
|
||||
} else {
|
||||
// The user bought BTC for first time
|
||||
buyerBTCResponseObject = {
|
||||
id: `${buyPipeObj.trader_flo_address}_${buyPipeObj.product}`,
|
||||
trader_flo_address: buyPipeObj.trader_flo_address,
|
||||
btc_balance: eqBTCBuyer
|
||||
crypto_balance: eqBTCBuyer,
|
||||
crypto_currency: buyPipeObj.product
|
||||
}
|
||||
}
|
||||
|
||||
@ -10848,13 +10849,13 @@
|
||||
}
|
||||
|
||||
// Decrease seller BTC balance
|
||||
let new_seller_btc_balance =
|
||||
seller_btc_balance -
|
||||
eqBTCSeller;
|
||||
let new_seller_btc_balance = seller_btc_balance - eqBTCSeller;
|
||||
new_seller_btc_balance = parseFloat(new_seller_btc_balance).toFixed(8);
|
||||
let sellerBTCResponseObject = {
|
||||
trader_flo_address: sellPipeObj
|
||||
.trader_flo_address,
|
||||
btc_balance: new_seller_btc_balance
|
||||
id: `${sellPipeObj.trader_flo_address}_${sellPipeObj.product}`,
|
||||
trader_flo_address: sellPipeObj.trader_flo_address,
|
||||
crypto_balance: new_seller_btc_balance,
|
||||
crypto_currency: sellPipeObj.product
|
||||
}
|
||||
|
||||
// supernode data query
|
||||
@ -10895,13 +10896,13 @@
|
||||
.trader_flo_address
|
||||
);
|
||||
updateinDB(
|
||||
"btc_balances",
|
||||
"crypto_balances",
|
||||
buyerBTCResponseObject,
|
||||
buyPipeObj
|
||||
.trader_flo_address
|
||||
);
|
||||
updateinDB(
|
||||
"btc_balances",
|
||||
"crypto_balances",
|
||||
sellerBTCResponseObject,
|
||||
sellPipeObj
|
||||
.trader_flo_address
|
||||
@ -11342,7 +11343,7 @@
|
||||
|
||||
try {
|
||||
let obj = su_db_data[tableStoreName];
|
||||
if (["btc_balances", "cash_balances", "userPublicData"].includes(tableStoreName)) {
|
||||
if (["crypto_balances", "cash_balances", "userPublicData"].includes(tableStoreName)) {
|
||||
if (obj.length>0) {
|
||||
for (var prop in obj) {
|
||||
if(!obj.hasOwnProperty(prop)) continue;
|
||||
@ -11449,9 +11450,9 @@
|
||||
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("btc_balances", trade_balance_res.buyer_btc_data,
|
||||
updateinDB("crypto_balances", trade_balance_res.buyer_btc_data,
|
||||
trade_balance_res.trade_infos.buyer_flo_id);
|
||||
updateinDB("btc_balances", trade_balance_res.seller_btc_data,
|
||||
updateinDB("crypto_balances", trade_balance_res.seller_btc_data,
|
||||
trade_balance_res.trade_infos.seller_flo_id);
|
||||
} catch (error) {
|
||||
callback(false);
|
||||
@ -11807,10 +11808,11 @@
|
||||
depositor_found_at: null
|
||||
}
|
||||
|
||||
const btc_balances = {
|
||||
const crypto_balances = {
|
||||
id: null,
|
||||
trader_flo_address: null,
|
||||
btc_balance: null
|
||||
crypto_balance: null,
|
||||
crypto_currency:null
|
||||
}
|
||||
|
||||
const cash_balances = {
|
||||
@ -11919,8 +11921,8 @@
|
||||
unique: true
|
||||
});
|
||||
}
|
||||
if (!db.objectStoreNames.contains('btc_balances')) {
|
||||
var objectStore = db.createObjectStore("btc_balances", {
|
||||
if (!db.objectStoreNames.contains('crypto_balances')) {
|
||||
var objectStore = db.createObjectStore("crypto_balances", {
|
||||
keyPath: 'id', autoIncrement: false
|
||||
});
|
||||
objectStore.createIndex('trader_flo_address', 'trader_flo_address', {
|
||||
@ -12667,17 +12669,20 @@
|
||||
}
|
||||
});
|
||||
|
||||
let trader_depositor_cash_id = `${trader_deposits.trader_flo_address}_${trader_deposits.product}`;
|
||||
let updatedBTCbalances = {
|
||||
id: trader_depositor_cash_id,
|
||||
trader_flo_address: trader_deposits.trader_flo_address,
|
||||
btc_balance: balance
|
||||
crypto_balance: balance,
|
||||
crypto_currency: trader_deposits.product
|
||||
}
|
||||
readDB('btc_balances', trader_deposits.trader_flo_address).then(function (res_btc_balances) {
|
||||
readDB('crypto_balances', trader_depositor_cash_id).then(function (res_btc_balances) {
|
||||
if (typeof res_btc_balances == "object" && typeof res_btc_balances.result ==
|
||||
"object" && typeof res_btc_balances.result.btc_balance=="number") {
|
||||
updatedBTCbalances.btc_balance += parseFloat(res_btc_balances.result.btc_balance);
|
||||
"object" && typeof res_btc_balances.crypto_balance=="number") {
|
||||
updatedBTCbalances.crypto_balance += parseFloat(res_btc_balances.crypto_balance);
|
||||
}
|
||||
// Update BTC balance of user in btc_balances
|
||||
updateinDB("btc_balances", updatedBTCbalances, trader_deposits.btc_address);
|
||||
// Update crypto balance of user in crypto_balances
|
||||
updateinDB("crypto_balances", updatedBTCbalances, trader_deposits.btc_address);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -12690,7 +12695,7 @@
|
||||
setInterval(function () {
|
||||
readDBbyIndex("deposit", 'status', 1).then(function (res) {
|
||||
res.map(function (deposit_trade) {
|
||||
if (deposit_trade.product == "BTC") {
|
||||
if (localbitcoinplusplus.master_configurations.tradableAsset1.includes(deposit_trade.product)) {
|
||||
validateDepositedBTCBalance(deposit_trade);
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user