Довідник з комісій

Останнє оновлення: 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 transfers
allow_create_account = false # Block account creation with lamports
allow_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 transfers
allow_burn = false # Block SPL token burning
allow_close_account = false # Block SPL token account closures (returns rent)
allow_mint_to = false # Block unauthorized SPL token minting
allow_initialize_account = false # Block account initialization

Додатковий захист

  1. Увімкніть автентифікацію: Завжди вимагайте автентифікацію за допомогою API-ключа або HMAC при фіксованому/безкоштовному ціноутворенні
  2. Встановіть низькі ліміти: Використовуйте консервативні значення max_allowed_lamports
  3. Відстежуйте використання: Контролюйте незвичайні патерни транзакцій з високим відтоком
  4. Розгляньте ціноутворення з маржею: Ціноутворення з маржею автоматично включає витрати на відтік у комісії

Попередження валідації

Валідатор конфігурації 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?

Керується

© 2026 Фонд Solana.
Всі права захищені.
Залишайтеся на зв'язку