본문으로 건너뛰기
buybitcoinsmart

용어집 / 채굴과 합의

블록 가중치

블록 가중치란 무엇입니까?
블록 가중치는 비트코인 블록을 측정하는 척도로, 여기서는 위트니스 데이터 1바이트가 1 단위의 비용을, 그 밖의 모든 바이트는 4 단위의 비용을 가지며, 상한은 4,000,000 단위입니다.

BIP-141에 명시되어 있습니다.

가중치가 존재하는 이유는 모든 바이트가 노드에게 똑같이 비싼 것은 아니기 때문입니다. 서명 데이터는 트랜잭션이 블록에 깊이 묻힌 뒤에는 버릴 수 있으므로, BIP141은 그 비용을 다른 모든 것의 4분의 1로 매기고 블록당 예산을 4,000,000 단위로 정했습니다. 여러분의 출금은 그 예산을 두고 경쟁하며, 이 할인이 있기 때문에 최신 주소에서 보내는 편이 예전 주소에서 보내는 것보다 비용이 적게 듭니다.

작동 방식

BIP141의 공식은 다음과 같습니다. 가중치는 기본 크기에 3을 곱한 값에 전체 크기를 더한 값과 같습니다. 기본 크기는 위트니스를 제거한 채 예전 방식으로 직렬화한 블록의 크기이고, 전체 크기는 전체 직렬화의 크기입니다. 같은 규칙을 반대로 쓰면 위트니스가 아닌 바이트당 4단위, 위트니스 바이트당 1단위가 되며, 외워 둘 가치가 있는 것은 이쪽입니다.

가중치를 4로 나누고 올림하면 가상 바이트가 나오며, 이것은 모든 수수료 추정기와 모든 지갑이 쓰는 단위입니다. 입력 2개를 쓰고 출력 2개를 만드는 결제에서 모두 네이티브 SegWit이라면 대략 208 가상 바이트, 즉 약 832 가중치 단위가 됩니다. 블록을 이런 결제로만 채운다면 거의 4,800건이 들어갑니다. 같은 결제를 레거시 pay to public key hash 주소로 구성하면 약 374 바이트가 되고, 그중 어느 것도 할인 대상이 아니므로 1,496 가중치 단위가 되며, 따라서 약 2,670건만 들어갑니다.

그 차이가 바로 이 설계의 핵심입니다. 위트니스에 할인을 적용하자 SegWit 도입이 스스로 이익이 되었습니다. 업그레이드한 지갑은 더 큰 블록이 안전하다는 확신을 따로 얻을 필요 없이 모든 트랜잭션에서 더 적은 수수료를 냈습니다. 또한 예전 출력을 써서 새 출력으로 통합하는 편이 입력당 비용이 예전보다 싸졌으므로, 네트워크가 원하는 방향으로 행동을 이끌기도 합니다.

사람들이 자주 헷갈리는 세부 사항이 두 가지 있습니다. 가중치는 트랜잭션마다 계산한 뒤 합산하므로, 블록의 가중치는 그 트랜잭션들의 가중치에 헤더와 카운터를 더한 값이며, 블록을 채우는 채굴업자는 바이트 수가 아니라 4,000,000 단위 예산을 기준으로 배낭 문제를 풉니다. 그리고 가중치는 가치와 아무런 관계가 없습니다. 900 가중치 단위의 트랜잭션이 40 비트코인을 옮기든 40,000 사토시를 옮기든 수수료는 똑같습니다. 네트워크는 공간에 값을 매길 뿐 금액에는 매기지 않기 때문입니다.

볼 수 있는 곳

모든 블록 탐색기는 크기 옆에 가중치를 표시하며, Bitcoin Core의 RPC getblock은 weight, size, strippedsize를 세 개의 별도 필드로 반환합니다. 멤풀 시각화도 가중치를 기반으로 합니다. 확인을 기다리는 트랜잭션을 보여 주는 막대는 sat/vB 단위의 수수료율 순으로 쌓이며, 이 수수료율의 분모는 가중치를 4로 나눈 값입니다.

가중치는 거래소가 출금 수수료로 실제로 청구하는 대상이기도 합니다. 비트코인으로 고정 수수료를 제시하는 플랫폼은 자기가 만들 것으로 예상하는 트랜잭션들의 가중치를 평균 내는 것이며, 멤풀이 한산할 때는 이익을 보고 붐빌 때는 손해를 봅니다. 고객 출금 수십 건을 하나의 트랜잭션 출력으로 묶어 보내는 플랫폼은 입력 묶음 하나에만 비용을 내면 되므로 수십 건에 내지 않아도 되며, 그래서 묶어서 보내는 거래소는 모든 출금을 따로 전파하는 거래소보다 훨씬 낮은 수수료를 받을 수 있습니다.

블록 가중치 vs 가상 바이트

블록 가중치는 원시 측정값이고, 가상 바이트는 같은 측정값을 4로 나눈 값입니다. 둘 다 같은 데이터를 설명하며 척도만 다릅니다. 가중치는 합의 규칙에 적힌 단위이므로 4,000,000이라는 수치가 코드에 가중치로 등장합니다. 가상 바이트는 지갑 인터페이스에 적힌 단위인데, 8 sat/vB의 수수료율이 가중치 단위당 2 sat보다 따지기 쉽기 때문입니다. 지갑이 여러분의 트랜잭션이 141 vbytes라고 말할 때, 그 트랜잭션이 들어갈 블록의 여유는 564 단위만큼 줄어듭니다.

혼동하기 쉬운 용어

자주 묻는 질문

블록 가중치를 가상 바이트로 어떻게 환산합니까?

가중치를 4로 나누고 올림하십시오. 560 가중치 단위의 트랜잭션은 140 가상 바이트이고, 4,000,000 가중치 단위로 가득 찬 블록은 1,000,000 가상 바이트입니다.

비트코인 금액이 크면 수수료도 커집니까?

아닙니다. 수수료는 옮기는 코인이 아니라 블록 가중치 단위마다 부과됩니다. 비트코인의 일부를 보내는 트랜잭션과 50비트코인을 보내는 트랜잭션은 입력과 출력의 수가 같다면 가중치도 같고 수수료도 같을 수 있습니다.

다음에 읽을 글

관련 용어

채굴과 합의 분야의 다른 용어

이 페이지를 영어로 읽기