const [walletAddress, setWalletAddress] = useState(null);
지갑 연결 상태를 저장하기 위해 useState
가 추가됐고
//연결 함수 추가
const connectWallet = async () => {
const { solana } = window;
if (solana) {
const response = await solana.connect();
console.log('Connected with Public Key:', response.publicKey.toString());
setWalletAddress(response.publicKey.toString());
}
};
//버튼 추가
const renderNotConnectedContainer = () => (
<button
className="cta-button connect-wallet-button"
onClick={connectWallet}
>
Connect to Wallet
</button>
);
버튼을 눌렀을 때 지갑이 연결될 수 있도록 connectWallet()
함수가 추가 됐다. solana.connect()
를 이용하면 생각보다 쉽게 사용자가 지갑을 연결할 수 있다.
이런 식으로 NFT를 만들 png 파일과 json
파일을 0번부터 원하는 갯수까지 만들고, json
파일에 아래 내용을 입력해준다. 아래쪽 creators의 주소에 자신의 팬텀 월렛 주소를 입력하고 creator fee를 설정해주면 된다.
{
"name": "Pretty Rustacean",
"symbol": "PRRT",
"image": "0.png",
"properties": {
"files": [
{
"uri": "0.png",
"type": "image/png"
}
],
"creators": [
{
"address": "YOUR PHANTOM WALLET",
"share": 100
}
]
}
}
웹 브라우저에 설치된 팬텀지갑과 달리 솔라나 데브넷에 NFT와 컨트랙트를 deploy 할 지갑을 만들어야 한다.
solana-keygen new --outfile ~/.config/solana/devnet.json
위 명령어로 keypair를 만들 수 있다. 명령어를 입력하면 만들어진 지갑의 public 주소와 seed phrase가 나온다.
solana config set --keypair ~/.config/solana/devnet.json
만들어진 keypair를 default 값으로 설정해주고
solana airdrop 2
데브넷에 deploy할 때 사용할 가스비를 받는다.
다음은 Candy machine을 설정해줄 confige.json
파일을 만들어준다. 위에서 만들었던 지갑 주소를 입력해주면 된다.
{
"price": 0.1, //nft 가격
"number": 3, //nft 갯수 입력
"gatekeeper": null,
"solTreasuryAccount": "<YOUR WALLET ADDRESS>", //지갑주소
"splTokenAccount": null,
"splToken": null,
"goLiveDate": "05 Jan 2021 00:00:00 GMT", //민팅 날짜
"endSettings": null,
"whitelistMintSettings": null,
"hiddenSettings": null,
"storage": "arweave", //nft 저장 위치. 여기서는 arweave로 저장.
"ipfsInfuraProjectId": null,
"ipfsInfuraSecret": null,
"awsS3Bucket": null,
"noRetainAuthority": false,
"noMutable": false
}
이제 asset
폴더가 있는 상위 폴더로 가서 아래 명령어를 입력해주면
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts upload -e devnet -k ~/.config/solana/devnet.json -cp config.json ./assets
Candy Machine 완성!