지난번 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 발행의 의미와 작동원리, 그리고 종류와 특징에 대해서 알아보고자 한다.
NFT를 관리하는 스마트컨트랙트를 배포하는 행위
NFT를 발행(Minting)하기 위해서는 먼저 해당 NFT(KIP-17) 스마트 컨트랙트가 클레이튼 네트워크 상에 배포가 되어있어야 한다. 배포를 한다는 것은 모든 트랜잭션을 발생시키는 주체인 EOA에서 CA를 생성하는 트랜잭션을 생성한다는 것을 의미한다.
이 CA에 있는 스토리지 트리에 발행되는 NFT들이 저장된다. 또한 스마트컨트랙트에는 이 NFT들을 관리(발행, 삭제, 전송)하는 기능을 포함하는 코드해시 정보가 저장되어 있기 때문에, 특정 NFT는 스마트컨트랙트에 의해 관리된다라고 말할 수 있다.
배포된 스마트컨트랙트를 기반으로 NFT를 발행하는 행위
_mint()
라는 내부함수를 이용하여, NFT 스마트컨트랙트의 Storage에 신규 토큰을 생성하여 저장하게 된다.결론부터 말하자면, 기술적으로 NFT의 배포와 발행은 독립적이다.
이전 포스팅에서 살펴본 Klip 서비스를 기준으로 NFT의 배포와 관리(발행, 전송)을 생각하면, 배포 방식과 발행을 하는 것이 관련이 있다고 오해 할 수 있다.
왜냐하면 Klip 서비스의 경우, Klip Minting API에서 배포와 발행을 모두 API로 지원하여 일원화된 사용자(개발자) 경험을 제공하기 때문일 것이다.
하지만, 앞서 설명하였듯이 NFT배포는 단순히 스마트 컨트랙트를 블록체인 네트워크상에 올려놓는 행위이고, 발행은 올라간 스마트컨트랙트를 활용하는 하나의 방법 중 하나이다.
Klaytn 스마트 컨트랙트를 위한 브라우저 기반 컴파일러 및 IDE
Node.js에서 동작하는 이더리움 기반 스마트컨트랙트 개발 프레임워크
cli로 환경을 구성하고 배포 및 실행 가능
solc로 컨트랙트를 수동으로 컴파일하고, Caver 라이브러리를 통해 컨트랙트를 배포
<name>.sol
)을 컴파일 하는 라이브러리이다. solc을 이용하여 스마트컨트랙트 파일을 바이트코드로 컴파일 할 수 있다.
Klaytn 네트워크에 API로 접근하여
기본적으로 NFT를 발행한다는 것은 "블록체인 네트워크에 배포된 스마트 컨트랙트의 발행 메소드를 실행하여 NFT컨트랙트의 Storage에 저장하는 트랜잭션을 발생시키는 것을 의미한다" 라고 하였다.
즉, 어떤 방식을 사용하던지 기술적인 최종과정은 동일하다는 것이다. 그렇다면 해당 과정에 도달하는
메인넷의 스마트컨트랙트에 직접 접근하여 발행 메소드를 동작하는 방식
특정 서비스가 제공하는 API를 경유하여 메인넷의 스마트컨트랙트에 접근하여 발행 메소드를 동작하는 방식
- OpenSea
- Krafter Space