NFT를 발행하는 다양한 방법(작성중)

haesim·2022년 8월 16일
1

NFT를 배포하는 다양한 방법

NFT 배포? 발행?

지난번 Card Minting API와 KIP-17 기반 Minting의 차이점을 설명하면서 아래와 같이 설명하였다.

KIP-17 기반 Minting의 경우에는 Klaytn IDE를 통해서 직접 스마트컨트랙트를 구현하고 배포, 관리해야하며 KAS를 통해 API요청을 진행한다.

그렇다면, "KIP-17 기반으로 NFT를 발행하려면, Klaytn IDE가 유일한 방법이라고?" 라는 의문이 들 수 있다. 결론부터말하면, 아니다. 원리적으로는 Klaytn 네트워크에 EOA가 KIP-17 기반 CA를 생성하는 트랜잭션을 발생시키는 모든 방식이 가능하다.

이번 포스팅에서는 간략하게 NFT (스마트컨트랙트) 배포, NFT 발행의 의미와 작동원리, 그리고 종류와 특징에 대해서 알아보고자 한다.

1. NFT 배포(Deploy)란?

NFT를 관리하는 스마트컨트랙트를 배포하는 행위

  • NFT를 발행(Minting)하기 위해서는 먼저 해당 NFT(KIP-17) 스마트 컨트랙트가 클레이튼 네트워크 상에 배포가 되어있어야 한다. 배포를 한다는 것은 모든 트랜잭션을 발생시키는 주체인 EOA에서 CA를 생성하는 트랜잭션을 생성한다는 것을 의미한다.

  • 이 CA에 있는 스토리지 트리에 발행되는 NFT들이 저장된다. 또한 스마트컨트랙트에는 이 NFT들을 관리(발행, 삭제, 전송)하는 기능을 포함하는 코드해시 정보가 저장되어 있기 때문에, 특정 NFT는 스마트컨트랙트에 의해 관리된다라고 말할 수 있다.

2. NFT 발행(Minting)이란?

배포된 스마트컨트랙트를 기반으로 NFT를 발행하는 행위

  • 네트워크(Klaytn의 경우 Cypress)에 배포된 스마트컨트랙트의 메소드를 이용하여 NFT 토큰을 발행(Minting)하는 과정을 NFT 발행이라고 통칭한다.
  • 스마트컨트랙트 중, _mint() 라는 내부함수를 이용하여, NFT 스마트컨트랙트의 Storage에 신규 토큰을 생성하여 저장하게 된다.

3. NFT 배포와 발행은 독립적이다

결론부터 말하자면, 기술적으로 NFT의 배포와 발행은 독립적이다.

이전 포스팅에서 살펴본 Klip 서비스를 기준으로 NFT의 배포와 관리(발행, 전송)을 생각하면, 배포 방식과 발행을 하는 것이 관련이 있다고 오해 할 수 있다.

왜냐하면 Klip 서비스의 경우, Klip Minting API에서 배포와 발행을 모두 API로 지원하여 일원화된 사용자(개발자) 경험을 제공하기 때문일 것이다.

하지만, 앞서 설명하였듯이 NFT배포는 단순히 스마트 컨트랙트를 블록체인 네트워크상에 올려놓는 행위이고, 발행은 올라간 스마트컨트랙트를 활용하는 하나의 방법 중 하나이다.

NFT를 배포하는 방법

1. Klaytn IDE

Klaytn 스마트 컨트랙트를 위한 브라우저 기반 컴파일러 및 IDE

  • Klaytn IDE는 가장 대표적인 Klaytn 스마트컨트랙트 개발통합환경이다. Ethereum용 브라우저 기반 IDE인 Remix에서 Fork되어 개발되었고, 사용법도 동일하다.(왼쪽이 Klaytn IDE, 오른쪽이 Remix)
  • Klaytn IDE도 접속해도 Remix라고 뜬다. 동일하게 에디터를 제공하고 있으며, 스마트컨트랙트 테스트, 배포, 실행이 가능하다.

2. Truffle

Node.js에서 동작하는 이더리움 기반 스마트컨트랙트 개발 프레임워크

  • Truffle은 대표적인 Ethereum 스마트컨트랙트 개발 프레임워크이다. Remix와 마찬가지로, 스마트컨트랙트를 배포, 테스트할 수 있다는 점은 동일하다. 하지만, Truffle의 경우에는 어떤 프로젝트에 Dependency로 포함되어 빌드될 수 있다.
  • 그렇기 때문에, 만약 프론트엔드에서 스마트컨트랙트 기능을 포함하여 구축할 수 있다. 보통 Remix가 제공하는 Editor를 이용하여 스마트컨트랙트를 작성하고, Truffle로 배포하는 경우가 많다고 한다.

3. VVISP

cli로 환경을 구성하고 배포 및 실행 가능

  • VVISP은 해치랩스에서 개발한 CLI환경의 스마트컨트랙트 개발툴이다. 단일 CLI 명령만으로 환경구성 및 설정파일 생성을 통해 배포까지 가능하다.

4. solc & Caver

solc로 컨트랙트를 수동으로 컴파일하고, Caver 라이브러리를 통해 컨트랙트를 배포

  • solc은 스마트컨트랙트 파일(<name>.sol)을 컴파일 하는 라이브러리이다. solc을 이용하여 스마트컨트랙트 파일을 바이트코드로 컴파일 할 수 있다.
  • Caver는 Klaytn SDK의 이름이다. 바이트코드로 컴파일된 스마트컨트랙트를 배포하는 트랙잭션을 Klaytn 네트워크에 발생시킬 수 있다.

5. KAS(작성중)

Klaytn 네트워크에 API로 접근하여

  • 상업용으로 권장하지 않음.(개인키를 코드상에 직접 삽입하여 처리하기 때문?)

NFT를 발행하는 방법

기본적으로 NFT를 발행한다는 것은 "블록체인 네트워크에 배포된 스마트 컨트랙트의 발행 메소드를 실행하여 NFT컨트랙트의 Storage에 저장하는 트랜잭션을 발생시키는 것을 의미한다" 라고 하였다.
즉, 어떤 방식을 사용하던지 기술적인 최종과정은 동일하다는 것이다. 그렇다면 해당 과정에 도달하는

1. 직접 배포한 스마트컨트랙트를 이용하여 발행하는 경우

메인넷의 스마트컨트랙트에 직접 접근하여 발행 메소드를 동작하는 방식

2. 특정 서비스에서 만들어진(혹은 통해서 배포된) 스마트컨트랙트를 이용하여 발행하는 경우

특정 서비스가 제공하는 API를 경유하여 메인넷의 스마트컨트랙트에 접근하여 발행 메소드를 동작하는 방식

  • OpenSea
  • Krafter Space

QDL

NFT를 배포하는 방법의 종류는 무엇이있을까?

NFT를 배포 / 발행하는 방식을 간단하게 설명하면?

NFT가

profile
haesim

0개의 댓글