Skip to content

Газ і комісії ​

Кожна сума в мережі — ціле число в uNRO: 1 NRO = 1 000 000 uNRO.

Комісія — це одиниці газу × ціна газу, де ціна газу задається в uNRO за одиницю:

комісія (uNRO) = gas_units × gas_price

Газ на операцію ​

ОпераціяОдиниці газуКонстанта
Переказ21GAS_BASE_TRANSFER
Виклик контракту (адреса .app з даними виклику)50 наперед, потім перерахунок за фактом — див. нижчеGAS_CONTRACT_CALL
Розгортання контракту10 000, фіксованоDEPLOY_GAS_UNITS
Передача платного імені (.node, .vault, .agent)фіксовано 100 uNRONFT_TRANSFER_FEE
Системні операції (стейкінг, реєстрації, кран, маркери управління)0—

За мінімальної ціни газу 1 uNRO переказ коштує 21 uNRO = 0,000021 NRO.

Виклики контрактів ​

За виклик наперед списується 50 одиниць газу. Потім контракт виконується в WASM-інтерпретаторі з бюджетом 1 000 000 fuel (MAX_CONTRACT_GAS). Після завершення нода переводить фактично витрачений fuel в одиниці газу — ceil(fuel / 20 000), щонайменше 1 — і повертає або доплачує різницю.

Курс задає NEUROCHAIN_FUEL_PER_GAS_UNIT (за замовчуванням 20 000) — так, щоб виклик, який вичерпав увесь fuel, коштував рівно сплачені наперед 50 одиниць. Host-функції, як-от читання і запис сховища, витрачають додатковий fuel; див. Газ і ліміти NeuroWASM.

Якщо контракт перервався або вичерпав fuel, зміни його сховища відкочуються і сума не переказується — але nonce і комісія все одно витрачені, тож невдалий виклик не можна безкоштовно повторювати.

Базова комісія ​

Протокол підтримує базову комісію, що рухається за попитом, у стилі EIP-1559 з Ethereum:

  • Починається з 1 uNRO за одиницю газу і ніколи не падає нижче цієї межі (MIN_GAS_PRICE).
  • Після кожного блоку рухається до цілі — половини газового бюджету блоку (5 000 одиниць): вгору, якщо блок використав більше, вниз, якщо менше, щонайбільше на 12,5% за блок. Якщо рухається, то щонайменше на 1 uNRO, тож після навантаження повертається аж до мінімуму.
  • Транзакцію з gas_price нижче поточної базової комісії відхиляє кожен валідатор. Це перевіряється в консенсусі, а не лише в mempool, тож пропозер не протягне занадто дешеву транзакцію повз інших.

Перед відправленням дізнайтеся поточне значення:

bash
curl -s "$NODE_RPC/api/v1/gas/estimate"
json
{
  "base_fee": 1,
  "gas_base_transfer": 21,
  "gas_contract_call": 50,
  "estimated_transfer": 21,
  "estimated_contract": 50,
  "estimated_transfer_human": "0.000021",
  "estimated_contract_human": "0.00005",
  "total_burned": 0,
  "nft_transfer_fee": 100,
  "nft_transfer_fee_human": "0.0001"
}

Gateway віддає те саме за адресою $GATEWAY/api/v1/gas/estimate. Вебгаманець надсилає gas_price = base_fee × 1,5, щоб випереджати зростання базової комісії.

Куди йдуть комісії ​

Рух комісії: комісія кожної транзакції ділиться — 50% спалюється, 50% отримує пропозер блоку; базова комісія задає мінімальну ціну газу

Після кожного блоку сума його комісій ділиться:

  • 50% спалюється (BURN_RATE_BPS = 5000) і додається до лічильника total_burned.
  • 50% отримує пропозер блоку.

Плата за реєстрацію імен .app і .vault спалюється повністю; реєстрація .node натомість стає стейком. Див. Адреси.

Бюджет блоку і mempool ​

ПравилоЗа замовчуваннямЗмінаПримітки
Газ на блок10 000 одиницьпараметр управління max_block_gasвід 1 до 1 000 000 000; зчитується під час старту ноди
Транзакцій на блок500—MAX_BLOCK_TXS
Розмір mempool10 000NEUROCHAIN_MAX_MEMPOOLКоли заповнено, нова транзакція витісняє найдешевшу очікувану — лише якщо платить більше
Час у mempool60 секунд—Очікувана транзакція, що не потрапила в блок, відкидається
Очікуваних від відправника64NEUROCHAIN_MAX_PENDING_PER_ACCOUNTНаступні транзакції з тієї ж адреси відхиляються
Заміна за комісією+10%NEUROCHAIN_RBF_MIN_BUMP_PCTПовторне надсилання тих самих (from, nonce) замінює очікувану лише з ціною газу, вищою щонайменше на стільки
Мінімальна ціна в mempool0 (вимкнено)NEUROCHAIN_MIN_FEE_PER_GASНеобов'язковий вхідний поріг понад базову комісію

Пропозер бере очікувані транзакції за спаданням комісії (транзакції одного відправника — у порядку nonce), пропускає нижчі за базову комісію і зупиняється, коли бюджет блоку вичерпано. Під час вибору кожен переказ рахує як 21 одиницю, а кожен виклик .app — як 50.

Константи ​

КонстантаЗа замовчуваннямЗначення
UNRO_PER_NRO1 000 000uNRO в одному NRO
GAS_BASE_TRANSFER21Одиниць газу на переказ
GAS_CONTRACT_CALL50Одиниць газу наперед за виклик контракту
DEPLOY_GAS_UNITS10 000Одиниць газу на розгортання
MAX_CONTRACT_GAS1 000 000Бюджет fuel на виклик контракту
NEUROCHAIN_FUEL_PER_GAS_UNIT20 000Fuel на одиницю газу під час перерахунку
MIN_GAS_PRICE1Мінімум базової комісії, uNRO за одиницю
MAX_BLOCK_GAS10 000Одиниць газу на блок
BURN_RATE_BPS5 000Частка комісій, що спалюється, у базисних пунктах (50%)
NFT_TRANSFER_FEE100Фіксована плата за передачу платного імені, uNRO