By: Zooko Wilcox, Jason McGee, Taylor Hornby (Shielded Labs)
요약
Shielded Labs는 Zcash Foundation, Tachyon Group, Valar Group, Zcash Open Development Lab (ZODL)과 협력하여 Zcash 유통량의 건전성을 사용자가 직접 검증할 수 있는 기능을 복원하는 "Ironwood"라는 제안을 진행하고 있습니다.
지난주, Zcash의 Orchard 풀에서 심각한 위조 취약점이 발견되었습니다. 이 취약점은 ZODL 및 기타 생태계 참여자들이 조정한 긴급 네트워크 업그레이드를 통해 6월 2일에 해결되었습니다.
취약점이 악용되었을 가능성은 낮다고 생각하지만(자세한 이유는 공개 문서 참조), Orchard의 프라이버시 속성으로 인해 사용자가 이를 직접 확인할 수는 없습니다.
Ironwood를 통해 사용자는 Zcash의 유통량이 정확한지 검증할 수 있습니다. Ironwood가 활성화되면 사용자는 활성 풀의 잔액을 합산하는 것만으로 즉시 이 기능을 사용할 수 있습니다. Zcash의 총 유통량이 정확한지 확인하기 위해 다른 사람의 인센티브나 행동을 추론하거나 Orchard 풀에서 마이그레이션을 기다릴 필요가 없습니다.
Ironwood
Ironwood의 목표는 각 Zcash 사용자가 Zcash 공급량의 무결성을 검증할 수 있는 능력을 복원하는 것입니다. 이러한 검증 가능성은 위조 취약점의 존재로 인해 손상되었습니다. 활성화 즉시, 사용자는 노드를 실행하기만 하면 Zcash의 유통량이 건전하다는 것을 독립적으로 검증할 수 있습니다.
이를 위해 Ironwood는 다음을 수행합니다:
- 최근 위조 취약점이 수정된 Orchard 회로를 사용하여 새로운 보호 풀을 생성합니다.
- 기존 Orchard 풀에 새로운 출력을 생성하는 모든 트랜잭션을 유효하지 않은 것으로 거부합니다.
- AI 기반 보안 감사 및 정형 검증과 같은 기술을 사용하여 코드베이스에 대한 확신을 높이고, 추가적인 위조 버그가 없음을 보장하는 것을 목표로 합니다.
Ironwood가 작동하는 이유
Ironwood는 Orchard 풀 내에서 발생할 수 있는 작업을 변경합니다.
활성화되면 Orchard 풀에 새로운 출력을 생성하는 모든 트랜잭션은 거부됩니다. 즉, ZEC는 더 이상 해당 풀 내에서 유통될 수 없습니다. 그 시점부터 Orchard 풀의 자금은 턴스타일을 통해 풀을 빠져나가는 방식으로만 이동할 수 있습니다.
턴스타일은 풀 간 전송을 위한 Zcash의 온체인 회계 메커니즘입니다. 각 풀에 들어오고 나간 ZEC의 양을 추적하며, 정당하게 유입된 양보다 더 많은 ZEC를 이동시키려는 모든 트랜잭션을 거부합니다.
이러한 규칙이 함께 적용되므로 사용자는 모든 Orchard 자금이 마이그레이션될 때까지 기다릴 필요가 없습니다. Ironwood가 활성화되는 즉시, 사용자는 합의 규칙을 통해 정확한 양보다 더 많은 ZEC가 유통될 수 없음을 확인할 수 있습니다. 이는 Zcash 유통량의 건전성에 대한 즉각적이고 신뢰할 필요 없는 보장을 제공합니다. 초과 ZEC는 Orchard 풀 사용자 간에 비밀리에 유통되거나 다른 풀로 빠져나갈 수 없습니다.
취약점 악용 여부에 대한 증거 생성
Ironwood는 Orchard 취약점이 악용되었는지 여부에 대한 증거를 제공할 수도 있지만, 목표 달성은 그러한 증거의 존재 여부에 달려 있지 않습니다.
사용자가 기존 Orchard 풀에서 새 풀로 자금을 마이그레이션함에 따라, 가상의 위조자는 선택에 직면합니다: 위조 자금을 이동시키려 시도하여 존재를 드러낼 위험을 감수하거나, 그대로 두고 미래에 이동할 수 없게 될 위험을 감수하는 것입니다.
이로 인해 두 가지 가능한 결과가 발생합니다:
결과 A: 기존 Orchard 풀을 떠나려는 초과 ZEC가 없습니다. 이는 취약점이 악용되지 않았음을 강력히 시사합니다. 위조자는 합법적인 사용자가 마이그레이션을 완료하기 전에 위조 자금을 이동시킬 강력한 유인이 있기 때문입니다.
결과 B: 초과 ZEC가 기존 Orchard 풀을 떠나려고 시도합니다. 이 경우 초과 자금은 풀을 떠날 수 없으며 사실상 소멸됩니다. 불행히도 이는 모든 풀에 걸쳐 현재 유통량을 보존하는 데 필요합니다. 또한 이는 위조가 발생했음을 공개적으로 검증 가능한 증거를 제공합니다. 취약점이 악용되지 않았다고 생각하므로, 이 결과는 가능성이 낮다고 생각합니다.
지갑
기존 Orchard 풀을 지원하는 모든 지갑은 새 풀에 대한 지원을 추가할 것을 권장합니다.
지갑은 Ironwood 활성화까지 기존 Orchard 풀을 정상적으로 계속 지원한 후, 사용자 자금을 기존 Orchard 풀에서 새 풀로 마이그레이션해야 합니다. 마이그레이션에는 프라이버시 영향(즉, 전송된 ZEC의 양과 전송 시간이 노출됨)이 있지만, 사용자 프라이버시에 미치는 영향은 미미하며 지갑 동작을 통해 더욱 완화될 수 있다고 생각합니다.
기존 Orchard 수신자(주소)는 유효하며 교체할 필요가 없습니다. Ironwood 활성화 전에 생성된 Orchard 수신자로 전송된 ZEC는 자동으로 새 풀의 ZEC로 수신됩니다.
일정
대부분의 네트워크 업그레이드와 마찬가지로 Ironwood는 개발, 테스트, 검토 및 생태계 전반의 조정이 필요합니다. 경험상 이러한 작업은 예상보다 오래 걸리는 경우가 많으므로, 일정에 대해 논의할 때는 과장해서 약속하고 실현하지 못하는 것보다 보수적으로 접근하는 것이 더 낫다고 생각합니다.
또 다른 불확실성의 원인은 zcashd의 지속적인 폐기입니다. Shielded Labs는 이 작업에 직접 관여하지 않았지만, 거래소, 마이닝 풀, 지갑 및 기타 인프라 제공업체의 Zebra로의 마이그레이션이 이 네트워크 업그레이드의 일정에 영향을 미칠 수 있습니다.
구현 계획이 구체화되고 논의가 계속됨에 따라 일정에 대한 더 나은 이해를 얻을 수 있을 것으로 기대합니다.
결론
Orchard 취약점의 사전 악용 가능성은 낮다고 생각한다는 점을 강조하고 싶습니다. 그러나 사용자는 Zcash 공급량의 무결성과 관련하여 당사의 평가나 다른 누군가의 평가를 신뢰할 필요가 없어야 합니다.
Ironwood는 누구나 스스로 검증할 수 있는 Zcash 유통량의 보장을 복원하도록 설계되었습니다. 취약점이 악용되었든 아니든, 목표는 동일합니다: Zcash 공급량의 무결성을 검증 가능하게 만드는 것입니다.
Ironwood가 최선의 방향이라고 생각하며, Zcash 커뮤니티와 이 제안에 대해 논의하기를 기대합니다.
감사의 말
검토 및 피드백을 제공해 주신 Sean Bowe, Dev Ojha, David Campbell, Alex Bornstein, Nate Wilcox, Kris Nuttycombe, Vitalik Buterin, Balaji Srinivasan, Taylor Hornby, Josh Swihart, Tatyana님께 감사드립니다. 특히 Ironwood 업그레이드가 기존 Orchard 풀에서 출력을 생성하는 트랜잭션을 비활성화할 것을 제안해 주신 Kris Nuttycombe님께 특별히 감사드립니다. 이는 Ironwood가 목표를 달성하는 데 중요한 요소로 밝혀졌습니다.





