
RISC Zero Steel이 어떻게 이더리움의 ZK 채택을 가속화할 수 있을까?
번역: Alex Liu, Foresight News
이더리움은 성공적으로 번창하는 탈중앙화 애플리케이션 생태계를 가져왔지만, 확장성 문제도 점점 더 심각해지고 있다. 개발자들은 어려운 선택에 직면하게 되는데, 바로 애플리케이션의 기능과 데이터 풍부함을 제한하거나 높은 가스 비용과 가스 사용량 한계를 감수해야 하는 것이다. 만약 개발자들이 이러한 제약을 우회할 수 있는 방법을 가질 수 있다면 어떨까?
Steel, RISC Zero와 이더리움을 연결하다
RISC Zero는 주요 zkVM 개발업체 중 하나다. 주변에서 자주 듣는 zkEVM은 들어봤지만, 한 글자 차이인 zkVM이 무엇인지 잘 모르겠다면 이 글을 참고하자. RISC Zero가 최근 출시한 Steel은 Alloy 기반의 뷰 호출 증명 라이브러리로, 개발자가 이더리움 L1 또는 다른 EVM 호환 체인과 상호작용하는 방식에 큰 변화를 가져온다. 제로지식 증명과 RISC Zero zkVM을 활용하여, Steel은 개발자들이 확장 가능하고 안전하며 경제 효율적인 방식으로 뷰 호출을 수행하고 이더리움 상태를 증명 가능한 방식으로 읽고 계산할 수 있도록 한다.
솔리디티의 편의성, ZK의 힘
Steel은 이더리움 애플리케이션 개발과 제로지식(ZK) 기술 사이의 격차를 메워주며, 개발자들이 스마트 계약 내에서 ZK의 강력한 기능을 쉽게 활용할 수 있게 한다. RISC Zero zkVM의 기능과 결합된 Steel은 개발자들이 이더리움 L1이나 모든 EVM 호환 체인 위에서 더욱 안전하고 확장 가능하며 효율적인 애플리케이션을 구축할 수 있도록 지원한다.
Steel을 통해 개발자는 다음을 할 수 있다:
-
zkVM 내에서 직접 솔리디티 스마트 계약을 실행하여 더 복잡한 체인상 로직과 호환 가능
-
zkVM 내에서 과거의 이더리움 상태에 접근
-
컨티뉴에이션(continuations)을 사용해 계산 수행 — 블록 및 트랜잭션 데이터 크기 제한 없음
-
체인 외부의 계산이 체인상에서 실행된 것처럼 안전하고 신뢰할 수 있도록 보장
-
여러 파트너사가 엄격히 테스트하고 사용한 최초의 실무 적용 가능한 zkVM 활용
-
이더리움 상태에 대한 비공개적(private) 계산 수행
-
오픈소스 코드 라이브러리를 통해 유연성을 유지하고 특정 공급업체에 종속되지 않도록 함
원활한 통합과 비용 절감
Steel을 사용하면 뷰 호출을 원하는 솔리디티 메서드를 지정하는 것만큼 간단하게 수행할 수 있다. ERC-20 토큰 잔액 조회(예시)부터 이더리움 상태의 다양한 측면에 접근하는 경우까지, Steel은 RISC Zero zkVM과의 원활한 통합을 통해 프로세스를 단순화하면서도 보안성과 효율성을 유지한다. 테스트 결과, Steel은 단일 뷰 호출 내에서 10만 건 이상의 SLOAD 연산을 처리할 수 있으며, 이는 메인넷에서 수천 달러의 가스 비용을 절약할 수 있음을 의미한다. Bonsai를 사용하면 약 15분 안에 이를 증명할 수 있는데, 이는 최소 2억 1천만 가스가 필요하며 블록 한계를 7배 초과한다.
예시: ERC20 balanceOf
아래 코드 조각은 Steel을 사용해 이더리움에 배포된 ERC-20 계약의 특정 주소 잔액을 증명하는 과정을 보여준다. 이 예시는 개발자가 어떻게 Steel을 활용해 zkVM 내에서 이더리움 체인상 데이터와 상호작용할 수 있는지를 설명한다. 전체 코드는 여기에서 확인할 수 있다.
뷰 함수 시그니처 정의
먼저 sol! 매크로를 사용해 ERC-20의 balanceOf 함수 시그니처를 정의한다. 이를 통해 솔리디티 문법이 해석되어 해당 Rust 구조체가 생성되며, 이 구조체는 SolCall trait를 구현하여 account 주소를 입력받고 관련된 ERC-20 토큰 잔액을 반환하는 balanceOf 메서드를 호출하는 데 사용된다.

