거래 브로드캐스트
서명된 비트코인 거래를 네트워크에 브로드캐스트하는 방법 - 노드에서 멤풀로, 그리고 블록으로.
0단계 ·
무엇을 배우는가
- 원시 거래를 비트코인 네트워크에 제출하는 방법
- 거래 전파 중에 일어나는 일
- 거래가 멤풀에서 확정된 블록으로 이동하는 방식
원시 거래 보내기
이제 16진수 형식의 완전히 서명된 거래를 가지고 있습니다. 이것을 네트워크에 전달해야 합니다. 브로드캐스트하는 여러 방법이 있습니다.
Bitcoin Core CLI
풀노드를 운영한다면, 이것이 가장 주권적인 옵션입니다:
bitcoin-cli sendrawtransaction "02000000000101..."
명령은 거래가 수락되면 txid를 반환하거나, 거부된 이유(유효하지 않은 서명, 불충분한 수수료, 이중 지출 등)를 설명하는 에러 메시지를 반환합니다.
프로그래밍 방식 RPC
JSON-RPC를 노드에 사용:
curl --user rpcuser:rpcpass \
--data-binary '{"method":"sendrawtransaction","params":["02000000..."]}' \
http://127.0.0.1:8332/
공개 API
노드를 운영하지 않는다면, 여러 서비스가 원시 거래를 수락합니다:
- mempool.space -
POST /api/tx에 원시 16진수를 본문으로 - blockstream.info -
POST /api/tx - Electrum 서버 -
blockchain.transaction.broadcast메서드를 통해
프라이버시 주의: 제3자 서비스를 통한 브로드캐스트는 더 넓은 네트워크에 도달하기 전에 당신의 IP 주소와 거래를 노출합니다. 자체 노드 운영은 이를 피합니다.
브로드캐스트 후 일어나는 일
1단계: 로컬 검증
당신의 노드(또는 API 엔드포인트)는 릴레이하기 전에 거래를 검증합니다:
- 모든 입력 UTXO가 미지출 상태인가?
- 서명이 잠금 스크립트에 대해 검증되는가?
- 수수료가 최소 릴레이 임계값 이상인가(기본값: 1 sat/vB)?
- 거래가 최대 표준 크기 미만인가(400,000 WU)?
- 모든 표준성 검사를 통과하는가?
어떤 검사든 실패하면 거래는 특정 에러 코드로 거부됩니다. 일반적인 에러:
| 에러 | 의미 |
|---|---|
missing-inputs | 참조된 UTXO가 존재하지 않거나 이미 지출됨 |
bad-txns-inputs-missingorspent | 이중 지출 시도 |
insufficient fee | 수수료율이 최소 릴레이 임계값 미만 |
non-mandatory-script-verify-flag | 유효하지 않은 서명 |
2단계: 네트워크 전파
검증되면 노드는 가십 프로토콜을 사용해 거래를 피어들에게 브로드캐스트합니다:
- 노드가 새 txid를 나열하는
inv(인벤토리) 메시지를 보냄 - 이 txid를 본 적 없는 피어가
getdata로 요청 - 노드가 전체 거래로 응답(
tx메시지) - 수신한 각 피어가 독립적으로 검증하고 과정을 반복
잘 연결된 노드는 2~5초 안에 네트워크 대부분에 도달합니다.
3단계: 멤풀 진입
거래를 검증하는 모든 노드는 이를 로컬 멤풀에 추가합니다 - 미확정 거래의 대기 풀입니다. 거래는 채굴자가 블록에 포함시킬 때까지 여기에 머뭅니다.
멤풀 동작은 노드별로 다릅니다:
- 기본 멤풀 크기 한도: 300 MB
- 기본 만료: 336시간(2주)
- 멤풀이 가득 차면 가장 낮은 수수료율 거래가 제거됨
4단계: 채굴
채굴자는 멤풀에서 거래를 선택해 후보 블록을 구축하며, 수수료율(sat/vB)로 우선순위를 매깁니다. 채굴자가 유효한 작업증명을 찾으면 블록이 네트워크 전체에 전파되고 당신의 거래는 첫 확정을 달성합니다.
첫 확정까지 평균 시간: ~10분, 하지만 크게 다릅니다. 블록이 빨리 발견되면 1분일 수 있습니다. 혼잡 중에 수수료율이 너무 낮으면 몇 시간 또는 며칠이 될 수 있습니다.
거래 모니터링
브로드캐스트 후 거래를 추적할 수 있습니다:
# Check if it's in your node's mempool
bitcoin-cli getmempoolentry "txid"
# Get full transaction details
bitcoin-cli getrawtransaction "txid" true
또는 mempool.space 또는 txid.uk 같은 블록 익스플로러를 사용해 실시간으로 볼 수 있습니다. tx.txid.uk를 사용해 원시 거래를 디코딩하고 브라우저에서 직접 브로드캐스트할 수도 있습니다.
거래가 멈췄나요?
거래가 확정되지 않는다면 옵션이 있습니다:
- RBF (Replace-By-Fee) - 멈춘 거래를 더 높은 수수료 버전으로 교체
- CPFP (Child Pays for Parent) - 두 거래 모두에 충분한 수수료를 지불하는 자식 거래 생성
- 재브로드캐스트 - 거래가 멤풀에서 제거되었다면, tx.txid.uk에서 다시 제출
전체 가이드 읽기: 멈춘 비트코인 거래를 해결하는 방법
다음 단계
검증과 탐색으로 계속해서 블록체인에서 거래를 확인하고 다음에 무엇이 오는지 배우세요.