원시 트랜잭션 (Raw Transaction)

중급블록체인수정일

원시 트랜잭션(raw transaction)은 바이너리 형식으로 직렬화된 트랜잭션으로, 흔히 raw 트랜잭션이라고도 부릅니다. 종종 16진수를 사용하여 표현됩니다. 이름에 “raw”가 포함된 다양한 Bitcoin Core 명령어 때문에 raw 형식이라고도 합니다.

raw 트랜잭션은 지갑 화면에 보이는 정리된 정보가 아니라, 네트워크에 실제로 전달되고 블록에 기록되는 원시 데이터입니다. 순수한 바이너리(0과 1의 연속)는 읽기 어려우므로 보통 16진수 문자열로 표시합니다. raw 트랜잭션은 암호화된 것이 아니어서, 누구나 디코딩해 입력, 출력, 금액, 스크립트 같은 내용을 확인할 수 있습니다. 트랜잭션 ID(TXID)도 이 직렬화된 데이터(세그윗 트랜잭션에서는 위트니스를 뺀 부분)를 이중 SHA-256으로 해시해 얻습니다.

왜 “Raw”라고 부를까요?

비트코인 트랜잭션의 “원재료”를 직접 다룬다는 뜻입니다. 사용자 친화적인 지갑은 입력 선택, 거스름돈, 수수료 계산을 자동으로 처리하지만, raw 트랜잭션을 다루면 이 모든 세부 사항을 직접 정할 수 있어 통제권과 유연성이 큽니다. 이름은 다음과 같은 Bitcoin Core 명령어에서 왔습니다.

  • createrawtransaction: 입력과 출력을 지정해 서명되지 않은 raw 트랜잭션을 만듭니다.
  • signrawtransactionwithwallet: 지갑의 키로 raw 트랜잭션에 서명합니다.
  • decoderawtransaction: 16진수 raw 트랜잭션을 사람이 읽을 수 있는 형식으로 풀어 보여 줍니다.
  • sendrawtransaction: 완성된 raw 트랜잭션을 네트워크에 브로드캐스트합니다.

따라서 raw 트랜잭션은 서명 전 단계일 수도 있고, 서명을 마쳐 브로드캐스트할 준비가 된 상태일 수도 있습니다.

누가 Raw 트랜잭션을 사용하고 왜 사용할까요?

  1. 세밀한 제어: 다중 서명 트랜잭션이나 특정 조건이 있는 트랜잭션처럼 고도로 사용자 정의된 트랜잭션을 만듭니다.
  2. 여러 지급의 일괄 처리: 여러 수신자에게 보내는 지급을 하나의 트랜잭션에 묶어 전체 수수료를 줄일 수 있습니다.
  3. 문제 해결과 감사: 문제가 있거나 멈춘 트랜잭션을 분석하고, 트랜잭션의 구조를 자세히 확인합니다.
  4. 심층적인 이해: 트랜잭션이 프로토콜 수준에서 어떻게 구성되는지 배웁니다.

Raw 트랜잭션 사용의 단점

  • 복잡성: 비트코인 프로토콜과 스크립트 언어에 대한 깊은 이해가 필요해 초보자가 접근하기 어렵습니다.
  • 오류 발생 가능성: 사용자 친화적인 인터페이스가 없어 실수하면 자금을 잃거나 트랜잭션이 실패할 수 있습니다. 예를 들어 거스름돈 출력을 빠뜨리면 남은 금액이 모두 수수료로 채굴자에게 갑니다.
  • 지원 부족: 모든 지갑이나 거래소가 raw 트랜잭션 입력을 지원하지는 않습니다.

raw 트랜잭션은 유연성과 효율성이 필요한 숙련된 사용자에게 쓸모가 있지만, 비트코인의 기술적 측면에 익숙하지 않은 사람에게는 진입 장벽이 높습니다. 이 기능을 쓰기 전에 장단점을 따져 보는 것이 중요합니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.