트랜잭션 레이아웃
이 페이지의 이해도를 극대화하려면 TL-B 언어를 숙지하는 것이 좋습니다.
TON 블록체인은 계정, 메시지, 트랜잭션의 세 가지 주요 부분을 사용하여 작동합니다. 이 페이지에서는 트랜잭션의 구조와 레이아웃에 대해 설명합니다.
트랜잭션은 특정 계정과 관련된 인바운드 및 아웃바운드 메시지를 처리하여 계정 상태를 변경하고 유효성 검사자에게 수수료를 발생시킬 수 있는 작업입니다.
거래
transaction$0111 account_addr:bits256 lt:uint64
prev_trans_hash:bits256 prev_trans_lt:uint64 now:uint32
outmsg_cnt:uint15
orig_status:AccountStatus end_status:AccountStatus
^[ in_msg:(Maybe ^(Message Any)) out_msgs:(HashmapE 15 ^(Message Any)) ]
total_fees:CurrencyCollection state_update:^(HASH_UPDATE Account)
description:^TransactionDescr = Transaction;
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
계정_주소` | bits256 | 예 | 트랜잭션이 실행된 주소의 해시 부분입니다. 주소에 대한 자세한 정보 |
lt | uint64 | 예 | 논리적 시간_을 나타냅니다. 논리적 시간에 대해 자세히 알아보기 |
이전트랜스해시` | bits256 | 예 | 이 계정에 대한 이전 거래의 해시입니다. |
prev_trans_lt | uint64 | 예 | 이 계정에 대한 이전 거래의 'lt'입니다. |
지금 | uint32 | 예 | 이 트랜잭션을 실행할 때 설정된 now 값입니다. 초 단위의 유닉스 타임스탬프입니다. |
outmsg_cnt | uint15 | 예 | 이 트랜잭션을 실행하는 동안 생성된 발신 메시지 수입니다. |
orig_status | 계정 상태 | 예 | 거래가 실행되기 전 이 계정의 상태입니다. |
END_STATUS | 계정 상태 | 예 | 트랜잭션 실행 후 이 계정의 상태입니다. |
in_msg | (메시지 아무거나) | 아니요 | 트랜잭션 실행을 트리거한 수신 메시지입니다. 참조에 저장됩니다. |
OUT_MSGS | 해시맵E 15 ^(메시지 임의) | 예 | 이 트랜잭션을 실행하는 동안 생성된 발신 메시지 목록이 포함된 딕셔너리입니다. |
총_수수료 | [CurrencyCollection](/개발/데이터 형식/msg-tlb#currencycollection) | 예 | 이 거래를 실행하는 동안 징수된 수수료의 총액입니다. 톤코인_ 값과 일부 추가 통화로 구성됩니다. |
state_update | 해시업데이트 계정 | 예 | 해시업데이트` 구조체. 참조에 저장됩니다. |
설명 | [트랜잭션 설명](#트랜잭션 설명 유형) | 예 | 트랜잭션 실행 프로세스에 대한 자세한 설명입니다. 참조에 저장됩니다. |
계정 상태
acc_state_uninit$00 = AccountStatus;
acc_state_frozen$01 = AccountStatus;
acc_state_active$10 = AccountStatus;
acc_state_nonexist$11 = AccountStatus;
[00]
: 계정이 초기화되지 않았습니다.[01]
: 계정이 동결되었습니다.[10]
: 계정이 활성 상태입니다.[11]
: 계정이 존재하지 않습니다.
해시업데이트
update_hashes#72 {X:Type} old_hash:bits256 new_hash:bits256
= HASH_UPDATE X;
필드 | 유형 | 설명 |
---|---|---|
OLD_HASH | bits256 | 트랜잭션을 실행하기 전 계정 상태의 해시입니다. |
new_hash | bits256 | 트랜잭션 실행 후 계정 상태의 해시입니다. |
트랜잭션 설명 유형
보통
가장 일반적인 트랜잭션 유형이며 대부분의 개발자의 요구를 충족합니다. 이 유형의 트랜잭션에는 정확히 하나의 수신 메시지가 있으며 여러 개의 발신 메시지를 생성할 수 있습니다.
trans_ord$0000 credit_first:Bool
storage_ph:(Maybe TrStoragePhase)
credit_ph:(Maybe TrCreditPhase)
compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
aborted:Bool bounce:(Maybe TrBouncePhase)
destroyed:Bool
= TransactionDescr;
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
크레딧_우선 | Bool | 예 | 수신 메시지의 바운스 플래그와 연관된 플래그입니다. credit_first = !bounce` |
storage_ph | TrStoragePhase | 아니요 | 트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보 |
credit_ph | TrCreditPhase | 아니요 | 트랜잭션 실행의 신용 단계에 대한 정보를 포함합니다. 자세한 정보 |
compute_ph | TrComputePhase | 예 | 트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보 |
action | TrActionPhase | 아니요 | 트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다. |
'중단됨' | Bool | 예 | 트랜잭션 실행이 중단되었는지 여부를 나타냅니다. |
바운스 | TrBouncePhase | 아니요 | 트랜잭션 실행의 바운스 단계에 대한 정보를 포함합니다. 자세한 정보 |
파괴된 | Bool | 예 | 실행 중에 계정이 삭제되었는지 여부를 나타냅니다. |
스토리지
이 유형의 트랜잭션은 유효성 검사자가 재량에 따라 삽입할 수 있습니다. 인바운드 메시지를 처리하지 않으며 어떤 코드도 호출하지 않습니다. 이 트랜잭션의 유일한 효과는 계정에서 스토리지 대금을 수금하여 스토리지 통계와 잔액에 영향을 미치는 것입니다. 계정의 Toncoin 잔액이 특정 금액 이하로 떨어지면 계정이 동결되고 해당 코드와 데이터가 결합된 해시로 대체될 수 있습니다.
trans_storage$0001 storage_ph:TrStoragePhase
= TransactionDescr;
필드 | 유형 | 설명 |
---|---|---|
storage_ph | TrStoragePhase | 트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보 |
틱톡
틱과
톡 트랜잭션은 각 블록에서 자동으로 호출되어야 하는 특수 시스템 스마트 컨트랙트를 위해 예약되어 있습니다. 틱
트랜잭션은 각 마스터체인 블록의 시작에 호출되고, 톡
트랜잭션은 마지막에 호출됩니다.
trans_tick_tock$001 is_tock:Bool storage_ph:TrStoragePhase
compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
aborted:Bool destroyed:Bool = TransactionDescr;
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
is_tock | Bool | 예 | 트랜잭션 유형을 나타내는 플래그입니다. 틱과 톡` 트랜잭션을 구분하는 데 사용됩니다. |
storage_ph | TrStoragePhase | 예 | 트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보 |
compute_ph | TrComputePhase | 예 | 트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보 |
action | TrActionPhase | 아니요 | 트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다. |
'중단됨' | Bool | 예 | 트랜잭션 실행이 중단되었는지 여부를 나타냅니다. |
파괴된 | Bool | 예 | 실행 중에 계정이 삭제되었는지 여부를 나타냅니다. |
분할 준비
이 유형의 거래는 현재 사용되지 않습니다. 이 프로세스에 대한 정보는 제한되어 있습니다.
트랜잭션 분할은 부하가 높은 상황에서 분할해야 하는 대규모 스마트 컨트랙트에서 시작됩니다. 컨트랙트는 이 트랜잭션 유형을 지원하고 부하 균형을 맞추기 위해 분할 프로세스를 관리해야 합니다.
스마트 컨트랙트를 분할해야 할 때 분할 준비 트랜잭션이 시작됩니다. 스마트 컨트랙트는 배포할 새 인스턴스의 상태를 생성해야 합니다.
trans_split_prepare$0100 split_info:SplitMergeInfo
storage_ph:(Maybe TrStoragePhase)
compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
aborted:Bool destroyed:Bool
= TransactionDescr;
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
스플릿_정보 | SplitMergeInfo | 예 | 분할 프로세스에 대한 정보입니다. |
storage_ph | TrStoragePhase | 아니요 | 트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보 |
compute_ph | TrComputePhase | 예 | 트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보 |
action | TrActionPhase | 아니요 | 트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다. |
'중단됨' | Bool | 예 | 트랜잭션 실행이 중단되었는지 여부를 나타냅니다. |
파괴된 | Bool | 예 | 실행 중에 계정이 삭제되었는지 여부를 나타냅니다. |
분할 설치
이 유형의 거래는 현재 사용되지 않습니다. 이 프로세스에 대한 정보는 제한되어 있습니다.
분할 설치 트랜잭션은 대규모 스마트 컨트랙트의 새 인스턴스를 생성하는 데 사용됩니다. 새 스마트 컨트랙트의 상태는 분할 준비 트랜잭션에 의해 생성됩니다.
trans_split_install$0101 split_info:SplitMergeInfo
prepare_transaction:^Transaction
installed:Bool = TransactionDescr;
필드 | 유형 | 설명 |
---|---|---|
스플릿_정보 | SplitMergeInfo | 분할 프로세스에 대한 정보입니다. |
prepare_transaction | 트랜잭션 | 분할 작업을 위해 준비된 트랜잭션에 대한 정보입니다. 참조에 저장됩니다. |
설치됨 | Bool | 트랜잭션이 설치되었는지 여부를 나타냅니다. |
병합 준비
이 유형의 거래는 현재 사용되지 않습니다. 이 프로세스에 대한 정보는 제한되어 있습니다.
병합 트랜잭션은 높은 부하로 인해 분할된 후 재결합해야 하는 대규모 스마트 콘트랙트에서 시작됩니다. 컨트랙트는 이 트랜잭션 유형을 지원하고 부하를 분산하기 위해 병합 프로세스를 관리해야 합니다.
병합 준비 트랜잭션은 두 스마트 컨트랙트를 병합해야 할 때 시작됩니다. 스마트 컨트랙트는 병합을 용이하게 하기 위해 자신의 다른 인스턴스에 대한 메시지를 생성해야 합니다.
trans_merge_prepare$0110 split_info:SplitMergeInfo
storage_ph:TrStoragePhase aborted:Bool
= TransactionDescr;
필드 | 유형 | 설명 |
---|---|---|
스플릿_정보 | SplitMergeInfo | 병합 프로세스에 대한 정보입니다. |
storage_ph | TrStoragePhase | 트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보 |
'중단됨' | Bool | 트랜잭션 실행이 중단되었는지 여부를 나타냅니다. |
설치 병합
이 유형의 거래는 현재 사용되지 않습니다. 이 프로세스에 대한 정보는 제한되어 있습니다.
병합 설치 트랜잭션은 대규모 스마트 컨트랙트의 인스턴스를 병합하는 데 사용됩니다. 병합을 촉진하는 특수 메시지는 병합 준비 트랜잭션에 의해 생성됩니다.
trans_merge_install$0111 split_info:SplitMergeInfo
prepare_transaction:^Transaction
storage_ph:(Maybe TrStoragePhase)
credit_ph:(Maybe TrCreditPhase)
compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
aborted:Bool destroyed:Bool
= TransactionDescr;
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
스플릿_정보 | SplitMergeInfo | 예 | 병합 프로세스에 대한 정보입니다. |
prepare_transaction | 트랜잭션 | 예 | 병합 작업을 위한 준비된 트랜잭션에 대한 정보입니다. 참조에 저장됩니다. |
storage_ph | TrStoragePhase | 아니요 | 트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보 |
credit_ph | TrCreditPhase | 아니요 | 트랜잭션 실행의 신용 단계에 대한 정보를 포함합니다. 자세한 정보 |
compute_ph | TrComputePhase | 예 | 트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보 |
action | TrActionPhase | 아니요 | 트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다. |
'중단됨' | Bool | 예 | 트랜잭션 실행이 중단되었는지 여부를 나타냅니다. |
파괴된 | Bool | 예 | 실행 중에 계정이 삭제되었는지 여부를 나타냅니다. |
참고 항목
- 백서의 트랜잭션 레이아웃에 대한 원본 설명