본문으로 건너뛰기
buybitcoinsmart

용어집 / 개발자 참고 자료

MSG_TX

MSG_TX란 무엇입니까?
MSG_TX는 인벤토리 항목을 트랜잭션으로 표시하며, 유형 코드는 1이고, 확인되지 않은 결제가 상대 피어 누구도 그 내용을 보기 전에 피어들에게 알려지는 방식입니다.

비트코인의 공지 프로토콜에서 결제와 블록을 구분하는 숫자는 하나이며, 그 숫자는 1입니다. 이 숫자는 트랜잭션의 32바이트 식별자와 함께 이동하고, 총 36바이트이며, 발신자에게 아무런 의무를 지우지 않습니다. 바이트는 피어가 getdata로 응답할 때만 이동합니다. Bitcoin Core 0.21.0부터 대부분의 피어는 전혀 다른 코드로 공지합니다.

작동 방식

MSG_TX는 트랜잭션을 txid로 지칭하며, txid는 위트니스 데이터를 제외하고 계산한 식별자입니다.

결제를 자신의 멤풀에 받아들인 노드는 해시가 존재한다는 사실을 피어들에게 알립니다. 그 해시가 없는 피어는 요청하고, 그때서야 내용이 tx 메시지로 전송됩니다. 노드가 더 이상 보유하지 않는 무언가를 요청한 피어는 notfound를 받는데, 이는 흔히 일어납니다. 멤풀은 압박을 받으면 항목을 내보내며, 노드는 이미 버린 트랜잭션의 사본을 누구에게도 줄 의무가 없습니다.

제공은 의도적으로 인색합니다. Bitcoin Core는 트랜잭션이 멤풀에 2분 정도 머문 뒤에야, 한 번도 공지하지 않은 피어에게 그 트랜잭션을 건네줍니다. 이런 지연이 없으면 낯선 이가 접속해 getdata로 자신의 노드가 특정 결제를 알고 있는지 시험할 수 있고, 그러면 모든 노드가 자기 멤풀에 대한 조회 인터페이스가 되어 결제가 처음 나타난 곳을 훨씬 쉽게 밝혀낼 수 있게 됩니다.

유형 1은 오래된 직렬화 규칙도 함께 갖고 있습니다. 이에 대한 응답으로 제공되는 트랜잭션은 위트니스 데이터 없이 작성되며, 이는 2017년 이전에 존재한 형식으로, 세그윗 지출에서는 서명을 생략합니다. 따라서 세그윗을 인식하는 피어는 위트니스 변형을 요청하고, BIP339가 2021년 1월에 Bitcoin Core 0.21.0과 함께 출시된 이후로는 보통 대신 유형 5로 공지하며, 위트니스 해시로 트랜잭션을 지칭함으로써 훼손된 위트니스가 더 이상 알 수 없는 트랜잭션으로 보이지 않게 합니다.

확인할 수 있는 곳

MSG_TX는 “트랜잭션이 브로드캐스트되었다”라는 말의 배후에 있는 장치이며, 그렇지 않은 것으로 드러나는 경우의 배후이기도 합니다.

단일 노드에 연결된 지갑이 서명된 트랜잭션을 건네면, 그 노드가 해시를 공지하고, 어떤 피어가 요청할 때까지 다른 일은 일어나지 않습니다. 아무도 요청하지 않으면 결제는 한 대의 기계에 머물고 어떤 채굴업자도 그것을 보지 못합니다. Bitcoin Core는 아직 어떤 피어도 요청하지 않은 자신의 지갑 트랜잭션을 추적하고, 하나가 요청할 때까지 다시 공지합니다. 따라서 방화벽 뒤의 가정용 네트워크에서 아웃바운드 연결이 없는 노드는 아무것도 밖으로 나가지 않았는데도 결제를 전송된 것으로 보고할 수 있습니다.

거래소 출금 일괄 처리도 여기서 드러납니다. 거래소가 해시 하나를 공지하고, 요청 하나가 수십 명의 고객에게 한꺼번에 지급하는 트랜잭션을 전달하며, 그래서 출금의 txid에 낯선 이들의 출력이 포함되는 것입니다.

MSG_TX vs tx P2P 메시지

MSG_TX는 트랜잭션을 지칭하고, tx 메시지는 트랜잭션 하나를 담습니다. 둘을 혼동하면 프로토콜 로그를 읽을 수 없게 됩니다. inv와 getdata 줄은 유형 코드와 해시뿐인 반면 실제 바이트는 tx 줄에만 나타나기 때문입니다. 이 구분은 전파를 디버깅할 때 가장 중요합니다. 자신의 해시가 inv로 나가는 것을 보는 것은 자신의 노드가 누군가에게 알렸음을 증명합니다. 그 뒤를 tx 메시지가 잇는 것을 보는 것은 누군가 실제로 그것을 원했음을 증명합니다.

혼동하기 쉬운 용어

자주 묻는 질문

내 트랜잭션이 실제로 네트워크에 도달했는지 어떻게 알 수 있습니까?

해시를 공지하는 것만으로는 충분하지 않습니다. 브로드캐스트한 지 1분 뒤에 서로 독립적인 블록 탐색기 두 곳에서 조회하십시오. 자신이 통제하지 않는 노드에서 트랜잭션이 보인다는 것은 어떤 피어가 그것을 요청하고 받아들였음을 증명합니다.

최신 노드는 왜 대신 유형 5로 트랜잭션을 공지합니까?

BIP339 중계는 트랜잭션을 txid가 아니라 위트니스 해시로 식별하기 때문입니다. 이 해시는 위트니스 바이트도 포함하므로, 피어는 전송 중 위트니스가 변경된 트랜잭션을 한 번도 본 적 없는 것으로 착각하지 않습니다.

관련 용어

개발자 참고 자료 분야의 다른 용어

이 페이지를 영어로 읽기