Bitcoin Forum
September 03, 2024, 05:23:47 PM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: source code of the nxt p2p exchange match engine  (Read 492 times)
ntkrnl (OP)
Newbie
*
Offline Offline

Activity: 46
Merit: 0


View Profile
January 03, 2014, 03:01:12 PM
Last edit: January 03, 2014, 03:11:48 PM by ntkrnl
 #1

nxt is not a scam

Code:
    static void matchOrders(long paramLong)
            throws Exception {
        TreeSet localTreeSet1 = (TreeSet) sortedAskOrders.get(Long.valueOf(paramLong));
        TreeSet localTreeSet2 = (TreeSet) sortedBidOrders.get(Long.valueOf(paramLong));
        synchronized (askOrders) {
            synchronized (bidOrders) {
                do {
                    Nxt.AskOrder localAskOrder = (Nxt.AskOrder) localTreeSet1.first();
                    Nxt.BidOrder localBidOrder = (Nxt.BidOrder) localTreeSet2.first();
                    if (localAskOrder.price > localBidOrder.price) {
                        break;
                    }
                    int i = localAskOrder.quantity < localBidOrder.quantity ? localAskOrder.quantity : localBidOrder.quantity;
                    long l = (localAskOrder.height < localBidOrder.height) || ((localAskOrder.height == localBidOrder.height) && (localAskOrder.id < localBidOrder.id)) ? localAskOrder.price : localBidOrder.price;
                    if (localAskOrder.quantity -= i == 0) {
                        askOrders.remove(Long.valueOf(localAskOrder.id));
                        localTreeSet1.remove(localAskOrder);
                    }
                    synchronized (localAskOrder.account) {
                        localAskOrder.account.setBalance(localAskOrder.account.balance + i * l);
                        localAskOrder.account.setUnconfirmedBalance(localAskOrder.account.unconfirmedBalance + i * l);
                    }
                    if (localBidOrder.quantity -= i == 0) {
                        bidOrders.remove(Long.valueOf(localBidOrder.id));
                        localTreeSet2.remove(localBidOrder);
                    }
                    synchronized (localBidOrder.account) {
                        Integer localInteger = (Integer) localBidOrder.account.assetBalances.get(Long.valueOf(paramLong));
                        if (localInteger == null) {
                            localBidOrder.account.assetBalances.put(Long.valueOf(paramLong), Integer.valueOf(i));
                            localBidOrder.account.unconfirmedAssetBalances.put(Long.valueOf(paramLong), Integer.valueOf(i));
                        } else {
                            localBidOrder.account.assetBalances.put(Long.valueOf(paramLong), Integer.valueOf(localInteger.intValue() + i));
                            localBidOrder.account.unconfirmedAssetBalances.put(Long.valueOf(paramLong), Integer.valueOf(((Integer) localBidOrder.account.unconfirmedAssetBalances.get(Long.valueOf(paramLong))).intValue() + i));
                        }
                    }
                    if (localTreeSet1.isEmpty()) {
                        break;
                    }
                } while (!localTreeSet2.isEmpty());
            }
        }
    }

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!