ZYCORD 문서
한국어
Zycord문서공개 testnet

공개 testnet

공개 testnet은 mainnet의 합의 규칙을 자기 고유의 체인 id 아래에서 그대로 따릅니다. 따라서 이 네트워크가 측정하는 것은 자기 자신의 동작이 아니라 mainnet의 동작입니다. 이곳의 코인은 아무런 가치가 없으며, 그러도록 의도되어 있습니다.

무엇인가#

zcd genesis --testnet
network        zycord-testnet
chain id       2
params hash    0xc4a670f04575ac3aa6e670888e1a42ec877779fda8e5519e2637f4df93815b57
launch commit  0x83aeb709b14b43a0296666f006d99378049064f3e30d8191e074e09d485e2ff7
genesis id     0x81094507a4a083d01e24af21bddbf4d7eb496472a69c4b5dfb0d7a27c6b03b55
state root     0x4f45e604e1fd7ccf066e20e5fd41105373a0ba0d28aea8fc825b8795e880384f
genesis time   1791158400
cells written  6
allocations    0

이 페이지를 신뢰하기 전에 그 명령을 먼저 실행하세요. 다른 제네시스 id를 출력하는 빌드는 다른 체인 위의 빌드이며, 이 체인에 연결되지 않습니다 — 블록이 평가되기도 전에 핸드셰이크 단계에서 거부됩니다. allocations 0은 프리마인에 관한 주장이며, 약속이 아니라 확인 가능한 값입니다.

제네시스 블록은 2026-10-05T00:00:00Z(unix 1791158400)로, mainnet의 제네시스 블록보다 이틀 앞섰습니다. testnet은 같은 바이너리, 같은 절차로 출시를 예행 연습했습니다. 이제 이곳은 Era 1이 가장 먼저 실행되는 곳입니다 — cEVM, 시퀀서, 인텐트와 fill, 시퀀서 디렉터리, 그리고 강제 경로가 첫날인 높이 2,880부터 여기서 활성화되어 있으며, mainnet은 높이 80,640에서 같은 관문에 이릅니다. 체인은 testnet.zycord.com에서 지켜볼 수 있습니다.

mainnet과 다른 것은 열 개의 값뿐이며, 그 밖에는 없습니다#

name, chain_id, genesis_target, max_target, genesis_time, randomx_key_interval, h1_bond, h1_vm, coinbase_maturity, 그리고 launch_commit. 활성화 높이는 일부러 여기서 더 낮게 잡았습니다. testnet은 첫날에 그 높이에 도달했으므로, mainnet이 같은 관문에 이르기 몇 주 전부터 머신이 실제로 시험됩니다. h1_bond는 h1_vm과 함께 움직이며 어느 네트워크에서도 아무것도 열지 않습니다. 본딩은 Era 1의 일부가 아닙니다. 출시 커밋먼트는 testnet 자신의 것이므로, testnet의 블록 1은 mainnet의 커밋먼트를 드러내지 않은 채 mainnet의 출시를 예행 연습합니다. 그 밖의 모든 것 — undo_depth, target_block_seconds, 보조금 분배, 그리고 gas 스케줄 전체 — 는 일부러 mainnet의 것을 씁니다. 특히 gas 스케줄이 그렇습니다. 여기서 측정한 기본 수수료 동작을 이 네트워크 자신의 것이 아니라 mainnet의 것으로 만들어 주는 것이 바로 gas 스케줄이기 때문입니다. 자기만의 gas 스케줄을 쓰는 testnet은 다른 체인을 측정합니다.

파라미터공개 testnetMainnet
namezycord-testnetzycord
chain_id21
genesis_time1791158400 — 2026-10-05T00:00:00Z1791331200 — 2026-10-07T00:00:00Z
randomx_key_interval512 블록2048 블록
h1_bond, h1_vm2,880 — 약 1일째80,640 — 약 28일째
coinbase_maturity100 블록240 블록
target_block_seconds30 — 동일
epoch_length2880 블록, 약 하루 — 동일
ttl_max240 블록, 약 두 시간 — 동일
emission_ramp_blocks86,400, 30일 보상 경사 구간 — 동일
founder_share, treasury_share_bps채굴자 94%, 창립자 3%(3,153,600까지), 트레저리 3% — 동일
초기화된 네트워크에 참여하기 전에 데이터 디렉터리를 삭제하세요

