0xmons (XMON)는 생성적 픽셀 아트와 블록체인 수집품을 결합한 실험적인 NFT 프로젝트입니다. 이는 밈과 포켓몬의 조합이지만 30% 더 많습니다. 신경망으로 생성된 픽셀 몬스터를 소환하기 위한 NFT 플랫폼입니다.[2][3]
0xmons는 신경망으로 생성된 픽셀 몬스터를 소환하기 위한 NFT 플랫폼입니다. (XMON)은 암호화폐이며 이더리움 (ETH) 플랫폼에서 운영됩니다.
각 작품은 생성적 적대 신경망(GAN)에 의해 생성됩니다. 이를 통해 각 NFT는 완전히 고유하며, NFT 데이터를 완전히 온체인에 등록할 수 있는 옵션이 있습니다.[1]
사용자는 #0부터 시작하여 지금까지 생성한 모든 0xmons를 볼 수 있습니다. 0xmons NFT를 발행하는 사용자는 수집품 전체(이름, 이미지, 로어)를 온체인에 인코딩하도록 선택할 수 있습니다.[1]
이러한 NFT 픽셀 아트는 GAN의 미친 악몽에서 만들어집니다. 애니메이션에서 절차적으로 형성됩니다. 그 이름은 빅 랭귀지 모델에서 가져옵니다. 완전히 무작위가 아닌 비트는 이더리움 블록체인에서 수집됩니다.[1]
0xmons NFT의 목표는 OG의 함정에 의존하지 않고 새로운 가치 있는 NFT 자산 클래스를 부트스트랩하는 것입니다. 희소성, 미학, 생성 과정 및 기술의 조합이 바람직한 기본적인 이유입니다.
주력 NFT 외에도 더 넓은 NFT 생태계의 다른 가치 있는 조각을 만들기 위해 노력하고 있습니다. 번들러를 사용하면 NFT가 범용 자산 바구니가 될 수 있으며, 멀티센더를 사용하면 모든 토큰을 어디든 저렴하게 보낼 수 있습니다.[3]
현재 NFT 기술을 확장하고 (XMON) 토큰에 유틸리티를 제공하며 멋진 것들을 많이 만들기 위해 더 많은 방법을 연구하고 있습니다.
0xmons는 구성 가능한 의미의 생성적 프로젝트가 아니며, 이미지는 생성적 모델에서 가져옵니다. 그러나 이미지는 모든 라이브러리 및 모델 매개변수를 고려하여 최소 1기가바이트 크기의 GAN에서 생성됩니다.
모델 매개변수를 계약 스토리지에 직접 저장할 방법이 없으며, 모든 작업을 수행하는 데 필요한 까다로운 행렬 곱셈 라이브러리를 구현하는 것은 훨씬 더 어렵습니다.
또한 이미지는 더 작은 이미지에서 빌드되지 않으므로 부스트를 제공하기 위해 어떤 형태로든 사전 계산에 의존할 수도 없습니다.[1]
그들이 사용한 솔루션은 GAN을 온체인으로 이동시키지 않습니다. 또한 직접 이미지를 계약 스토리지로 이동시키지도 않습니다. 대신 2017년 블록체인에 가슴을 넣는 프로젝트에서 몇 가지 메모를 가져왔습니다. 그들은 저렴한 콜데이터를 악용할 예정이었습니다.[2]
또한 0xmon 이미지를 직접 저장하는 것은 매우 실현 가능하지 않습니다. 모델은 온체인에 저장할 수 없습니다(24kb 제한을 명확하게 초과하기 때문). 이미지를 더 작은 조각으로 구성할 수 없는 이유(이미지를 만드는 데 사용되는 구성이 없기 때문)도 있습니다.
이 모든 것의 이유는 물론 가스 비용입니다. 현재 uint256(즉, 256비트 = 32바이트)을 스마트 계약 스토리지에 직접 저장하는 데 20,000 가스가 소요됩니다.
무손실 GIF 압축을 사용하더라도 0xmons 이미지의 크기는 10kb에서 50kb까지 다양합니다. 매우 조밀한 패킹을 가정할 때 전체 쓰기를 수행하는 데 드는 비용은 여전히 약 6,000,000 가스이며, 이는 블록 가스 제한의 약 절반입니다. 그리고 그것은 가장 보수적인 측면에서만 그렇습니다!
계약 스토리지는 비싸지만 콜데이터 스토리지는 그렇지 않습니다. 2019년 EVM 업데이트로 바이트 저장 가스 비용이 16 가스로 변경되었습니다. 즉, 전체 0xmons 애니메이션을 업로드하면 약 400,000에서 2,000,000 가스의 비용이 발생합니다. 이것은 훨씬 더 관리하기 쉽습니다. 그러나 이것은 또한 절충점이 발생하는 곳입니다. 계약 스토리지는 항상 액세스할 수 있습니다. 콜데이터는 그렇지 않습니다. 콜데이터는 전체 노드에서만 저장되며 블록체인을 정확하게 재현하는 데 필요하지만 빠른 노드 및 라이트 클라이언트에는 저장되지 않을 수 있습니다.[1]
콜데이터는 함수에 전달되는 입력을 나타내므로 데이터를 기록하기 위해 함수 호출만 하면 됩니다. 하지만 데이터를 어떻게 액세스할까요? 각 트랜잭션을 고유하게 식별하는 트랜잭션 해시를 통해 액세스할 수 있습니다. 거기에서 입력 필드를 통해 uploadMon 함수 호출에 전달된 매개변수를 볼 수 있습니다.[2]
이 트랜잭션에서 데이터 필드에서 전달된 바이트는 하나의 0xmon에 대한 데이터를 인코딩하며, 노드에 대한 연결이 가능한 한 선택한 모든 프런트 엔드에서 액세스할 수 있습니다. Infura 및 Etherscan과 같은 도구를 사용하면 일반적으로 이러한 정보를 사용할 수 있습니다. 그러나 이 데이터는 다른 스마트 계약에서도 사용할 수 없습니다. 이것은 콜데이터를 사용하는 또 다른 단점입니다(전체 노드에 대한 연결 가능성 외에). 0xmons 프로젝트의 경우 전체 애니메이션을 가장 저렴하게 인코딩할 수 있도록 절충할 가치가 있다고 결정했습니다.[3]
그런 다음 입력이 저장되면 트랜잭션 해시를 계약의 매핑에 저장하여 나중에 어떤 해시를 조회해야 하는지 쉽게 알 수 있습니다. 불행히도 또 다른 문제가 있습니다. 트랜잭션은 자체 해시에 액세스할 수 없습니다. 즉, 데이터를 저장(입력을 통해)하고 하나의 함수 호출에서 온체인 매핑을 업데이트할 수 없습니다. 따라서 실제로 발생하는 것은 다음과 같습니다. 먼저 인코딩된 데이터를 저장하기 위해