|
|
@@ -0,0 +1,579 @@
|
|
|
+---
|
|
|
+title: ๋ฏผํ
|
|
|
+metaTitle: ๋ฏผํ
| Candy Machine
|
|
|
+description: Candy Machine์์ ๋ฏผํ
ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ฏผํ
์ ์๊ตฌ์ฌํญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
|
|
|
+---
|
|
|
+
|
|
|
+์ง๊ธ๊น์ง Candy Machine์ ์์ฑํ๊ณ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ค์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ ๋ฐ ๊ฐ๋ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋ฏผํ
์ํฌํ๋ก๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์์ต๋๋ค. ์ด์ ํผ์ฆ์ ๋ง์ง๋ง ์กฐ๊ฐ์ธ ๋ฏผํ
์ ๋ํด ์ด์ผ๊ธฐํ ๋์
๋๋ค! {% .lead %}
|
|
|
+
|
|
|
+## ๊ธฐ๋ณธ ๋ฏผํ
|
|
|
+
|
|
|
+[Candy Guards ํ์ด์ง](/kr/candy-machine/guards#why-another-program)์์ ์ธ๊ธํ๋ฏ์ด Candy Machine์์ NFT๋ฅผ ๋ฏผํ
ํ๋ ๋ฐ ์ฑ
์์ด ์๋ ๋ ๊ฐ์ง ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค: NFT ๋ฏผํ
์ ๋ด๋นํ๋ Candy Machine Core ํ๋ก๊ทธ๋จ๊ณผ ๊ทธ ์์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ก์ธ์ค ์ ์ด ๊ณ์ธต์ ์ถ๊ฐํ๊ณ ์ปค์คํ
๊ฐ๋๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ํฌํฌ๋ ์ ์๋ Candy Guard ํ๋ก๊ทธ๋จ์
๋๋ค.
|
|
|
+
|
|
|
+๋ฐ๋ผ์ Candy Machine์์ ๋ฏผํ
ํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค:
|
|
|
+
|
|
|
+- **Candy Guard ํ๋ก๊ทธ๋จ์์** ๋ฏผํ
์ Candy Machine Core ํ๋ก๊ทธ๋จ์ ์์ํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํจ์ฌ ๋ ๋ณต์กํ ๋ฏผํ
์ํฌํ๋ก๋ฅผ ํ์ฉํ๋ฏ๋ก ์ด๋ ๊ฒ ํ๊ณ ์ถ์ ๊ฒ์
๋๋ค. ๊ณ์ ์ ๊ตฌ์ฑ๋ ๊ฐ๋์ ๋ฐ๋ผ ๋ฏผํ
๋ช
๋ น์ด์ ์ถ๊ฐ ๋๋จธ์ง ๊ณ์ ๊ณผ ๋ช
๋ น์ด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ ์ ์์ต๋๋ค. ๋คํํ ์ฐ๋ฆฌ์ SDK๋ ๋ช ๊ฐ์ง ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์๊ตฌํ๊ณ ๋๋จธ์ง๋ฅผ ๊ณ์ฐํด ์ฃผ์ด ์ด๋ฅผ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
|
|
|
+
|
|
|
+- **Candy Machine Core ํ๋ก๊ทธ๋จ์์ ์ง์ **. ์ด ๊ฒฝ์ฐ ๊ตฌ์ฑ๋ ๋ฏผํธ ๊ถํ๋ง ๋ฏผํ
ํ ์ ์์ผ๋ฏ๋ก ํธ๋์ญ์
์ ์๋ช
ํด์ผ ํฉ๋๋ค.
|
|
|
+
|
|
|
+{% diagram %}
|
|
|
+
|
|
|
+{% node %}
|
|
|
+{% node #candy-machine-1 label="Candy Machine" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Machine Core Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ธฐ๋ฅ" /%}
|
|
|
+{% node label="๊ถํ" /%}
|
|
|
+{% node #mint-authority-1 %}
|
|
|
+
|
|
|
+๋ฏผํธ ๊ถํ = Candy Guard {% .font-semibold %}
|
|
|
+
|
|
|
+{% /node %}
|
|
|
+{% node label="..." /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" y=160 x=20 %}
|
|
|
+{% node #candy-guard-1 label="Candy Guard" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Guard Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ฐ๋" theme="mint" z=1 /%}
|
|
|
+{% node label="Sol Payment" /%}
|
|
|
+{% node label="Token Payment" /%}
|
|
|
+{% node label="Start Date" /%}
|
|
|
+{% node label="End Date" /%}
|
|
|
+{% node label="..." /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" x=350 %}
|
|
|
+{% node #mint-1 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Guard Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-1" x=45 y=-20 label="์ก์ธ์ค ์ ์ด" theme="transparent" /%}
|
|
|
+{% node parent="mint-1" x=-120 y=-35 theme="transparent" %}
|
|
|
+ํ์ฑํ๋ ๊ฐ๋๋ฅผ ์ค์ํ๋ ํ \
|
|
|
+๋๊ตฌ๋ ๋ฏผํ
ํ ์ ์์ต๋๋ค.
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="mint-1" x=-22 y=100 %}
|
|
|
+{% node #mint-2 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Machine Core Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-2" x=120 y=-20 label="๋ฏผํ
๋ก์ง" theme="transparent" /%}
|
|
|
+{% node parent="mint-2" x=200 y=-18 theme="transparent" %}
|
|
|
+Alice๋ง \
|
|
|
+๋ฏผํ
ํ ์ ์์ต๋๋ค.
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node #nft parent="mint-2" x=62 y=100 label="NFT" /%}
|
|
|
+
|
|
|
+{% node parent="mint-2" x=280 %}
|
|
|
+{% node #candy-machine-2 label="Candy Machine" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Machine Core Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ธฐ๋ฅ" /%}
|
|
|
+{% node label="๊ถํ" /%}
|
|
|
+{% node #mint-authority-2 %}
|
|
|
+
|
|
|
+๋ฏผํธ ๊ถํ = Alice {% .font-semibold %}
|
|
|
+
|
|
|
+{% /node %}
|
|
|
+{% node label="..." /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% edge from="candy-guard-1" to="mint-authority-1" fromPosition="left" toPosition="left" arrow=false dashed=true /%}
|
|
|
+{% edge from="mint-1" to="mint-2" theme="pink" path="straight" /%}
|
|
|
+{% edge from="mint-2" to="nft" theme="pink" path="straight" /%}
|
|
|
+{% edge from="candy-machine-1" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="candy-guard-1" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="candy-machine-2" to="mint-2" theme="pink" path="straight" /%}
|
|
|
+
|
|
|
+{% /diagram %}
|
|
|
+
|
|
|
+๋ชจ๋ ๊ฒ์ด ์ ์งํ๋๋ฉด Candy Machine์ ๊ตฌ์ฑ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ผ NFT๊ฐ ์์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง Candy Machine์ด **์์ฐจ์ **์ด `false`๋ก ์ค์ ๋ **๊ตฌ์ฑ ๋ผ์ธ ์ค์ **์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ์์ดํ
์ ๋ฌด์์๋ก ๊ฐ์ ธ์ฌ ๊ฒ์
๋๋ค.
|
|
|
+
|
|
|
+Candy Guard ํ๋ก๊ทธ๋จ์ ๋ฒ์ `1.0`๋ถํฐ ๋ฏผํ
๋ช
๋ น์ด๋ ๊ธฐ์กด `payer` ์๋ช
์์ ๋ค๋ฅผ ์ ์๋ ์ถ๊ฐ `minter` ์๋ช
์๋ฅผ ๋ฐ์๋ค์
๋๋ค. ์ด๋ฅผ ํตํด NFT๋ฅผ ๋ฏผํ
ํ๋ ์ง๊ฐ์ด ๋ ์ด์ SOL ์์๋ฃ(์ ์ฅ ์์๋ฃ ๋ฐ SOL ๋ฏผํ
๊ฒฐ์ ๋ฑ)๋ฅผ ์ง๋ถํ ํ์๊ฐ ์๋ ๋ฏผํ
์ํฌํ๋ก๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. `payer` ์๋ช
์๊ฐ ํด๋น ์์๋ฃ๋ฅผ ์ถ์ํํ๊ธฐ ๋๋ฌธ์
๋๋ค. `minter` ์๋ช
์๋ ์ฌ์ ํ ํ ํฐ ๊ธฐ๋ฐ ์์๋ฃ๋ฅผ ์ง๋ถํด์ผ ํ๋ฉฐ ๊ตฌ์ฑ๋ ๊ฐ๋๋ฅผ ๊ฒ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
|
|
|
+
|
|
|
+์ต์ ๋ฏผํ
๋ช
๋ น์ด๋ ์๋นํ ์์ ์ปดํจํ
์ ๋์ ์ฌ์ฉํ๋ ์ต์ ํ ํฐ ๋ฉํ๋ฐ์ดํฐ ๋ช
๋ น์ด์ ์์กดํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ์ธ์. ๋ฐ๋ผ์ ํธ๋์ญ์
์ด ์ฑ๊ณตํ๋๋ก ํ๊ธฐ ์ํด ํธ๋์ญ์
์ ์ปดํจํ
์ ๋ ํ๋๋ฅผ ๋๋ ค์ผ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ SDK๋ ์ด๋ฅผ ๋์ธ ์ ์์ต๋๋ค.
|
|
|
+
|
|
|
+{% dialect-switcher title="Candy Machine์์ ๋ฏผํ
" %}
|
|
|
+{% dialect title="JavaScript" id="js" %}
|
|
|
+
|
|
|
+๊ตฌ์ฑ๋ Candy Guard ๊ณ์ ์ ํตํด Candy Machine์์ ๋ฏผํ
ํ๋ ค๋ฉด `mintV2` ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ๋ฏผํ
๋ NFT๊ฐ ์ํ ์ปฌ๋ ์
NFT์ ๋ฏผํธ ์ฃผ์์ ์
๋ฐ์ดํธ ๊ถํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. `minter` ์๋ช
์์ `payer` ์๋ช
์๋ ์ ๊ณตํ ์ ์์ง๋ง ๊ฐ๊ฐ Umi์ identity์ payer๋ก ๊ธฐ๋ณธ ์ค์ ๋ฉ๋๋ค.
|
|
|
+
|
|
|
+์์์ ์ธ๊ธํ๋ฏ์ด `mintV2` ๋ช
๋ น์ด๊ฐ ์ฑ๊ณตํ๋๋ก ํ๊ธฐ ์ํด ํธ๋์ญ์
์ ์ปดํจํ
์ ๋ ํ๋๋ฅผ ๋๋ ค์ผ ํ ์ ์์ต๋๋ค. ์๋ ์ฝ๋ ์ค๋ํซ์์ ์ค๋ช
ํ ๋๋ก `mpl-toolbox` Umi ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ `setComputeUnitLimit` ๋์ฐ๋ฏธ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค.
|
|
|
+
|
|
|
+pNFT๋ฅผ ๋ฏผํ
ํ๊ณ ์ถ๊ณ (์: ๋ก์ดํฐ ๊ฐ์ ๋ฅผ ์ํด) Candy Machine์ ๊ทธ์ ๋ง๊ฒ ์ค์ ํ ๊ฒฝ์ฐ `tokenStandard` ํ๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก `NonFungible`์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด์ ์ Candy Machine์ ๊ฐ์ ธ์จ ๊ฒฝ์ฐ `candyMachine.tokenStandard`๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด `@metaplex-foundation/mpl-token-metadata`์์ `tokenStandard: TokenStandard.ProgrammableNonFungible`์ ์ฌ์ฉํ์ฌ ์ง์ ํ ๋นํด์ผ ํฉ๋๋ค.
|
|
|
+
|
|
|
+```ts
|
|
|
+import { mintV2 } from '@metaplex-foundation/mpl-candy-machine'
|
|
|
+import { setComputeUnitLimit } from '@metaplex-foundation/mpl-toolbox'
|
|
|
+import { transactionBuilder, generateSigner } from '@metaplex-foundation/umi'
|
|
|
+
|
|
|
+const nftMint = generateSigner(umi)
|
|
|
+await transactionBuilder()
|
|
|
+ .add(setComputeUnitLimit(umi, { units: 800_000 }))
|
|
|
+ .add(
|
|
|
+ mintV2(umi, {
|
|
|
+ candyMachine: candyMachine.publicKey,
|
|
|
+ nftMint,
|
|
|
+ collectionMint: collectionNft.publicKey,
|
|
|
+ collectionUpdateAuthority: collectionNft.metadata.updateAuthority,
|
|
|
+ tokenStandard: candyMachine.tokenStandard,
|
|
|
+ })
|
|
|
+ )
|
|
|
+ .sendAndConfirm(umi)
|
|
|
+```
|
|
|
+
|
|
|
+`mintV2` ๋ช
๋ น์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฏผํธ ๋ฐ ํ ํฐ ๊ณ์ ์ ์์ฑํ๊ณ NFT ์์ ์๋ฅผ `minter`๋ก ์ค์ ํฉ๋๋ค. ๋ฏธ๋ฆฌ ์ด๋ฅผ ์ง์ ์์ฑํ๊ณ ์ถ๋ค๋ฉด ์๋ช
์ ๋์ NFT ๋ฏผํธ ์ฃผ์๋ฅผ ๊ณต๊ฐ ํค๋ก ์ ๊ณตํ๋ฉด ๋ฉ๋๋ค. ๋ค์์ `mpl-toolbox` Umi ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ `createMintWithAssociatedToken` ํจ์๋ฅผ ์ฌ์ฉํ ์์์
๋๋ค:
|
|
|
+
|
|
|
+```ts
|
|
|
+import { mintV2 } from '@metaplex-foundation/mpl-candy-machine'
|
|
|
+import {
|
|
|
+ createMintWithAssociatedToken,
|
|
|
+ setComputeUnitLimit,
|
|
|
+} from '@metaplex-foundation/mpl-toolbox'
|
|
|
+import { transactionBuilder, generateSigner } from '@metaplex-foundation/umi'
|
|
|
+
|
|
|
+const nftMint = generateSigner(umi)
|
|
|
+const nftOwner = generateSigner(umi).publicKey
|
|
|
+await transactionBuilder()
|
|
|
+ .add(setComputeUnitLimit(umi, { units: 800_000 }))
|
|
|
+ .add(createMintWithAssociatedToken(umi, { mint: nftMint, owner: nftOwner }))
|
|
|
+ .add(
|
|
|
+ mintV2(umi, {
|
|
|
+ candyMachine: candyMachine.publicKey,
|
|
|
+ nftMint: nftMint.publicKey,
|
|
|
+ collectionMint: collectionNft.publicKey,
|
|
|
+ collectionUpdateAuthority: collectionNft.metadata.updateAuthority,
|
|
|
+ })
|
|
|
+ )
|
|
|
+ .sendAndConfirm(umi)
|
|
|
+```
|
|
|
+
|
|
|
+Candy Machine Core ํ๋ก๊ทธ๋จ์์ ์ง์ ๋ฏผํ
ํ๊ณ ์ถ์ ๋๋ฌธ ๊ฒฝ์ฐ์๋ ๋์ `mintFromCandyMachineV2` ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ํจ์๋ Candy Machine์ ๋ฏผํธ ๊ถํ์ ์๋ช
์๋ก ์ ๊ณตํด์ผ ํ๋ฉฐ ๋ช
์์ ์ธ `nftOwner` ์์ฑ์ ํ์ฉํฉ๋๋ค.
|
|
|
+
|
|
|
+```ts
|
|
|
+import { mintFromCandyMachineV2 } from '@metaplex-foundation/mpl-candy-machine'
|
|
|
+import { setComputeUnitLimit } from '@metaplex-foundation/mpl-toolbox'
|
|
|
+import { transactionBuilder, generateSigner } from '@metaplex-foundation/umi'
|
|
|
+
|
|
|
+const nftMint = generateSigner(umi)
|
|
|
+const nftOwner = generateSigner(umi).publicKey
|
|
|
+await transactionBuilder()
|
|
|
+ .add(setComputeUnitLimit(umi, { units: 800_000 }))
|
|
|
+ .add(
|
|
|
+ mintFromCandyMachineV2(umi, {
|
|
|
+ candyMachine: candyMachine.publicKey,
|
|
|
+ mintAuthority: umi.identity,
|
|
|
+ nftOwner,
|
|
|
+ nftMint,
|
|
|
+ collectionMint: collectionNft.publicKey,
|
|
|
+ collectionUpdateAuthority: collectionNft.metadata.updateAuthority,
|
|
|
+ })
|
|
|
+ )
|
|
|
+ .sendAndConfirm(umi)
|
|
|
+```
|
|
|
+
|
|
|
+API ์ฐธ์กฐ: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintV2.html), [mintFromCandyMachineV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintFromCandyMachineV2.html)
|
|
|
+
|
|
|
+{% /dialect %}
|
|
|
+{% /dialect-switcher %}
|
|
|
+
|
|
|
+## ๊ฐ๋์ ํจ๊ป ๋ฏผํ
|
|
|
+
|
|
|
+๋ง์ ๊ฐ๋๋ฅผ ์ฌ์ฉํ๋ Candy Machine์์ ๋ฏผํ
ํ ๋ ์ถ๊ฐ์ ์ธ ๊ฐ๋๋ณ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํ ์ ์์ต๋๋ค.
|
|
|
+
|
|
|
+๋ฏผํ
๋ช
๋ น์ด๋ฅผ ์๋์ผ๋ก ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ํด๋น ์ ๋ณด๋ ๋ช
๋ น์ด ๋ฐ์ดํฐ์ ๋๋จธ์ง ๊ณ์ ์ ํผํฉ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ์ SDK๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฏผํ
์ ์ถ๊ฐ ์ ๋ณด๊ฐ ํ์ํ ๊ฐ ๊ฐ๋๋ **๋ฏผํ
์ค์ **์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ค์ ์ธํธ๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ฌํ ๋ฏผํ
์ค์ ์ ํ๋ก๊ทธ๋จ์ด ํ์๋ก ํ๋ ๋ชจ๋ ๊ฒ์ผ๋ก ํ์ฑ๋ฉ๋๋ค.
|
|
|
+
|
|
|
+๋ฏผํ
์ค์ ์ด ํ์ํ ๊ฐ๋์ ์ข์ ์๋ **NFT Payment** ๊ฐ๋์
๋๋ค. ์ด ๊ฐ๋๋ ๋ฏผํ
๋น์ฉ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ NFT์ ๋ฏผํธ ์ฃผ์์ ๊ธฐํ ์ ๋ณด๋ฅผ ํ์๋ก ํฉ๋๋ค.
|
|
|
+
|
|
|
+{% diagram %}
|
|
|
+
|
|
|
+{% node %}
|
|
|
+{% node #candy-machine-1 label="Candy Machine" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Machine Core Program" theme="dimmed" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" y=80 x=20 %}
|
|
|
+{% node #candy-guard-1 label="Candy Guard" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Guard Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ฐ๋" theme="mint" z=1 /%}
|
|
|
+{% node #nft-payment-guard label="NFT Payment" /%}
|
|
|
+{% node label="Token Payment" /%}
|
|
|
+{% node label="Start Date" /%}
|
|
|
+{% node #third-party-signer-guard label="Third Party Signer" /%}
|
|
|
+{% node label="..." /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" x=700 %}
|
|
|
+{% node #mint-1 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Guard Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-1" x=45 y=-20 label="์ก์ธ์ค ์ ์ด" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node parent="mint-1" x=-22 y=100 %}
|
|
|
+{% node #mint-2 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Machine Core Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-2" x=120 y=-20 label="๋ฏผํ
๋ก์ง" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node #nft parent="mint-2" x=62 y=100 label="NFT" /%}
|
|
|
+
|
|
|
+{% node parent="mint-2" x=-400 %}
|
|
|
+{% node #mint-settings label="๋ฏผํ
์ค์ " /%}
|
|
|
+{% node label="SDK ์ฌ์ฉ" theme="dimmed" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node #mint-args label="๋ฏผํ
์ธ์" parent="mint-settings" x=100 y=80 theme="slate" /%}
|
|
|
+{% node #mint-accounts label="๋ฏผํ
๋๋จธ์ง ๊ณ์ " parent="mint-args" y=50 theme="slate" /%}
|
|
|
+
|
|
|
+{% edge from="candy-guard-1" to="candy-machine-1" fromPosition="left" toPosition="left" arrow=false /%}
|
|
|
+{% edge from="mint-1" to="mint-2" theme="pink" path="straight" /%}
|
|
|
+{% edge from="mint-2" to="nft" theme="pink" path="straight" /%}
|
|
|
+{% edge from="candy-machine-1" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="nft-payment-guard" to="mint-settings" theme="slate" /%}
|
|
|
+{% edge from="third-party-signer-guard" to="mint-settings" theme="slate" /%}
|
|
|
+{% edge from="mint-settings" to="mint-args" theme="slate" fromPosition="bottom" /%}
|
|
|
+{% edge from="mint-settings" to="mint-accounts" theme="slate" fromPosition="bottom" /%}
|
|
|
+{% edge from="mint-args" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="mint-accounts" to="mint-1" theme="pink" /%}
|
|
|
+
|
|
|
+{% /diagram %}
|
|
|
+
|
|
|
+[์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ ๊ฐ๋](/kr/candy-machine/guards)์๋ ์์ฒด ๋ฌธ์ ํ์ด์ง๊ฐ ์์ผ๋ฉฐ ํด๋น ๊ฐ๋๊ฐ ๋ฏผํ
ํ ๋ ๋ฏผํ
์ค์ ์ ์ ๊ณตํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ค๋๋ค.
|
|
|
+
|
|
|
+๋ฏผํ
์ค์ ์ด ํ์ํ์ง ์์ ๊ฐ๋๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์์ "๊ธฐ๋ณธ ๋ฏผํ
" ์น์
์์ ์ค๋ช
ํ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฏผํ
ํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ํ ๋ชจ๋ ๊ฐ๋์ ๋ฏผํ
์ค์ ์ด ํฌํจ๋ ์ถ๊ฐ ๊ฐ์ฒด ์์ฑ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. SDK๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ์ด๋ป๊ฒ ๋ณด์ด๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
|
|
|
+
|
|
|
+{% dialect-switcher title="๊ฐ๋์ ํจ๊ป Candy Machine์์ ๋ฏผํ
" %}
|
|
|
+{% dialect title="JavaScript" id="js" %}
|
|
|
+
|
|
|
+Umi ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋ฏผํ
ํ ๋ `mintArgs` ์์ฑ์ ์ฌ์ฉํ์ฌ ํ์ํ **๋ฏผํ
์ค์ **์ ์ ๊ณตํ ์ ์์ต๋๋ค.
|
|
|
+
|
|
|
+๋ค์์ ์ถ๊ฐ ์๋ช
์๊ฐ ํ์ํ **Third Party Signer** ๊ฐ๋์ ์ง๊ฐ์ด Candy Machine์์ ๋ช ๋ฒ ๋ฏผํ
ํ๋์ง ์ถ์ ํ๋ **Mint Limit** ๊ฐ๋๋ฅผ ์ฌ์ฉํ ์์์
๋๋ค.
|
|
|
+
|
|
|
+```ts
|
|
|
+import {
|
|
|
+ some,
|
|
|
+ generateSigner,
|
|
|
+ transactionBuilder,
|
|
|
+} from '@metaplex-foundation/umi'
|
|
|
+import { create, mintV2 } from '@metaplex-foundation/mpl-candy-machine'
|
|
|
+import { setComputeUnitLimit } from '@metaplex-foundation/mpl-toolbox'
|
|
|
+
|
|
|
+// ๊ฐ๋๊ฐ ์๋ Candy Machine ์์ฑ.
|
|
|
+const thirdPartySigner = generateSigner()
|
|
|
+await create(umi, {
|
|
|
+ // ...
|
|
|
+ guards: {
|
|
|
+ thirdPartySigner: some({ signer: thirdPartySigner.publicKey }),
|
|
|
+ mintLimit: some({ id: 1, limit: 3 }),
|
|
|
+ },
|
|
|
+}).sendAndConfirm(umi)
|
|
|
+
|
|
|
+// Candy Machine์์ ๋ฏผํ
.
|
|
|
+const nftMint = generateSigner(umi)
|
|
|
+await transactionBuilder()
|
|
|
+ .add(setComputeUnitLimit(umi, { units: 800_000 }))
|
|
|
+ .add(
|
|
|
+ mintV2(umi, {
|
|
|
+ candyMachine: candyMachine.publicKey,
|
|
|
+ nftMint,
|
|
|
+ collectionMint: collectionNft.publicKey,
|
|
|
+ collectionUpdateAuthority: collectionNft.metadata.updateAuthority,
|
|
|
+ mintArgs: {
|
|
|
+ thirdPartySigner: some({ signer: thirdPartySigner }),
|
|
|
+ mintLimit: some({ id: 1 }),
|
|
|
+ },
|
|
|
+ })
|
|
|
+ )
|
|
|
+ .sendAndConfirm(umi)
|
|
|
+```
|
|
|
+
|
|
|
+API ์ฐธ์กฐ: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintV2.html), [DefaultGuardSetMintArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetMintArgs.html)
|
|
|
+
|
|
|
+{% /dialect %}
|
|
|
+{% /dialect-switcher %}
|
|
|
+
|
|
|
+## ๊ฐ๋ ๊ทธ๋ฃน๊ณผ ํจ๊ป ๋ฏผํ
|
|
|
+
|
|
|
+๊ฐ๋ ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ Candy Machine์์ ๋ฏผํ
ํ ๋ **๋ ์ด๋ธ์ ์ ๊ณตํ์ฌ ๋ฏผํ
ํ๋ ค๋ ๊ทธ๋ฃน์ ๋ช
์์ ์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค**.
|
|
|
+
|
|
|
+๋ํ [์ด์ ์น์
](#minting-with-guards)์์ ์ค๋ช
ํ ๋๋ก ๋ฏผํ
์ค์ ๋ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ **๋ฏผํ
์ค์ ์ ์ ํ๋ ๊ทธ๋ฃน์ "ํด๊ฒฐ๋ ๊ฐ๋"์ ์ ์ฉ๋ฉ๋๋ค**.
|
|
|
+
|
|
|
+์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋๊ฐ ์๋ Candy Machine์ ์์ํด๋ณด์ธ์:
|
|
|
+
|
|
|
+- **๊ธฐ๋ณธ ๊ฐ๋**:
|
|
|
+ - Bot Tax
|
|
|
+ - Third Party Signer
|
|
|
+ - Start Date
|
|
|
+- **๊ทธ๋ฃน 1**
|
|
|
+ - ๋ ์ด๋ธ: "nft"
|
|
|
+ - ๊ฐ๋:
|
|
|
+ - NFT Payment
|
|
|
+ - Start Date
|
|
|
+- **๊ทธ๋ฃน 2**
|
|
|
+ - ๋ ์ด๋ธ: "public"
|
|
|
+ - ๊ฐ๋:
|
|
|
+ - Sol Payment
|
|
|
+
|
|
|
+๊ทธ๋ฃน 1("nft" ๋ ์ด๋ธ)์ ํด๊ฒฐ๋ ๊ฐ๋๋:
|
|
|
+
|
|
|
+- Bot Tax: **๊ธฐ๋ณธ ๊ฐ๋**์์.
|
|
|
+- Third Party Signer: **๊ธฐ๋ณธ ๊ฐ๋**์์.
|
|
|
+- NFT Payment: **๊ทธ๋ฃน 1**์์.
|
|
|
+- Start Date: **๊ทธ๋ฃน 1**์์ (๊ธฐ๋ณธ ๊ฐ๋๋ฅผ ์ฌ์ ์ํ๋ฏ๋ก).
|
|
|
+
|
|
|
+๋ฐ๋ผ์ ์ ๊ณต๋ ๋ฏผํ
์ค์ ์ ์ด๋ฌํ ํด๊ฒฐ๋ ๊ฐ๋์ ๊ด๋ จ๋์ด์ผ ํฉ๋๋ค. ์์ ์์์์ Third Party Signer ๊ฐ๋์ NFT Payment ๊ฐ๋์ ๋ํ ๋ฏผํ
์ค์ ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
|
|
|
+
|
|
|
+{% diagram %}
|
|
|
+
|
|
|
+{% node %}
|
|
|
+{% node #candy-machine-1 label="Candy Machine" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Machine Core Program" theme="dimmed" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" y=80 x=20 %}
|
|
|
+{% node #candy-guard-1 label="Candy Guard" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Guard Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ฐ๋ (๊ธฐ๋ณธ ๊ฐ๋)" theme="mint" z=1 /%}
|
|
|
+{% node label="Bot Tax" /%}
|
|
|
+{% node #third-party-signer-guard label="Third Party Signer" /%}
|
|
|
+{% node label="Start Date" /%}
|
|
|
+{% node #nft-group theme="mint" z=1 %}
|
|
|
+๊ทธ๋ฃน 1: "nft" {% .font-semibold %}
|
|
|
+{% /node %}
|
|
|
+{% node #nft-payment-guard label="NFT Payment" /%}
|
|
|
+{% node label="Start Date" /%}
|
|
|
+{% node theme="mint" z=1 %}
|
|
|
+๊ทธ๋ฃน 2: "public"
|
|
|
+{% /node %}
|
|
|
+{% node label="SOL Payment" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" x=700 %}
|
|
|
+{% node #mint-1 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Guard Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-1" x=45 y=-20 label="์ก์ธ์ค ์ ์ด" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node parent="mint-1" x=-22 y=100 %}
|
|
|
+{% node #mint-2 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Machine Core Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-2" x=120 y=-20 label="๋ฏผํ
๋ก์ง" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node #nft parent="mint-2" x=62 y=100 label="NFT" /%}
|
|
|
+
|
|
|
+{% node parent="mint-2" x=-400 y=60 %}
|
|
|
+{% node #mint-settings label="๋ฏผํ
์ค์ " /%}
|
|
|
+{% node label="SDK ์ฌ์ฉ" theme="dimmed" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node #mint-args label="๋ฏผํ
์ธ์" parent="mint-settings" x=100 y=80 theme="slate" /%}
|
|
|
+{% node #mint-accounts label="๋ฏผํ
๋๋จธ์ง ๊ณ์ " parent="mint-args" y=50 theme="slate" /%}
|
|
|
+
|
|
|
+{% edge from="candy-guard-1" to="candy-machine-1" fromPosition="left" toPosition="left" arrow=false /%}
|
|
|
+{% edge from="mint-1" to="mint-2" theme="pink" path="straight" /%}
|
|
|
+{% edge from="mint-2" to="nft" theme="pink" path="straight" /%}
|
|
|
+{% edge from="candy-machine-1" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="nft-payment-guard" to="mint-settings" theme="slate" /%}
|
|
|
+{% edge from="third-party-signer-guard" to="mint-settings" theme="slate" /%}
|
|
|
+{% edge from="mint-settings" to="mint-args" theme="slate" fromPosition="bottom" /%}
|
|
|
+{% edge from="mint-settings" to="mint-accounts" theme="slate" fromPosition="bottom" /%}
|
|
|
+{% edge from="mint-args" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="mint-accounts" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="nft-group" to="mint-1" theme="pink" /%}
|
|
|
+
|
|
|
+{% /diagram %}
|
|
|
+
|
|
|
+{% seperator h="6" /%}
|
|
|
+
|
|
|
+{% dialect-switcher title="๊ฐ๋ ๊ทธ๋ฃน๊ณผ ํจ๊ป Candy Machine์์ ๋ฏผํ
" %}
|
|
|
+{% dialect title="JavaScript" id="js" %}
|
|
|
+
|
|
|
+๊ฐ๋ ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ Candy Machine์์ ๋ฏผํ
ํ ๋ ์ ํํ๋ ค๋ ๊ทธ๋ฃน์ ๋ ์ด๋ธ์ `group` ์์ฑ์ ํตํด ์ ๊ณตํด์ผ ํฉ๋๋ค.
|
|
|
+
|
|
|
+๋ํ ํด๋น ๊ทธ๋ฃน์ ํด๊ฒฐ๋ ๊ฐ๋์ ๋ํ ๋ฏผํ
์ค์ ์ `mintArgs` ์์ฑ์ ํตํด ์ ๊ณตํ ์ ์์ต๋๋ค.
|
|
|
+
|
|
|
+๋ค์์ ์์์ ์ค๋ช
ํ ์์ Candy Machine์์ Umi ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏผํ
ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
|
|
|
+
|
|
|
+```ts
|
|
|
+// ๊ฐ๋๊ฐ ์๋ Candy Machine ์์ฑ.
|
|
|
+const thirdPartySigner = generateSigner()
|
|
|
+await create(umi, {
|
|
|
+ // ...
|
|
|
+ guards: {
|
|
|
+ botTax: some({ lamports: sol(0.001), lastInstruction: true }),
|
|
|
+ thirdPartySigner: some({ signer: thirdPartySigner.publicKey }),
|
|
|
+ startDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
|
|
|
+ },
|
|
|
+ groups: [
|
|
|
+ {
|
|
|
+ label: 'nft',
|
|
|
+ guards: {
|
|
|
+ nftPayment: some({ requiredCollection, destination: nftTreasury }),
|
|
|
+ startDate: some({ date: dateTime('2022-10-18T16:00:00Z') }),
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: 'public',
|
|
|
+ guards: {
|
|
|
+ solPayment: some({ lamports: sol(1), destination: solTreasury }),
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+}).sendAndConfirm(umi)
|
|
|
+
|
|
|
+// Candy Machine์์ ๋ฏผํ
.
|
|
|
+const nftMint = generateSigner(umi)
|
|
|
+await transactionBuilder()
|
|
|
+ .add(setComputeUnitLimit(umi, { units: 800_000 }))
|
|
|
+ .add(
|
|
|
+ mintV2(umi, {
|
|
|
+ candyMachine: candyMachine.publicKey,
|
|
|
+ nftMint,
|
|
|
+ collectionMint: collectionNft.publicKey,
|
|
|
+ collectionUpdateAuthority: collectionNft.metadata.updateAuthority,
|
|
|
+ group: some('nft'),
|
|
|
+ mintArgs: {
|
|
|
+ thirdPartySigner: some({ signer: thirdPartySigner }),
|
|
|
+ nftPayment: some({
|
|
|
+ mint: nftFromRequiredCollection.publicKey,
|
|
|
+ destination: nftTreasury,
|
|
|
+ tokenStandard: TokenStandard.NonFungible,
|
|
|
+ }),
|
|
|
+ },
|
|
|
+ })
|
|
|
+ )
|
|
|
+ .sendAndConfirm(umi)
|
|
|
+```
|
|
|
+
|
|
|
+API ์ฐธ์กฐ: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintV2.html), [DefaultGuardSetMintArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetMintArgs.html)
|
|
|
+
|
|
|
+{% /dialect %}
|
|
|
+{% /dialect-switcher %}
|
|
|
+
|
|
|
+## ์ฌ์ ๊ฒ์ฆ๊ณผ ํจ๊ป ๋ฏผํ
|
|
|
+
|
|
|
+์ผ๋ถ ๊ฐ๋๋ Candy Machine์์ ๋ฏผํ
ํ๊ธฐ ์ ์ ์ถ๊ฐ ๊ฒ์ฆ ๋จ๊ณ๊ฐ ํ์ํ ์ ์๋ค๋ ์ ์ด ์ค์ํฉ๋๋ค. ์ด ์ฌ์ ๊ฒ์ฆ ๋จ๊ณ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ก์ฒด์ธ์ ๊ณ์ ์ ์์ฑํ๊ฑฐ๋ ๊ฒ์ฆ์ ์ฆ๊ฑฐ ์ญํ ์ ํ๋ ํ ํฐ์ผ๋ก ์ง๊ฐ์ ๋ณด์ํฉ๋๋ค.
|
|
|
+
|
|
|
+### ๋ผ์ฐํธ ๋ช
๋ น์ด ์ฌ์ฉ
|
|
|
+
|
|
|
+๊ฐ๋๊ฐ ์ฌ์ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์๊ตฌํ ์ ์๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ "route" ๋ช
๋ น์ด๋ฅผ ํตํด [์์ฒด ํน์ ๋ช
๋ น์ด](/kr/candy-machine/guard-route)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
|
|
|
+
|
|
|
+์ข์ ์๋ **Allow List** ๊ฐ๋์
๋๋ค. ์ด ๊ฐ๋๋ฅผ ์ฌ์ฉํ ๋ route ๋ช
๋ น์ด๋ฅผ ํธ์ถํ๊ณ ์ ํจํ ๋จธํด ์ฆ๋ช
์ ์ ๊ณตํ์ฌ ์ฐ๋ฆฌ์ ์ง๊ฐ์ด ์ฌ์ ์ ์๋ ์ง๊ฐ ๋ชฉ๋ก์ ์ํ๋ค๋ ๊ฒ์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค. ์ด route ๋ช
๋ น์ด๊ฐ ์ฑ๊ณตํ๋ฉด ํด๋น ์ง๊ฐ์ ๋ํ Allow List PDA๊ฐ ์์ฑ๋๋ฉฐ, ๋ฏผํ
๋ช
๋ น์ด๊ฐ ์ด๋ฅผ ์ฝ์ด Allow List ๊ฐ๋๋ฅผ ๊ฒ์ฆํ ์ ์์ต๋๋ค. [Allow List ๊ฐ๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ์ฉ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์](/kr/candy-machine/guards/allow-list).
|
|
|
+
|
|
|
+{% diagram %}
|
|
|
+
|
|
|
+{% node %}
|
|
|
+{% node #candy-machine-1 label="Candy Machine" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Machine Core Program" theme="dimmed" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" y=80 x=20 %}
|
|
|
+{% node #candy-guard-1 label="Candy Guard" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Guard Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ฐ๋" theme="mint" z=1 /%}
|
|
|
+{% node #allow-list-guard label="Allow List" /%}
|
|
|
+{% node label="..." /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" x=550 %}
|
|
|
+{% node #mint-1 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Guard Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-1" x=45 y=-20 label="์ก์ธ์ค ์ ์ด" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node parent="mint-1" x=-22 y=100 %}
|
|
|
+{% node #mint-2 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Machine Core Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-2" x=120 y=-20 label="๋ฏผํ
๋ก์ง" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node #nft parent="mint-2" x=62 y=100 label="NFT" /%}
|
|
|
+
|
|
|
+{% node parent="mint-2" x=-250 %}
|
|
|
+{% node #route label="๋ผ์ฐํธ" theme="pink" /%}
|
|
|
+{% node label="Candy Machine Core Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="route" x=70 y=-20 label="๋จธํด ์ฆ๋ช
๊ฒ์ฆ" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node #allow-list-pda parent="route" x=23 y=100 label="Allow List PDA" /%}
|
|
|
+
|
|
|
+{% edge from="candy-guard-1" to="candy-machine-1" fromPosition="left" toPosition="left" arrow=false /%}
|
|
|
+{% edge from="mint-1" to="mint-2" theme="pink" path="straight" /%}
|
|
|
+{% edge from="mint-2" to="nft" theme="pink" path="straight" /%}
|
|
|
+{% edge from="candy-machine-1" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="allow-list-guard" to="route" theme="pink" /%}
|
|
|
+{% edge from="route" to="allow-list-pda" theme="pink" path="straight" /%}
|
|
|
+{% edge from="allow-list-pda" to="mint-1" theme="pink" /%}
|
|
|
+
|
|
|
+{% /diagram %}
|
|
|
+
|
|
|
+### ์ธ๋ถ ์๋น์ค ์ฌ์ฉ
|
|
|
+
|
|
|
+๊ฐ๋๊ฐ ํด๋น ์ฌ์ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์ํํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ธ๋ถ ์๋ฃจ์
์ ์์กดํ๋ ๊ฒ์
๋๋ค.
|
|
|
+
|
|
|
+์๋ฅผ ๋ค์ด **Gatekeeper** ๊ฐ๋๋ฅผ ์ฌ์ฉํ ๋ ๊ตฌ์ฑ๋ ๊ฒ์ดํธํคํผ ๋คํธ์ํฌ์ ๋ฐ๋ผ Captcha ์๋ฃ์ ๊ฐ์ ๋์ ์ ์ํํ์ฌ ๊ฒ์ดํธ์จ์ด ํ ํฐ์ ์์ฒญํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Gatekeeper ๊ฐ๋๋ ํด๋น ๊ฒ์ดํธ์จ์ด ํ ํฐ์ ์กด์ฌ๋ฅผ ํ์ธํ์ฌ ๋ฏผํ
์ ๊ฒ์ฆํ๊ฑฐ๋ ๊ฑฐ๋ถํฉ๋๋ค. [Gatekeeper ๊ฐ๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ์ฉ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์](/kr/candy-machine/guards/gatekeeper).
|
|
|
+
|
|
|
+{% diagram %}
|
|
|
+
|
|
|
+{% node %}
|
|
|
+{% node #candy-machine-1 label="Candy Machine" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Machine Core Program" theme="dimmed" /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" y=80 x=20 %}
|
|
|
+{% node #candy-guard-1 label="Candy Guard" theme="blue" /%}
|
|
|
+{% node label="์์ ์: Candy Guard Program" theme="dimmed" /%}
|
|
|
+{% node label="๊ฐ๋" theme="mint" z=1 /%}
|
|
|
+{% node #gatekeeper-guard label="Gatekeeper" /%}
|
|
|
+{% node label="..." /%}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node parent="candy-machine-1" x=550 %}
|
|
|
+{% node #mint-1 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Guard Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-1" x=45 y=-20 label="์ก์ธ์ค ์ ์ด" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node parent="mint-1" x=-22 y=100 %}
|
|
|
+{% node #mint-2 label="๋ฏผํ
" theme="pink" /%}
|
|
|
+{% node label="Candy Machine Core Program" theme="pink" /%}
|
|
|
+{% /node %}
|
|
|
+{% node parent="mint-2" x=120 y=-20 label="๋ฏผํ
๋ก์ง" theme="transparent" /%}
|
|
|
+
|
|
|
+{% node #nft parent="mint-2" x=62 y=100 label="NFT" /%}
|
|
|
+
|
|
|
+{% node parent="mint-2" x=-250 y=-40 %}
|
|
|
+{% node #network label="๊ฒ์ดํธํคํผ ๋คํธ์ํฌ" theme="slate" /%}
|
|
|
+{% node theme="slate" %}
|
|
|
+๊ฒ์ดํธํคํผ ๋คํธ์ํฌ์์ \
|
|
|
+๊ฒ์ดํธ์จ์ด ํ ํฐ ์์ฒญ, \
|
|
|
+์: Captcha.
|
|
|
+{% /node %}
|
|
|
+{% /node %}
|
|
|
+
|
|
|
+{% node #gateway-token parent="network" x=23 y=140 label="๊ฒ์ดํธ์จ์ด ํ ํฐ" /%}
|
|
|
+
|
|
|
+{% edge from="candy-guard-1" to="candy-machine-1" fromPosition="left" toPosition="left" arrow=false /%}
|
|
|
+{% edge from="mint-1" to="mint-2" theme="pink" path="straight" /%}
|
|
|
+{% edge from="mint-2" to="nft" theme="pink" path="straight" /%}
|
|
|
+{% edge from="candy-machine-1" to="mint-1" theme="pink" /%}
|
|
|
+{% edge from="gatekeeper-guard" to="network" theme="slate" /%}
|
|
|
+{% edge from="network" to="gateway-token" theme="slate" path="straight" /%}
|
|
|
+{% edge from="gateway-token" to="mint-1" theme="pink" /%}
|
|
|
+
|
|
|
+{% /diagram %}
|
|
|
+
|
|
|
+## ๋ด ์ธ๊ธ๊ณผ ํจ๊ป ๋ฏผํ
|
|
|
+
|
|
|
+Candy Machine์ ํฌํจํ๊ณ ์ถ์ดํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฐ๋ ์ค ํ๋๋ ์คํจํ ๋ฏผํ
์ ๊ตฌ์ฑ ๊ฐ๋ฅํ SOL ๊ธ์ก์ ์ฒญ๊ตฌํ์ฌ ๋ด์ผ๋ก๋ถํฐ Candy Machine์ ๋ณดํธํ๋ Bot Tax ๊ฐ๋์
๋๋ค. ์ด ๊ธ์ก์ ์ผ๋ฐ์ ์ผ๋ก ์ค์ ์ฌ์ฉ์์ ์ง์ ํ ์ค์์๋ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ด์ ํด์น๊ธฐ ์ํด ์๊ฒ ์ค์ ๋ฉ๋๋ค. ๋ชจ๋ ๋ด ์ธ๊ธ์ Candy Machine ๊ณ์ ์ผ๋ก ์ ์ก๋๋ฏ๋ก ๋ฏผํ
์ด ๋๋๋ฉด Candy Machine ๊ณ์ ์ ์ญ์ ํ์ฌ ์ด ์๊ธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
|
|
|
+
|
|
|
+์ด ๊ฐ๋๋ ์กฐ๊ธ ํน๋ณํ๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ๊ฐ๋์ ๋ฏผํ
๋์์ ์ํฅ์ ์ค๋๋ค. Bot Tax๊ฐ ํ์ฑํ๋๊ณ ๋ค๋ฅธ ๊ฐ๋๊ฐ ๋ฏผํ
๊ฒ์ฆ์ ์คํจํ๋ฉด **ํธ๋์ญ์
์ด ์ฑ๊ณตํ ๊ฒ์ฒ๋ผ ๊ฐ์ฅํฉ๋๋ค**. ์ฆ, ํ๋ก๊ทธ๋จ์์ ์ค๋ฅ๊ฐ ๋ฐํ๋์ง ์์ง๋ง NFT๋ ๋ฏผํ
๋์ง ์์ต๋๋ค. ์ด๋ ์๊ธ์ด ๋ด์์ Candy Machine ๊ณ์ ์ผ๋ก ์ ์ก๋๋ ค๋ฉด ํธ๋์ญ์
์ด ์ฑ๊ณตํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. [Bot Tax ๊ฐ๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ์ฉ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์](/kr/candy-machine/guards/bot-tax).
|
|
|
+
|
|
|
+## ๊ฒฐ๋ก
|
|
|
+
|
|
|
+์ถํํฉ๋๋ค! ์ด์ Candy Machine์ด A๋ถํฐ Z๊น์ง ์ด๋ป๊ฒ ์๋ํ๋์ง ์๊ฒ ๋์์ต๋๋ค!
|
|
|
+
|
|
|
+๊ด์ฌ์ด ์์ ์ ์๋ ์ถ๊ฐ ์ฝ๊ธฐ ์๋ฃ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
|
|
|
+
|
|
|
+- [์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ๋](/kr/candy-machine/guards): ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ๋๋ฅผ ์ดํด๋ณด๊ณ ํ์ํ ๊ฒ์ ์ ๋ณํ์ธ์.
|
|
|
+- [์ฒซ ๋ฒ์งธ Candy Machine ๋ง๋ค๊ธฐ](/kr/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine): ์ด ๊ฐ์ด๋๋ ์์ฐ์ ์
๋ก๋ํ๊ณ "[Sugar](/kr/candy-machine/sugar)"๋ผ๋ CLI ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ์๋ถํฐ ์๋ก์ด Candy Machine์ ๋ง๋๋ ๋ฐ ๋์์ ์ค๋๋ค.
|