testnet은 제네시스 블록부터 초기화될 수 있습니다. 초기화되면 그 코인과 이력과 피어 목록이 사라지고, 네트워크는 새 체인 id를 받으며, 옛 체인을 담고 있는 데이터 디렉터리는 조용히 섞이는 대신 시작 단계에서 거부됩니다. 두 네트워크는 핸드셰이크에서도 서로 연결을 끊으므로, 아무것도 소리 없이 넘어오지 않습니다.

참여하기#

make build-randomx        # the testnet is randomx-v2; see below
                          #   -> bin/zcd-randomx, bin/zycordd-randomx

./bin/zycordd-randomx --testnet --dir ./testnet

make build가 아니라 make build-randomx입니다. testnet의 pow_engine은 randomx-v2이며, mainnet과 동일한 작업 함수입니다. 이 태그 없이 빌드된 바이너리는 개발용 엔진으로 되돌아가는 대신 이 네트워크에 대해 시작을 거부합니다. 그 개발용 엔진은 지금까지 본 모든 헤더에 대해 BLAKE3 한 번의 통과를 작업증명으로 받아들였을 것입니다.

태그가 붙은 바이너리는 이름에 그 태그를 담고 있어서, 둘 다 빌드하면 둘 다 디스크에 남고 파일 이름이 어느 엔진을 담고 있는지 알려 줍니다. 이 문서의 다른 곳에서는 간결함을 위해 명령을 zcd와 zycordd로 적었지만, 이 네트워크에서는 -randomx가 붙은 쌍을 뜻합니다.

부트스트랩#

바이너리에는 testnet의 시드가 들어 있습니다. 포트 19421의 seed1.zycord.com부터 seed4.zycord.com까지입니다. mainnet의 시드는 같은 호스트의 포트 9421이며, 두 네트워크는 핸드셰이크에서 서로를 거부하므로 아무것도 섞이지 않습니다. testnet.zycord.com을 시드로 지정하는 예전 바이너리는 우회하려 하지 말고 교체해야 합니다. 대신, 또는 추가로 다른 피어를 지정하려면 다음과 같이 합니다.

zycordd --testnet --dir ./testnet --peers-file peers.txt
zycordd --testnet --dir ./testnet --peers host:19421,otherhost:19421
zycordd --testnet --dir ./testnet --no-seeds --peers-file peers.txt

가능하다면 외부에서 접속 가능하게 하세요#

Zycord는 NAT 통과를 하지 않습니다. 도달 가능한 포트에서 --listen을 켠 노드는 다른 사람이 부트스트랩할 수 있는 출발점이 되며, 그런 노드의 비율은 NAT 통과를 하지 않겠다는 결정 전체가 딛고 선 반증 가능한 조건입니다 — 이 값은 가정되지 않고 측정됩니다.

zycordd --testnet --dir ./testnet \
  --listen 0.0.0.0:9421 --advertise <public-address>:9421

포트 포워딩을 할 수 없다면 --listen을 끄고 주변부로 남으세요. 그것도 참여하는 완전히 좋은 방법입니다. 어느 쪽인지는 curl -s localhost:9420/network로 확인하세요 — 몇 분이 지난 뒤에도 listening: true인데 inbound: 0이라면 포트가 실제로는 도달 불가능하다는 뜻입니다.

코인 얻기#

두 가지 경로가 있으며, 이 네트워크가 중심에 두고 설계된 것은 두 번째 경로입니다.

faucet#

testnet 익스플로러가 faucet 하나를 운영합니다. faucet은 여러분이 알려 주는 어떤 주소로든 소액을 지급하므로, 먼저 RandomX에 2 GiB를 할당하지 않고도 전송과 환불과 스윕을 예행 연습해 볼 수 있습니다. faucet이 무엇이고 왜 그렇게 만들어졌는지는 별도의 페이지로 있습니다.

faucet은 이 네트워크에만 있고 다른 어디에도 없습니다. faucet은 익스플로러의 기능이며 기본적으로 꺼져 있고, 켜려면 네트워크 이름을 지정해야 합니다 — 그 이름은 해당 익스플로러가 실제로 색인하고 있는 체인과 대조해 확인되며, mainnet은 즉시 거부됩니다. mainnet에는 faucet도 프리마인도 없으며, 이는 누군가 기억해야 하는 정책이 아니라 바이너리 안의 검사입니다.

