스마트 에스크로 포스트 #2: WebAssembly란?
Source: Dev.to
Introduction
XRPL이 스마트 에스크로를 시작으로 허가 없는 프로그래머블성을 향해 나아가면서, 맞춤형 개발자 코드를 실행할 안전하고 신뢰할 수 있으며 고성능의 엔진이 필요합니다. 우리가 내린 결론은 그 엔진이 WebAssembly (WASM)이어야 한다는 것입니다.
Why WebAssembly for XRPL
올해 초 RippleX 프로그래머빌리티 팀은 다양한 가상 머신(VM) 옵션을 조사한 결과, 여러 이유로 WASM이 XRPL 생태계에 가장 적합한 선택이라고 결론지었습니다. 설문 조사는 여기에서 확인할 수 있습니다.
WASM은 블록체인 세계에만 국한된 것이 아닙니다. 웹 브라우저에서 고성능 애플리케이션을 실행하도록 설계된 보편적인 오픈 표준이며(현재는 다양한 다른 환경에서도 사용됨), 모든 운영 체제에서 어떤 언어든 지원하도록 의도되었습니다. 실제로 대부분의 언어가 어느 정도 지원됩니다.
WASM 기반 스마트 계약 런타임은 결정론적이고, 안전하며, 이식성이 뛰어납니다. 전체 시스템은 WebAssembly의 핵심 약속인 결정론적 실행에 의존하므로, 코드가 운영 체제나 하드웨어에 관계없이 모든 rippled 노드에서 동일하게 실행되어 합의가 유지됩니다. 또한 WASM은 더 나은 성능을 제공하고 Rust, C, Go와 같은 다수의 범용 프로그래밍 언어를 지원해 Web2 개발자들이 익숙한 언어를 사용할 수 있게 합니다. 이러한 장점 때문에 WASM은 Polkadot, Cosmos, Near, Stellar의 Soroban 등 최신 블록체인 프로젝트에서 가장 많이 선택되는 스마트 계약 언어입니다.
Host Functions
원장 데이터에 안전하게 접근하고 계산 집약적인 작업의 효율성을 높이기 위해 WASM 코드는 Host Functions에 의존합니다. Host Function을 내부 API 호출이라고 생각하면 됩니다: WASM 코드 외부(즉, XRPL을 실행하는 효율적인 C++ 코드)에서 표현되며, WASM 프로그램이 원장 상태에서 데이터를 안전하게 조회할 수 있게 합니다. EVM에서는 대략 precompile에 해당합니다.
스마트 에스크로에서 WASM 코드에 적용되는 기본 규칙은 읽기 전용 접근이며, 매우 제한적인 쓰기 접근만 허용됩니다. WASM 코드는 모든 원장 객체와 다양한 온체인 데이터(예: 원장 헤더 정보)에 대해 읽기 전용 접근 권한을 가집니다. 오직 자신이 연결된 에스크로의 Data 필드에만 쓰기 접근이 가능합니다. 이러한 엄격한 제한은 맞춤 로직이 원장의 무결성이나 다른 계정의 잔액에 부정적인 영향을 미치는 것을 방지합니다.
WASM Runtime Choice
WASM 런타임 환경은 JVM과 같은 저수준 가상 스택 머신이며, 어떤 호스트 애플리케이션(예: rippled)에도 임베드될 수 있습니다. 다양한 트레이드오프를 가진 여러 구현체가 존재합니다. 우리는 Wasmi를 선택했으며, 이는 성능과 다른 블록체인(Polkadot 및 Solana에서도 Wasmi 사용)에서의 사용 이력이 이유입니다. 자세한 내용은 런타임 재검토 기사에서 확인할 수 있습니다.
Summary
WASM은 스마트 에스크로의 맞춤 릴리스 로직을 실행하는 안전하고 고성능의 가상 머신입니다. 개발자가 익숙한 프로그래밍 언어를 사용해 복잡하고 조건부인 규칙을 배포할 수 있게 하면서, XRPL이 자랑하는 보안과 안정성을 보장하는 엄격히 관리된 경계 내에서 동작합니다.