본문으로 건너뛰기

트랜잭션 레이아웃

정보

이 페이지의 이해도를 극대화하려면 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트랜잭션이 실행된 주소의 해시 부분입니다. 주소에 대한 자세한 정보
ltuint64논리적 시간_을 나타냅니다. 논리적 시간에 대해 자세히 알아보기
이전트랜스해시`bits256이 계정에 대한 이전 거래의 해시입니다.
prev_trans_ltuint64이 계정에 대한 이전 거래의 'lt'입니다.
지금uint32이 트랜잭션을 실행할 때 설정된 now 값입니다. 초 단위의 유닉스 타임스탬프입니다.
outmsg_cntuint15이 트랜잭션을 실행하는 동안 생성된 발신 메시지 수입니다.
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_HASHbits256트랜잭션을 실행하기 전 계정 상태의 해시입니다.
new_hashbits256트랜잭션 실행 후 계정 상태의 해시입니다.

트랜잭션 설명 유형

보통

가장 일반적인 트랜잭션 유형이며 대부분의 개발자의 요구를 충족합니다. 이 유형의 트랜잭션에는 정확히 하나의 수신 메시지가 있으며 여러 개의 발신 메시지를 생성할 수 있습니다.

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_phTrStoragePhase아니요트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보
credit_phTrCreditPhase아니요트랜잭션 실행의 신용 단계에 대한 정보를 포함합니다. 자세한 정보
compute_phTrComputePhase트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보
actionTrActionPhase아니요트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다.
'중단됨'Bool트랜잭션 실행이 중단되었는지 여부를 나타냅니다.
바운스TrBouncePhase아니요트랜잭션 실행의 바운스 단계에 대한 정보를 포함합니다. 자세한 정보
파괴된Bool실행 중에 계정이 삭제되었는지 여부를 나타냅니다.

스토리지

이 유형의 트랜잭션은 유효성 검사자가 재량에 따라 삽입할 수 있습니다. 인바운드 메시지를 처리하지 않으며 어떤 코드도 호출하지 않습니다. 이 트랜잭션의 유일한 효과는 계정에서 스토리지 대금을 수금하여 스토리지 통계와 잔액에 영향을 미치는 것입니다. 계정의 Toncoin 잔액이 특정 금액 이하로 떨어지면 계정이 동결되고 해당 코드와 데이터가 결합된 해시로 대체될 수 있습니다.

trans_storage$0001 storage_ph:TrStoragePhase
= TransactionDescr;
필드유형설명
storage_phTrStoragePhase트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보

틱톡

트랜잭션은 각 블록에서 자동으로 호출되어야 하는 특수 시스템 스마트 컨트랙트를 위해 예약되어 있습니다. 틱 트랜잭션은 각 마스터체인 블록의 시작에 호출되고, 트랜잭션은 마지막에 호출됩니다.

trans_tick_tock$001 is_tock:Bool storage_ph:TrStoragePhase
compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
aborted:Bool destroyed:Bool = TransactionDescr;
필드유형필수설명
is_tockBool트랜잭션 유형을 나타내는 플래그입니다. 틱` 트랜잭션을 구분하는 데 사용됩니다.
storage_phTrStoragePhase트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보
compute_phTrComputePhase트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보
actionTrActionPhase아니요트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다.
'중단됨'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_phTrStoragePhase아니요트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보
compute_phTrComputePhase트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보
actionTrActionPhase아니요트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다.
'중단됨'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_phTrStoragePhase트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보
'중단됨'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_phTrStoragePhase아니요트랜잭션 실행의 저장 단계에 대한 정보를 포함합니다. 자세한 정보
credit_phTrCreditPhase아니요트랜잭션 실행의 신용 단계에 대한 정보를 포함합니다. 자세한 정보
compute_phTrComputePhase트랜잭션 실행의 계산 단계에 대한 정보를 포함합니다. 자세한 정보
actionTrActionPhase아니요트랜잭션 실행의 액션 단계에 대한 정보를 포함합니다. 자세한 정보. 참조에 저장됩니다.
'중단됨'Bool트랜잭션 실행이 중단되었는지 여부를 나타냅니다.
파괴된Bool실행 중에 계정이 삭제되었는지 여부를 나타냅니다.

참고 항목