거래 수령증 (Transaction Receipt)
1. 개요
거래 수령증(Transaction Receipt)이란 블록체인 네트워크에서 특정 거래(Transaction)가 성공적으로 처리되었음을 증명하고, 해당 거래의 실행 결과에 대한 상세 정보를 담고 있는 데이터 구조체입니다.
일반적인 금융 거래의 영수증과 유사한 개념이지만, 블록체인에서의 수령증은 단순히 '돈을 보냈다'는 사실을 넘어, 스마트 계약(Smart Contract)의 실행 결과값, 가스 소비량, 상태 변경 사항 등 기술적인 실행 로그를 모두 포함하는 중요한 기록물입니다.
2. 거래 수령증의 필요성
블록체인의 거래 전송(Send)과 확정(Confirmation) 사이에는 시간적 간격이 존재합니다. 사용자가 거래를 네트워크에 전송했다고 해서 즉시 결과가 확정되는 것이 아니며, 채굴자(Miner)나 검증자(Validator)에 의해 블록에 포함되어야 합니다.
거래 수령증은 다음과 같은 이유로 필수적입니다:
- 실행 결과 확인: 거래가 성공(Success)했는지, 혹은 가스 부족이나 로직 오류로 인해 실패(Reverted)했는지 확인합니다.
- 상태 변경 추적: 스마트 계약 실행 시 어떤 변수가 변경되었는지, 어떤 이벤트(Event)가 발생했는지 파악합니다.
- 비용 정산: 실제로 소비된 가스(Gas)의 양을 확인하여 수수료 지불 내역을 검증합니다.
- 데이터 증명: 특정 거래가 블록체인 상의 몇 번째 블록에 포함되었는지 증명하는 근거가 됩니다.
3. 주요 구성 요소
거래 수령증에 포함되는 정보는 네트워크(Ethereum, Solana, Hyperledger 등)마다 차이가 있으나, 일반적으로 다음과 같은 핵심 데이터를 포함합니다.
3.1. 기본 상태 정보
| 항목 |
설명 |
비고 |
| Transaction Hash |
거래를 식별하는 고유한 ID (해시값) |
기본 키(Primary Key) 역할 |
| Status |
거래의 최종 성공 여부 |
성공(1) 또는 실패(0) |
| Block Number |
해당 거래가 포함된 블록의 높이 |
확정 시점 확인 가능 |
| Block Hash |
해당 거래가 포함된 블록의 해시값 |
데이터 무결성 검증용 |
3.2. 리소스 소비 정보
- Gas Used: 거래를 처리하기 위해 실제로 사용된 가스 양입니다.
- Cumulative Gas Used: 해당 블록 내에서 이 거래가 처리되기 전까지 누적된 가스 사용량입니다.
- Effective Gas Price: 거래에 적용된 최종 가스 가격입니다.
3.3. 실행 로그 (Logs/Events)
스마트 계약이 실행될 때 emit 키워드를 통해 발생시킨 이벤트 기록입니다. 이는 오프체인(Off-chain) 애플리케이션(예: 웹3 지갑, 익스플로러)이 블록체인의 상태 변화를 감지하는 핵심 수단이 됩니다.
- Address: 로그를 발생시킨 계약 주소
- Topics: 이벤트의 식별자와 인덱싱된 파라미터
- Data: 인덱싱되지 않은 나머지 상세 데이터
4. 거래 처리 흐름과 수령증의 생성
거래 수령증은 거래가 블록에 포함되어 합의(Consensus)가 이루어진 직후에 생성됩니다.
- 거래 생성: 사용자가 서명 후 네트워크에 전송 $\rightarrow$ Mempool(대기소) 진입
- 블록 생성: 검증자가 거래를 선택하여 실행하고 블록을 생성 $\rightarrow$ 상태 전이 발생
- 수령증 기록: 실행 결과(성공/실패, 로그, 가스 사용량)를 계산하여 수령증 생성 $\rightarrow$ 블록 데이터와 함께 저장
- 조회: 사용자가
getTransactionReceipt와 같은 API를 통해 수령증 확인
5. 기술적 주의사항 및 한계
5.1. 거래 전송 $\neq$ 거래 성공
많은 초보 사용자가 거래 해시(TxHash)가 생성되면 거래가 완료되었다고 오해합니다. 하지만 거래 해시는 '요청'에 대한 ID일 뿐이며, 실제 성공 여부는 반드시 '거래 수령증'의 status 필드를 통해 확인해야 합니다.
5.2. 가스 소모와 실패 (Out of Gas)
스마트 계약 실행 중 오류가 발생하여 거래가 Revert(되돌리기) 되더라도, 이미 사용한 가스 비용은 환불되지 않습니다. 수령증에는 거래가 실패했음에도 불구하고 가스가 소비된 기록이 남게 됩니다.
5.3. 데이터 가용성
수령증 데이터는 블록 헤더에 직접 포함되지 않고 별도의 저장소(State Tree 등)에 저장되는 경우가 많습니다. 따라서 풀 노드(Full Node)가 아닌 라이트 노드(Light Node)에서는 수령증 조회를 위해 추가적인 요청이 필요할 수 있습니다.
6. 관련 문서
# 거래 수령증 (Transaction Receipt)
## 1. 개요
**거래 수령증(Transaction Receipt)**이란 블록체인 네트워크에서 특정 거래(Transaction)가 성공적으로 처리되었음을 증명하고, 해당 거래의 실행 결과에 대한 상세 정보를 담고 있는 데이터 구조체입니다.
일반적인 금융 거래의 영수증과 유사한 개념이지만, 블록체인에서의 수령증은 단순히 '돈을 보냈다'는 사실을 넘어, 스마트 계약(Smart Contract)의 실행 결과값, 가스 소비량, 상태 변경 사항 등 기술적인 실행 로그를 모두 포함하는 중요한 기록물입니다.
---
## 2. 거래 수령증의 필요성
블록체인의 거래 전송(Send)과 확정(Confirmation) 사이에는 시간적 간격이 존재합니다. 사용자가 거래를 네트워크에 전송했다고 해서 즉시 결과가 확정되는 것이 아니며, 채굴자(Miner)나 검증자(Validator)에 의해 블록에 포함되어야 합니다.
거래 수령증은 다음과 같은 이유로 필수적입니다:
- **실행 결과 확인**: 거래가 성공(`Success`)했는지, 혹은 가스 부족이나 로직 오류로 인해 실패(`Reverted`)했는지 확인합니다.
- **상태 변경 추적**: 스마트 계약 실행 시 어떤 변수가 변경되었는지, 어떤 이벤트(Event)가 발생했는지 파악합니다.
- **비용 정산**: 실제로 소비된 가스(Gas)의 양을 확인하여 수수료 지불 내역을 검증합니다.
- **데이터 증명**: 특정 거래가 블록체인 상의 몇 번째 블록에 포함되었는지 증명하는 근거가 됩니다.
---
## 3. 주요 구성 요소
거래 수령증에 포함되는 정보는 네트워크(Ethereum, Solana, Hyperledger 등)마다 차이가 있으나, 일반적으로 다음과 같은 핵심 데이터를 포함합니다.
### 3.1. 기본 상태 정보
| 항목 | 설명 | 비고 |
| :--- | :--- | :--- |
| **Transaction Hash** | 거래를 식별하는 고유한 ID (해시값) | 기본 키(Primary Key) 역할 |
| **Status** | 거래의 최종 성공 여부 | 성공(1) 또는 실패(0) |
| **Block Number** | 해당 거래가 포함된 블록의 높이 | 확정 시점 확인 가능 |
| **Block Hash** | 해당 거래가 포함된 블록의 해시값 | 데이터 무결성 검증용 |
### 3.2. 리소스 소비 정보
- **Gas Used**: 거래를 처리하기 위해 실제로 사용된 가스 양입니다.
- **Cumulative Gas Used**: 해당 블록 내에서 이 거래가 처리되기 전까지 누적된 가스 사용량입니다.
- **Effective Gas Price**: 거래에 적용된 최종 가스 가격입니다.
### 3.3. 실행 로그 (Logs/Events)
스마트 계약이 실행될 때 `emit` 키워드를 통해 발생시킨 이벤트 기록입니다. 이는 오프체인(Off-chain) 애플리케이션(예: 웹3 지갑, 익스플로러)이 블록체인의 상태 변화를 감지하는 핵심 수단이 됩니다.
- **Address**: 로그를 발생시킨 계약 주소
- **Topics**: 이벤트의 식별자와 인덱싱된 파라미터
- **Data**: 인덱싱되지 않은 나머지 상세 데이터
---
## 4. 거래 처리 흐름과 수령증의 생성
거래 수령증은 거래가 블록에 포함되어 **합의(Consensus)**가 이루어진 직후에 생성됩니다.
1. **거래 생성**: 사용자가 서명 후 네트워크에 전송 $\rightarrow$ *Mempool(대기소) 진입*
2. **블록 생성**: 검증자가 거래를 선택하여 실행하고 블록을 생성 $\rightarrow$ *상태 전이 발생*
3. **수령증 기록**: 실행 결과(성공/실패, 로그, 가스 사용량)를 계산하여 수령증 생성 $\rightarrow$ *블록 데이터와 함께 저장*
4. **조회**: 사용자가 `getTransactionReceipt`와 같은 API를 통해 수령증 확인
---
## 5. 기술적 주의사항 및 한계
### 5.1. 거래 전송 $\neq$ 거래 성공
많은 초보 사용자가 거래 해시(TxHash)가 생성되면 거래가 완료되었다고 오해합니다. 하지만 **거래 해시는 '요청'에 대한 ID일 뿐이며, 실제 성공 여부는 반드시 '거래 수령증'의 `status` 필드를 통해 확인해야 합니다.**
### 5.2. 가스 소모와 실패 (Out of Gas)
스마트 계약 실행 중 오류가 발생하여 거래가 `Revert`(되돌리기) 되더라도, 이미 사용한 가스 비용은 환불되지 않습니다. 수령증에는 거래가 실패했음에도 불구하고 가스가 소비된 기록이 남게 됩니다.
### 5.3. 데이터 가용성
수령증 데이터는 블록 헤더에 직접 포함되지 않고 별도의 저장소(State Tree 등)에 저장되는 경우가 많습니다. 따라서 풀 노드(Full Node)가 아닌 라이트 노드(Light Node)에서는 수령증 조회를 위해 추가적인 요청이 필요할 수 있습니다.
---
## 6. 관련 문서
- [스마트 계약(Smart Contract)]( # )
- [가스(Gas) 및 수수료 메커니즘]( # )
- [블록체인 익스플로러(Blockchain Explorer)]( # )
- [이벤트 로그(Event Logs)]( # )