diff --git a/supernode/index.html b/supernode/index.html index aef5d36..7bacb51 100644 --- a/supernode/index.html +++ b/supernode/index.html @@ -7989,7 +7989,6 @@ this.rpc_job = null; this.floAddress = null; this.user_flo_address = null; - this.receiving_address = null; } Trade.prototype = { @@ -8001,7 +8000,7 @@ this.level = level; } }, - validate_order(order_type, user_flo_address, receiving_address, product, currency, buy_price, + validate_order(order_type, user_flo_address, product, currency, buy_price, buyer_public_key, buyer_key_signature, order_validator_public_key) { @@ -8015,11 +8014,6 @@ } else { this.errors.push("No receiving BTC or Bank address provided."); } - // if (receiving_address.trim() !== "") { - // this.receiving_address = receiving_address; - // } else { - // this.errors.push("No receiving BTC or Bank address provided."); - // } if (typeof localbitcoinplusplus.master_configurations.validAssets !== 'undefined' && localbitcoinplusplus.master_configurations.validAssets.indexOf(product) >= 0) { this.product = product; @@ -8058,10 +8052,10 @@ } return true; }, - place_order(order_type, user_flo_address, receiving_address, product, currency, buy_price, + place_order(order_type, user_flo_address, product, currency, buy_price, buyer_public_key, buyer_key_signature, order_validator_public_key) { - var is_valid_order = this.validate_order(order_type, user_flo_address, receiving_address, product, + var is_valid_order = this.validate_order(order_type, user_flo_address, product, currency, buy_price, buyer_public_key, buyer_key_signature, order_validator_public_key); if (is_valid_order === true) { @@ -8076,8 +8070,7 @@ "buy_price": this.buy_price, "buyer_public_key": this.buyer_public_key, "buyer_key_signature": this.buyer_key_signature, - "order_validator_public_key": this.order_validator_public_key, - "receiving_address": this.receiving_address + "order_validator_public_key": this.order_validator_public_key }); return placeNewOrder; } else if (typeof is_valid_order == "object") { @@ -8127,34 +8120,6 @@ return trustLevelA.rand_id > trustLevelB.rand_id ? 1:-1; }); - // let list10k = [list10kbuy, list10ksell]; - // let list50k = [list50kbuy, list50ksell]; - // let list100k = [list100kbuy, list100ksell]; - - // let all_trade_list = [list10k, list50k, list100k]; - - // all_trade_list.forEach(function (listXk) { - // let iter = listXk[0].length < listXk[1].length ? - // listXk[0].length : listXk[1].length; - - // for (let index = 0; index < iter; index++) { - // let buy_element = listXk[0][index]; - // let sell_element = listXk[1][index]; - - // let buyers_job = - // `${buy_element.user_flo_address} to pay ${buy_element.currency} ${buy_element.buy_price} to bank address "${sell_element.receiving_address}"`; - // let sellers_job = - // `${sell_element.user_flo_address} to pay X Bitcoins to address ${buy_element.receiving_address}`; - - // doSend(buyers_job); - // doSend(sellers_job); - // } - // }); - - readAllDB("deposit", function(deposited_btc) { - console.log(deposited_btc); - }); - } }); } @@ -8182,12 +8147,11 @@ // "buy_price": this.buy_price, // "buyer_public_key": this.buyer_public_key, // "buyer_key_signature": this.buyer_key_signature, - // "order_validator_public_key": this.order_validator_public_key, - // "receiving_address": this.receiving_address + // "order_validator_public_key": this.order_validator_public_key //Check buyer's INR balance - readDB("cash_balances", "trader_flo_address", params.trader_flo_address, function(res) { - if(!isNaN(res.cash_balance)) { + readDB("cash_balances", params.trader_flo_address, function(res) { + if(typeof res !== "undefined" && typeof res.cash_balance == "number" && !isNaN(res.cash_balance)) { let buyer_cash_balance = parseFloat(res.cash_balance); let buy_price_btc = parseFloat(params.buy_price); if (buyer_cash_balance < buy_price_btc) { @@ -8199,28 +8163,29 @@ if (!isNaN(eqBTC)) { let eqBTC = parseFloat(eqBTC); - // Descrease INR balance of user in cash table - res.cash_balance = buyer_cash_balance - buy_price_btc; - updateinDB("cash_balances", res, params.trader_flo_address); - - // Increase BTC balance of buyer with extra eqBTC amount of BTC - readDB("btc_balances", "trader_flo_address", params.trader_flo_address, function(res) { - if (typeof res.btc_balance == "undefined" && !NaN(res.btc_balance)) { + readDB("btc_balances", params.trader_flo_address, function(res) { + if (typeof res == "object" && typeof res.btc_balance == "number" && !NaN(res.btc_balance)) { res.btc_balance = parseFloat(res.btc_balance)+eqBTC; - updateinDB("btc_balances", res, params.trader_flo_address); } else { - console.error("Failed to read the Bitcoin balance from DB."); + res.btc_balance = eqBTC; } + // Increase BTC balance of buyer with extra eqBTC amount of BTC + updateinDB("btc_balances", res, params.trader_flo_address); + + // Descrease INR balance of user in cash table + res.cash_balance = buyer_cash_balance - buy_price_btc; + updateinDB("cash_balances", res, params.trader_flo_address); + + // Add buy oder + params['id'] = + new Date(); + addDB("buyOrders", params); + callback(); }); } else { throw new Error("Failed to fetch current BTC price."); } } }); - - params['id'] = + new Date(); - addDB("buyOrders", params); - callback(); }, trade_sell(params, callback) { for (var key in params) { @@ -8240,10 +8205,8 @@ } // Check BTC balance of the seller - console.log(params.trader_flo_address); - - readDB("btc_balances", "trader_flo_address", params.trader_flo_address, function(res) { - if (typeof res.trader_flo_address == "string" && res.trader_flo_address.length>0 + readDB("btc_balances", params.trader_flo_address, 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); let sell_price_in_inr = parseFloat(params.buy_price); @@ -8255,15 +8218,24 @@ if (seller_btc_balance < eqBTC) { throw new Error("Insufficient BTC balance."); } - // Decrease BTC balance of seller - res.btc_balance = seller_btc_balance - eqBTC; - updateinDB("btc_balances", res, params.trader_flo_address); - // Incraese INR balance of seller - readDB("cash_balances", "trader_flo_address", params.trader_flo_address, function(res) { - if(typeof res.cash_balance == "number" && !isNaN(res.cash_balance)) { + // Increase INR balance of seller + readDB("cash_balances", params.trader_flo_address, function(res) { + if(typeof res == "object" && typeof res.cash_balance == "number" && !isNaN(res.cash_balance)) { res.cash_balance = parseFloat(res.cash_balance) + sell_price_in_inr; + } else { + res.cash_balance = sell_price_in_inr; } + updateinDB("cash_balances", res, params.trader_flo_address); + + // Decrease BTC balance of seller + res.btc_balance = seller_btc_balance - eqBTC; + updateinDB("btc_balances", res, params.trader_flo_address); + + //Add cash balance + params['rand_id'] = + new Date(); + addDB("sellOrders", params); + callback(); }); } else { throw new Error("Failed to fetch cuurent BTC price."); @@ -8272,10 +8244,6 @@ throw new Error("Failed to read BTC balance from DB."); } }); - - params['rand_id'] = + new Date(); - addDB("sellOrders", params); - callback(); }, findTrader(traderAssetType, traderAssetAmount) { if (typeof localbitcoinplusplus.master_configurations.validAssets !== 'undefined' && @@ -9054,11 +9022,6 @@ buyul.onclick = function (event) { let target = getEventTarget(event); let intAmount = parseFloat(target.innerHTML.match(/\d+/)[0]); // Amount of INR/BTC/whatever in integer - let buyer_btc_address = prompt("Please enter your Bitcoin address."); - if (typeof buyer_btc_address == null || buyer_btc_address.trim().length < - 1) { - throw new Error("Bitcoin address cannot be empty."); - } let signing_object = { flo_address: idbData.myLocalFLOAddress, order_type: "buy", @@ -9075,8 +9038,7 @@ "You must have a BTC address to receive Bitcoin. No Bitcoin address found in database." ); } - let buytrade = RM_TRADE.place_order("buy", idbData.myLocalFLOAddress, - buyer_btc_address, "BTC", "INR", intAmount, idbData.myLocalFLOPublicKey, + let buytrade = RM_TRADE.place_order("buy", idbData.myLocalFLOAddress, "BTC", "INR", intAmount, idbData.myLocalFLOPublicKey, "trader_signature", "order_validator_public_key"); doSend(buytrade); } @@ -9355,7 +9317,7 @@ readDBbyIndex("deposit", 'status', 1, function(res) { res.map(function(deposit_trade) { // deposit_trade.trader_flo_address, deposit_trade.btc_address, deposit_trade.bitcoinToBePaid if (deposit_trade.product == "BTC") { - //validateDepositedBTCBalance(deposit_trade); + validateDepositedBTCBalance(deposit_trade); } }); });