작업 중

작업 중: MainNet에 앞서 이 사이트를 구축하고 있습니다. 세부 내용은 변경될 수 있습니다.

이 사이트는 아직 구축 중입니다

ZooBC는 공개적으로 개발되고 있습니다. 여기서 보시는 내용은 최신이며 정직하지만, 완성된 것은 아닙니다. 최종 입장이 아니라 현재의 상태로 읽어 주세요.

MainNet까지 문구, 구조, 이미지, 수치 등 많은 것이 바뀔 것입니다. 일부 페이지는 임시로 채워 둔 상태입니다.

더 넓은 ZooBC 생태계는 단계적으로 도입됩니다. 지갑, 익스플로러, 커뮤니티 채널은 MainNet이 다가오면서 하나씩 열리며, 이 사이트도 함께 성장합니다.

내용이 잘못되었거나, 깨져 보이거나, 오해의 소지가 있는 부분이 있으면 알려 주세요. 지금의 피드백이 나중의 매끄러운 출시보다 저희에게 더 큰 가치가 있습니다.

ZOOBC / 체인 보안

체인 보안

이 체인을 장악하는 데 실제로 드는 비용. 추첨은 균등하고, 영향력은 선형적이며, 공격할 가치가 있는 유일한 대상은 레지스트리이므로 그 안으로 들어가는 대기열이 곧 방어선입니다.

블록마다 그 블록을 생성할 노드 하나가 추첨됩니다. 추첨은 이전 블록의 시드에서 도출되는 전체 레지스트리에서의 균등 무작위 선택입니다. 가장 부유한 노드도, 가장 모범적인 노드도 아닙니다. 등록된 모든 노드가 매번 동등하게 대상이 됩니다.

따라서 체인에 대한 영향력은 단순히 레지스트리에서 차지하는 점유율이며, 이는 선형적입니다. 51%에 도달하면 무언가가 무너지는 임계점 같은 것은 없습니다. 레지스트리의 10분의 1을 보유하면 블록의 10분의 1을 생성하며, 얻는 것은 그것이 전부입니다.

그래서 공격할 가치가 있는 대상은 레지스트리뿐이고, 그 안으로 들어가는 대기열이 방어선이 됩니다. 자리는 돈으로 살 수 없습니다. 들어오려는 다른 모든 이의 뒤에 서서 한 번에 노드 하나씩 합류해야 하며, 아래 수치가 그 비용입니다.

01 / 추첨

블록 빌더를 정하는 방법

이전 블록의 시드로부터 모든 노드는 동일한 무한 추첨 순서를 계산합니다. 1라운드에서 한 노드가 지명되고, 그 노드가 15초 창 안에 블록을 게시하지 않으면 2라운드에서 다른 노드가 지명되는 식으로 이어집니다. 가장 먼저 게시한 노드가 블록을 생성합니다.

시드 자체는 sign(node_key, hash(previous seed)) 값이며, 모든 검증자가 이를 확인합니다. Ed25519 서명은 결정적이므로 특정 빌더에게 유효한 시드는 정확히 하나뿐이며, 빌더가 자신에게 유리한 시드가 나올 때까지 여러 시드를 시도할 수 없습니다. 공격자에게 허용된 유일한 자유는 게시하거나 침묵하는 것, 즉 자신이 추첨된 블록마다 단 한 번 주어지는 1비트의 선택뿐입니다.

참여 점수는 선정에 영향을 주지 않습니다. 흔히 영향을 준다고 생각하지만 그렇지 않습니다. 점수가 결정하는 것은 단 하나, 레지스트리에 계속 남을 수 있는지 여부입니다. 차례를 놓치면 점수가 떨어지고, 0이 되면 퇴출되며 스테이크는 반환됩니다. 만점이라고 해서 어제 합류한 노드보다 다음 블록을 얻을 확률이 더 높아지지는 않습니다. 스테이크 역시 선정에 영향을 주지 않으며, 들어가기 위한 대기열에서의 자리를 정할 뿐입니다.

02 / 영향력은 선형적

