Как это невозможно. Как программист скажу, что изменения в алгоритме минимальны.
Рассмотрим, как происходит обмен зенями и мотриками, в момент появления двух подходящих встречных заявок.
У нас в каждом лоте всегда по 150 мотриков и они гарантированно переходят от продавца к покупателю, поэтому дальше будем рассматривать только теряемые/получаемые зени.
Есть два варианта, что заявки подходят друг другу.
1)Предлагаемая цена покупателя равна желаемой цене продавца мотриков.
Все нормально - ничего менять не надо.
2)Предлагаемая цена покупателя больше желаемой цене продавца мотриков.
Цена Продавца - зени, желаемые получить продавцом мотриков
Цена Покупателя - зени, котроре готов отдать покупатель мотриков
Разница = Цена Покупателя - Цена Продавца > 0
Сейчас: продавец получает Цена Продавца, покупатель теряет Цена Покупателя, а Разница идет в пользу биржи.
А я предлагая отсылать Разницу в пользу продавца или покупателя в зависимости от того, чья заявка была сделана позже.
Если позже была создана заявка продавца мотриков - то Разница переводится ему. Так как продавец ошибочно сделал заявку по слишком низкой цене, хотя на бирже уже была более выгодная(дорогая) заявка покупателя. Сделка получится эквивалентной тому, как будто в обеих заявках цена была выставлена равной Цене Покупателя.
Если позже была создана заявка покупателя мотриков - то Разница переводится ему. Так как покупатель ошибочно сделал заявку по слишком высокой цене, хотя на бирже уже была более выгодная(дешевая) заявка продавца. Сделка получится эквивалентной тому, как будто в обеих заявках цена была выставлена равной Цене Продавца.
В результате:
Если я попытаюсь продать 150 мотриков за 1 зеню. То в момент создания мне сразу подберется на бирже лучшая из более ранних заявок покупателей, и я получу на счет 1 зеня + Разница, что соответствует Цене Покупателя.
Если я попытаюсь купить 150 мотриков за 100кк, то реально оплачу только цену самой дешевой из более ранних заявок продавцов на бирже, так как заплачу 100кк, но почти вся сумма за исключением Цены Продавца вернется в Разнице .