블록 크기(Block Size)란?
블록 크기는 한 블록이 블록체인에서 담을 수 있는 데이터의 최대 양입니다. 한 블록에 몇 건의 트랜잭션이 들어갈지의 상한을 설정하죠. 이를 기차의 객차에 비유해 보면: 객차가 커질수록 탑승자도 많아지지만, 역에 정차하는 데 걸리는 시간이 더 길어집니다.
더 큰 블록 크기가 항상 즉시 저렴한 트랜잭션을 의미하는 것은 아닙니다. 실제로는 더 큰 블록이 네트워크 전파에 시간이 더 걸려 스테일(block) 가능성이 커지고, 작은 노드들이 파티에서 제외될 수 있습니다.
블록 크기가 작동하는 방식
블록이 생성될 때 실제로 어떤 일이 벌어지는지와 블록 크기가 이야기의 일부가 되는 이유에 대한 빠른 설명입니다.
- Step 1: 사람들이 트랜잭션을 보냅니다. 이 트랜잭션들은 mempool이라고 불리는 공개 대기실에 쌓입니다.
- Step 2: 마이너나 검증자가 트랜잭션을 선택하고 프로토콜 한도에 도달할 때까지 패킹합니다. 그 한도가 각 블록의 Transaction Capacity를 형성합니다.
- Step 3: 후보 블록이 브로드캐스트됩니다. 다른 노드들이 이를 검증하고 모든 검사가 통과하면 체인의 일부가 됩니다.
- Step 4: 블록 크기가 수요에 비해 촘촘하면 일부 트랜잭션이 대기열에 남아 네트워크 혼잡이 발생합니다.
- Step 5: 블록 크기가 매우 크면, 모든 노드가 제한된 네트워크 대역폭을 가지므로 인터넷을 가로질러 이동하는 데 더 오래 걸릴 수 있습니다. 더 긴 전송 시간은 체인 분할과 낭비된 작업으로 이어질 수 있습니다.
그것이 루프입니다. rinse, verify, repeat.
왜 블록 크기가 중요한가
사용자이거나 빌더로서 무엇을 신경 써야 하나?
- 장점: 더 큰 블록 크기는 한 블록에 더 많은 트랜잭션을 담을 수 있게 해, 바쁜 시기에 수수료를 관리하는 데 도움이 될 수 있습니다.
- 관점: 너무 크면 노드의 하드웨어와 저장소 요구가 커져 참여할 수 있는 사람의 범위가 좁아집니다. 이는 네트워크 자원 및 풀 노드를 운영하는 사람들에게 직접적으로 영향을 미칩니다.
- 관련성: 비트코인, 이더리움 및 바쁜 앱이 있는 모든 체인에서 처리량, 수수료, 분산화에 대해 토론할 때 블록 크기에 대한 이야기를 들을 수 있습니다.
블록 크기를 블록 시간, 일반 수수료, 체인이 롤업이나 페이먼트 채널을 사용하는지와 비교해 보세요. 크기만으로 모든 이야기가 이루어지지는 않습니다.
블록 크기의 주요 특성
블록이 작동하게 하는 세부 요소:
- 한도: 블록에 담을 수 있는 데이터 양을 프로토콜 규칙이 제한합니다.
- 실효성: 실제 채워진 크기는 수요와 수수료에 따라 상한선 아래에 위치하는 경우가 많습니다.
- 전파: 더 큰 블록은 확산에 더 오래 걸릴 수 있어 보안 및 최종성 느낌에 영향을 미칩니다.
- 수수료: 수요가 블록 크기보다 빠르게 증가하면 수수료는 상승하는 경향이 있습니다.
- 업그레이드: 블록 크기를 바꾸려면 보편적인 합의와 신중한 테스트가 필요합니다.
Variations variations
다른 체인들은 이 아이디어를 조금 다르게 측정하거나 적용합니다:
- Max: 블록당 직접 바이트 상한으로, 고전적인 1메가바이트식 한계처럼.
- Weight: 일부 데이터를 다른 데이터보다 더 많이 계산하는 가중치 시스템으로, SegWit 스타일 회계에서 볼 수 있습니다.
- Gas: 용량당 가스 한도로 크기와 계산 비용을 묶는 체인으로 스마트 컨트랙트에서 일반적입니다.
- Adaptive: 최근 사용량에 따라 한도를 천천히 조정하는 네트워크도 있습니다.
블록 크기는 합의 규칙입니다. 로컬에서 변경해도 네트워크가 당신의 선도에 따를 것이라고 기대할 수 없습니다.
예시
바쁜 주말 동안 수요에 비해 작은 블록 크기면 많은 트랜잭션이 대기하고 mempool이 해소될 때까지 수수료가 상승하는 것처럼 보일 수 있습니다.
재미있는 사실
2017년의 유명한 블록 크기 논쟁은 비트코인 커뮤니티를 분열시키고 Bitcoin Cash를 탄생시켰습니다. 그것은 Reddit 스레드가 프로토콜 엔지니어링과 매우 공개적으로 만난 순간이었습니다.
Wrap-Up
짧은 요점: 블록 크기는 블록에 들어가는 데이터의 상한이며, 그 상한을 정하는 것은 속도, 수수료, 그리고 어느 노드가 실행될지 사이의 trade-off입니다.