원글: https://steemit.com/hive-101145/@anpigon/20220504t144602352z
개발 환경
다음 도구의 최신 버전이 필요합니다.
Metaplex CLI 설치하기
Solana CLI는 이미 설치되어 있다고 가정합니다. Solana CLI 설치 방법은 여기를 참고하세요.
이번에는 Metaplex CLI를 설치합니다. Metaplex를 사용하면 Solana에 NFT를 발행할 수 있는 캔디 머신을 만들 수 있습니다.
다음 명령을 통해 Metaplex CLI 도구를 ~/metaplex 경로에 다운로드 합니다.
git clone https://github.com/metaplex-foundation/metaplex.git ~/metaplex
그다음 종속성을 설치합니다.
yarn install --cwd ~/metaplex/js/
Candy Machine CLI 명령을 실행하여 정상적으로 작동하는지 확인할 수 있습니다.
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts --version
현재(2022-05-04) 버전은 0.0.2 입니다.
솔라나 지갑
devnet 솔라나 지갑 설정하기
NFT를 솔라나 devnet에 업로드 하기 위해서는 솔라나 지갑이 필요합니다.
다음 명령을 통해 솔라나 지갑을 생성합니다.
solana-keygen new --outfile ~/.config/solana/devnet.json
그리고 다음 명령을 사용하여 이 솔라나 지갑을 기본 지갑으로 셋팅합니다.
solana config set --keypair ~/.config/solana/devnet.json
문제가 없다면 다음과 같이 출력됩니다.
Config File: /Users/anpigon/.config/solana/cli/config.yml
RPC URL: https://api.mainnet-beta.solana.com
WebSocket URL: wss://api.mainnet-beta.solana.com/ (computed)
Keypair Path: /Users/anpigon/.config/solana/devnet.json
Commitment: confirmed
솔라나 지갑 구성을 다시 확인 할 수 있습니다.
solana config get
그 다음 devnet에서 솔라나 잔액을 확인합니다.
solana balance --url devnet
아마 잔액은 0 SOL일 것입니다. SOL이 없으면 솔라나에 아무 것도 배포 할 수 없습니다.
devnet wallet에 에어드롭 받기
devnet은 faucet을 통해 솔라나를 에어드롭 받을 수 있습니다.
다음 명령을 사용하여 2 SOL을 에어드롭 받습니다.
solana airdrop 2 --url devnet
그다음 잔액을 조회하면 2 SOL이 조회됩니다.
solana balance --url devnet
현재 최대 에어드랍 요청 한도는 2 SOL 이며, 일일 총 한도는 24 SOL 입니다.
Metaplex 캔디 머신 config 설정하기
config.json 파일을 생성합니다.
config.json 설정 파일은 https://docs.metaplex.com/candy-machine-v2/configuration#minimal-configuration 를 참고합니다.
{
"price": 1.0,
"number": 10,
"gatekeeper": null,
"solTreasuryAccount": "<YOUR WALLET ADDRESS>",
"splTokenAccount": null,
"splToken": null,
"goLiveDate": "1 May 2022 00:00:00 GMT",
"endSettings": null,
"whitelistMintSettings": null,
"hiddenSettings": null,
"storage": "arweave-sol",
"ipfsInfuraProjectId": null,
"ipfsInfuraSecret": null,
"nftStorageKey": null,
"awsS3Bucket": null,
"noRetainAuthority": false,
"noMutable": false
}
- price: NFT 가격을 입력합니다.
- number: 발행할 NFT 개수를 입력합니다.
- solTreasuryAccount: 본인의 지갑 주소를 입력합니다. NFT 판매 대금을 받을 지갑 주소입니다.
- goLiveDate: NFT 발행 시각을 입력합니다.
- storage: NFT가 저장될 위치을 입력합니다. 여기서는 arweave는 NFT 이미지를 저장할 수 있는 서비스입니다.
발행할 NFT Assets 준비하기
여기에서 샘플 이미지와 json 파일를 다운로드 할 수 있습니다.
Asset은 1:1 맵핑으로 이루어진 .png 파일과 .json 파일 모음으로 구성됩니다.
이미지는 png 파일인 경우에만 캔디머신이 동작합니다.
json 파일은 metaplex를 실행하는데 필요한 메타데이터입니다. metaplex는 이 메타데이터를 사용하여 블록체인에 asset를 저장합니다. 이름, 심볼, 이미지와 같이 몇가지 정보만 제공하면 나머지는 metaplex가 알아서 처리합니다.
0.json 파일 구조를 살펴보면:
{
"name": "Number #0001",
"symbol": "NB",
"description": "Collection of 10 numbers on the blockchain. This is the number 1/10.",
"seller_fee_basis_points": 500,
"image": "0.png",
"attributes": [
{"trait_type": "Layer-1", "value": "0"},
{"trait_type": "Layer-2", "value": "0"},
{"trait_type": "Layer-3", "value": "0"},
{"trait_type": "Layer-4", "value": "1"}
],
"properties": {
"creators": [{"address": "6j4nNrozTJkk1zatiXHezSLZArnRUq3WkGKHACThXGpZ", "share": 100}],
"files": [{"uri": "0.png", "type": "image/png"}]
},
"collection": {"name": "numbers", "family": "numbers"}
}
- name에는 이름을 지정하여 고유한 NFT 를 만들 수 있습니다.
- creators는 여러명이 될 수 있습니다. 지금은 creator가 1명이므로 share를 100으로 설정하였습니다. address에는 본인의 지갑 주소를 입력합니다.
다음 명령을 사용하여 assets 파일에 문제가 없는지 확인 할 수 있습니다.
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts verify_assets ./assets
문제가 없고 검증에 성공했다면 다음과 같이 출력됩니다.
started at: 1651673067023
Verifying token metadata for 10 (img+json) pairs
Checking manifest file: /Users/anpigon/Desktop/assets/0.json
Checking manifest file: /Users/anpigon/Desktop/assets/1.json
Checking manifest file: /Users/anpigon/Desktop/assets/2.json
Checking manifest file: /Users/anpigon/Desktop/assets/3.json
Checking manifest file: /Users/anpigon/Desktop/assets/4.json
Checking manifest file: /Users/anpigon/Desktop/assets/5.json
Checking manifest file: /Users/anpigon/Desktop/assets/6.json
Checking manifest file: /Users/anpigon/Desktop/assets/7.json
Checking manifest file: /Users/anpigon/Desktop/assets/8.json
Checking manifest file: /Users/anpigon/Desktop/assets/9.json
ended at: Wed May 04 2022 23:04:27 GMT+0900 (Korean Standard Time). time taken: 00:00:00
캔디 머신 만들기
컬렉션이 준비되면 다음 단계는 Asset을 업로드하고 캔디 머신을 만드는 것입니다.
계속 하기 전에 다음을 한번 더 확인합니다.
- .png이미지와 .json메타데이터가 동일한 assets디렉토리에 있습니다.
- 지갑에 잔액이 있습니다. solana balance 명령으로 잔액을 확인합니다.
- Candy Machine config.json 파일을 생성했습니다.
이제 다음 명령을 사용하여 assets를 업로드 합니다.
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts upload \
-e devnet \
-k ~/.config/solana/id.json \
-cp config.json \
./assets
업로드에 성공하면 다음과 같이 출력됩니다.
터미널에서 initialized config for a candy machine with publickey에 출력된 address를 복사합니다. 이 주소가 NFT contract의 address가 입니다. 복사한 주소를 사용하여 explorer.solana.com 에서 조회합니다.
솔라나 devnet 에 업로드 된 것을 확인할 수 있습니다.
Candy Machine CLI를 사용하여 성공적으로 업로드 되었는지 확인할 수도 있습니다.
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts verify_upload \
-e devnet \
-k ~/.config/solana/devnet.json \
위 명령을 실행하고 나면 .cache/devnet-temp.json 파일이 자동 생성됩니다.
이 파일에는 우리가 방금 업로드한 NFT 정보를 포함하고 있습니다.
토큰 발행(Mint)하기
이제 캔디 머신으로 NFT토큰을 발행할 준비가 되었습니다. 캔디 머신을 생성한 지갑은 NFT토큰을 발행할 수 있습니다.
다음 명령을 사용하여 하나의 NFT토큰을 발행할 수 있습니다.
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token \
-e devnet \
-k ~/.config/solana/devnet.json
발행에 성공하면 다음과 같이 출력됩니다.
다음 명령을 사용하여 발행이 성공했는지 확인할 수 있습니다 .
spl-token accounts --url devnet
발행이 성공하면 지갑에 NFT토큰이 표시됩니다.
mint_multiple_tokens명령을 사용하면 여러개의 토큰을 한번에 발행할 수도 있습니다.
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts mint_multiple_tokens \
-e devnet \
-k ~/.config/solana/devnet.json \
--number 2
다음 시간에 React 웹 앱을 구촉하고, Phantom 지갑을 사용하여 NFT토큰을 발행하는 방법을 알아볼께요.
참고
'개발' 카테고리의 다른 글
깃헙(Github) 계정을 개인용&업무용 분리하여 사용하기 (0) | 2022.06.05 |
---|---|
최근에 아이맥이 너무 느려져서 외장 SSD에 MacOS를 설치했습니다. (0) | 2022.06.05 |
터미널에서 안드로이드 에뮬레이터 실행하기 (0) | 2022.04.12 |
솔라나 토큰 총 공급량 제한하기 & 토큰 소각하기 (0) | 2022.03.30 |
솔라나 Solana 토큰 발행하기 (0) | 2022.03.30 |