트랜잭션은 하나 이상의 명령어, 변경을 승인하는 계정의 서명, 그리고 최근 블록해시를 포함합니다. 네트워크는 트랜잭션의 모든 명령어를 함께 처리합니다. 어떤 명령어라도 실패하면 전체 트랜잭션이 실패하고 모든 상태 변경이 되돌려집니다.
두 개의 트랜잭션을 보여주는 단순화된 다이어그램
트랜잭션 구조
서명, 메시지 형식(헤더, 계정 주소, 블록해시, 컴파일된 명령어), 바이너리 인코딩, 크기 제한, 그리고 SOL 전송 예제.
버전별 트랜잭션
레거시 vs V0 형식, 주소 조회 테이블, ALT 해석, 그리고 버전 비교.
트랜잭션 파이프라인
전체 8단계 처리 파이프라인(수신부터 커밋까지), 네트워크에서 트랜잭션 세부 정보 읽기, 그리고 검증 오류 참조.
영구 논스
영구 논스를 사용한 오프라인 서명, 논스 생명주기, 감지, 검증 흐름, 그리고 실패 동작.
주요 사항
- 원자적 실행: 모든 명령어가 성공하거나 모두 되돌려집니다. 실패 시에도 수수료는 청구됩니다.
- 크기 제한: 최대 1,232바이트, IPv6 최소 MTU(1,280바이트)에서 네트워크 헤더용 48바이트를 뺀 값입니다.
- 서명: 각 서명자는 하나의 64바이트 Ed25519 서명을 제공합니다.
- 블록해시 만료: 트랜잭션의 최근 블록해시는 150슬롯 동안 유효합니다.
제한 사항
| 제한 사항 | 값 | 출처 |
|---|---|---|
| 최대 트랜잭션 크기 | 1,232바이트 | PACKET_DATA_SIZE |
| 트랜잭션당 최대 계정 수 | 64 | 강제 제한 (increase_tx_account_lock_limit 활성화 시 128, 현재 비활성) |
| 블록해시 만료 | 150슬롯 | MAX_PROCESSING_AGE |
| 서명 크기 | 64바이트 (Ed25519) | -- |
| 서명당 기본 수수료 | 5,000램포트 | 수수료 |
| 최대 실행 명령어 수 | 64 (최상위 + CPI) | MAX_INSTRUCTION_TRACE_LENGTH |
| 패킷당 최대 서명 수 | 12 | MAX_SIGNATURES_PER_PACKET |
Is this page helpful?