Vitalik:NFT를 Layer 2로 이동시키는 방법, Rollup 간에 어떻게 친화적으로 만들 수 있을까?
저자: Vitalik Buterin
편집: 카일, 바비트
NFT 생태계는 빠르게 발전하고 있으며, 이더리움 체인에서 가스 소비의 중요한 구성 요소가 되었습니다. NFT 생태계의 젊음과 상대적으로 부족한 기반, 그리고 NFT의 상당 부분이 비금융적 특성으로 인해 높은 수수료를 피해야 할 필요성은 NFT가 Layer2 네트워크로 이전되는 주요 목표가 되도록 만들었습니다. 그러나 이는 NFT를 Layer2로 이전하는 방법에 대한 문제를 제기합니다.
간단한 제안은: 커뮤니티 내에서 NFT를 단일 롤업 플랫폼(예: Arbitrum, 현재 일반 계약 배포에 사용 가능)으로 이전하는 것을 조정하는 것입니다. 그러나 이는 몇 가지 중요한 단점이 있습니다:
- 모든 기존 EVM 지원 주요 롤업 플랫폼에는 백도어, 중앙 집중식 정렬 또는 기타 실험적 기능이 있으며, 전체 생태계를 단일 롤업에 맡기는 것은 위험합니다. 롤업이 이러한 기능을 넘어 어떻게 발전할지는 불확실합니다.
- NFT 생태계는 너무 커져서 단일 롤업이 모든 거래를 안전하게 처리할 수 없게 될 수 있습니다.
- NFT 생태계의 어떤 부분, 심지어 전체 NFT 생태계도 폐쇄된 세계가 아닙니다; 그들은 이더리움 생태계의 다른 부분과 상호 운용할 필요가 있습니다.
이 글은 NFT가 롤업 간에 이동할 수 있도록 하는 친 롤업 제안에 대해 설명합니다.
제안된 해결책 1
NFT는 먼저 하나의 롤업(또는 기본 체인)에서 등록됩니다. NFT를 포장하여 다른 롤업(또는 기본 체인) 간에 점프할 수 있습니다.
NFT 포장 과정은 다음과 같습니다:
롤업 A에서 NFT(우리는 이를 X라고 부릅니다)를 포장 관리자 계약으로 보내고, (i) 목적지 롤업과 (ii) 초기 소유자를 지정합니다. 포장 계약은 저장소에 기록을 저장하고, X에 새로운 일련 번호 R을 할당하며, 목표 롤업(우리는 이를 B라고 부릅니다)과 목표 롤업의 초기 소유자(우리는 이 계정을 O1이라고 부릅니다)를 저장합니다.
롤업 B에서 누구나 롤업 B의 포장 관리자 계약을 사용하여 포장 NFT를 생성할 수 있습니다. 포장 NFT를 생성하려면 원본 롤업과 일련 번호를 지정해야 합니다. X의 "유효한" 포장 NFT는 지정된 소유자에 의해 (R, A)를 일련 번호와 원본 롤업으로 선언함으로써만 생성될 수 있습니다. 유효성과 무효성을 롤업 B는 알지 못하므로, 무효한 포장 NFT가 생성될 수 있습니다. 포장 관리자 계약은 (일련 번호, 원본 롤업, 초기 소유자) 튜플을 저장하고 동일한 튜플을 사용하여 여러 NFT를 생성하는 것을 방지합니다.
포장에서 NFT를 추출하려면, 롤업 B의 포장-X의 현재 소유자가 이를 포장 관리자에게 다시 보내야 하며, 후자는 "일련 번호 R, 원본 롤업 A 및 초기 소유자 O1의 NFT가 방금 포장에 접촉했으며, 원하는 새로운 소유자 O2가 있습니다"라는 영수증을 발급합니다.
포장 계약은 롤업 B에서 영수증의 증명을 받을 때 X를 O2에게 전달할 수 있으며, 저장된 정보를 기반으로 일련 번호, 원본 롤업 및 초기 소유자를 확인하고 유효성을 검증합니다.
출금에는 시간 지연이 발생할 수 있습니다. Optimistic Rollup 상태 루트는 영수증을 검증하기 위해 약 1주일의 시간 지연이 필요합니다. 현재까지 다중 점프를 더 빠르게 수행하는 유일한 방법은 다층 포장을 수행하는 것입니다.
사용자가 포장-X의 합법성을 검증하려면, 그들은 롤업 B의 상태와 롤업 A의 영수증을 직접 검증해야 합니다.
확장: 롤업 간 전송 추가
롤업 B에서, wrapped-X의 소유자는 이를 포장 관리자에게 보내고, 다른 영수증을 발급하라는 지시를 첨부할 수 있습니다: "일련 번호 R, 원본 롤업 A 및 초기 소유자 O1의 NFT가 방금 롤업 C로 이동했으며, 원하는 새로운 소유자 O2가 있습니다".
롤업 C에서 누구나 원본 원 롤업(이 예에서는 롤업 A), 일련 번호 및 초기 소유자를 지정하여 포장-X 객체를 만들 수 있으며, 롤업 C의 이 포장-X는 자유롭게 거래될 수 있습니다. 그러나 포장-X를 철회하려면 롤업 B의 영수증을 롤업 A로 보내야 합니다.
실제로 발생하는 일은, NFT가 한 롤업에서 다른 롤업으로 이동할 때, 전송 체인이 영수증 체인을 남기며, 이 영수증 체인의 각 영수증은 롤업 A에 미러링되고 특정 시점에서 순차적으로 처리됩니다. 미래에 다른 롤업의 상태가 최종 확정될 때(이는 단기적으로 Kate의 약속을 통해 공간 최적화를 통해 이루어질 수 있으며, 장기적으로는 ZK-SNARK를 통해 전체 영수증 체인을 증명할 수 있습니다).
사용자가 포장된 X의 합법성을 검증하려면, 그들은 롤업 간 전송을 반영하는 모든 롤업에서 전체 영수증 체인을 검증해야 합니다(또는 최소한, 마지막 영수증 이후 롤업에 미러링된 영수증 체인의 일종).
또한 이 프로토콜은 단순화될 수 있습니다: "출금"은 롤업 A의 롤업 간 전송일 뿐이며, 롤업 A에서 특정 일련 번호가 현재 롤업 A에 존재하는 것으로 인식되면, 해당 포장 계약은 직접 교환할 수 있습니다.
확장 2: 기본 체인에서의 가스 최적화 발행
모든 NFT는 이더리움 기본 체인에 있는 포장 계약이 "소유"하는 방식으로 발행될 수 있습니다. 이러한 가스를 효율적으로 만들기 위해, 포장 계약은 전체 일련 번호 세트를 생성하고 이를 롤업으로 전송하는 기능을 갖게 됩니다. 실제로 모든 NFT는 미리 생성되었지만, 그 중 어떤 "의미"도 할당되지 않았습니다(생각해보세요: 2**256개의 아직 분화되지 않은 "줄기 세포" NFT가 있습니다) 그리고 이들은 롤업으로 대량 전송됩니다.
"발행" 과정은 이제 의미를 부여하는 과정으로 변합니다. 이는 영수증에 "의미 해시"를 전달함으로써 이루어질 수 있으며, 이는 소유자를 전달하는 방식과 유사합니다: NFT에 의미가 없다면(그것은 "줄기 세포"입니다), 소유자는 그에 대한 의미를 할당할 수 있으며, 이를 통해 "차별화된" NFT로 변환됩니다. 기본 체인은 영수증 체인을 검증한 후에야 NFT의 의미를 알 수 있으며, 의미가 할당될 때까지(실제로, 영수증 검증은 ZK-SNARK이어야만 가능하게 됩니다).
이것은 모든 NFT가 기본 체인에서 "뿌리내리도록" 허용하며, 롤업에서 발생하는 중단이나 다른 방식으로 불가능해지는 경우 및 애플리케이션이 다른 도메인으로 영구적으로 이전해야 하는 경우에 유용합니다.