Транзакція включає одну або більше інструкцій, підписи облікових записів, які авторизують зміни, та останній blockhash. Мережа обробляє всі інструкції в транзакції разом. Якщо будь-яка інструкція не виконується, вся транзакція не виконується і всі зміни стану скасовуються.
Спрощена діаграма, що показує дві транзакції
Структура транзакції
Підписи, формат повідомлення (заголовок, адреси облікових записів, blockhash, скомпільовані інструкції), бінарне кодування, ліміт розміру та приклад переказу SOL.
Версійні транзакції
Формат legacy проти V0, таблиці пошуку адрес, розв'язання ALT та порівняння версій.
Конвеєр транзакцій
Повний 8-етапний конвеєр обробки (від отримання до фіксації), читання деталей транзакції з мережі та довідник помилок валідації.
Довготривалі nonce
Офлайн-підписання з довготривалими nonce, життєвий цикл nonce, виявлення, потік валідації та поведінка при збоях.
Ключові факти
- Атомарне виконання: всі інструкції виконуються успішно або всі скасовуються. Комісії все одно стягуються при невдачі.
- Ліміт розміру: максимум 1 232 байти, що випливає з мінімального MTU IPv6 (1 280 байтів) мінус 48 байтів для мережевих заголовків.
- Підписи: кожен підписувач надає один 64-байтний підпис Ed25519.
- Термін дії blockhash: останній blockhash транзакції дійсний протягом 150 слотів.
Обмеження
| Обмеження | Значення | Джерело |
|---|---|---|
| Макс. розмір транзакції | 1 232 байти | PACKET_DATA_SIZE |
| Макс. облікових записів на транзакцію | 64 | Встановлене обмеження (128, коли активовано increase_tx_account_lock_limit, наразі неактивно) |
| Термін дії blockhash | 150 слотів | MAX_PROCESSING_AGE |
| Розмір підпису | 64 байти (Ed25519) | -- |
| Базова комісія за підпис | 5 000 lamports | Комісії |
| Макс. виконаних інструкцій | 64 (верхнього рівня + CPI) | MAX_INSTRUCTION_TRACE_LENGTH |
| Макс. підписів на пакет | 12 | MAX_SIGNATURES_PER_PACKET |
Is this page helpful?