Рассмотрим этот случай (игнорируя транзакционные сборы за секунду):
Есть заявки на продажу (1) за 1 BTC @ 150 долларов США, а другой (2) в течение 1 BTC @ 160 USD ... Теперь кто-то хочет купить их обоих. Таким образом, он полагает, что это хорошая идея, чтобы положить в покупку заказа (3) для 2 BTC @ 155 USD. Что происходит?
Если обмен хочет быть противным, он может объединить заказы (1) и (3), купить Bitcoin от продавца в 150 долларов и продать его покупателю в 155 долларов США. Обмен приносит прибыль 5 долларов и как продавец и покупатель получил то, что они хотели (вроде). Оставшийся заказа на покупку (1 BTC @ 155 USD) оставляется по заказу клиентов.
Если обмен хочет быть хорошим, он может объединить заказы (1) и (3), но в этот раз решили, что тот, кто приходит позже получает более высокую цену. Таким образом, покупатель получает 1 BTC в 150 долларов США, а также порядок 1 BTC @ 155 USD снова вышел на книгу заказа. Это имеет дополнительную проблему, что цены являются индетерминисти-: если (1) слегка помещен после (3), торговля происходит на 155 USD - если нет, то это происходит в 150 долларов США.
Таким образом, другое решение, чтобы выполнить две лучшие заказы по цене на полпути между ценой покупки и ценой продажи. Таким образом, торговля будет проходить в 152,5 долларов США.
Но ни одно из решений не получает покупатель, что он первоначально хотел, то есть 2 BTC по средней цене 155 долларов США.
Итак "идеально" Решение написать алгоритм заполнения, который проходит через продажные заказы, начиная от самого недорогого, потребляющего Bitcoins, пока средняя цена не будет 155 долларов США. (Да, он мог бы только что положил в рыночный ордер на 2 BTC, но что, если он хочет быть уверен, * *, что он получит их на @ 155 или лучше?)
Или это? Вы люди на самом деле заботятся об этом материале?
(Потому что, черт побери, осуществление такого рода "идеально" вещи можно получить комплекс действительно быстро. Особенно если учесть все разные случаи: как правило, объемы между парными заказами не балансируют, так что вы должны разделить заказы на два; Теперь есть три различных способа, как купить / продать заказы выполняются частично, то там сборы и резервирование баланса рассмотреть, а затем есть ошибки округления ... через некоторое время вы начинаете понимать, что это на самом деле совсем немного работы, чтобы сделать на самом деле работает обмен. Интересно, что все эти обмены так, что пошел вверх брюхом ...)