
클레이튼 개발환경에서 NFT 개발
이번시간에는 클레이튼 네트워크에서 사용되는 NFT, KIP-17을 개발을 해보도록 하겠습니다.
<개발을 위한 몇 가지 링크>
Klaytn IDE
KIP-17
KIP-17 contracts
전체코드
ERC-721을 이용해 이더리움 기반의 스마트 컨트랙트를 만들었던 것처럼, 클레이튼 기반의 스마트 컨트랙트를 생성하기 위해서는 KIP를 사용해야 하는것을 알수 있었습니다. ERC-721과 같은 내용인 KIP는 KIP-17이고, ERC-721에는 Identity를 검증하는 ERC-165가 포함되어 있는 것을 알 수 있었습니다.
1. Klaytn IDE에서 KIP-17 개발하기
1) Klaytn IDE에 접속하고, 새로운 파일을 생성하겠습니다.
2) Klaytn IDE의 왼쪽 상단에서, + 버튼을 누릅니다. 생성할 파일의 이름을 입력하고, OK 버튼을 누릅니다.
3) 이더리움 기반의 스마트 컨트랙트와 달리, 클레이튼 기반의 스마트 컨트랙트는 KIP를 사용한다는 것을 알 수 있었습니다. 따라서 ERC-721 스마트 컨트랙트를 그대로 사용할 수 없고, ERC-721의 코드를 가져와 다음과 같이 수정해보겠습니다.
// ERC721에서 KIP17로 수정합니다.
contract MyNFTs is KIP17Full, Ownable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
// ERC721을 KIP17Full로 수정합니다.
constructor() public KIP17Full("MyNFTs", "MNFT") {}
function mintNFT(string memory tokenURI)
public
onlyOwner
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(msg.sender, newItemId);
_setTokenURI(newItemId, tokenURI);
return newItemId;
}
}
4) 수정된 이 코드만으로는 Klaytn IDE를 통해 배포할 수 없었고, MyNFTs의 부모 객체를 모두 작성하여야 문제없이 동작할 수 있었습니다.
<두 가지 유의사항 참고>
-Klaytn IDE에서는 한 페이지에서 코드를 구현
-Klaytn 기반의 스마트 컨트랙트는 KIP를 사용
예시의 코드는 굉장히 짧지만, MyNFTs를 배포하기 위해 조금 긴 코드가 필요하다는 것을 알 수 있었습니다.
다음의 링크를 통해 코드를 복사하고, Klaytn IDE에 붙여넣으면 됩니다.
MyNFTs Full Code
2. Klaytn IDE에서 KIP-17 배포하기
**
1) Klaytn IDE의 화면 오른쪽에 위치한 탭 중에서, Compile에서 컴파일을 진행하면 됩니다.
2) Start to compile 버튼을 눌러 컴파일을 진행하고, 잠시 대기!!
3) 컴파일이 완료되면, 화면의 오른쪽 하단에서 MyNFTs가 발견됨!!
cf) 이때 에러가 발생하면 띠의 색깔이 빨간색으로 나타나게 됩니다.
4) Run 탭을 선택하고, Account를 연결하면 끝
5) Klaytn IDE에서 지갑을 연결하려면, 개인키 또는 Keystore 파일이 필요합니다.

6) Run 탭에서 Deploy 버튼 위의 드랍다운을 클릭하고, 배포하려는 컨트랙트를 선택합니다.

7) 배포하려는 컨트랙트를 선택하고, Deploy 버튼을 눌러 배포합니다. 배포가 완료되면 하단의 콘솔에서 확인할 수 있습니다.
**
개발회고
앞서 Truffle을 이용한 ERC-721 보단 계정을 연결하면 되는거라 개발 및 배포하기 쉬웠지만, 100% 이해되지 못하고 넘어가는 부분이 꽤 있었습니다. 코드부분을 반복학습해서 이해하겠습니다. 하지만 KIP와 ERC가 코드는 유사하지만 이름은 모두 다르다는 점에 대해 지난번 실습때는 이해가 부족했지만, 블로깅을 통한 반복학습으로 KIP가 기본적으로 ERC를 포크해서 사용한다는 점에 대해 숙지 하였습니다. 단순한 논리지만, 어릴적에 왜 학교에서 일기 숙제를 내주었는지 그 힘에 대해 다시한번 놀라움을 깨닫습니다. 이번이 2번째 블로깅인데 지난 학습한 과정들을 다시 돌아보며 스스로 학습상태에 대해 점검해보는 시간을 가지려합니다.