최신 Final의 ERC-6147 해석: 극소화된 반강제 NFT 소유권 분리 표준
저자:십사균
2023년 3월 7일, 10K Universe에서 제안한 이더리움 개선 제안 EIP-6147이 최종 버전(Final)으로 이동했습니다!
이 표준은 ERC-721의 확장으로, NFT와 SBT의 소유권 및 양도권을 분리하고, 새로운 설정 가능한 만료 시간을 가진 "수호자" 역할인 Guard를 정의하여 NFT의 도난 방지, 대출, 임대, SBT 등을 보다 유연하게 만듭니다.
본 문서에서는 ERC-6147의 구현 메커니즘을 체계적으로 설명하고, 이전 NFT 임대 프로토콜 프로젝트인 ERC-4907, ERC-5055와 비교하여 이 프로토콜의 종합적인 분석과 적합한 응용 시나리오를 논의합니다!
1. 배경
NFT는 이미 오래된 주제라고 할 수 있습니다. 블록체인 상의 변경 불가능한 특성과 계약 자체의 자동화 운영을 통해 블록체인 자산의 권리 확인 및 관리가 이루어졌으며, 필자는 표준 프로토콜, 임대 확장 프로토콜, 그리고 NFT 거래 시장의 여러 주류 모델에 대해 여러 편의 글을 작성한 바 있습니다.
NFT의 장점을 증명하기 위해서는 여러 페이지에 걸쳐 나열할 수 있지만, NFT의 단점을 증명하기 위해서는 천 마디 만 구를 한 단어로 요약할 수 있습니다: 유동성!
물론 여러분은 유동성 부족의 어려움과 소유권 분리 표준의 관계에 대해 의문을 가질 수 있습니다.
필자의 관점에서 NFT 유동성의 어려움은 사실 NFT 프로토콜 자체에서 비롯된 것이 아니라, ID의 비동질화 메커니즘과 제한된 ID 범위에서 기인합니다. 거의 무한한 ERC20 토큰도 유동성이 부족하지 않습니까? 더 중요한 것은 유동성 자체가 금융 상품의 가격 책정 요구에서 발생하는 주제라는 것입니다. NFT 자체가 사용 가치를 가지도록 만드는 것이 가치가 시장 조작에만 의존하지 않도록 하는 프로토콜이 됩니다.
사용 가치를 영향을 미치는 것도 바로 NFT 프로토콜 자체입니다.
1.1, 소유권 결합, 고가치 NFT는 안전 회피 경향이 있다
현재 NFT 도난 사례가 많습니다. 그러나 기존의 NFT 도난 방지 솔루션, 예를 들어 NFT를 콜드 월렛으로 전송하는 것 등은 NFT의 사용을 불편하게 만듭니다.
또한 현재 NFT 대출에서는 NFT 소유자가 NFT를 NFT 대출 계약으로 이전해야 하며, 대출 기간 동안 NFT 소유자는 NFT의 사용 권한을 잃게 됩니다. 이는 소유권 결합의 문제로, 실제로 부동산을 구매하고 부동산을 담보로 유동성 자금을 얻을 때, 위험 조건이 아닌 경우에는 주택 사용 권한이 점유되지 않는 상황과 매우 다릅니다.
기억에 남는 것은, 원숭이 APE 에어드랍 시 공격자가 플래시 론을 사용하여 NFTX로 공격한 사건입니다.
원 사건 분석에 대한 확장 읽기: EIP-5058이 NFT 프로젝트 측의 도주를 방지할 수 있을까?
이 사건에서 유일하게 피해를 본 것은 원숭이를 담보로 제공한 사용자로, 원래는 미미한 시간 차익을 얻으려 했으나 APE의 대량 에어드랍을 잃게 되었습니다.
마찬가지로, 소유권 결합의 문제는 SBT에도 존재합니다.
SBT에 대해 현재 주류 견해는 SBT가 양도 불가능하다는 것입니다. 이는 SBT가 이더리움 주소에 결합되도록 만듭니다. 그러나 사용자의 주소의 개인 키가 유출되거나 분실될 경우, SBT를 복구하는 것은 복잡한 작업이 되며, 이에 대한 적절한 표준이 없습니다. SBT는 본질적으로 NFT의 소유권과 양도권을 분리합니다. SBT가 있는 지갑이 도난당하거나 사용할 수 없게 될 경우, SBT는 복구 가능해야 합니다.
예를 들어, 한 대학이 졸업생에게 학위 기반의 SBT를 발급했다면, 대학이 나중에 졸업생의 학문적 부정행위나 대학의 명성을 훼손하는 행동을 발견했을 때, 해당 학위의 SBT를 회수할 수 있어야 합니다.
1.2, 소유권 분리 문제, 강제적 차원의 통제가 어렵다
과거 십사는 여러 소유권 분리 시도의 해석을 해왔습니다. 예를 들어 ERC-4907과 ERC-5058에서, 피할 수 없는 가장 큰 문제는 강제성 정도의 측정입니다. 이는 프로토콜 자체의 문제가 아니라, 프로토콜의 철학적 이념 문제입니다.
1.2.1, 간단한 철학 ERC-4907, 비전 정의는 합의에 맡긴다
2022년 7월, NFT 임대 시장 Double Protocol이 제출한 임대 가능한 NFT 표준 "EIP-4907"이 이더리움 개발 팀의 최종 검토를 통과하여 30번째 ERC 표준 "Final" 상태가 되었습니다.
코드는 매우 간단하여 단 72줄로 구성되어 있으며, 이 표준을 사용하면 기존의 ERC721 위에 다음을 추가합니다.
- 1개의 이벤트(오프체인 애플리케이션에 알리기 위한 이벤트)
- 3개의 메서드(온체인 데이터 관리 기능을 구현하기 위한 메서드)
원리적으로 보면, 4907은 단지 데이터 객체 UserInfo를 소유권 개념 외에 "사용자"의 차원을 추가했을 뿐입니다. 하지만 그 강제성은 제한적이며, 단지 이전하면 임대 권한을 강제로 종료할 수 있습니다.
자세한 내용은 확장 읽기:
721 임대 프로토콜 해석: 이더리움 새로운 표준 EIP-4907은 어떻게 NFT 임대를 구현하는가?
1155 임대 프로토콜 해석: NFT 임대 제안 EIP-5006이 최종 검토에 들어갔다!
1.2.2, 0 신뢰 철학의 ERC-5058, 코드가 곧 법이다
그는 본질적으로 NFT의 잠금 상태를 관리하여, 프로젝트 측이 5058을 구현한 NFT 프로젝트에서 잠금 및 양도 기능을 제공하도록 합니다. 또한 로열티와 같은 더 많은 기능을 구현할 수 있습니다.
그는 여러 제공 방법을 캡슐화하여 제공했습니다: 사용자 승인 및 프로젝트 측이 실행한 후에만 완전히 잠금됩니다.
사용자는 다음을 호출할 수 있습니다.
- lockApprove(단일 NFT의 잠금 허가)
- setLockApprovalForAll(해당 주소의 모든 NFT의 잠금 허가)
프로젝트 측 계약 호출:
- lockFrom(사용자의 NFT 잠금)
- unlockFrom(사용자의 NFT 잠금 해제)
잠금 기간의 정의는 매우 강제적이며, 거의 설정 초기의 시간 점에만 의존합니다.
프로젝트 측(제3자)가 NFT를 잠글 때, 잠금 만료 블록 높이를 지정해야 하며, 해당 높이는 현재 블록 높이보다 커야 합니다. 잠금이 만료된 후, NFT는 자동으로 해제되어야만 이전할 수 있습니다.
현재 이 프로젝트는 초안 단계에 있으며, 아마도 강제성이 너무 높고 사용자와 프로젝트 측의 양방향 작업의 높은 비용 때문일 것입니다.
자세한 내용은 확장 읽기: EIP-5058이 NFT 프로젝트 측의 도주를 방지할 수 있을까?
위에서 언급한 강제성이 없는 4907과 완전한 강제성의 5058을 설명한 후, 본 문서의 주제로 넘어갑니다: 최근 이더리움 재단의 검토를 통과하여 Final로 확정된 ERC-6147입니다. 비록 그의 원래 제목은 "NFT/SBT의 수호자, ERC-721의 확장"이지만, 십사군의 일련의 임대 연구 경험에 비추어 볼 때, 그는 "반강제적인 NFT 소유권 분리 표준"이라고 불려야 합니다.
2. ERC-6147의 운영 메커니즘
이 프로토콜의 전체 코드는 매우 간결하고 높은 재사용성을 가지며, ERC721의 확장 표준에 해당합니다. 그러나 주의해야 할 점은, 그를 사용하면 이전 작업이 일반적인 721의 논리와 다를 수 있으며, 부주의한 작업은 피싱에 쉽게 노출될 수 있습니다. 구체적으로 어떻게 되는지 살펴보겠습니다.
확장 읽기를 권장합니다: 【소스 코드 해석】당신이 구매한 NFT는 도대체 무엇인가?
2.1, Guard란 무엇인가? 누가 제어할 수 있는가?
우선 ERC-6147은 Guard(수호자)라는 역할을 정의하며, 이는 4907의 UserInfo와 매우 유사합니다.
Guard는 해당 NFT의 현재 소유자 주소와 대체 승인 권한이 있는 주소만 설정할 수 있으며, changeGuard를 통해 설정할 수 있습니다. 소스 코드에서 Guard를 설정할 때 몇 가지 세부 사항을 확인할 수 있으며, 잘못된 잠금을 방지하기 위해 Guard는 0 주소로 설정할 수 없습니다.
설정이 성공하면 누구나 guardInfo 메서드를 통해 특정 NFT ID의 현재 Guard 정보를 조회할 수 있으며, 여기서도 4907과 마찬가지로 타임스탬프 기반의 설계를 따릅니다. 만료 시에는 두 번째 온체인 거래 없이 자동으로 무효화됩니다. Guard의 신분은 누가 제거할 수 있을까요? 오직 Guard 자신과 시간(만료)만 가능합니다.
2.2, Guard는 무엇을 할 수 있는가?
우선 강제 이전 권한을 가지며, Guard가 설정된 NFT의 경우 transferFrom을 수행할 때 거래 발신자가 수호자 주소인지 확인합니다. 그렇지 않으면 이전할 수 없습니다.
? 특별히 주의해야 할 점 1:
Guard가 설정된 NFT의 경우, 원래 소유자는 소유권만 가지며, 양도권(즉, 사용권)은 없습니다. 다른 Dapp은 여전히 이 NFT의 소유자가 원래 사용자임을 조회할 수 있지만, 원래 사용자는 이를 이전할 수 없습니다.
따라서 수호자가 설정된 NFT는 opensea, x2y2 등의 거래 플랫폼에서 서명이 유효하지만(실제 이전은 불가능합니다. Seaport 등의 프로토콜이 이전을 수행할 때, Seaport 프로토콜이 대체 승인 권한을 통해 실행되기 때문입니다.)
거래 시장의 운영 메커니즘에 대한 확장 읽기:
? 특별히 주의해야 할 점 2:
수호자가 해당 NFT를 직접 이전한 경우, 원래의 transferFrom 또는 safeTransferFrom 메서드를 사용하면 수호자의 설정이 자동으로 제거되지 않습니다. 물론 수호자가 NFT를 자신에게 이전하는 것은 문제가 없지만, 만약 다른 사용자에게 이전한 후 수호자의 설정을 통해 다시 이전할 수 있습니다.
따라서 이후 Guard를 사용할 경우, transferAndRemove 메서드를 사용하는지 확인해야 합니다. 이 메서드는 이전 후 수호자 정보를 직접 삭제합니다.
또한, 수호자는 본질적으로 높은 통제 권한을 가지며, 주택 임대와 유사합니다. 담보를 제공하는 순간, 본질적으로 이미 은행에 속하게 되며, 은행은 특정 사회적 조건(예: 위반)을 충족할 경우에만 경매 등의 조치를 실행합니다. 따라서 특정 금융 담보의 속성을 가지므로, 수호권을 변경하는 것도 가능합니다. changeGuard 메서드를 사용하여 가능합니다.
transferRemove의 설계 원칙은 다양한 시나리오에 적응하기 위해 마련되었습니다.
예를 들어 도난 방지의 경우, NFT가 핫 월렛에 있고 핫 월렛이 도난당했지만 콜드 월렛은 여전히 안전하다면, 안전한 주소로 transferFrom하면 됩니다.
또는 임대 시, guard가 새로운 임대 주소로 transferFrom을 호출하면 임대가 이루어집니다.
SBT의 사회적 복구의 경우, SBT를 새로운 주소로 이전해도 SBT의 양도 불가능한 특성에는 영향을 미치지 않습니다.
2.3, Guard는 무엇을 할 수 없는가?
소스 코드에서 Guard와 관련된 것은 부여 시에만 소유자와 승인자가 설정할 수 있으며, Guard는 대체 승인을 설정할 수 없습니다.
한편, 이는 대체 승인자를 고려할 필요가 없기 때문입니다. 본질적으로 해당 NFT의 양도권이 Guard에 제한되기 때문입니다. 다른 한편으로는 Guard가 승인 설정을 할 수 없도록 하여, 수호자가 양도권을 반환한 후 오히려 approve를 통해 NFT를 이전하는 것을 방지합니다. 이는 원래 의도와 어긋나며, 사용자가 이를 발견하기 어려운 상황을 초래합니다.
3. 요약
금융 속성이 가득한, 약간 세속적인 통계를 통해 현재 이더리움 상의 NFT 유형 자산 개요를 제시합니다.
매일 30만 건 이상의 NFT 거래와 20만 건 이상의 다양한 NFT 계약이 이루어지고 있으며, 이러한 총 수치는 자산 권리 확인에 따른 금융 속성 가치를 보여줍니다.
그러나 언제나 금융 속성은 점차 의존해야 합니다. 우리는 NFT를 사용하여 사회적 관계를 확인하는 Lens를 볼 수 있고, NFT를 사용하여 게임 자산을 만드는 다양한 Gamefi를 볼 수 있으며, 콘텐츠 창작을 위해 분할 크라우드 펀딩을 활용하는 Mirror 등을 볼 수 있습니다.
이더리움이 세상에 나온 지 8년이 넘는 시간 동안, EIP 제안의 총 수는 6500개 이상에 달했습니다.
동일하게 중대한 4907과 비교할 때, 6147은 호환성 최적화에서 더 강력합니다.
예를 들어 4907이 임대를 수행할 때, 사용자 역할은 프로젝트의 적극적인 인정을 필요로 합니다. 만약 게임이 사용자 역할을 고려하지 않고 소유자만 고려한다면, 4907은 적합하지 않습니다. 그러나 6147은 소유자만 인정하면 충분하며, 게임 프로젝트와 NFT 자체가 임대를 지원하는지 여부는 신경 쓸 필요가 없습니다. 현재 대부분의 응용 프로토콜은 여전히 소유자만 인식하고 있으며, 이는 4907이 등장한 이후에도 상황을 크게 변화시키지 못한 이유입니다. 시대의 흐름에 적응해야만 점차 빛을 발할 수 있습니다.
또한 6147은 "관리 가능한 SBT"와 "유효한 SBT" 개념을 제시했습니다. 현재의 SBT 제안 설계는 Vitalik이 제안한 "양도 불가능" 특성에 너무 집중하고 있지만, NFT의 잠재적 관리 시나리오를 간과하고 있습니다. 예를 들어 사회적 복구, SBT 회수(예: 학문적 부정행위로 인해 학위를 회수해야 하거나, DAO 구성원이 커뮤니티에서 악행을 저질러 SBT 권한을 회수해야 하는 경우) 등이 있습니다.