FuelVM 탐색: 스마트 계약 실행을 위해 특별히 구축된 맞춤형 가상 머신
원문 제목:《Exploring the FuelVM》
저자:Ryan Sproule
편집:老雅痞
Sway와 FuelVM 소개
Fuel Labs는 차세대 블록체인 애플리케이션을 확장하기 위한 새로운 실행 레이어를 구축하고 있습니다. FuelVM은 모듈화된 특성으로 설계되어 있어 어떤 블록체인의 실행 엔진으로 사용될 수 있습니다. 우선, FuelVM은 이더리움의 2층 롤업으로 배포될 예정이지만, 이론적으로는 L2 또는 다른 L1으로 어디에서나 배포될 수 있습니다. FuelVM은 노드 요구 사항을 증가시키지 않고 기존 하드웨어에서 더 많은 내용을 얻어 이더리움을 확장하는 것을 목표로 합니다.
Fuel Labs는 또한 계약을 작성하기 위한 새로운 DSL인 Sway를 FuelVM을 위해 구축하고 있습니다. Sway는 Rust와 Solidity에서 영감을 받아 이상적인 스마트 계약 프로그래밍 언어를 만들어냈습니다.
FuelVM이란 무엇인가?
FuelVM은 스마트 계약을 실행하기 위해 완전히 맞춤형으로 구축된 가상 머신입니다. Fuel VM은 처음부터 사기 방지에 용이하도록 설계되었으며, 낙관적 롤업의 거래 실행 레이어로 사용될 수 있습니다.
FuelVM은 하드웨어를 보다 잘 활용하여 거래 실행의 처리량을 향상시키도록 최적화되었습니다. 구체적으로 말하자면, UTXO 기반이며 각 거래가 접촉할 UTXO를 명확히 정의하도록 강제합니다. 실행 엔진이 각 거래가 접촉하는 상태를 정확하게 식별할 수 있기 때문에, 논란이 없는 거래를 쉽게 찾아 병렬화할 수 있습니다.
왜 VM이 중요한가?
스마트 계약 블록체인 시스템에서 VM은 스마트 계약 코드를 이해하고 해당 코드에 정의된 규칙에 따라 상태 전환을 실행할 수 있는 시스템입니다. VM은 스마트 계약 블록체인의 운영 체제입니다.
현재까지 스마트 계약 VM은 이더리움이 제공하는 초기 버전 외에는 어떤 반복도 없었습니다. 현재 널리 사용되는 모든 스마트 계약 체인(솔라나 제외)은 이더리움과 동일한 VM인 EVM을 사용하고 있습니다.
현재 EVM은 "충분히 좋다"고 여겨지는데, 이는 확장의 주요 병목 현상이 거래 실행 속도가 아니라 합의 엔진이 지원할 수 있는 대역폭(블록 공간)이기 때문입니다. 2층 확장 솔루션과 Celestia, EIP-4844, Danksharding, EigenDA 등의 DA 솔루션의 발전과 함께, 롤업 거래 데이터를 L1에 게시하는 비용은 더 이상 주요 제약 요소가 아닐 것입니다.
이러한 저렴한 대역폭 환경에서 다음 병목 현상은 계산 처리량이 될 것입니다: 시스템이 충분한 분산화를 달성하기 위해 기본 하드웨어 요구 사항을 충분히 낮게 유지하면서 거래를 얼마나 빨리 실행할 수 있는가입니다. FuelVM의 장점은 이러한 미래 요소를 설계 시 고려하여 이에 맞게 최적화할 수 있다는 점입니다.
FuelVM의 차별화된 장점
실행 + 검증 병렬화
FuelVM의 병렬 가상 머신 뒤에 있는 비밀은 엄격한 접근 목록입니다. 이는 사용자가 거래가 어떤 계약에 관련될 것인지 명시하도록 요구합니다. FuelVM에서 거래의 정확한 구성을 확인하는 것은 매우 유용합니다.
입력: 거래가 접촉할 모든 계약 UTXO의 목록 + 잠금 해제 UTXO 또는 술어 스크립트 데이터.
출력: 생성될 UTXO 정의
가스 정보: 가스 가격 + 가스 한도
증인: 메타데이터 + 디지털 서명 권한
여기서 핵심은 소비될 모든 UTXO를 나열한 명확한 "입력" 목록입니다. 여기에는 "특별한" 계약 UTXO도 포함됩니다. VM이 코드 실행 전에 거래가 접촉할 계약을 판단할 수 있다면, 모든 다른 논란 없는 상태 접근 거래를 안전하게 병렬 실행할 수 있습니다.
거래 출력이 검증에 명확히 포함되기 때문에, 다른 노드가 제안한 블록이 올바른지 확인하는 과정에서 중복 거래를 순차적으로 실행할 필요가 없습니다. 이는 상태 경쟁이 어떻게 되든 검증이 완전히 병렬로 진행될 수 있음을 의미합니다. 실제로 이는 노드가 네트워크와 동기화될 때 더 큰 병렬화를 달성하고 더 빨리 따라잡을 수 있음을 의미합니다.
네이티브 자산 시스템
EVM에는 네이티브 자산이 있습니다: ETH. 모든 다른 자산은 잔액 회계를 처리하는 스마트 계약(ERC20)을 통해 구현됩니다. Fuel에서는 개발자가 스마트 계약 내에서 자산을 자유롭게 구현할 수 있지만, VM이 이를 네이티브 방식으로 처리할 수 있는 옵션이 있습니다.
잔액 관리 측면에서 네이티브 자산은 ERC20 스타일의 스마트 계약에 비해 몇 가지 상당한 장점을 가지고 있습니다. 첫째, 네이티브 자산의 작업은 스마트 계약 내에서 상태를 조작하는 것보다 더 저렴합니다. 이는 더 낮은 수준의 원시 작업에서 실행되기 때문입니다(UTXO 시스템이 저장소 조작을 대체하는 데 사용됨). 둘째, 네이티브 자산은 사용자 경험이 더 좋습니다. ETH를 보내는 것이 ERC20을 보내는 것보다 훨씬 간단합니다(승인을 설정할 필요 없음).
네이티브 계정 추상화 + 술어
계정 추상화는 연구의 핫토픽이었으며, 수년 동안 이더리움 커뮤니티는 EIP(EIP-86, EIP-2938, EIP-3074, EIP-4337, EIP-5003)에서 여러 번 시도했습니다. 이더리움을 계정 추상화를 지원하도록 구현하고 업그레이드하는 것은 어렵습니다. 이는 주로 핵심 팀의 엔지니어링 대역폭/기술 부채와 관련된 복잡성, 그리고 더 높은 우선 순위의 프로젝트 목록 때문입니다. 많은 롤업은 처음부터 새로운 실행 환경에서 계정 추상화를 구현할 기회를 가졌습니다. FuelVM도 그 중 하나로, 네이티브 계정 추상화 외에도 흥미로운 새로운 원시 작업인 술어를 포함할 것입니다.
술어는 순수한(상태에 접근하지 않는) 계약 스크립트로, 단순히 부울 값(true 또는 false)을 반환합니다. UTXO는 술어 뒤에 잠길 수 있으므로, 술어에 정의된 조건이 충족될 때만 사용될 수 있습니다. 이는 사용자에게 거래를 특정 조건에서만 실행하도록 설정할 수 있는 흥미로운 UX 기회를 제공합니다. 조건이 충족되면 거래가 자동으로 실행될 수 있습니다. 또한, 술어는 파괴될 때 축소될 수 있으므로 상태 팽창을 초래하지 않습니다.
간단한 데모 예시: 사용자가 가격이 술어에 정의된 임계값을 충족하는 한 X 개의 토큰을 구매하는 거래를 설정합니다. 보세요, piéce de résistance, 완전한 체인상의 신뢰 없는 한정가 주문으로 상태 팽창을 초래하지 않습니다!
다차원 자원 가격 책정
자원 가격 책정은 스마트 계약 블록체인의 가장 중요한 구성 요소 중 하나입니다. 체인상의 자원 수요를 합리적이고 감당할 수 있는 수준으로 유지하여 분산화를 유지합니다. 자원 가격 책정은 시스템이 사용자에게 네트워크 내 노드의 "작업"에 대한 비용을 청구할 수 있도록 합니다.
EVM에서 EIP를 도입하는 가장 일반적인 이유 중 하나는 작업 코드의 재가격 책정입니다. 이는 작업 코드가 하드코딩된 가스 가격을 가지고 있으며, 자원의 기본 가격이 비례적으로 확장되지 않기 때문입니다(역사적으로 CPU의 개선이 SSD보다 더 빠릅니다). 이상적으로는 이러한 시스템이 각 자원에 대해 완전히 독립적으로 가격을 책정할 수 있어야 하며, 전체 요금 시스템이 기본 하드웨어 시스템의 변화에 따라 동적으로 조정될 수 있습니다.
FuelVM은 동적인 다중 자원 가격 책정을 구현할 수 있어, 노드 운영자가 기본 하드웨어를 더 잘 최적화하도록 유도할 수 있으며, 여전히 "블록당 효용"을 극대화할 수 있습니다.
이 그림은 스마트 계약의 수요가 다른 스마트 계약보다 현저히 높은 경우를 보여줍니다. 로컬화된 자원 가격 책정 덕분에 다른 계약은 동일한 정도의 영향을 받지 않습니다. NFT 에어드랍은 좋은 예입니다. 이는 자원 가격 책정과 계약 가격 책정(솔라나 스타일)이 완전히 동일하지는 않지만 매우 유사한 효과를 가져옵니다. 특정 자원 프로파일을 가진 스마트 계약은 다른 계약과 가격이 다릅니다. NFT 에어드랍의 예에서, 핫 계약은 저장 집약적이지만 계산 비용이 매우 낮은 자원 프로파일을 가질 수 있습니다. 저장소에 비해 계산량 요구가 높은 스마트 계약은 시끄러운 NFT 에어드랍의 영향을 받지 않습니다.
솔라나는 계정 또는 계약 요금 시장을 파괴하는 전략으로 실제 기본 자원과 그에 대한 수요 사이에 추상화의 층을 추가했습니다. 이는 여전히 요금이 매우 낮을 수 있지만 노드에 대한 압력이 매우 높은 상황이 발생할 수 있음을 의미합니다. 예를 들어, 이벤트(예: 여러 다른 NFT가 동시에 발행됨)로 인해 시스템의 저장소 부하가 매우 높을 수 있지만, 모든 트래픽이 하나의 계정에서 발생하지 않기 때문에 요금은 매우 낮을 수 있습니다. 각 계정의 요금 모델은 실제로 계정의 핫 파티션 문제를 해결하지만, 시스템이 기본 자원을 정확하게 가격 책정할 수 없게 남겨두어 여전히 실패를 초래할 수 있습니다.
기본 하드웨어 자원을 기반으로 시스템 가격 책정은 더 간결하고 정확하며, 여러 시장 기반 자원 가격 책정의 계정과 같은 네트워크 특정 추상화 계층을 추가하려고 시도하는 것보다 더 효과적입니다.
상태 팽창 주의 사항
geth 팀이 여러 번 언급한 바와 같이, geth의 현재 병목 현상은 상태 읽기 및 쓰기의 I/O입니다. 처음에는 100%의 머클 패트리샤 트리(MPT) 상태가 표준 장치의 RAM에 적합할 것이라는 생각이었습니다. 현재 상황은 다릅니다. 상태가 900GB 이상으로 증가했으며, 매년 약 50-100GB 증가할 것으로 예상되므로, 이는 누구에게나 비합리적이며, 대부분의 노드는 상태를 저장하기 위해 SSD로 전환했습니다. 역사적으로 SSD는 상태 크기가 증가함에 따라 빠르게 개선되지 않기 때문에 이러한 비용은 네트워크의 분산화에 계속 영향을 미칠 것입니다. 이는 이더리움 연구자들이 한동안 논의해온 핵심 문제입니다.
반면, FuelVM은 구축 시 이 문제를 고려했습니다. Fuel Labs의 공동 창립자 John Adler는 스마트 계약이 상태 또는 다른 자원을 소비하는 과정에서 자원 가격 책정이 수행하는 역할에 대해 여러 번 이야기했습니다. 적절한 자원 가격 책정과 더 명확한 데이터 모델을 UTXO 시스템과 결합함으로써, FuelVM은 상태를 통제된 상태로 유지하고 노드 운영 비용을 낮출 수 있어 네트워크의 분산화를 증가시킬 수 있습니다.
"정렬자"의 분산화
2층은 우리가 메인 체인에서 계산 작업을 분리할 수 있게 해주지만, 여전히 거래를 정렬하는 메커니즘을 제공해야 합니다. 많은 2층 솔루션은 소위 "정렬자"를 사용하여 시작됩니다. 정렬자는 거래를 정렬하고 상태 전환을 실행한 다음 상태 루트를 업데이트하여 압축된 거래 정보를 1층 이더리움에 제출하는 특권 노드입니다. 주목할 점은 거래를 정렬하는 슈퍼 컴퓨터가 동일한 거래 시퀀스를 중복 실행하는 소형 컴퓨터보다 각 에포크에서 더 많은 거래를 수행할 수 있다는 것입니다.
이러한 중앙 집중화된 정렬 역할에는 더 많은 주의가 필요한 몇 가지 주요 문제가 있습니다!
거래 순서를 제어하는 것은 매우 수익성이 높습니다. 우리는 이더리움과 다른 블록체인에서 MEV가 블록을 정렬하는 사람들의 주요 수입원 중 하나라는 것을 관찰했습니다. 오늘날 전통 금융에서 보는 것처럼, 일방적으로 정렬과 MEV를 제어하는 것은 궁극적으로 사용자 실행 능력의 감소로 이어질 것입니다.
가용성과 규제의 관점에서 중앙 집중화된 정렬자는 단일 실패 지점이 될 수 있습니다. 하나 또는 소수의 조직이 정렬자를 운영하고 있다면, 이들은 마비되거나 종료될 수 있습니다. 이는 네트워크에 대한 생생한 위험입니다.
중앙 집중화된 정렬자는 2층 거래를 검열할 수 있습니다. 정렬자는 어떤 거래든 선택할 수 있으며, 블록을 구축하는 과정에서 이를 어떤 순서로든 배치할 수 있어 검열 능력을 생성합니다. 많은 L2는 사용자가 정렬자를 우회하여 L1을 통해 거래를 직접 포함할 수 있도록 하는 "강제 거래" 메커니즘을 제공하여 이 문제를 해결합니다.
정렬자는 롤업 사용자에게 불일치하는 체인 상태 약속을 할 수 있습니다. 이는 일반적으로 동시성 문제로 알려져 있으며, 기본적으로 정렬자가 L2의 특정 상태에 대해 오해의 소지가 있는 약속을 할 수 있음을 의미합니다. 이는 롤업의 빠른 종료가 신뢰할 수 있는 단계이기 때문에, 정렬자가 이러한 신뢰를 남용하여 사용자가 의도하지 않은 일을 하도록 만들 수 있습니다.
Fuel은 이러한 문제를 어떻게 해결하는가?
우선, Fuel은 단순한 롤업이나 L1 블록체인이 아닙니다. 반대로, 이는 상태 전환을 적용하는 시스템으로, 롤업으로 구성되거나 L1에서 합의를 위해 실행될 수 있으며, 상태 전환을 L1에 게시할 수 있습니다. 중요한 차이점은 Fuel의 실행 엔진이 합의나 거래 정렬에 관심이 없다는 것입니다. Fuel은 가능한 한 빨리 거래를 적용하는 것만 책임집니다. 그러나 Fuel은 이렇게 경량 하드웨어에서 실행할 수 있고 검증이 매우 저렴하기 때문에, 성능이 떨어지는 실행 엔진(EVM 등)을 운영하는 동등한 시스템보다 훨씬 저렴하게 다양하고 분산화된 합의 네트워크를 유도할 수 있습니다.
또한 Fuel 팀은 분산화, MEV 및 기타 고려 사항을 결합한 2층 토큰 경제학을 고려하고 있습니다. Fuel의 공동 창립자 John Adler는 1월에 2층 블록체인의 토큰 모델에 대한 글을 작성하여, 롤업이 블록 생산자로서 수수료를 부과하는 권리를 통해 블록 공간의 희소성을 토큰화하여 블록 생산의 분산화를 도울 수 있는 방법을 설명했습니다. 수수료는 블록 생산자의 수입의 일부일 뿐이며, 다른 체인에서 보듯이 MEV는 수입의 또 다른 큰 부분입니다. 블록 공간의 희소성과 유사하게, MEV 수입도 블록 생산 권리를 통해 토큰화될 것입니다.
상태 모델: UTXO vs 계정 기반
UTXO 데이터 모델과 계정 모델 간의 차이를 개념화하는 가장 좋은 방법은 다음과 같습니다: UTXO는 현금 청구서에 비유할 수 있으며, 계정 모델은 은행 장부와 더 유사합니다. 계정 시스템은 자연스럽게 상태 팽창을 초래하는데, 이는 각 거래가 동일한 계정에 접근하려고 시도하기 때문입니다. 반면, UTXO는 올바르게 설계되면 논란이 적습니다. 이러한 특성 덕분에 병렬화를 더 잘 구현할 수 있으며, 상태 절단 과정을 단순화하여 상태 팽창을 방지할 수 있습니다.
현금과 은행 장부의 비유를 계속 사용하면, UTXO 병렬화가 훨씬 더 쉬운 이유를 명확히 이해할 수 있습니다. 두 개의 현금 거래는 동시에 발생할 수 있으며, 서로에 대해 어떤 정보도 알 필요가 없습니다. 그러나 하나의 장부에 2개의 계정 업데이트가 있는 경우, 두 거래 모두 동일한 공유 장부를 업데이트해야 합니다.
VM 전쟁
Fuel 외에도 다른 팀들이 스마트 계약 블록체인을 위한 차세대 가상 머신을 개발하고 있습니다. 예를 들어, Mysten Labs와 Aptos는 Facebook 엔지니어가 설계한 Libra 프로젝트의 일부를 사용하여 MoveVM을 사용하고 있습니다. 이는 차세대 블록체인 애플리케이션을 지원하기 위해 새로운 실행 환경이 필요하다는 주장을 더욱 뒷받침합니다. 이러한 모든 프로젝트는 흥미로운 접근 방식을 가지고 있으며 서로 다른 균형을 이루고 있습니다.
MoveVM이 몇 년 동안 정체된 동안, Libra가 소송에 휘말리면서 암호화폐 세계는 많은 변화를 겪었습니다. Fuel은 이러한 변화에 적응하고 빠르게 변화하는 산업에서 민첩성을 유지할 수 있었습니다. 반면 Move는 다소 뒤처졌습니다. 그럼에도 불구하고 Move는 Facebook에서 분리된 이후 새로운 대규모 자금 조달 라운드를 완료했으며, 그들은 분명히 전투를 준비하고 있습니다!
결론
다른 L2와 달리 Fuel은 VM을 설계하여 정렬자 역할을 분산화할 계획입니다. 이를 통해 규모를 늘리기 위해 비싼 하드웨어가 필요하지 않습니다.
Fuel은 유연합니다. 여러 환경에 배포할 수 있지만, 우선적으로 이더리움과 정렬된 낙관적 롤업으로서의 배포를 고려하고 있습니다.
Fuel의 사용자 경험은 EVM보다 훨씬 우수할 것이며, 계정 추상화, 스크립트 및 술어와 같은 네이티브하고 혁신적인 방식으로 체인과 상호작용합니다.
UTXO 데이터 모델의 논란은 자연스럽게 계정 데이터 모델보다 적으며, 더 많은 병렬성과 더 적은 상태 팽창을 가져옵니다.