레지스트리 점유율로 실제로 얻는 것

공격자 보유분생성하는 블록콘텐츠 창 안에 노드 보유트랜잭션 하나를 10블록 동안 검열차례를 빼앗으려면 무력화해야 할 정직한 노드 수

가운데 열은 영향력이 아닙니다. 이는 단지 공격자의 노드 중 적어도 하나가 처음 10번의 추첨 안에 드는 빈도, 즉 해당 블록의 대기열 앞쪽에 자리를 잡는 빈도일 뿐 그 이상은 아닙니다. 공격자가 실제로 블록을 생성하는 것은 첫 번째로 추첨될 때뿐이며, 이것이 두 번째 열이고 정확히 레지스트리 점유율과 같습니다.

약해지는 것은 검열이며, 그것도 빠르게 약해집니다. 트랜잭션을 배제하려면 그 트랜잭션이 기다리는 동안 연속된 모든 차례를 차지해야 합니다. 레지스트리의 3분의 1을 보유해도 10블록, 즉 2분 30초 동안 성공할 확률은 59,000분의 1입니다. 완전한 장악에 못 미치는 점유율로는 지속적인 검열이 불가능합니다.

03 / 서비스 거부

유일한 실질적 공격: 추첨 무력화

노드는 처음 10라운드 안에 추첨된 경우에만 트랜잭션을 포함할 수 있습니다(max_priority_blocksmiths). 그보다 늦게 추첨되어도 블록을 생성할 수는 있지만, 그 블록은 비어 있어야 합니다. 이 규칙 덕분에 노드가 오프라인일 때도 체인이 계속 진행됩니다. 처음 추첨된 노드가 모두 부재해야만 블록이 내용을 잃습니다.

이것은 설계에서 가장 예민한 지점이기도 합니다. 해당 노드들은 이전 블록이 도착하는 순간, 즉 15초 전에 미리 지명됩니다. 그 시간 안에 이 노드들을 모두 오프라인으로 만들 수 있는 공격자는 빈 블록을 강제할 수 있으며, 이는 단순한 경쟁이 아니라 모든 사람을 검열하는 것입니다. 이는 합의의 문제가 아니라 서비스 거부의 문제이며, 이 수를 더 작고 깔끔한 숫자가 아닌 10으로 정한 이유이기도 합니다.

무력화해야 할 노드

10

블록마다 지명되는 수

사전 예고

15초

차례가 열리기 전

우발적 빈 블록

 

노드 20%가 오프라인일 때

이 수를 늘리는 데는 비용이 거의 들지 않습니다. 동시에 후보 블록을 만드는 노드가 몇 개 더 늘어날 뿐이며, 하나가 추가될 때마다 공격자가 같은 15초 안에 찾아내 다운시켜야 할 기기가 하나 더 늘어납니다.

04 / 연 단위로 매겨지는 비용

점유율을 사는 비용

공식
지연 = clamp(기본값 ÷ 레지스트리 크기, 최소, 최대)
입장
한 번에 하나씩, 스테이크 순서대로

슬롯 점유율은 스테이크 비율입니다. 대기열은 잠긴 잔액 순으로 정렬되므로, “슬롯의 100% 획득”은 운이 아니라 아무도 그들보다 더 많이 걸지 않는다는 가정입니다. 여기의 모든 수치는 공격자에게 가장 유리한 경우입니다.

정직한 운영자가 노드당 더 많이 스테이킹하는 순간, 그들이 앞으로 나섭니다. 입장 기회의 절반만 차지하면 레지스트리 점유율은 절반에 수렴하고 거기서 멈춥니다. 나머지 절반을 차지한 정직한 노드들이 여러분이 자기 몫을 늘리는 속도만큼 레지스트리를 키우기 때문입니다. 슬롯 점유율보다 높은 목표는 느린 것이 아니라 도달 불가능하며, 아래 표에서는 이를 불가로 표시합니다.

현재 대기 시간

 

입장하는 노드당

⅓에 필요한 노드

 

블록의 3분의 1을 생성하려면

⅓까지 걸리는 시간

 

