# Комиссия матчера
Биржевой ордер содержит два отдельных поля комиссии матчера - от ордера покупателя и ордера продавца. Ордер может быть полностью выполнен какой-нибудь транзакцией, в этом случае вся комиссия матчера включается в эту транзакцию. Если ордер частично выполнен какой-либо транзакцией, плата за матчинг включается в эту транзакцию пропорционально выполненной сумме, т.е.
executedAmount * orderMatcherFee / orderAmount.
Оставшаяся сумма комиссии за этот ордер будет включена в другие транзакции до полного исполнения заказа.
# Типы комиссии
В текущей версии WX Network матчер взимает динамическую (dynamic
) или процентную (percent
) комиссию в зависимости от выбранной торговой пары.
Dynamic режим комиссии работает подобно прежнему принципу. Матчер взимает фиксированную комиссию в размере 0.01 WAVES за торговый ордер.
Percent режим комиссии это механика, при которой матчер взимает комиссию в размере 0.1% от суммы торгового ордера но не менее, чем эквивалент 0.01 WAVES. Матчер WX Network взимает процентную комиссию в токене, который вы расходуете. Например, если вы обмениваете XTN на BTC (вы расходуете XTN), вы платите комиссию в XTN. Или если вы обмениваете BTC на XTN (вы расходуете BTC), тогда вы платите комиссию в BTC.
С помощью метода POST /matcher/orderbook/calculateFee можно рассчитывать комиссии пар.
С помощью метода GET /matcher/settings можно узнать тип комисии (dynamic или percent) торговой пары и др. параметры матчера.
Примечание: мы рекомендуем запрашивать настройки хотя бы раз в минуту, чтобы не пропустить изменения процентных пар.
Пример запроса (testnet):
curl -X 'GET' 'https://matcher-testnet.waves.exchange/matcher/settings' -H 'accept: application/json'
Пример ответа с настройками матчера (testnet):
"orderFee": {
"composite": {
"default": {
"dynamic": {
"baseFee": 1000000
}
},
"custom": {
"5Sh9KghfkZyhjwuodovDhB6PghDUGBHiAPZ4MkrPgKtX-25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT": {
"percent": {
"type": "spending",
"minFee": 0.1,
"minFeeInWaves": 1000000
}
},
"WAVES-25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT": {
"percent": {
"type": "spending",
"minFee": 0.1,
"minFeeInWaves": 1000000
}
}
},
"discount": {
"assetId": "EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc",
"value": 50
}
}
}
orderFee
это одно из полей ответа метода GET /matcher/settings
.
Как вы можете видеть, существуют пары с типом комиссии dynamic
и percent
.
См. параметры режима percent
:
type
- тип токена, который должен использоваться для оплаты комиссии. Может бытьamount
- токен суммыamountAsset
,price
- токен ценыpriceAsset
,spending
- расходуемый токен,receiving
- получаемый токен. Матчер WX Network использует типspending
.minFee
- минимальный процент от суммы ордера, который должен быть оплачен в виде комиссии. Где 0.14 это 0.14%minFeeInWaves
- минимальная сумма комиссии в WAVES (независимо от суммы ордера, комиссия должна быть больше, чемminFeeInWaves
)
Обратите внимание на секцию discount
, в которой описаны параметры скидки на комиссию, при оплате скидочного токена (discountAsset
). В данном примере:
asset
- это ID скидочного токена (discountAsset
).value
отображает процент скидки50
.
# Расчет различных типов минимальных комиссий
В зависимости от режима комиссии матчер взимает комиссию в различных токенах.
Для торговых пар с режимом
Dynamic
комиссия взимается вWAVES
илиWX
(discountAsset
) токене.Для торговых пар с режимом
Percent
комиссия взимается либо вpriceAsset
(для ордеров покупки) или вamountAsset
(для ордеров продажи) или вWX
(discountAsset
) токене.
Коэффициенты (rates) комиссий, используемые в следующих расчетах, могут быть получены с помощью метода GET /matcher/settings/rates.
Пример запроса:
curl -X 'GET' 'https://matcher.waves.exchange/matcher/rates' -H 'accept: application/json
# Константы
PriceConstantExp = 8
PriceConstant = 10 ** PriceConstantExp
# Функции
correctedRate(rate, assetDecimals) = rate * 10 ** (assetDecimals - PriceConstantExp)
scripts_count
это количество смарт-контрактов, задействованных в выполнении ордера.
# Расчет минимальной суммы комиссии для Dynamic режима
Используя WAVES:
baseFee + 400000 * scripts_count
Используя discountAsset
:
rate = correctedRate(rates[discountAsset], discountAssetDecimals)
(baseFee + 400000 * scripts_count) * correctedRate * (100 - discount) / 100
# Расчет минимальной суммы комиссии для Percent режима со следующими настройками:
{
"percent" : {
"type" : "spending",
"minFee" : 0.14,
"minFeeInWaves" : 300000
}
}
Комиссия продажи:
Используя amountAsset
:
order.amount * minFee / 100
Используя discountAsset
:
discountAssetRate = correctedRate(rates[discountAsset], discountAssetDecimals)
amountAssetRate = correctedRate(rates[amountAsset], amountAssetDecimals)
order.amount * minFee / 100 * (discountAssetRate / amountAssetRate) * (100 - discount) / 100
Комиссия покупки:
Используя priceAsset
:
order.amount * order.price / PriceConstant * minFee / 100
Используя discountAsset
:
discountAssetRate = correctedRate(rates[discountAsset], discountAssetDecimals)
priceAssetRate = correctedRate(rates[priceAsset], priceAssetDecimals)
order.amount * order.price / PriceConstant * minFee / 100 * (discountAssetRate / priceAssetRate) * (100 - discount) / 100
Следует проверить, чтобы сумма комиссии не была меньше, чем minFeeInWaves
, для этого умножьте minFeeInWaves
на нормализованный FeeAssetRate
и сравните с полученной суммой комиссии. Скидка также применяется к minFeeInWaves
при использовании discountAsset
для оплаты комиссии.
# Пример
Примечание: В данном примере не применяются смарт-скрипты.
Обменяем 0.00032173 BTC по цене 42611.43
pair
= BTC/XTN
price
= 42611430000
amount
= 32173
сумма ордера в:
price assets = 13.709237 XTN
amount assets = 0.00032173 BTC
rates[BTC] = 0.000329
rates[XTN] = 13.9
rates[discountAsset] = 10.534
corrected rates:
priceAsset
= rates[XTN] * 10 ** (-2) = 0.1390amountAsset
= rates[BTC] = 0.000329discountAsset
= rates[discountAsset] = 10.534
minFee
= 0.14%
minFeeInWaves
= 300000
discount
= 50%
priceAssetDecimals
= 6
amountAssetDecimals
= 8
discountAssetDecimals
= 8
minFeeInWaves
converted:
priceAsset
= 41700amountAsset
= 98discountAsset
= 3160200
# Расчет комиссий
Комиссия продажи в режиме Percent
:
Используя amountAsset
:
32173 * 0.14 / 100 = 45 (0.00000045 BTC ~ 0.019 XTN)
Используя discountAsset
:
32173 * 0.14 / 100 * (10.534 / 0.000329) * (100 - 50) / 100 = 721085
Комиссия покупки:
priceAsset
:
32173 * 42611430000 / 100000000 * 0.14 / 100 = 19193 (0.019 XTN)
Используя discountAsset
:
32173 * Используя42611430000 / 100000000 * 0.14 / 100 * (10.534 / 0.139) * (100 - 50) / 100 = 727267
# Проверка minFeeInWaves
При оплате с помощью priceAsset
:
300000 * 0.139 = 41700 (0,041700 XTN)
При оплате с помощью amountAsset
:
300000 * 0.000329 = 99 (0,00000099 BTC)
При оплате с помощью discountAsset
:
300000 * 10.534 * (100 - 50) / 100 = 1580100 (0,015801 discountAsset)
Примечание: Во всех сценариях выше сумма комиссии ниже, чем minFeeInWaves
.