faucet을 위해 새로 발행되는 것은 없습니다. faucet은 평범한 키를 보유하고, 명령줄이 쓰는 것과 동일한 wallet/session을 통해 평범한 전송에 서명하며, 블록당 한 번의 요청만 처리합니다. 인증서(certificate)는 자신이 읽은 상태를 함께 담고 있어서, 같은 셀(cell)에 대한 하나의 읽기를 근거로 만들어진 두 인증서는 경합하기 때문입니다. faucet의 잔액은 채굴에서 나오므로, 비어 있는 faucet은 누군가 다시 채워 줄 때까지 비어 있는 채로 있습니다.

직접 채굴하기#

줄도 없고 운영자도 없는 경로이며, mainnet이 받는 것과 동일한 배분입니다.

zcd wallet new --out miner.json
zycordd --testnet --dir ./testnet \
  --mine --payout $(zcd wallet address --key miner.json | awk '/^persistent/ {print $3}')

지급 주소는 반드시 영구 주소(0x02)여야 합니다 — zcd wallet address가 출력하는 persistent 줄의 주소이며, 이 명령은 다음 일회성 주소도 함께 출력합니다 — 그리고 zycordd는 경고에 그치지 않고 그 밖의 것을 거부합니다. 이유는 여기.

coinbase_maturity가 100이므로, 첫 보상을 받은 뒤 대략 백 블록 동안은 채굴자만 거래할 수 있습니다. 그 진입 구간은 mainnet의 것이고 이 네트워크가 예행 연습하는 것의 일부입니다 — 그리고 그것이 바로 faucet이 여기에는 존재하고 저기에는 존재할 수 없는 이유입니다. faucet은 지갑을 시험해 보려는 사람에게 그 구간을 줄여 주며, 그렇게 줄이는 데 아무 대가가 없는 유일한 네트워크가 바로 여기입니다.

채굴은 RandomX 데이터셋을 할당합니다 — 약 2 GiB이며, 보유한 키 에포크당 약 256 MiB가 더해집니다. 여유롭게 검증할 수 있는 컴퓨터라고 해서 반드시 채굴할 수 있는 것은 아닙니다. 필요한 예산은 채굴에 있습니다.

testnet 코인은 아무런 가치가 없습니다#

의도된 것이며, 영구적입니다. 이 네트워크는 제네시스 블록부터 초기화될 수 있고, 그것이 testnet의 존재 이유입니다. 그 코인을 사거나 팔겠다고 제안하는 사람은 이야기조차 지어낼 필요가 없는 사기를 치고 있는 것입니다.

이 네트워크가 측정하는 것#

이것은 데모가 아닙니다. 이 네트워크가 숫자를 만들어 내기 위해 존재하는 네 가지는 다음과 같습니다.

  • 키 교체로 인한 멈춤. 512 블록에서는 RandomX 재키잉이 mainnet의 열일곱 시간이 아니라 대략 네 시간마다 일어나므로, 데이터셋 재구축을 이론으로 다루는 대신 측정할 수 있을 만큼 자주 예행 연습하게 됩니다.
  • mainnet gas 스케줄 아래에서의 기본 수수료 동작. 여기서 그 스케줄을 조정하지 않는 이유가 바로 이것입니다.
  • 외부에서 접속 가능한 노드의 비율. NAT 통과를 하지 않겠다는 결정을 다시 열게 만들 첫 번째 조건입니다.
  • 실제 부하 아래의 Era 1: 실제로 돌아가는 네트워크 위의 시퀀서, fill, 강제 경로를, mainnet이 그 관문에 이르기 몇 주 전에.

뭔가 잘못되어 보일 때#

노드 운영 문서에 동기화되지 않는 노드의 진단 경로와, 노드가 기동을 거부하는 데이터 디렉터리를 위한 복구 명령이 있습니다. 발견한 내용과 재현 절차는 이슈 트래커로 보내 주세요. 이 프로젝트는 좋게 봐 주는 것보다 보고를 받는 쪽을 원합니다.