Останнє оновлення: 2025-10-31
Kora оцінює комісії за транзакції під час виконання RPC-методів
estimate_transaction_fee та sign_transaction. Для оцінки комісій Kora
розраховує загальну вартість виконання транзакцій у Solana, включаючи мережеві
комісії, витрати на створення акаунтів та опціональні комісії за обробку
платежів. Цей посібник детально розглядає кожен компонент розрахунку комісії.
Формула розрахунку комісії
Комісія визначається моделлю ціноутворення, налаштованою в kora.toml:
PriceModel::Free- Спонсорує всі комісії за транзакції (загальна комісія = 0)PriceModel::Fixed- Стягує фіксовану суму в конкретному токені (незалежно від мережевих комісій)PriceModel::Margin- Додає відсоткову націнку до загальних комісій.
Основною точкою входу для оцінки загальної комісії, що використовується в
PriceModel::Margin, є FeeConfigUtil::estimate_kora_fee() у
crates/lib/src/fee/fee.rs.
Вона використовує наступну узагальнену формулу:
Total Fee = Base Fee+ Account Creation Fee+ Kora Signature Fee+ Fee Payer Outflow+ Payment Instruction Fee+ Transfer Fee Amount+ Margin Adjustment
Компоненти комісії
| Компонент | Опис | Метод розрахунку | Коли застосовується |
|---|---|---|---|
| Базова комісія | Основна комісія транзакції Solana за перевірку підпису та обробку транзакції | RpcClient.get_fee_for_message() - Використовує розрахунок комісії Solana на основі обчислювальних одиниць та пріоритетних комісій | Завжди |
| Комісія за створення акаунта | Мінімальний баланс, звільнений від rent, для створення нових Associated Token Accounts (ATA) | Rent::default().minimum_balance(account_size) - Розраховує rent на основі розміру даних акаунта (165-355 байтів залежно від розширень токенів) | Коли транзакція створює нові ATA |
| Комісія за підпис Kora | Додаткова комісія, коли Kora підписує як платник комісії, що не є учасником | Фіксована: 5 000 lamport (LAMPORTS_PER_SIGNATURE) | Коли платник комісії ще не є підписантом транзакції |
| Відтік платника комісії | Загальна кількість SOL, яку платник комісії відправляє в транзакції (перекази, створення акаунтів тощо) | Сума: Системні перекази від платника комісії, CreateAccount профінансований платником комісії, Зняття Nonce від платника комісії | Коли платник комісії виконує операції System Program |
| Комісія інструкції платежу | Оціночна вартість пріоритетних комісій для додавання інструкції платежу для безгазових транзакцій | Фіксована оцінка: 50 lamport (ESTIMATED_LAMPORTS_FOR_PAYMENT_INSTRUCTION) | Коли платіж потрібен, але не включений у транзакцію |
| Комісія за переказ | Комісії за переказ Token2022, налаштовані на mint (наприклад, 1% від суми переказу) | Token2022Mint.calculate_transfer_fee(amount, epoch) - На основі конфігурації комісії за переказ mint | Тільки для переказів Token2022 на платіжну адресу Kora |
| Коригування націнки | Націнка/коригування моделі ціноутворення Kora | Налаштована націнка в validation.price - Може додавати націнку у % від загальної комісії | Коли [validation.price] вказано в kora.toml |
Моделі ціноутворення та відтік коштів платника комісій
Kora підтримує три моделі ціноутворення, які визначають, як користувачі сплачують за транзакції:
Ціноутворення з маржею (за замовчуванням)
- Формула:
Total Fee = (Base + Outflow + Other Components) × (1 + margin) - Включає відтік коштів платника комісій: Так
- Найкраще підходить для: Промислових розгортань, де комісії мають відображати фактичні витрати з доданою операційною маржею
Фіксоване ціноутворення
- Формула:
Total Fee = Fixed Amount (in specified token) - Включає відтік коштів платника комісій: Ні
- Найкраще підходить для: Спрощеного UX з передбачуваним ціноутворенням у контрольованих середовищах
Безкоштовне ціноутворення
- Формула:
Total Fee = 0 - Включає відтік коштів платника комісій: Ні (оператор бере на себе всі витрати)
- Найкраще підходить для: Рекламних кампаній, тестування або повністю спонсорованих застосунків
⚠️ Попередження безпеки: моделі фіксованого/безкоштовного ціноутворення
КРИТИЧНО: Моделі фіксованого/безкоштовного ціноутворення НЕ включають відтік коштів платника комісій у нараховану суму. Це створює значний ризик безпеки за відсутності належного налаштування. Якщо ваша політика платника комісій дозволяє перекази або інші операції відтоку, зловмисники можуть використати це для вичерпання вашого облікового запису платника комісій.
Необхідні заходи безпеки
Під час використання фіксованого/безкоштовного ціноутворення ви ПОВИННІ налаштувати обмежувальні політики платника комісій, щоб заблокувати ВСІ грошові операції та операції зміни повноважень:
[validation.fee_payer_policy.system]allow_transfer = false # Block SOL transfersallow_create_account = false # Block account creation with lamportsallow_allocate = false # Block space allocation[validation.fee_payer_policy.system.nonce]allow_withdraw = false # Block nonce account withdrawals[validation.fee_payer_policy.spl_token] # and for [validation.fee_payer_policy.token_2022]allow_transfer = false # Block SPL transfersallow_burn = false # Block SPL token burningallow_close_account = false # Block SPL token account closures (returns rent)allow_mint_to = false # Block unauthorized SPL token mintingallow_initialize_account = false # Block account initialization
Додатковий захист
- Увімкніть автентифікацію: Завжди вимагайте автентифікацію за допомогою API-ключа або HMAC при фіксованому/безкоштовному ціноутворенні
- Встановіть низькі ліміти: Використовуйте консервативні значення
max_allowed_lamports - Відстежуйте використання: Контролюйте незвичайні патерни транзакцій з високим відтоком
- Розгляньте ціноутворення з маржею: Ціноутворення з маржею автоматично включає витрати на відтік у комісії
Попередження валідації
Валідатор конфігурації Kora попередить вас про небезпечні налаштування:
kora --config kora.toml config validate
Очікувані попередження для вразливих конфігурацій:
⚠️ SECURITY: Fixed pricing with system.allow_transfer=true.Users can make the fee payer transfer arbitrary SOL amounts at fixed cost.This can drain your fee payer account.
Is this page helpful?