카테고리 없음

Blockchain Transaction 2

tp134679 2025. 5. 19. 09:39

<목차>

1. unspent (Unspent Transaction Output)

2. Transaction 실행 흐름 정리

 

 

1. unspent (Unspent Transaction Output)

UTXO 

txin 과 txout 으로 내가 가지고있는 미사용잔액 (UTXO) 를 사용하여 거래를 한후에 트랜잭션 풀에 담기게 됩니다. 

그 후에 이 트랜잭션이 블록에 포함되고 채굴이 완료가 되면 그제서야 실제로 이러한 트렌젝션이 발생을 했고 결과와 결과로인한 상태를 업데이트를 해줘야했습니다.  잔액을 검증하기 위한 실제로 블록에 반영된 상태를 나타내는 데이터 구조 를 나타냅니다. 

 

// UTXO 구조 => 너 얼마 남았네? 미사용 잔액 추적
export class UnspentTxOut {
    txOutId: string; // 해당 UTXO가 포함된 트랜잭션 해시
    txOutIndex: number; // 해당 UTXO의 트랜잭션 출력 인덱스
    account: string; // UTXO 소유 계정
    amount: number; // 잔액
}
// 미사용 객체 저장소
export type UnspentTxPool = UnspentTxOut[];

 

2. Transaction 실행 흐름 정리

단계                        설명                                                                           오류 발생 가능성

1. UTXO 조회 지갑은 블록체인 상태를 스캔하거나 노드에서 UTXO 목록을 받음 UTXO 인덱스가 오래되었거나 노드와 싱크 안 맞으면 오류 발생
2. UTXO 선택 필요한 금액만큼의 UTXO를 선택 (잔돈 계산 포함) 너무 작은 UTXO만 있다면 수수료로 소모 불가능 (dust)
3. TxOut 생성 수신자와 잔돈을 위한 출력값 구성 주소 형식 오류, 수신자 오타 등
4. 트랜잭션 생성 TxIn과 TxOut을 묶어서 트랜잭션 구조 생성 구조가 이상하거나 필드 누락
5. 서명 각 TxIn에 대해 서명함 → 위변조 방지 개인키 손상, 서명 형식 불일치
6. 유효성 검증 노드가 서명, UTXO 존재 여부, 중복 사용 등을 검증 이미 사용된 UTXO일 경우 double spend로 거부됨
7. Mempool 전파 네트워크에 브로드캐스트 수수료가 너무 낮으면 Mempool에 무시될 수 있음
8. 블록 포함 채굴자가 유효한 트랜잭션을 블록에 포함 경쟁이 치열하거나 수수료 낮으면 오래 대기 가능
9. 블록 생성 트랜잭션 포함한 블록이 채굴되어 체인에 추가됨 블록 충돌(fork) 가능성
10. UTXO 업데이트 사용한 TxIn 제거, 새 TxOut을 새로운 UTXO로 등록 블록 리오그(Reorg) 시 롤백 발생 가능