왜 디센트럴랜드 파운데이션 지갑으로 랜드를 옮겨야 할까
지난번에 디센트럴랜드 오프체인 랜드렌탈이 대강 어떻게 동작하는지 설명했습니다. 요약하면 디센트럴랜드에 랜드 렌탈 기능이 생겼는데 랜드는 NFT 형태이지만 NFT는 렌탈을 고려하고 설계되지는 않았습니다. 온체인으로 렌탈을 실행하기에는 소유권 이전 문제나 가스비 문제가 있어 디센트럴랜드 파운데이션이 중간에서 렌탈 계약에 일종의 보증을 해 주고 오프체인에서 계약이 이루어지는 형태를 선택했습니다. 랜드 오너가 디센트럴랜드 파운데이션 지갑으로 랜드 NFT를 전송하면 랜드 오너가 설정한 계약을 디센트럴랜드 파운데이션이 확인하고 렌탈 받을 사람이 확인하면 계약이 성립됩니다.
이런 내용을 팀에 브리핑 할 때 왜 디센트럴랜드 파운데이션 지갑에 랜드 NFT를 전송해야 하는지 질문을 받았습니다. 이 질문에는 블록체인에 연동된 게임을 개발하면서 블록체인 상의 NFT가 인게임 아이템으로 나타날 때 일어나는 온갖 괴상한 문제를 대변하는 중요한 질문입니다. 왜 랜드를 렌탈하기 위해 디센트럴랜드 파운데이션 지갑으로 랜드를 옮겨야 할까요? 먼저 질문 자체를 이해하려면 블록체인 상의 NFT가 인게임 아이템 모양으로 나타나는 상황을 이해해야 합니다.
전통적인 게임의 게임 아이템은 게임 규칙에 의해 발행되고 게임 제작사가 보증하는 데이터베이스 상에 존재하며 게임 규칙에 따라 형태가 변하고 마지막으로 게임 규칙에 따라 소멸됩니다. 이 과정에 외부 요소가 개입할 여지가 전혀 없습니다. 가령 게임 내에서 몬스터를 잡아 생성된 무기는 제작사가 설계한 방식으로 데이터베이스에 추가되어 플레이어에게 게임 내 소유권이 이전 됩니다. (엄밀히 말해 유저는 아이템의 소유권이 아닌 사용 권한을 얻게 되지만 여기서는 단순히 소유권이라고 표현하겠습니다.) 이 무기를 강화하면 다시 제작사가 설계한 방식으로 데이터베이스 상 정보가 수정되고요. 플레이어가 새로운 더 높은 등급 무기를 구해 그 무기를 강화하려고 할 때 이 무기를 강화 재료로 사용하려고 할 때 기존 무기를 데이터베이스에서 삭제하고 무기를 분해한 재료가 데이터베이스에 추가되어 플레이어에게 소유권이 이전 되며 분해된 무기는 사라져 플레이어가 소유하지 않게 됩니다. 이 과정엔 복잡한 부분이 없습니다.
블록체인에 연동된 게임에서 무기가 NFT 형태로 발행된다면 이야기는 상당히 달라집니다. 무기는 인게임 상에서는 게임 규칙에 따라 동작하지만 동시에 블록체인 상의 규칙에 따라 동작하기도 해야 하며 이 두 가지 규칙에 따라 같은 대상의 형태가 변함에 따라 게임 상에서 동작이 달라져야 할 수 있습니다. 가령 게임 내에서 몬스터를 잡아 생성된 무기는 제작사가 설계한 방식으로 데이터베이스에 추가됩니다. 여기까지는 전통적인 게임과 다르지 않습니다. 게임에 따라 이 무기 아이템을 일단 전통적인 방식으로 데이터베이스에 추가하기만 하기도 하고 처음부터 블록체인 상에 NFT 형태로 발행한 다음 플레이어에게 소유권을 이전하기도 합니다.
게임에 따라서는 먼저 전통적인 방식으로 발행하되 유저의 선택에 따라 NFT 형태로 발행하기도 하는데 여기서는 이 정책을 사용한다고 가정하고 설명하겠습니다. 유저는 어느 순간 무기를 블록체인 상에 NFT로 발행합니다. 아마도 무기의 소유권을 다른 유저에게 이전하기로 결정했을 겁니다. 이 순간 게임 입장에서 무기는 두 가지 형태의 데이터로 분리됩니다. 게임 데이터베이스에 기록된 형태와 블록체인에 기록된 형태입니다. 게임 상에서 무기가 사용될 때마다 아이템을 검증하기 위해 블록체인에 접근하는 것은 안전하지만 효율적이지는 않습니다. 현대에 게임들이 유틸리티에 주로 사용하는 폴리곤 블록체인을 보면 분명 트랜잭션이 느리지는 않지만 여전히 게임이 요구하는 만큼 빠르지 않고 응답 속도가 일관되지도 않습니다.
그래서 아이템은 전통적인 방식에 따라 게임 데이터베이스에 기록되어 게임 진행은 게임 데이터베이스에 의존하고 적당한 시점마다 블록체인을 통해 아이템의 유효성을 검증합니다. 게임을 플레이 함에 따라 무기 아이템의 상태는 게임 데이터베이스 상에서 변경됩니다. 하지만 게임 데이터베이스와 관계 없이 블록체인 상에서 아이템 데이터가 변경될 수 있습니다. 가장 흔한 사례는 블록체인 상의 무기 아이템 NFT의 소유권이 변경되는 것입니다. 만약 내 무기 NFT를 마켓플레이스에 올려 놓은 상태일 때 게임 상에서 이 아이템을 장착하고 한참 전투 하고 있었는데 전투가 끝나기 전에 마켓플레이스에서 아이템이 판매되어 소유권이 이전 되었다면 어떻게 해야 할까요? 위에 설명한 시나리오에 따르면 크게 복잡하지는 않습니다. 게임은 아이템의 소유권이 변경되었음을 조금 늦게 눈치 채겠지만 블록체인에 유효성을 확인하는 시점에 아이템은 더 이상 현재 유저의 소유가 아니므로 게임 상에서 아이템을 제거하면 됩니다.
디센트럴랜드 랜드 렌탈을 사용하려면 내가 소유한 랜드 NFT를 디센트럴랜드 파운데이션으로 전송해야 하는 이유는 이 시나리오와 비슷합니다. 랜드 렌탈이 단순하고 안전한 형태로 성립하려면 렌탈 중인 랜드의 소유권이 변경되지 않아야 합니다. 실제 세계에서 부동산은 임대 중이더라도 소유권이 변경될 수 있습니다. 하지만 여러 위험이 따릅니다. 다음 소유주가 이전 소유주와 맺은 계약을 인정하지 않아 문제가 생기거나 임차인이 모르는 상태에서 임대물의 상태가 바뀌어 심각한 금전적 손해를 겪기도 합니다. 랜드 렌탈도 같은 시나리오에 놓일 수 있습니다. 랜드를 렌탈한 상태이더라도 랜드 오너가 랜드 NFT를 블록체인 상에서 판매해 소유권이 변경될 수 있습니다. 새로운 소유주는 게임 상에서 자신의 랜드를 직접 사용하려 할 수 있는데 이 때 이 랜드는 이미 이전 소유주와 체결된 계약에 의해 사용 중입니다. 이런 상황을 게임 규칙에 따라 제어하려고 하면 당사자들 중 누군가는 상황을 납득할 수 없거나 모두를 납득 시키기 위한 이상하고 복잡한 규칙을 고안해야 할 수 있습니다. 별로 마주하고 싶은 상황이 아닙니다.
랜드를 렌털 하기 위해서는 먼저 랜드 NFT를 디센트럴랜드 파운데이션 지갑으로 전송해야 합니다. 블록체인 상에서 소유권이 변경되지만 디센트럴랜드 파운데이션이 이 동작에도 불구하고 랜드 소유권을 보증합니다. 일단 디센트럴랜드 파운데이션으로 소유권이 변경된 다음에는 렌탈이 끝나기 전에는 랜드 오너가 랜드를 다시 자신의 지갑으로 돌려 받을 수 없습니다. 이를 통해 게임 내 규칙에 따라 동작하던 랜드가 블록체인 상에서 상태가 변경되어 게임 규칙이 따라잡을 수 없는 상태가 되는 상황을 완전히 없앴습니다. 이 방법은 그럭저럭 납득할 수 있긴 하지만 디센트럴랜드 파운데이션이라는 중앙화된 대상을 신뢰해야만 합니다. 오프체인 렌탈 계약은 블록체인과 무관하므로 디센트럴랜드 파운데이션이 없어지더라도 랜드 오너의 소유권을 유지할 수 있지만 렌탈을 위해 이전한 소유권은 이전보다는 덜 안전한 상태에 놓였다고 볼 수도 있습니다.
미래에 우리가 비슷한 게임 시스템을 설계한다면 이 사례를 교훈 삼아야 합니다. 디센트럴랜드가 이런 방식을 선택한 이유는 이전에 렌탈을 고려하지 않고 랜드 NFT의 컨트랙트를 설계했기 때문일 것입니다. 스마트 컨트랙트는 일단 배포하고 나면 수정이 아주 까다로워 랜드 오너의 소유권을 유지하면서도 렌탈이 동작하는 새로운 컨트랙트로 이전 시키는 시나리오를 실행할 엄두를 내지 못했을 겁니다. 렌탈 처럼 게임에 큰 영향을 끼칠 시나리오라면 첫 컨트랙트를 만들 때 이를 예상해 반영하는 것이 가장 좋습니다. 하지만 만약 이럴 수 없다면 디센트럴랜드 같은 방식을 선택할지 아니면 NFT를 마이그레이션 하는 시나리오를 선택할지 고민해야 할 겁니다.
결론. 디센트럴랜드에서 랜드를 렌탈하기 위해 블록체인 상에서 랜드 소유권을 이전해야 하는 이유는 게임 상 랜드의 상태가 블록체인 상에서 변경될 수 있고 이 상태 변경을 게임 상에서 반영하는데 복잡한 규칙이 필요할 수 있기 때문에 처음부터 이런 상황을 만들지 않기 위한 것입니다. 미래에 비슷한 게임 시스템을 설계한다면 이 정도 규모의 요구사항을 미리 예측하는 것이 가장 좋으며 그렇지 못했다면 디센트럴랜드와 같은 방식이나 마이그레이션 시나리오 중 어느 한 쪽을 선택해야 합니다.