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

공개 testnet

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

무엇인가#

zcd genesis --testnet
network        zycord-testnet
chain id       2
params hash    0x0b732489dee8fd2bcb5fa37b513b2ea10edc616bd664ba5b55c69952f63e2c1b
genesis id     0xc1b21b079b3dfe781c40a187326bb8dbbcf0fb97164d6fdf7a7d6a536c74705b
state root     0x6974f84b8088039ab721fd6be6ac72b73845e5dc93f0b5625b4e9c564ccf73e3
genesis time   1789430400
cells written  6
allocations    0

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

제네시스 블록은 2026-09-15T00:00:00Z(유닉스 시간 1789430400)이었습니다. 체인은 testnet.zycord.com에서 볼 수 있습니다.

mainnet과 여덟 개의 값에서 다르고, 다른 어디에서도 다르지 않습니다#

name, chain_id, genesis_target, max_target, genesis_time, randomx_key_interval, h1_bond, h1_vm입니다. 뒤의 두 개는 활성화 높이이며, 여기서는 의도적으로 더 낮습니다. testnet은 첫째 날과 셋째 날에 그 높이에 도달하므로, mainnet이 같은 관문에 이르기 몇 주 전에 이미 머신이 충분히 돌아간 상태가 됩니다. 그 밖의 모든 것 — undo_depth, target_block_seconds, coinbase_maturity, 그리고 gas 스케줄 전체 — 는 의도적으로 mainnet의 값입니다. 특히 gas 스케줄이 그러한데, 여기서 측정되는 기본 수수료 동작을 이 네트워크 자신의 것이 아니라 mainnet의 것으로 만들어 주는 것이 바로 gas 스케줄이기 때문입니다. 자기만의 gas 스케줄을 쓰는 testnet은 다른 체인을 측정합니다.

파라미터공개 testnetMainnet
namezycord-testnetzycord
chain_id21
genesis_time1789430400 — 2026-09-15T00:00:00Z1790812800 — 2026-10-01T00:00:00Z
randomx_key_interval512 블록2048 블록
h1_bond2,880 — 약 1일째40,320 — 약 14일째
h1_vm8,640 — 약 3일째80,640 — 약 28일째
target_block_seconds30 — 동일
coinbase_maturity100 — 동일
epoch_length2880 블록, 약 하루 — 동일
ttl_max240 블록, 약 두 시간 — 동일
treasury_share_bps300, 즉 3% — 동일
초기화된 네트워크에 참여하기 전에 데이터 디렉터리를 삭제하세요

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

참여하기#

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

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

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

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

부트스트랩#

바이너리에는 이 네트워크용 시드 주소 하나가 들어 있고, 다른 어떤 네트워크용도 들어 있지 않습니다. 시작하기 전에 피어를 먼저 찾을 필요가 없습니다 — 위 명령은 내장된 시드에서 네트워크에 합류합니다. 대신, 또는 추가로 직접 지정하려면 다음과 같이 하세요.

zycordd --testnet --dir ./testnet --peers-file peers.txt
zycordd --testnet --dir ./testnet --peers host:9421,host2:9421
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)

원한다면 네트워크가 열리기 전에 시작해도 됩니다 — 그것이 의도된 사용 방식입니다. 다음 블록이 담을 수 있는 가장 이른 타임스탬프에 시계가 아직 도달하지 않은 노드는 블록 만들기를 거부하고, 얼마나 기다려야 하는지 알려 주며, 때가 되면 스스로 채굴을 시작합니다. 예약할 것도, 다시 시작할 것도 없으며, 기다리는 내내 피어와 연결되어 동기화합니다.

지급 주소는 반드시 영구 주소(0x02)여야 합니다 — zcd wallet address는 기본으로 그런 주소를 출력하고, zycordd는 경고에 그치지 않고 그 밖의 것을 거부합니다. 이유는 여기.

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

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

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

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

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

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

  • 키 교체로 인한 멈춤. 512 블록에서는 RandomX 재키잉이 mainnet의 열일곱 시간이 아니라 대략 네 시간마다 일어나므로, 데이터셋 재구축을 이론으로 다루는 대신 측정할 수 있을 만큼 자주 예행 연습하게 됩니다.
  • mainnet gas 스케줄 아래에서의 기본 수수료 동작. 여기서 그 스케줄을 조정하지 않는 이유가 바로 이것입니다.
  • 외부에서 접속 가능한 노드의 비율. NAT 통과를 하지 않겠다는 결정을 다시 열게 만들 첫 번째 조건입니다.
  • 제네시스 블록 이전의 대기, 그리고 정직하게 일찍 시작하는 것이 정말로 아무것도 다시 시작하지 않은 채 제때 시작하는 것이 되는지 여부.

뭔가 잘못되어 보일 때#

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