testnet 정체 원인 규명
testnet 정체의 원인이 설명됐고 zcashd 6.0.0 릴리스 준비가 마무리됐다
안건별 요약 11
NU6 테스트넷 복구와 zcashd 6.0.0 릴리스 준비
ECC, Zcash Foundation · Daira Emma, Kris, Dodger
- 테스트넷은 블록 타임스탬프가 크게 뒤처진 상태에서 분당 약 1분 속도로 따라잡는 중이며 연결 방법과 우회법은 따로 공유한다.
- zcashd 6.0.0 릴리스 브랜치는 준비됐고, 무료 액션 한도를 0으로 낮추는 변경을 테스트넷에서 확인한 뒤 태그를 달기로 했다.
- 이 변경은 메인넷에서 트랜잭션 전파를 돕고 남은 스팸을 줄일 것으로 기대한다.
- 6.0.0은 1월에 만료되는 NU6 활성화 릴리스이다.
- Kris는 ZF에 zcashd 없이 Zebra만 쓰는 공개 테스트넷을 만들어 달라고 요청했고, Dodger는 이미 논의 중이라 수락했다.
zcashd·zebrad 프로토콜 차이와 블록 템플릿 버그
ECC · Kris, Daira Emma, Dodger
- ECC는 zcashd와 zebrad의 초기 블록 다운로드 프로토콜 차이와 zcashd 블록 템플릿의 타임스탬프 클램핑 입력 버그를 발견했다.
- 클램핑 버그는 작은 패치로 릴리스 브랜치에 넣는다.
- Daira Emma는 프로토콜 차이가 메인넷에도 영향을 주며 Zebra 노드가 많을 때 zcashd 동기화가 느려질 수 있다고 정정했다.
- zcashd 쪽은 Bitcoin 수정 일부 백포트, Zebra 쪽은 기존 우회 코드 제거로 해결한다.
- Daira Emma는 P2P 프로토콜이 문서화가 가장 부족한 영역이라 상호운용 문제가 나오기 쉽다고 했다.
Zebra 2.0.0 일정과 librustzcash 의존성
ECC, Zcash Foundation · Arya, Alfredo, Kris, Daira Emma
- Zebra 1.9.0은 테스트넷만 NU6를 지원해 메인넷용 최소 프로토콜 버전과 활성화 높이를 넣은 Zebra 2.0.0이 필요하며, 후보 뒤에 최종본을 낸다.
- Alfredo는 다음 주에 릴리스 작업을 시작해 늦어도 주말까지 마치길 희망했다.
- 무료 액션 한도 0 설정은 Zebra에 이미 반영됐고 Daira Emma는 이를 ZIP 317에 문서화해야 한다는 점에 동의했다.
- zcash_protocol 0.4, zcash_address 0.6, zcash_primitives·zcash_proofs 0.19가 메인넷 활성화 높이를 포함한다.
- 새 네트워크 업그레이드 지원은 의미상 breaking change라 스택 전체를 올려야 한다.
- ECC는 상수만 분리한 zcash constants crate를 논의했고, Zebra의 트랜잭션 타입은 librustzcash 타입의 래퍼로 바꾸는 방향이다.
ECC 업데이트: Sean Bowe 이직, Zashi, 노트 커밋먼트 트리 버그
ECC · Kris, Daira Emma
- Zashi는 다음 주쯤 주소록, ZIP 321 통합, UI 리디자인을 포함한 새 기능을 출시할 예정이다.
- 오래된 incremental merkle tree crate의 API 결함으로 생긴 노트 커밋먼트 트리 손상 버그를 마침내 수정했다.
- shardtree crate 새 릴리스에는 서드파티 trait 구현이 따라야 하는 의미 변경이 있어 릴리스 노트를 확인해야 한다.
- 프로토콜 명세와 관련 ZIP이 NU6에 맞게 갱신됐고, ZCG 몫 주소도 포함됐다.
- Sean Bowe는 이제 ECC와 별개로 자금을 받아 Zcash 확장성 연구에 집중하게 됐다.
Zebra 업데이트
Zcash Foundation · Arya, Kris, Daira Emma
- zcashd RPC 테스트 프레임워크 일부를 Zebra에 적용했고, 컨텍스트 블록 검증에서 부모 블록을 못 찾을 때 panic 대신 오류를 반환하게 했다.
- 고아 멤풀 트랜잭션 검증, sendrawtransaction이 멤풀 삽입 또는 거절 후에 결과를 돌려주도록 하는 수정, 쿠키 기반 RPC 인증, 커스텀 테스트넷의 반감기 주기 설정 기능 등이 병합 또는 PR 상태이다.
- 사용된 출력과 공개된 nullifier로 지출 트랜잭션 ID를 조회하는 인덱스와 read state 요청을 PR로 올렸다.
- DB 포맷 업그레이드를 한 번에 하려고 같은 PR에 묶었다.
- 내부 miner 복원은 librustzcash의 equihash C 코드 PR 리뷰가 남아 있고 CI가 모든 crate 릴리스 가능 여부를 검사해 main 병합이 막혀 있다.
- 복원 브랜치에서는 로컬 채굴이 가능하다.
zcashd 폐기 진행과 아웃리치
ECC, Zcash Foundation, Zingo Labs · Dodger, Kris, Pacu
- Zingo Labs의 Zaino 그랜트가 승인되어 곧 작업을 시작한다.
- Kris와 Str4d는 경량 클라이언트 코드를 체인 데이터 원천으로 하는 최소 지갑 서비스 골격 저장소를 만들고 있다.
- Pacu, Pili, decentralistdan은 zcashd 사용처를 찾는 생태계 아웃리치를 시작해 폐기 때 사용 사례가 빠지지 않게 요구사항을 수집한다.
zcashd 지갑 RPC 호환 범위 논쟁
ECC, Zcash Foundation · Kris, Daira Emma, Alfredo, Dodger, Pacu, Arya
- Kris는 기존 zcashd 지갑 RPC를 호환 제공하지 말고 의미가 다른 API는 breaking change로 바꾸자는 약한 입장을 냈고 요구사항은 비즈니스 요구로 수집하자고 했다.
- Daira Emma와 Alfredo는 기존 API를 새 의미론의 계정 모델로 매핑해 문서화하는 방식을 제안했다.
- Kris는 NU7 구현·감사·테스트넷 1개월 이후의 16주 채택 기간에 필요하면 호환 계층을 더하자고 했다.
- Kris는 완전한 프로토콜 지원을 기본으로 하고 투명 전용은 보조로 두자고 했으나, Dodger는 거래소 95% 이상에서 상장 폐지될 수 있다며 범위 확대라고 반박했다.
- Dodger는 Coinbase가 안내한 Mesh(옛 Rosetta) API 같은 표준을 거래소의 선호 인터페이스로 물어보자고 했다.
- Pacu는 Zaino에 RPC 변환 모듈을 두는 방식을, Daira Emma는 FROST와 하드웨어 지갑 등 기능 확충으로 shielded 이전을 유도하자고 했다.
Trailing Finality 업데이트
Shielded Labs · Zooko
- Shielded Labs는 현재 인터뷰와 채용을 진행 중이며 프로토콜과 Zcash 미션에 관심 있는 사람을 소개해 달라고 요청했다.
- 다음 Arborist 콜에서 첫 배포의 요구사항에 대한 마지막 의견 수렴을 진행하며, 그 전까지는 공유 Google 문서나 개별 연락으로 의견을 받는다.
공개 토론: NU6 테스트넷 복구 현황
Pacu, Daira Emma, Kris, Arya, Alfredo
- 테스트넷은 몇 시간 안에 체인 팁을 따라잡으면 정상 동작할 것으로 보며, 관련 안내는 R&D Discord의 #nodedev에 올리기로 했다.
- Arya는 Zebra가 잘못된 포크를 따라갔다면 copy-state 명령으로 올바른 포크의 상태만 복사할 수 있으며 방법이 Zebra 1.9.0 릴리스 노트에 있다고 안내했다.
- Alfredo가 원인과 해결을 담은 문서를 제안했고, Daira Emma는 회고를 열어 기록하기로 했다.
테스트넷 중단 원인: 헤더 동기화와 max tip age
ECC · Daira Emma
- zcashd는 2015년 Bitcoin Core에서 유입된 중복 getheaders 요청 버그로 동기화 대역폭을 몇 배 낭비했다.
- Zebra는 이를 보완하려 헤더를 최대치보다 적게(158개) 보냈는데, Zebra가 권위 체인일 때는 zcashd가 체인 끝에 도달했다고 오판해 동기화가 크게 느려졌다.
- 블록이 24시간 넘게 없으면 노드가 멈추는 max tip age 규칙이 이번에는 7일간 채굴이 없어 문제를 키웠다.
- Daira Emma는 이 상수를 10일로 늘려 우회했다.
테스트넷 복구 과정과 교훈
ECC, Zcash Foundation · Kris, Dodger, Daira Emma, Arya
- zcashd의 블록 타임스탬프 클램핑 버그를 임시 수정했고, 가장 좋은 체인을 수동으로 찾아 add-node로 연결된 네트워크를 만들었다.
- Kris는 max tip age 설정 없이도 zcashd가 동기화되어 테스트넷이 복구됐음을 확인했다.
- Dodger는 faucet용 단일 채굴 노드가 떨어져 채굴이 끊긴 것이 계기라고 짚었고, Daira Emma는 특정 노드의 잘못이 아니라 헤더 동기화 설계 문제라고 정리했다.
- Daira Emma는 다른 소프트웨어의 버그를 보완하려는 변경을 피하라는 교훈을 짚었다.
- Kris는 당시 ECC와 ZF의 협업이 지금만큼 긴밀하지 않았다고 덧붙였다.
한국어 요약은 원문을 바탕으로 정리한 것으로, 정확한 내용은 원문을 확인하세요.