Orchard 부하와 배치 검증
NU5 이후 Orchard 트랜잭션이 급증해 Zebra 동기화가 막혔고 zcashd는 배치 검증으로 시간을 줄였다
안건별 요약 6
Zebra 1.0.0-beta.12 릴리스
Zcash Foundation · Conrado
- 며칠 전 Zebra beta.12를 릴리스했다. DB 형식이 바뀌면 마이그레이션 대신 제네시스부터 재동기화하는데, 이제 옛 캐시 상태를 자동 삭제해 디스크 낭비를 막는다.
- tracing과 새 metrics 같은 선택 기능은 기본 컴파일에서 빠졌고, 필요하면 컴파일 시 활성화해야 한다. 설정 파일의 시간 표기도 's' 같은 사람이 읽기 쉬운 형식으로 바뀌었다.
- Orchard 트랜잭션이 많은 블록 때문에 검증이 오래 걸려 동기화가 안 되는 문제가 있었고, 타임아웃과 병렬 작업 수를 조정해 해결했다.
- 새 Halo 2 크레이트를 반영해 성능이 조금 나아졌고, 가장 큰 개선은 현재 작업 중인 Halo 2 배치 검증 지원이 될 것이라고 했다.
- GitHub Actions의 작업당 6시간 제한 때문에 5시간 55분 걸리던 동기화 잡을 여러 잡으로 나눴다. Flux가 쓰는 포트의 피어는 거부하고 Zcash 표준 포트 피어를 우선한다.
Zcashd 5.1.0 릴리스 예고 - 빌드 시스템과 RPC 개선
Electric Coin Company · Steven
- zcashd 5.1.0을 다음 주 릴리스할 목표이며, Rust-C++ 수작업 FFI를 대체하는 cxx.rs와 Rust 의존성 신뢰 검증용 cargo-vet을 빌드 시스템에 통합했다.
- wallet RPC가 reindex와 rescan이 끝날 때까지 블록하도록 바꿨다. 한 파트너가 rescan 도중 z_getbalance를 호출해 잔액이 전체 발행량의 절반인 약 700만 ZEC로 나온 사례가 있었다.
- rescan은 reindex가 끝난 뒤에만 시작하도록 바뀌었고, 실질적으로 reindex가 rescan을 포함하게 됐다. z_gettreestate 성능도 개선됐다.
- gettransaction과 decoderawtransaction에 Orchard 세부 정보(action 수 등)를 추가했다. 송신자, 수신자, 금액은 드러나지 않는다.
Orchard 증명 배치 검증
Electric Coin Company · Steven, Daira, Deirdre
- NU5 활성화 약 2주 반 뒤부터 블록당 최대 500개의 Orchard 트랜잭션이 들어왔고, 이런 블록의 검증에 약 2.5초가 걸렸다.
- 배치 검증 등 최적화로 검증 시간이 약 81% 줄어 같은 양을 약 0.5초에 처리한다. 같은 규모의 Sapling 트랜잭션은 현 구조에서 약 7초가 걸렸을 것이다.
- Sapling은 배치 검증을 아직 적용하지 않았지만 비교적 쉽게 가능하다고 Daira가 밝혔다. 구현은 str4d가 주도했고 Daira와 Sean도 참여했으며, 대량 Orchard 블록을 쓰는 벤치마크도 PR에 포함됐다.
- Deirdre가 Groth16 배치 검증이 Bellman에 업스트림됐는데 zcashd가 쓰는지 물었고, Daira는 아직 손대지 못해 쓰지 않는다고 답했다.
공개 토론 - CI와 테스트 스위트 지식 공유
Zcash Foundation · Dodger, Marshall, Gustavo Valverde
- Dodger가 CI와 자동화 테스트, 벤치마킹 방식에 대해 ECC, ZF와 Ziggurat 같은 그랜트 수혜자 사이의 지식 공유를 제안했고, Daira와 Steven도 찬성했다.
- Steven은 NU5 때 zcashd 변경에 Zebra 기본 테스트를, 반대로 Zebra 변경에 zcashd 테스트 일부를 돌릴 수 있는 공유 테스트 스위트가 유용했을 것이라고 말했다.
- Marshall은 메인 저장소와 독립된 shim 테스트 레이어 아이디어를 언급했고, 지난 12월 합류해 CI 인프라를 정비 중인 Gustavo와 연결해 발표 형식의 공유를 추진하기로 했다.
- Ziggurat의 멀티노드, 네트워크 수준 테스트도 함께 묶는 방안이 언급됐다.
공개 토론 - Orchard 검증 부하와 DoS 대응
Zcash Foundation · Teor, Daira, Str4d
- Teor는 수백 개 블록을 동시에 검증하다 블록당 500개 트랜잭션이 몰리면 RAM과 CPU가 크게 필요해 타임아웃이 난다고 설명했다. 동시 검증 블록 수를 줄이는 변경이 다음 릴리스에 들어갈 예정이다.
- Daira는 DoS 완화를 위해 풀노드가 검증에 쓰는 메모리 상한을 두고 임계치를 넘으면 병렬성을 줄이는 동적 대응을 제안했다. 최악 블록을 가정한 설계는 더 나쁜 구조가 발견되면 뚫린다는 점도 지적했다.
- Zebra는 현재 검증 결과를 캐시하지 않으며, 체인 tip 해시를 기준으로 캐시하는 방식이 가능하다고 했다. Daira는 캐시가 평균에는 도움이 되지만 최악의 DoS에는 효과가 없다고 했다.
- Dodger가 이 주제에 대해 비공개 회의를 열자고 제안했고 Str4d가 동의했다. Marshall은 공통 모니터링 규칙과 경보 세트를 만들자고 했다.
공개 토론 - 노드 메트릭과 네트워크 상태 페이지
Zcash Foundation · Teor, Marshall, Daira, Str4d
- Teor는 Tor Project의 공개 메트릭 사이트처럼 노드 수, 트랜잭션 수와 유형, 블록 가져오기 지연 등을 시계열로 보여주는 사이트를 제안했다.
- Marshall은 과거 그랜트 프로젝트 등이 비슷한 시도를 했다며 논의를 재개하자고 했고, Steven은 관측 메트릭과 테스트 상태를 결합한 공동 프로젝트가 될 수 있다고 했다.
- Daira는 Zcash 네트워크 연결성을 실시간으로 시각화하고 싶다고 했다. Str4d는 풀노드가 옵트인하는 프라이버시 보존 메트릭 수집이 예전보다 쉬워졌다고 했다.
- 노드 수는 공개 정보라 문제가 적지만 노드 간 연결 방식은 공격자에게 쉬운 정보를 주지 않도록 신중해야 한다는 데 의견이 모였다.
한국어 요약은 원문을 바탕으로 정리한 것으로, 정확한 내용은 원문을 확인하세요.