클레이튼 개발환경에서 NFT 개발
KIP - 17
ERC-721와 같은 내용을 담고있는 KIP가 KIP-17합니다.
ERC-721에는 Identity를 검증하는 ERC-165가 포함되어있는데 이를 KIP에서는 KIP-13으로 검증합니다.
개발은 아래의 공식 라이브러리를 참고하며 진행됩니다.
https://ko.docs.klaytn.com/
이더리움 remix와 유사한 Klaytn IDE를 사용합니다.
https://ide.klaytn.com/#optimize=false&runs=200&evmVersion=london&version=soljson-v0.8.7+commit.e28d00a7.js
.sol 로 컨트랙트 파일을 만들어줍니다.
// 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;
}
}
KIP17Full 은 KIP17, KIP17Enumerable, KIP17Metadata를 상속합니다.
예시 코드와는 별개로 MyNFTs배포를 위해서는 아래의 긴 코드가 필요합니다.
MyNFTs Full Code
코드를 붙여넣고, 코드를 컴파일하고 배포합니다.
Truffle로 KIP-17 배포하기
클레이튼은 이더리움을 포크한 네트워크이기 때문에, Truffle
과 Ganache
같은 이더리움 기반 환경을 그대로 사용할 수 있습니다.
# 폴더 생성
mkdir kip17
# 폴더 진입
cd kip17
# truffle 초기화
truffle init
# npm 초기화
npm init
클레이튼 테스트넷 바오밥(Baobab)
- 바오밥 네트워크 등록
# truffle-hdwallet-provider-klaytn과 dotenv를 설치
npm install truffle-hdwallet-provider-klaytn dotenv --save-dev
배포에 사용할 지갑의 개인키를 입력합니다.
PRIVATE_KEY="YOUR_PRIVATE_KEY_HERE"
truffle-config.js
파일에서 다음과 같이 수정
const HDWalletProvider = require('truffle-hdwallet-provider-klaytn');
require('dotenv').config();
const { PRIVATE_KEY } = process.env;
const URL = 'https://api.baobab.klaytn.net:8651';
module.exports = {
networks: {
ganache: {
host: '127.0.0.1', // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
network_id: '*', // Any network (default: none)
},
baobab: {
provider: new HDWalletProvider(PRIVATE_KEY, URL),
network_id: 1001,
gas: 20000000,
gasPrice: 25000000000,
},
}
};
1_initial_migration.js 파일 편집
const Migrations = artifacts.require('Migrations');
const MyNFTs = artifacts.require('MyNFTs.sol'); // MyNFTs.sol 파일 추가
module.exports = function (deployer) {
deployer.deploy(Migrations);
deployer.deploy(MyNFTs); // MyNFTs를 배포에 추가
};
ganache-cli 를 실행
ganache-cli
Ganache에 컨트랙트를 배포
truffle migrate --compile-all --network ganache
배포를 마쳤으면, 배포된 컨트랙트와 연결하여 NFT를 발행
truffle console --network ganache
Truffle 콘솔이 실행되면, 배포된 컨트랙트의 인스턴스를 요청합니다. 그리고 새로운 NFT를 민팅합니다.
회고
solidity를 활용한 스마트 컨트랙트 개발은 재밌지만 굉장한 정교함이 요구되는 것 같다. 블록체인의 특성상 한 번 온 체인에 올라가면 수정이 불가능하기 때문이기도 하고 금전적으로 연결돼있기 때문이기도 하다. 이러한 특성을 십분 활용할 줄 아는 실력자라면 이 분야에서 재능을 발휘할 수 있을 것 같고 큰 부가가치를 창출해 낼 것 같다. 위의 개발 과정은 간단한 편의 예제이기 때문에 무리 없이 진행할 수 있지만 지금 하고 있는 프로젝트를 제대로 선보이기 위해서는 solidity를 더 깊게 봐야 할 것이다.
Author And Source
이 문제에 관하여(클레이튼 개발환경에서 NFT 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vinson/클레이튼-개발환경에서-NFT-개발저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)