쉬지 않고 대기열에 섰을 때

½에 필요한 노드

 

블록의 절반을 생성하려면

½까지 걸리는 시간

 

쉬지 않고 대기열에 섰을 때

잠긴 ZBC

 

최소, 노드당 100 ZBC 기준

05 / 성장

체인이 성장하면 대기 시간은 어떻게 변하는가

노드당 대기(주) 블록 절반 생성까지 걸리는 연수 설정한 제네시스 규모

체인 규모별

레지스트리노드당 대기⅓에 필요한 노드시간½에 필요한 노드시간

06 / 단 하나의 트레이드오프

제네시스 레지스트리가 핵심 수치인 이유

입장은 순차적이므로 레지스트리가 두 배가 되는 데 걸리는 시간은 그냥 registry size × wait per node입니다. 이는 설정값이 아니라 항등식이므로, 작은 레지스트리는 짧은 대기 시간과 느린 장악을 동시에 가질 수 없습니다. 이는 전체 설계에서 어떤 공식으로도 피해 갈 수 없는 단 하나의 트레이드오프입니다.

출시 시점 레지스트리대기 1주대기 2주2년 안에 두 배가 되려면 필요한 대기 시간

그러므로 핵심 레버는 곡선이 아니라 출시 시점입니다. 노드 십여 개로 시작하면 모든 정직한 운영자가 몇 달씩 기다려야 합니다. 노드 12개를 두 배로 늘리기 어렵게 만들려면 그만큼이 필요하기 때문입니다. 100개로 시작하면 2주 대기만으로도 거의 4년을 벌 수 있고, 아무도 배제되지 않습니다. 더 큰 제네시스 레지스트리는 어떤 지연 조정보다 가치가 있습니다.

07 / 네 가지 특성

이것이 성립하는 이유

입장은 순차적입니다. 레지스트리는 네트워크 전체에서 한 번에 노드 하나만 받아들입니다. 노드 100개를 원한다면 한 번 기다리는 것이 아니라 차례대로 100번을 기다려야 합니다. 이 사실 하나만으로도 자금을 갖춘 공격이 수년짜리 프로젝트가 됩니다.

필요한 점유율은 체인과 함께 커집니다. 노드 10개 중 1개는 영향력의 10분의 1입니다. 1,000개 중 1개는 아무것도 아닙니다. 레지스트리가 커질수록 노드당 대기 시간은 줄어들지만 최솟값 아래로는 내려가지 않으므로, 전체 시간은 어차피 늘어납니다.

대기열에는 가격이 매겨져 있습니다. 순서는 잠긴 잔액으로 정해지므로, 공격자는 단순히 기다리는 것이 아니라 들어오려는 모든 정직한 운영자보다 매번 더 많이 걸어야 합니다. 슬롯을 하나 놓칠 때마다 공격자는 대기 시간을 잃을 뿐 아니라 정직한 운영자에게 노드 하나를 넘겨주게 됩니다.

공격하는 동안 오히려 체인에 자금을 대게 됩니다. 모든 노드는 ZBC를 잠급니다. 10년에 걸친 공격은 무너뜨리려는 바로 그 자산에 크고, 유동성이 없으며, 완전히 공개된 포지션을 쌓는다는 뜻입니다. 슬래싱은 없습니다. 스스로 떠나든, 응답이 끊겨 퇴출되든 스테이크는 전액 돌아옵니다. 보증금으로 사는 것은 대기열의 자리이지, 인질이 아닙니다.

그리고 아무것도 누적되지 않습니다. 각 블록은 독립적인 추첨입니다. 1년 동안 완벽했던 노드도 오늘 아침 입장한 노드보다 다음 블록에 대한 권리가 더 크지 않으며, 직전 10번의 차례를 차지한 공격자라고 해서 11번째 차례를 차지할 가능성이 더 높지도 않습니다. 쌓아 올릴 지위가 없으므로, 여기서 영향력을 얻는 유일하고 지속적인 방법은 네트워크에서 더 큰 정직한 부분이 되는 것입니다.