호출 준비
다음으로, 대상 계정 주소로 balanceOfCall 구조체를 인스턴스화하여 호출을 설정한다. 동시에 조회하려는 계약 주소와 호출자 주소를 위한 상수를 정의한다.

Main 함수에서 호출 실행
main 함수는 zkVM 내에서 실행되어 제로지식 증명을 생성한다. 먼저 입력 환경을 읽은 후 ViewCallEnv 객체를 구성하여 현재 상태가 예상되는 상태 루트와 일치하는지 확인한다. 관련 블록 해시와 번호를 제출한 후 뷰 호출을 실행하고 잔액을 출력한다.

동작 원리
Steel은 RISC Zero zkVM 내에서 솔리디티 코드를 증명하기 위해 세 가지 단계를 거치며, 그 과정을 단순화한다:
-
프리플라이트 단계: 이더리움 RPC 노드에 뷰 호출을 요청하여 시작하며, 필요한 스토리지 슬롯을 캐시하고 EVM 데이터베이스를 요청에 필요한 데이터만으로 채운다. 모든 스토리지 슬롯은 뷰 호출 실행에 따라 자동으로 발견되고 수집된다.
-
스토리지 검증: EVM 데이터베이스의 데이터가 블록체인 상태 루트와 일치하는지 확인하는 무결성 검사를 수행하여 합법성을 입증한다.
-
솔리디티 실행: RISC Zero zkVM 내의 EVM에서 지정된 솔리디티 함수를 실행한다.
스토리지 증명과는 어떤 차이가 있나?
기존의 스토리지 증명 방식에서는 개발자가 스마트 계약이 사용하는 스토리지 슬롯을 수동으로 선택하고, 스마트 계약 로직을 다시 구현해야 한다. 반면 Steel을 사용하면 모든 스토리지 슬롯이 뷰 호출 실행에 따라 자동으로 발견되고 수집되기 때문에 개발자의 시간을 크게 절약하고, 구현 오류 가능성을 줄이며, 보안 취약점 발생 가능성을 낮춘다.
검증된 블록 해시 가져오기
이더리움 스마트 계약에서 blockhash 오퍼코드를 사용하여 검증할 때, 검증된 commitment는 최대 256개 이전의 블록 해시를 참조해야 한다. 평균 블록 생성 시간이 12초임을 고려하면, 증명 생성을 완료하고 검증 트랜잭션이 블록에 포함되었음을 확인하는 데 약 50분이라는 좁은 시간 창이 주어진다.
256개 이상 이전의 블록에 대한 검증된 블록 해시를 체인상에서 얻어야 할 경우, 다음 전략 중 하나를 사용할 수 있다:
-
필요한 블록 해시를 미리 알고 있을 경우 (예: 거버넌스 제안을 시작할 때), 해당 블록 해시를 계약 상태에 저장할 수 있다.
-
또 다른 방법은 RISC Zero를 사용해 조회 대상 블록에서 최근 256개 블록 중 하나까지의 해시 체인을 증명하는 것이다.
체인상 애플리케이션의 미래
향후 체인 외부의 계산이 체인상 검증과 원활하게 통합되는 세상을 상상해보자. Steel은 개발자가 zkVM 내에서 이더리움의 완전한 역사를 신뢰성 있게 접근하고 계산할 수 있게 하며, 데이터가 풍부하고 기능이 더욱 강력한 차세대 체인상 애플리케이션을 만들 수 있도록 도와줌으로써 이러한 비전 실현에 중요한 기여를 하고 있다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














