용어집 / 트랜잭션과 수수료
표준 트랜잭션
- 표준 트랜잭션이란 무엇입니까?
- 표준 트랜잭션이란 일반 노드가 중계하고 자신의 멤풀에 보관하는 데 동의하는 트랜잭션으로, 단지 합의 규칙상 유효하기만 한 것보다 더 엄격한 기준입니다.
네트워크를 지키는 두 개의 별개 관문이 있습니다. 합의는 블록이 무엇을 담을 수 있는지를 정하며 포크로만 바뀔 수 있습니다. 표준성은 노드가 무엇을 피어에게 전달할지를 정하며 새 버전이 나올 때마다 바뀝니다. 두 번째 관문을 통과하지 못한 트랜잭션은 무효가 아니라 환영받지 못하는 것이며, 다른 경로로 채굴업자에게 도달해야 합니다.
작동 방식
표준성은 각 노드가 스스로 적용하는 점검 목록이며, Bitcoin Core의 해당 목록 버전은 소스 파일 src/policy/policy.cpp 하나에 들어 있습니다.
주요 조건은 다음과 같습니다. 모든 출력 스크립트는 인식된 템플릿과 일치해야 합니다: pay to public key hash, pay to script hash, 세 가지 위트니스 유형, 키가 3개 이하인 베어 멀티시그, 또는 데이터를 담은 단일 출력입니다. 트랜잭션은 무게 단위 400,000을 초과할 수 없으며, 이는 가상 바이트 100,000, 즉 꽉 찬 블록의 4분의 1입니다. 버전은 허용 범위 안에 있어야 합니다. 수수료는 기본값으로 가상 바이트당 1사토시인 최소 중계율을 넘어야 합니다. 어떤 출력도 더스트 한도보다 작을 수 없으며, 레거시 출력은 546사토시, 네이티브 SegWit 출력은 294사토시입니다. 잠금 해제 스크립트는 오피코드 없이 데이터 푸시만 담아야 합니다.
이 중 하나라도 어기면 보통 "non-mandatory-script-verify-flag" 또는 "scriptpubkey"라는 단어로 시작하는, sendrawtransaction에서 나온 구체적인 오류가 발생하며, 그 트랜잭션은 제출한 노드 밖으로 퍼지지 않습니다.
정책 계층이 존재하는 이유는 중계는 무료이고 블록은 무료가 아니기 때문입니다. 누구나 채굴되지 않을 트랜잭션으로 네트워크를 넘치게 할 수 있으므로, 노드는 남용으로 보이는 형태, 검증 비용이 큰 형태, 또는 현실적으로 비용을 지불할 수 없는 형태를 전달하기를 거부합니다. 정책은 또한 생태계가 안전하다고 합의할 때까지 실험을 일반 유통에서 배제하는 장소이며, 그래서 어떤 정책 규칙을 완화하는 일은 전혀 조정이 필요 없음에도 소프트 포크만큼 논쟁적일 수 있습니다.
표준성을 보게 되는 곳
대부분의 사람은 표준성을 오류 메시지로 만나며, 그 메시지를 내는 지갑은 보통 의도적으로 뭔가 특이한 일을 하고 있는 경우입니다.
300사토시의 출력을 보내려 하면 더스트 규칙에 걸립니다. 큰 멀티시그를 pay to script hash 안이 아니라 베어 스크립트로 구성하면 템플릿 규칙에 걸립니다. 노드의 데이터 담기 설정이 허용하는 것보다 많은 데이터를 붙이면 그 한도에 걸립니다. 세 가지 모두 아무것도 네트워크에 도달하기 전에 자신의 노드에서 거부로 돌아옵니다.
비표준이 불가능을 뜻하지는 않으며, 지금은 이를 우회하는 시장도 있습니다. 2023년 2월 2일에 채굴 풀 Luxor는 어떤 노드도 중계하지 않았을 3.94메가바이트 트랜잭션 하나를 담은 블록 774,628을 채굴했으며, 그 트랜잭션은 풀에 직접 제출되었습니다. 이후 Marathon은 같은 발상을 2024년에 Slipstream이라는 제품으로 만들어, 비표준이거나 크기가 초과된 트랜잭션을 직접 포함하도록 받아들였습니다. 일반적인 구매자라면 이것이 필요할 일은 없으며, 이런 서비스를 쓰라는 요청을 받는다면 뭔가 이상한 일이 벌어지고 있다는 강한 신호입니다.
표준 트랜잭션 vs 합의상 유효한 트랜잭션
합의상 유효성은 네트워크 전체가 동의해야 하는 것이고, 표준성은 개별 노드가 돕기로 선택하는 것입니다. 어떤 트랜잭션은 합의상 유효하면서 비표준일 수 있으며, 그 경우 채굴업자가 이를 포함할 수 있고 모든 노드는 그 결과 블록을 이의 없이 받아들입니다. 그 반대는 일어날 수 없습니다. 합의를 깨는 것은 어차피 채굴될 수 없으므로 결코 중계되지 않습니다. 쉽게 말해 표준성은 채굴업자로 가는 길의 필터이고, 합의는 역사가 올바르게 연장되었는지를 정하는 규칙입니다.