Tony Boyle 2 maanden geleden
bovenliggende
commit
a55d9ace45
70 gewijzigde bestanden met toevoegingen van 9975 en 0 verwijderingen
  1. 47 0
      src/pages/kr/amman/cli-commands.md
  2. 126 0
      src/pages/kr/amman/configuration.md
  3. 37 0
      src/pages/kr/amman/getting-started.md
  4. 15 0
      src/pages/kr/amman/index.md
  5. 206 0
      src/pages/kr/amman/pre-made-configs.md
  6. 13 0
      src/pages/kr/aura/blockchains/eclipse.md
  7. 13 0
      src/pages/kr/aura/blockchains/solana.md
  8. 18 0
      src/pages/kr/aura/faq.md
  9. 17 0
      src/pages/kr/aura/index.md
  10. 17 0
      src/pages/kr/aura/reading-solana-and-svm-data.md
  11. 66 0
      src/pages/kr/bubblegum-v2/burn-cnfts.md
  12. 87 0
      src/pages/kr/bubblegum-v2/collections.md
  13. 329 0
      src/pages/kr/bubblegum-v2/concurrent-merkle-trees.md
  14. 181 0
      src/pages/kr/bubblegum-v2/create-trees.md
  15. 70 0
      src/pages/kr/bubblegum-v2/delegate-cnfts.md
  16. 57 0
      src/pages/kr/bubblegum-v2/delegate-trees.md
  17. 114 0
      src/pages/kr/bubblegum-v2/faq.md
  18. 170 0
      src/pages/kr/bubblegum-v2/fetch-cnfts.md
  19. 171 0
      src/pages/kr/bubblegum-v2/freeze-cnfts.md
  20. 245 0
      src/pages/kr/bubblegum-v2/hashed-nft-data.md
  21. 147 0
      src/pages/kr/bubblegum-v2/index.md
  22. 33 0
      src/pages/kr/bubblegum-v2/merkle-tree-canopy.md
  23. 135 0
      src/pages/kr/bubblegum-v2/mint-cnfts.md
  24. 15 0
      src/pages/kr/bubblegum-v2/sdk/index.md
  25. 46 0
      src/pages/kr/bubblegum-v2/sdk/javascript.md
  26. 116 0
      src/pages/kr/bubblegum-v2/sdk/rust.md
  27. 76 0
      src/pages/kr/bubblegum-v2/stored-nft-data.md
  28. 110 0
      src/pages/kr/bubblegum-v2/transfer-cnfts.md
  29. 74 0
      src/pages/kr/bubblegum-v2/update-cnfts.md
  30. 94 0
      src/pages/kr/bubblegum-v2/verify-creators.md
  31. 191 0
      src/pages/kr/candy-machine/custom-guards/generating-client.md
  32. 17 0
      src/pages/kr/candy-machine/getting-started/index.md
  33. 50 0
      src/pages/kr/candy-machine/getting-started/js.md
  34. 20 0
      src/pages/kr/candy-machine/getting-started/rust.md
  35. 351 0
      src/pages/kr/candy-machine/guard-groups.md
  36. 207 0
      src/pages/kr/candy-machine/guard-route.md
  37. 391 0
      src/pages/kr/candy-machine/guards.md
  38. 384 0
      src/pages/kr/candy-machine/guards/allow-list.md
  39. 137 0
      src/pages/kr/candy-machine/guards/bot-tax.md
  40. 162 0
      src/pages/kr/candy-machine/guards/sol-payment.md
  41. 114 0
      src/pages/kr/candy-machine/guards/start-date.md
  42. 331 0
      src/pages/kr/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine.md
  43. 218 0
      src/pages/kr/candy-machine/index.md
  44. 189 0
      src/pages/kr/candy-machine/insert-items.md
  45. 426 0
      src/pages/kr/candy-machine/manage.md
  46. 579 0
      src/pages/kr/candy-machine/mint.md
  47. 138 0
      src/pages/kr/candy-machine/pnfts.md
  48. 11 0
      src/pages/kr/candy-machine/references/index.md
  49. 302 0
      src/pages/kr/candy-machine/settings.md
  50. 232 0
      src/pages/kr/candy-machine/sugar/configuration.md
  51. 101 0
      src/pages/kr/candy-machine/sugar/index.md
  52. 50 0
      src/pages/kr/cli/config/explorer.md
  53. 141 0
      src/pages/kr/cli/config/rpcs.md
  54. 167 0
      src/pages/kr/cli/config/wallets.md
  55. 84 0
      src/pages/kr/cli/core/create-asset.md
  56. 82 0
      src/pages/kr/cli/core/create-collection.md
  57. 103 0
      src/pages/kr/cli/core/fetch.md
  58. 86 0
      src/pages/kr/cli/core/plugins.md
  59. 82 0
      src/pages/kr/cli/core/update-asset.md
  60. 80 0
      src/pages/kr/cli/index.md
  61. 169 0
      src/pages/kr/cli/installation.md
  62. 52 0
      src/pages/kr/cli/toolbox/sol-airdrop.md
  63. 59 0
      src/pages/kr/cli/toolbox/sol-balance.md
  64. 43 0
      src/pages/kr/cli/toolbox/sol-transfer.md
  65. 91 0
      src/pages/kr/cli/toolbox/token-create.md
  66. 66 0
      src/pages/kr/cli/toolbox/token-transfer.md
  67. 467 0
      src/pages/kr/core/collections.md
  68. 419 0
      src/pages/kr/core/create-asset.md
  69. 38 0
      src/pages/kr/core/index.md
  70. 300 0
      src/pages/kr/core/what-is-an-asset.md

+ 47 - 0
src/pages/kr/amman/cli-commands.md

@@ -0,0 +1,47 @@
+---
+title: CLI ๋ช…๋ น์–ด
+metaTitle: CLI ๋ช…๋ น์–ด | Amman
+description: Metaplex Amman ๋กœ์ปฌ ๊ฒ€์ฆ์ž ๋„๊ตฌ ํ‚คํŠธ์˜ CLI ๋ช…๋ น์–ด.
+---
+
+```sh
+amman [๋ช…๋ น์–ด]
+
+๋ช…๋ น์–ด:
+  amman start    solana-test-validator์™€ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ amman relay ๋ฐ/๋˜๋Š”
+                 mock storage๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค
+  amman stop     relay์™€ storage๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์‹คํ–‰ ์ค‘์ธ solana
+                 test validator๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค
+  amman logs     'solana logs'๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  prettifier๋ฅผ ํ†ตํ•ด ํŒŒ์ดํ”„ํ•ฉ๋‹ˆ๋‹ค
+  amman airdrop  ์ œ๊ณต๋œ Sol์„ ์ง€๋ถˆ์ž์—๊ฒŒ ์—์–ด๋“œ๋กญํ•ฉ๋‹ˆ๋‹ค
+  amman label    amman์— ๊ณ„์ •์ด๋‚˜ ํŠธ๋žœ์žญ์…˜์šฉ ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
+  amman account  PublicKey๋‚˜ ๋ ˆ์ด๋ธ”์— ๋Œ€ํ•œ ๊ณ„์ • ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜
+                 ๋ชจ๋“  ๋ ˆ์ด๋ธ”๋œ ๊ณ„์ •์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค
+  amman run      ๋ชจ๋“  ์ฃผ์†Œ ๋ ˆ์ด๋ธ”์„ ํ™•์žฅํ•œ ํ›„ ์ œ๊ณต๋œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค
+
+์˜ต์…˜:
+  --help     ๋„์›€๋ง ๋ณด๊ธฐ                                                [boolean]
+  --version  ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋ณด๊ธฐ                                           [boolean]
+```
+
+## ๋ช…๋ น์–ด ์‹คํ–‰
+
+```sh
+npx amman start <config.js>
+```
+
+`config.js`๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด _amman_์€ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ `.ammanrc.js` ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
+์ด๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+package.json ์Šคํฌ๋ฆฝํŠธ์— Amman์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋ฉด ์„ ํƒํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ Amman์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```sh
+// npm
+npm run amman:start
+
+// yarn
+yarn amman:start
+
+// pnpm
+pnpm run amman:start
+```

+ 126 - 0
src/pages/kr/amman/configuration.md

@@ -0,0 +1,126 @@
+---
+title: ๊ตฌ์„ฑ
+metaTitle: ๊ตฌ์„ฑ | Amman
+description: Amman ๋กœ์ปฌ ๊ฒ€์ฆ์ž ๋„๊ตฌ ํ‚คํŠธ ๊ตฌ์„ฑํ•˜๊ธฐ.
+---
+
+์‹คํ–‰ํ•  ๋•Œ Amman์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ `.ammanrc.js`๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์ด ์—†์œผ๋ฉด Amman์€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
+
+๊ตฌ์„ฑ์€ ์•„๋ž˜ ์†์„ฑ ์ค‘ ํ•˜๋‚˜์™€ ํ•จ๊ป˜ 'validator'๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” JavaScript ๋ชจ๋“ˆ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+- **killRunningValidators**: true์ด๋ฉด ์‹œ์Šคํ…œ์—์„œ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  solana-test-validators๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
+- **programs**: ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ์ž์— ๋กœ๋“œ๋˜์–ด์•ผ ํ•˜๋Š” bpf ํ”„๋กœ๊ทธ๋žจ
+- **accountsCluster**: ์›๊ฒฉ ๊ณ„์ •์„ ๋ณต์ œํ•  ๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ
+- **accounts**: ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ์ž์— ๋กœ๋“œํ•  ์›๊ฒฉ ๊ณ„์ • ๋ฐฐ์—ด
+- **jsonRpcUrl**: ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ์ž๊ฐ€ JSON RPC ์š”์ฒญ์„ ์ˆ˜์‹ ํ•  URL
+- **websocketUrl**: RPC ์›น์†Œ์ผ“์šฉ
+- **ledgerDir**: solana ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ์ž๊ฐ€ ์›์žฅ์„ ์“ฐ๋Š” ์œ„์น˜
+- **resetLedger**: true์ด๋ฉด ์‹œ์ž‘ ์‹œ ์›์žฅ์ด ์ œ๋„ค์‹œ์Šค๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- **verifyFees**: true์ด๋ฉด ํŠธ๋žœ์žญ์…˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ฒญ๊ตฌํ•  ๋•Œ๊นŒ์ง€ ๊ฒ€์ฆ์ž๊ฐ€ ์™„์ „ํžˆ ์‹œ์ž‘๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+## ๊ตฌ์„ฑ ์˜ˆ์ œ
+
+### ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ๊ฒ€์ฆ์ž/๋ฆด๋ ˆ์ด/์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ
+
+๋‹ค์Œ์€ ์ถ”๊ฐ€๋œ ํ”„๋กœ๊ทธ๋žจ๊ณผ `relay` ๋ฐ `storage` ๊ตฌ์„ฑ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๊ฐ’์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ๊ตฌ์„ฑ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
+
+_amman-explorer relay_๋Š” _CI_ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํ•œ ๊ฒ€์ฆ์ž์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋˜๋ฉฐ, ์•Œ๋ ค์ง„ _relay port_์—์„œ ๋ฆด๋ ˆ์ด๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ๋จผ์ € ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
+
+_mock storage_๋Š” `storage` ๊ตฌ์„ฑ์ด ์ œ๊ณต๋œ ๊ฒฝ์šฐ์—๋งŒ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์•Œ๋ ค์ง„ _storage port_์—์„œ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋ฒ„๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ๋จผ์ € ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
+
+```js
+import { LOCALHOST, tmpLedgerDir } from '@metaplex-foundation/amman'
+
+module.exports = {
+  validator: {
+    killRunningValidators: true,
+    programs: [
+      {
+        label: 'Token Metadata Program',
+        programId: programIds.metadata,
+        deployPath: localDeployPath('mpl_token_metadata'),
+      },
+    ],
+    jsonRpcUrl: LOCALHOST,
+    websocketUrl: '',
+    commitment: 'confirmed',
+    ledgerDir: tmpLedgerDir(),
+    resetLedger: true,
+    verifyFees: false,
+    detached: process.env.CI != null,
+  },
+  relay: {
+    enabled: process.env.CI == null,
+    killRunningRelay: true,
+  },
+  storage: {
+    enabled: process.env.CI == null,
+    storageId: 'mock-storage',
+    clearOnStart: true,
+  },
+}
+```
+
+### ์›๊ฒฉ ๊ณ„์ • ๋ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋Š” ๊ตฌ์„ฑ
+
+Amman์€ ์„ ํƒํ•œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋กœ์ปฌ ์‚ฌ์šฉ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๊ณ„์ •๊ณผ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```js
+module.exports = {
+  validator: {
+    // ๊ธฐ๋ณธ์ ์œผ๋กœ Amman์€ accountsCluster์—์„œ ๊ณ„์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค (๊ณ„์ •๋ณ„๋กœ ์žฌ์ •์˜ ๊ฐ€๋Šฅ)
+    accountsCluster: 'https://api.metaplex.solana.com',
+    accounts: [
+      {
+        label: 'Token Metadata Program',
+        accountId: 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',
+        // executable์„ true๋กœ ํ‘œ์‹œํ•˜๋ฉด Amman์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๊ณ„์ •๋„ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
+        executable: true,
+      },
+      {
+        label: 'Random other account',
+        accountId: '4VLgNs1jXgdciSidxcaLKfrR9WjATkj6vmTm5yCwNwui',
+        // ๊ธฐ๋ณธ์ ์œผ๋กœ executable์€ false์ด๋ฉฐ ๊ตฌ์„ฑ์— ํฌํ•จ๋  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค
+        // executable: false,
+
+        // ์—ฌ๊ธฐ์— ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉด accountsCluster ํ•„๋“œ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค
+        cluster: 'https://metaplex.devnet.rpcpool.com',
+      },
+    ],
+  },
+}
+```
+
+### ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ์ž ๊ธฐ๋Šฅ ๋น„ํ™œ์„ฑํ™”
+
+_devnet_๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋Š” solana-test-validator๋Š” ์–ด๋–ค ๊ธฐ๋Šฅ๋„ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ œ๊ณต๋œ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
+
+ํŠน์ • ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ์‹คํ–‰๋  ๋ฐฉ์‹์— ๋” ๊ฐ€๊นŒ์šด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด _matchFeatures_ ๊ตฌ์„ฑ ์†์„ฑ์„ ํ†ตํ•ด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```js
+module.exports = {
+  validator: {
+    ...
+    // ์•„๋ž˜๋Š” `mainnet-beta` ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ๋น„ํ™œ์„ฑํ™”๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
+    matchFeatures: 'mainnet-beta',
+  }
+}
+```
+
+๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด _deactivateFeatures_ ์†์„ฑ์„ ํ†ตํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```js
+module.exports = {
+  validator: {
+    ...
+   deactivateFeatures: ['21AWDosvp3pBamFW91KB35pNoaoZVTM7ess8nr2nt53B'],
+  }
+}
+```
+
+**์ฐธ๊ณ **: ์œ„์˜ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+
+#### ๋ฆฌ์†Œ์Šค
+
+- [test validator runtime features](https://docs.solana.com/developing/test-validator#appendix-ii-runtime-features)
+- [runtime new features](https://docs.solana.com/developing/programming-model/runtime#new-features)

+ 37 - 0
src/pages/kr/amman/getting-started.md

@@ -0,0 +1,37 @@
+---
+title: ์‹œ์ž‘ํ•˜๊ธฐ
+metaTitle: ์‹œ์ž‘ํ•˜๊ธฐ | Amman
+description: Metaplex Amman ๋กœ์ปฌ ๊ฒ€์ฆ์ž ๋„๊ตฌ ํ‚คํŠธ์˜ ์„ค์น˜ ๋ฐ ์„ค์ •.
+---
+
+## ์ „์ œ ์กฐ๊ฑด
+
+Amman์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์‹œ์Šคํ…œ์— ๋ช‡ ๊ฐ€์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+- [Rust](https://www.rust-lang.org/tools/install)
+- [Solana CLI](https://docs.solanalabs.com/cli/install)
+- [NodeJs](https://nodejs.org/en/download)
+
+## ์„ค์น˜
+
+์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ฑฐ๋‚˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด์—ˆ๋‹ค๋ฉด ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด Amman์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```js
+npm i @metaplex-foundation/amman
+```
+
+## ์Šคํฌ๋ฆฝํŠธ์— ์ถ”๊ฐ€ (์„ ํƒ์‚ฌํ•ญ)
+
+์‚ฌ์šฉ ํŽธ์˜๋ฅผ ์œ„ํ•ด package.json ์Šคํฌ๋ฆฝํŠธ์— Amman ์‹คํ–‰์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="package.json" %}
+{% dialect title="JavaScript" id="js" %}
+
+```js
+"scripts": {
+    ...
+    "amman:start": "npx amman start"
+  },
+```
+{% /dialect %}
+{% /dialect-switcher %}

+ 15 - 0
src/pages/kr/amman/index.md

@@ -0,0 +1,15 @@
+---
+title: ๊ฐœ์š”
+metaTitle: ๊ฐœ์š” | Amman
+description: Amman ๋กœ์ปฌ ๊ฒ€์ฆ์ž์— ๋Œ€ํ•œ ๊ณ ์ˆ˜์ค€ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+---
+
+๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒ€์ฆ์ž์—์„œ Solana SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์•ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” **A** **m** odern **man** datory ๋„๊ตฌ๋ฒจํŠธ์ž…๋‹ˆ๋‹ค. {% .lead %}
+
+{% quick-links %}
+
+{% quick-link title="์‹œ์ž‘ํ•˜๊ธฐ" icon="InboxArrowDown" href="/kr/amman/getting-started" description="์›ํ•˜๋Š” ์–ธ์–ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•„์ˆ˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="๊ตฌ์„ฑ" icon="CodeBracketSquare" href="/kr/amman/pre-made-configs" description="์‹œ๋„ํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์„ฑ ์„ธํŠธ์ž…๋‹ˆ๋‹ค." /%}
+
+{% /quick-links %}

+ 206 - 0
src/pages/kr/amman/pre-made-configs.md

@@ -0,0 +1,206 @@
+---
+title: ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์„ฑ
+metaTitle: ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์„ฑ | Amman
+description: Metaplex Amman ๋กœ์ปฌ ๊ฒ€์ฆ์ž ๋„๊ตฌ ํ‚คํŠธ์˜ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์„ฑ ์„ธํŠธ.
+---
+
+๋‹ค์Œ์€ ๋‹ค์–‘ํ•œ Metaplex ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ Amman ๊ตฌ์„ฑ์˜ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ํ•„์š”์— ๋งž๊ฒŒ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## Bubblegum
+
+์ด ์„ค์ •์€ Metaplex Bubblegum์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ž‘์—…ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
+
+```json
+const { LOCALHOST, tmpLedgerDir } = require("@metaplex-foundation/amman");
+
+module.exports = {
+  validator: {
+    killRunningValidators: true,
+    accountsCluster: "https://api.devnet.solana.com",
+    accounts: [
+       {
+        label: "Bubblegum",
+        accountId: "BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY",
+        executable: true,
+      },
+      {
+        label: "Token Metadata Program",
+        accountId: "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s",
+        executable: true,
+      },
+      {
+        label: "Token Auth Rules",
+        accountId: "auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3rboVmgg",
+        executable: true,
+      },
+      {
+        label: "Spl ATA Program",
+        accountId: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
+        executable: true,
+      },
+      {
+        label: "SPL Token Program",
+        accountId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+        executable: true,
+      },
+      {
+        label: "SPL Account Compression",
+        accountId: "cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK",
+        executable: true
+      },
+      {
+        label: "SPL Noop Program",
+        accountId: "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV",
+        executable: true
+      },
+
+    ],
+    jsonRpcUrl: LOCALHOST,
+    websocketUrl: "",
+    commitment: "confirmed",
+    ledgerDir: tmpLedgerDir(),
+    resetLedger: true,
+    verifyFees: false,
+    detached: process.env.CI != null,
+  },
+  relay: {
+    enabled: process.env.CI == null,
+    killRunningRelay: true,
+  },
+  storage: {
+    enabled: process.env.CI == null,
+    storageId: "mock-storage",
+    clearOnStart: true,
+  },
+};
+```
+
+## Candy Machine
+
+์ด ์„ค์ •์€ Metaplex Candy Machine์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ž‘์—…ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
+
+```json
+const { LOCALHOST, tmpLedgerDir } = require("@metaplex-foundation/amman");
+
+module.exports = {
+  validator: {
+    killRunningValidators: true,
+    accountsCluster: "https://api.devnet.solana.com	",
+    accounts: [
+       {
+        label: "Candy Machine v3",
+        accountId: "CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR",
+        executable: true,
+      },
+      {
+        label: "Candy Guard",
+        accountId: "Guard1JwRhJkVH6XZhzoYxeBVQe872VH6QggF4BWmS9g",
+        executable: true,
+      },
+      {
+        label: "Token Metadata Program",
+        accountId: "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s",
+        executable: true,
+      },
+      {
+        label: "Token Auth Rules",
+        accountId: "auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3rboVmgg",
+        executable: true,
+      },
+      {
+        label: "Spl ATA Program",
+        accountId: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
+        executable: true,
+      },
+      {
+        label: "SPL Token Program",
+        accountId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+        executable: true,
+      },
+    ],
+    jsonRpcUrl: LOCALHOST,
+    websocketUrl: "",
+    commitment: "confirmed",
+    ledgerDir: tmpLedgerDir(),
+    resetLedger: true,
+    verifyFees: false,
+    detached: process.env.CI != null,
+  },
+  relay: {
+    enabled: process.env.CI == null,
+    killRunningRelay: true,
+  },
+  storage: {
+    enabled: process.env.CI == null,
+    storageId: "mock-storage",
+    clearOnStart: true,
+  },
+};
+```
+
+## Core Candy Machine
+
+์ด ์„ค์ •์€ Metaplex Core Candy Machine์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ž‘์—…ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ Candy Machine ์˜ˆ์ œ์™€ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅธ Candy Machine ํ”„๋กœ๊ทธ๋žจ ID์™€ Candy Guard ํ”„๋กœ๊ทธ๋žจ ID๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  MPL-Core ํ”„๋กœ๊ทธ๋žจ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
+
+```json
+const { LOCALHOST, tmpLedgerDir } = require("@metaplex-foundation/amman");
+
+module.exports = {
+  validator: {
+    killRunningValidators: true,
+    accountsCluster: "https://api.devnet.solana.com",
+    accounts: [
+       {
+        label: "Core Candy Machine",
+        accountId: "CMACYFENjoBMHzapRXyo1JZkVS6EtaDDzkjMrmQLvr4J",
+        executable: true,
+      },
+      {
+        label: "Core Candy Guard",
+        accountId: "CMAGAKJ67e9hRZgfC5SFTbZH8MgEmtqazKXjmkaJjWTJ",
+        executable: true,
+      },
+      {
+        label: "mpl-core",
+        accountId: "CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d",
+        executable: true,
+      },      
+      {
+        label: "Token Metadata Program",
+        accountId: "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s",
+        executable: true,
+      },
+      {
+        label: "Token Auth Rules",
+        accountId: "auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3rboVmgg",
+        executable: true,
+      },
+      {
+        label: "Spl ATA Program",
+        accountId: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
+        executable: true,
+      },
+      {
+        label: "SPL Token Program",
+        accountId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+        executable: true,
+      },
+    ],
+    jsonRpcUrl: LOCALHOST,
+    websocketUrl: "",
+    commitment: "confirmed",
+    ledgerDir: tmpLedgerDir(),
+    resetLedger: true,
+    verifyFees: false,
+    detached: process.env.CI != null,
+  },
+  relay: {
+    enabled: process.env.CI == null,
+    killRunningRelay: true,
+  },
+  storage: {
+    enabled: process.env.CI == null,
+    storageId: "mock-storage",
+    clearOnStart: true,
+  },
+};

+ 13 - 0
src/pages/kr/aura/blockchains/eclipse.md

@@ -0,0 +1,13 @@
+---
+title: Eclipse SVM์˜ Aura
+metaTitle: Eclipse SVM์˜ Aura | Aura
+description: Eclipse SVM ๋ธ”๋ก์ฒด์ธ์˜ Metaplex Aura์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+{% callout title="Aura ์—”๋“œํฌ์ธํŠธ" %}
+
+**๋‹ค์Œ ๋…ธ๋“œ์—์„œ Eclipse SVM์˜ Aura๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:**
+- **Devnet**: https://aura-eclipse-devnet.metaplex.com 
+- **Mainnet**: https://aura-eclipse-mainnet.metaplex.com 
+
+{% /callout %}

+ 13 - 0
src/pages/kr/aura/blockchains/solana.md

@@ -0,0 +1,13 @@
+---
+title: Solana์˜ Aura
+metaTitle: Solana์˜ Aura | Aura
+description: Solana ๋ธ”๋ก์ฒด์ธ์˜ Metaplex Aura์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+{% callout title="Aura ์—”๋“œํฌ์ธํŠธ" %}
+
+**๋‹ค์Œ ๋…ธ๋“œ์—์„œ Solana์˜ Aura๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:**
+- **Devnet**: https://aura-devnet.metaplex.com
+- **Mainnet**: https://aura-mainnet.metaplex.com
+
+{% /callout %}

+ 18 - 0
src/pages/kr/aura/faq.md

@@ -0,0 +1,18 @@
+---
+title: FAQ
+metaTitle: FAQ | Aura
+description: Aura์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ
+---
+
+## Aura ๊ฒŒ์ดํŠธ์›จ์ด์— ์–ด๋–ป๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
+
+Aura ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ํŠน์ • ์˜ค๋ฅ˜์™€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ๊ธฐ์ˆ  ๊ฒ€ํ† ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## Aura๋Š” ์–ด๋–ค ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋‚˜์š”?
+
+Aura๋Š” ์ตœ์‹  DAS ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ ๋‹ค์Œ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:
+- MPL Token Metadata (NFT/pNFT)
+- MPL Core (Core Assets/Core Collections)
+- MPL Bubblegum (cNFTs)
+- Fungible SPL Tokens
+- SPL Token22

+ 17 - 0
src/pages/kr/aura/index.md

@@ -0,0 +1,17 @@
+---
+title: ๊ฐœ์š”
+metaTitle: ๊ฐœ์š” | Aura
+description: ๋””์ง€ํ„ธ ์ž์‚ฐ์„ ์œ„ํ•œ ํ†ตํ•ฉ ๋„คํŠธ์›Œํฌ์ธ Aura์˜ ๊ณ ์ˆ˜์ค€ ๊ฐœ์š”.
+---
+
+Metaplex Aura๋Š” Solana์™€ Solana Virtual Machine (SVM)์„ ํ™•์žฅํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋„คํŠธ์›Œํฌ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.
+
+๋ถ„์‚ฐํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ธ”๋ก์ฒด์ธ ๋ฐ์ดํ„ฐ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ฝ๊ณ  ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ณ , ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๋ฉฐ, ๋А๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์•™ํ™”๋œ ๋Œ€์•ˆ๊ณผ ๊ฒฝ์Ÿํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Aura๋Š” ์ž์‚ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์„ฑ๋Šฅ์ ์œผ๋กœ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ถ„์‚ฐํ˜• Aura ๋…ธ๋“œ ๋„คํŠธ์›Œํฌ๋กœ SVM๊ณผ MPL์„ ๋ณด์™„ํ•จ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
+
+## Solana ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ
+
+์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž๋Š” Solana ๋„คํŠธ์›Œํฌ์˜ ๋ถ„์‚ฐํ˜• ์ฝ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์••์ถ•๋œ ์ƒํƒœ์—์„œ๋„ ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋””์ง€ํ„ธ ์ž์‚ฐ๊ณผ ๋ฏธ๋””์–ด ์ฝ˜ํ…์ธ ์— ํ•ญ์ƒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+## ์ฐธ์กฐ ํŽ˜์ด์ง€
+
+- [Solana ๋ฐ SVM ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ](/kr/aura/reading-solana-and-svm-data): Aura ๋„คํŠธ์›Œํฌ๋Š” [Metaplex Digital Asset Standard (DAS) API](/kr/das-api)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž์‚ฐ ๋ฐ์ดํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์šฉ์„ฑ๊ณผ ๋ถ„์‚ฐํ˜• ์ธ๋ฑ์‹ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

+ 17 - 0
src/pages/kr/aura/reading-solana-and-svm-data.md

@@ -0,0 +1,17 @@
+---
+title: Solana ๋ฐ SVM ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ
+metaTitle: Solana ๋ฐ SVM ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ | Aura
+description: Metaplex Aura๋กœ Solana ๋ฐ SVM ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+Metaplex Aura ๋ฐ์ดํ„ฐ ๋„คํŠธ์›Œํฌ๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ Solana ๋ฐ Eclipse์™€ ๊ฐ™์€ ๋‹ค๋ฅธ SVM ๊ธฐ๋ฐ˜ ์ฒด์ธ์— ๋Œ€ํ•œ ์˜จ์ฒด์ธ ์ƒํƒœ์˜ ์„ฑ๋Šฅ์ ์ด๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ์ •ํ™•ํ•œ ์ฝ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+์ธ๋ฑ์„œ์™€ RPC ์ œ๊ณต์—…์ฒด๋Š” ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์ƒ๋‹นํ•œ ์–ด๋ ค์›€์„ ๊ฒช๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋กœ ์ธํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค:
+
+- **๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ**: Solana ๋…ธ๋“œ๋Š” ์ข…์ข… ๋™๊ธฐํ™”๊ฐ€ ํ•ด์ œ๋˜๊ณ  Geyser ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŠนํžˆ ๋…ธ๋“œ ์žฌ๋™๊ธฐํ™” ์ค‘์— ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ธ๋ฑ์„œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์ฆ๊ฐ€ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ**: ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์ด ๊ณ„์† ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๊ด€๋ จ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+- **์‚ฌ์šฉ์ž ๊ฒฝํ—˜**: ๋‹จํŽธํ™”๋œ ๋ฐ์ดํ„ฐ ๊ฐ€์šฉ์„ฑ์€ ์ œ๊ณต์—…์ฒด ์ข…์†์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์—์„œ ๋ชจ๋“  ๋””์ง€ํ„ธ ์ž์‚ฐ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ RPC ์ œ๊ณต์—…์ฒด์— ์˜์กดํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
+
+## ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ƒํ™ฉ
+
+Aura์™€ ๊ทธ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ƒํ™ฉ์€ github ์ €์žฅ์†Œ [https://github.com/metaplex-foundation/aura/](https://github.com/metaplex-foundation/aura/)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 66 - 0
src/pages/kr/bubblegum-v2/burn-cnfts.md

@@ -0,0 +1,66 @@
+---
+title: ์••์ถ•๋œ NFT ์†Œ๊ฐ
+metaTitle: ์••์ถ•๋œ NFT ์†Œ๊ฐ | Bubblegum V2
+description: Bubblegum์—์„œ ์••์ถ•๋œ NFT๋ฅผ ์†Œ๊ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+**burnV2** ๋ช…๋ น์–ด๋Š” ์••์ถ•๋œ NFT๋ฅผ ์†Œ๊ฐํ•˜์—ฌ Bubblegum ํŠธ๋ฆฌ์—์„œ ์˜๊ตฌ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์Šน์ธํ•˜๋ ค๋ฉด ํ˜„์žฌ ์†Œ์œ ์ž๋‚˜ ์œ„์ž„ ๊ถŒํ•œ(์žˆ๋Š” ๊ฒฝ์šฐ) ์ค‘ ํ•˜๋‚˜๊ฐ€ ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค:
+
+- **๋ฆฌํ”„ ์†Œ์œ ์ž**, **๋ฆฌํ”„ ์œ„์ž„์ž**, ๋˜๋Š” **์˜๊ตฌ ์†Œ๊ฐ ์œ„์ž„์ž**: ์••์ถ•๋œ NFT์˜ ํ˜„์žฌ ์†Œ์œ ์ž, ์œ„์ž„ ๊ถŒํ•œ(์žˆ๋Š” ๊ฒฝ์šฐ), ๋˜๋Š” ์ปฌ๋ ‰์…˜์˜ ์˜๊ตฌ ์†Œ๊ฐ ์œ„์ž„์ž. ์ž์‚ฐ์ด ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ `coreCollection` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์ด ๋ช…๋ น์–ด๋Š” Bubblegum ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•˜๋ฏ€๋กœ ์†Œ๊ฐํ•˜๊ธฐ ์ „์— ์••์ถ•๋œ NFT์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฆฌํ”„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด์— ๊ณตํ†ต์ด๋ฏ€๋กœ [๋‹ค์Œ FAQ](/kr/bubblegum-v2/faq#replace-leaf-instruction-arguments)์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ Metaplex DAS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% callout title="ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ" type="note" %}
+ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด `getAssetWithProof`์™€ ํ•จ๊ป˜ `{ truncateCanopy: true }`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [FAQ](/kr/bubblegum-v2/faq#replace-leaf-instruction-arguments)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+{% /callout %}
+
+{% callout title="์ปฌ๋ ‰์…˜" type="note" %}
+cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ `coreCollection` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+{% /callout %}
+
+{% dialect-switcher title="์••์ถ•๋œ NFT ์†Œ๊ฐ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { getAssetWithProof, burnV2 } from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+await burnV2(umi, {
+  ...assetWithProof,
+  leafOwner: currentLeafOwner,
+}).sendAndConfirm(umi)
+```
+
+{% totem-accordion title="์œ„์ž„์ž ์‚ฌ์šฉ" %}
+
+```ts
+import { getAssetWithProof, burnV2 } from '@metaplex-foundation/mpl-bubblegum'
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+await burnV2(umi, {
+  ...assetWithProof,
+  leafDelegate: currentLeafDelegate,
+}).sendAndConfirm(umi)
+```
+
+{% /totem-accordion %}
+
+{% totem-accordion title="์˜๊ตฌ ์†Œ๊ฐ ์œ„์ž„์ž ์‚ฌ์šฉ" %}
+
+```ts
+import { getAssetWithProof, burnV2 } from '@metaplex-foundation/mpl-bubblegum'
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+await burnV2(umi, {
+  ...assetWithProof,
+  authority: permanentBurnDelegate, // ์˜๊ตฌ ์†Œ๊ฐ ์œ„์ž„์ž์˜ ์„œ๋ช…์ž
+  coreCollection: collection.publicKey,
+}).sendAndConfirm(umi)
+```
+
+{% /totem-accordion %}
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 87 - 0
src/pages/kr/bubblegum-v2/collections.md

@@ -0,0 +1,87 @@
+---
+title: ์ปฌ๋ ‰์…˜ ํ™•์ธ
+metaTitle: ์ปฌ๋ ‰์…˜ ํ™•์ธ | Bubblegum V2
+description: Bubblegum์—์„œ ์ปฌ๋ ‰์…˜์„ ์„ค์ •, ํ™•์ธ ๋ฐ ํ™•์ธ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+cNFT๋Š” ๋ฏผํŒ… ์‹œ ๋˜๋Š” ๋‚˜์ค‘์— MPL-Core ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+NFT์™€ ๊ด€๋ จ๋œ ์ปฌ๋ ‰์…˜์˜ ๊ฐœ๋…์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์ด๋Š” ๋‹ค๋ฅธ NFT๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ๋น„์••์ถ• NFT์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ **์ปฌ๋ ‰์…˜**์˜ ๋ฐ์ดํ„ฐ๋Š” ์ „์ฒด ์ปฌ๋ ‰์…˜์˜ ์ด๋ฆ„๊ณผ ๋ธŒ๋žœ๋”ฉ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Bubblegum V2๋ถ€ํ„ฐ๋Š” ๋ฆฌํ”„ ์†Œ์œ ์ž์˜ ์ƒํ˜ธ ์ž‘์šฉ ์—†์ด ์œ„์ž„์ž๊ฐ€ cNFT๋ฅผ ๋™๊ฒฐํ•˜๊ณ  ํ•ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋“ฑ ์ปฌ๋ ‰์…˜ ์ˆ˜์ค€์—์„œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. [MPL-Core ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค](/kr/core/collections).
+
+[์—ฌ๊ธฐ์— ๋ฌธ์„œํ™”๋œ](/kr/bubblegum-v2/mint-cnfts#minting-to-a-collection) **MintV2** ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋œ NFT๋ฅผ ์ปฌ๋ ‰์…˜์— ์ง์ ‘ ๋ฏผํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธด ํ•˜์ง€๋งŒ ์ปฌ๋ ‰์…˜ ์—†์ด cNFT๋ฅผ ์ด๋ฏธ ๋ฏผํŒ…ํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น cNFT์— ์ปฌ๋ ‰์…˜์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. "verified" ๋ถ€์šธ์ด ์žˆ๋Š” Metaplex Token Metadata ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” Bubblegum v1๊ณผ ๋‹ฌ๋ฆฌ Bubblegum V2๋Š” ํ•ด๋‹น ๋ถ€์šธ์ด ์—†๋Š” MPL-Core ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+MPL-Core ์ปฌ๋ ‰์…˜์€ [`BubblegumV2` ํ”Œ๋Ÿฌ๊ทธ์ธ](/kr/core/plugins/bubblegum)์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ ์„น์…˜์€ ๋‹จ์ผ ๋‹จ๊ณ„ ํŠธ๋žœ์žญ์…˜์—์„œ cNFT์—์„œ ์ปฌ๋ ‰์…˜์„ ์„ค์ •ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. `coreCollection`๊ณผ `newCoreCollection` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๋‹จ์ผ ๋ช…๋ น์–ด์—์„œ ๋‘ ์ž‘์—…์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์ปฌ๋ ‰์…˜ ๊ถŒํ•œ์ด ๋™์ผํ•œ ์ง€๊ฐ‘์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋‘˜ ๋‹ค ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+## ์••์ถ•๋œ NFT์˜ ์ปฌ๋ ‰์…˜ ์„ค์ •
+**setCollectionV2** ๋ช…๋ น์–ด๋Š” cNFT์˜ ์ปฌ๋ ‰์…˜์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cNFT์—์„œ ์ปฌ๋ ‰์…˜์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ cNFT์˜ ์ปฌ๋ ‰์…˜์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT์˜ ์ปฌ๋ ‰์…˜ ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import {
+  getAssetWithProof,
+  setCollectionV2,
+  MetadataArgsV2Args
+} from '@metaplex-foundation/mpl-bubblegum';
+import {
+  unwrapOption,
+  none,
+} from '@metaplex-foundation/umi';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+
+const collection = unwrapOption(assetWithProof.metadata.collection)
+
+const metadata: MetadataArgsV2Args = {
+  ...assetWithProof.metadata,
+  collection: collection?.key ?? null,
+};
+
+const signature = await setCollectionV2(umi, {
+  ...assetWithProof,
+  newCollectionAuthority: newCollectionUpdateAuthority,
+  metadata,
+  newCoreCollection: newCoreCollection.publicKey,
+}).sendAndConfirm(umi);
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์••์ถ•๋œ NFT์˜ ์ปฌ๋ ‰์…˜ ์ œ๊ฑฐ
+**setCollectionV2** ๋ช…๋ น์–ด๋Š” cNFT์—์„œ ์ปฌ๋ ‰์…˜์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT์˜ ์ปฌ๋ ‰์…˜ ์ œ๊ฑฐ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import {
+  getAssetWithProof,
+  setCollectionV2,
+  MetadataArgsV2Args
+} from '@metaplex-foundation/mpl-bubblegum'
+import {
+  unwrapOption,
+  none,
+} from '@metaplex-foundation/umi';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+
+const collection = unwrapOption(assetWithProof.metadata.collection)
+
+const signature = await setCollectionV2(umi, {
+  ...assetWithProof,
+  authority: collectionAuthoritySigner,
+  coreCollection: collection!.key
+}).sendAndConfirm(umi);
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 329 - 0
src/pages/kr/bubblegum-v2/concurrent-merkle-trees.md

@@ -0,0 +1,329 @@
+---
+title: ๋™์‹œ ๋จธํด ํŠธ๋ฆฌ
+metaTitle: ๋™์‹œ ๋จธํด ํŠธ๋ฆฌ | Bubblegum V2
+description: ๋™์‹œ ๋จธํด ํŠธ๋ฆฌ์™€ Bubblegum์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+## ์†Œ๊ฐœ
+
+๋จธํด ํŠธ๋ฆฌ๋Š” ๊ฐ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•ด์‹œ๋กœ ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋œ ํŠธ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ธ์ ‘ํ•œ ๋ฆฌํ”„๋“ค์ด ํ•จ๊ป˜ ํ•ด์‹ฑ๋˜๊ณ , ๊ฒฐ๊ณผ ํ•ด์‹œ๊ฐ€ ํ•ด๋‹น ๋ฆฌํ”„๋“ค์˜ ๋ถ€๋ชจ์ธ ๋…ธ๋“œ์˜ ๋ ˆ์ด๋ธ”์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋“ค์ด ๋‹ค์‹œ ํ•จ๊ป˜ ํ•ด์‹ฑ๋˜๊ณ , ๊ฒฐ๊ณผ ํ•ด์‹œ๊ฐ€ ํ•ด๋‹น ๋…ธ๋“œ๋“ค์˜ ๋ถ€๋ชจ์ธ ๋…ธ๋“œ์˜ ๋ ˆ์ด๋ธ”์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ๋ฃจํŠธ ๋…ธ๋“œ์— ๋Œ€ํ•ด ๋‹จ์ผ ํ•ด์‹œ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ์ผ ํ•ด์‹œ๋Š” ์ „์ฒด ํŠธ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์•”ํ˜ธํ•™์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋จธํด ๋ฃจํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
+
+๋Œ€๋ถ€๋ถ„์˜ ๋จธํด ํŠธ๋ฆฌ๋Š” ์ด์ง„ ํŠธ๋ฆฌ์ด์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๊ทธ๋Ÿด ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. Bubblegum ์••์ถ•๋œ NFT(cNFT)์— ์‚ฌ์šฉ๋˜๋Š” ๋จธํด ํŠธ๋ฆฌ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์— ํ‘œ์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ด์ง„ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.
+
+{% diagram %}
+
+{% node %}
+{% node #root label="๋จธํด ๋ฃจํŠธ" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 1, ๋…ธ๋“œ 2)" /%}
+{% /node %}
+
+{% node parent="root" y=100 x=-220 %}
+{% node #i-node-1 label="๋…ธ๋“œ 1" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 3, ๋…ธ๋“œ 4)" /%}
+{% /node %}
+
+{% node parent="root" y=100 x=220 %}
+{% node #i-node-2 label="๋…ธ๋“œ 2" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 5, ๋…ธ๋“œ 6)" /%}
+{% /node %}
+
+{% node parent="i-node-1" y=100 x=-110 %}
+{% node #i-node-3 label="๋…ธ๋“œ 3" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 1, ๋ฆฌํ”„ 2)" /%}
+{% /node %}
+
+{% node parent="i-node-1" y=100 x=110 %}
+{% node #i-node-4 label="๋…ธ๋“œ 4" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 3, ๋ฆฌํ”„ 4)" /%}
+{% /node %}
+
+{% node parent="i-node-2" y=100 x=-110 %}
+{% node #i-node-5 label="๋…ธ๋“œ 5" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 5, ๋ฆฌํ”„ 6)" /%}
+{% /node %}
+
+{% node parent="i-node-2" y=100 x=110 %}
+{% node #i-node-6 label="๋…ธ๋“œ 6" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 7, ๋ฆฌํ”„ 8)" /%}
+{% /node %}
+
+{% node parent="i-node-3" y="100" x="-40" %}
+{% node #leaf-1 label="๋ฆฌํ”„ 1" /%}
+{% node label="ํ•ด์‹œ(cNFT 1)" /%}
+{% /node %}
+
+{% node parent="i-node-3" y="100" x="70" %}
+{% node #leaf-2 label="๋ฆฌํ”„ 2" /%}
+{% node label="ํ•ด์‹œ(cNFT 2)" /%}
+{% /node %}
+
+{% node parent="i-node-4" y="100" x="-40" %}
+{% node #leaf-3 label="๋ฆฌํ”„ 3" /%}
+{% node label="ํ•ด์‹œ(cNFT 3)" /%}
+{% /node %}
+
+{% node parent="i-node-4" y="100" x="70" %}
+{% node #leaf-4 label="๋ฆฌํ”„ 4" /%}
+{% node label="ํ•ด์‹œ(cNFT 4)" /%}
+{% /node %}
+
+{% node parent="i-node-5" y="100" x="-40" %}
+{% node #leaf-5 label="๋ฆฌํ”„ 5" /%}
+{% node label="ํ•ด์‹œ(cNFT 5)" /%}
+{% /node %}
+
+{% node parent="i-node-5" y="100" x="70" %}
+{% node #leaf-6 label="๋ฆฌํ”„ 6" /%}
+{% node label="ํ•ด์‹œ(cNFT 6)" /%}
+{% /node %}
+
+{% node parent="i-node-6" y="100" x="-40" %}
+{% node #leaf-7 label="๋ฆฌํ”„ 7" /%}
+{% node label="ํ•ด์‹œ(cNFT 7)" /%}
+{% /node %}
+
+{% node parent="i-node-6" y="100" x="70" %}
+{% node #leaf-8 label="๋ฆฌํ”„ 8" /%}
+{% node label="ํ•ด์‹œ(cNFT 8)" /%}
+{% /node %}
+
+{% edge from="i-node-1" to="root" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-2" to="root" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="i-node-3" to="i-node-1" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-4" to="i-node-1" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-6" to="i-node-2" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-5" to="i-node-2" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="leaf-1" to="i-node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-2" to="i-node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-4" to="i-node-4" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-3" to="i-node-4" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-5" to="i-node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-6" to="i-node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-7" to="i-node-6" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-8" to="i-node-6" fromPosition="top" toPosition="bottom" /%}
+
+{% /diagram %}
+
+๋ธ”๋ก์ฒด์ธ์— ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ, ์ด ๋จธํด ๋ฃจํŠธ๋ฅผ ์ €์žฅํ•˜๋ฉด ๋ฃจํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „์— ํ•ด์‹ฑ๋œ ๋ชจ๋“  ๊ฒƒ์˜ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์ผ ๊ฐ’์„ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ์˜ ์–ด๋–ค ๋ฆฌํ”„ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ธฐ์กด ๋จธํด ๋ฃจํŠธ๋Š” ๋ฌดํšจ๊ฐ€ ๋˜๊ณ  ๋‹ค์‹œ ๊ณ„์‚ฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+Bubblegum ์••์ถ•๋œ NFT์˜ ๊ฒฝ์šฐ ๋ฆฌํ”„ ๋…ธ๋“œ ํ•ด์‹œ๋Š” [๋ฆฌํ”„ ์Šคํ‚ค๋งˆ](https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum-v2/program/src/state/leaf_schema.rs#L40)์˜ ํ•ด์‹œ์ž…๋‹ˆ๋‹ค. ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ๋Š” ๋ฆฌํ”„ ID, ์†Œ์œ ์ž/์œ„์ž„์ž ์ •๋ณด, cNFT์˜ [ํฌ๋ฆฌ์—์ดํ„ฐ](https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum-v2/program/src/state/metaplex_adapter.rs#L103)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” [`creator_hash`](https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum-v2/program/src/lib.rs#L433), ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์••์ถ•๋œ NFT์˜ [๋ฉ”ํƒ€๋ฐ์ดํ„ฐ](https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum-v2/program/src/state/metaplex_adapter.rs#L81)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” [`data_hash`](https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum-v2/program/src/lib.rs#L450)(ํฌ๋ฆฌ์—์ดํ„ฐ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ํฌํ•จ)์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ผ ์••์ถ•๋œ NFT๋ฅผ ์•”ํ˜ธํ•™์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํ•ด์‹ฑ๋œ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
+
+## ๋ฆฌํ”„ ๊ฒฝ๋กœ
+
+์ด์ „ ์„น์…˜์—์„œ ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ, ๋จธํด ํŠธ๋ฆฌ์—์„œ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๋งŒ์ด ์ตœ์ข… ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ•ด์‹œ๋กœ ์ด์–ด์ง€๋Š” ๋‚ด๋ถ€ ๋…ธ๋“œ๋“ค์€ ๋ชจ๋‘ ๋จธํด ๋ฃจํŠธ๋ฅผ ์œ„ํ•œ ์ค‘๊ฐ„ ๊ฐ’์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ฆฌํ”„ ๋…ธ๋“œ์˜ **๊ฒฝ๋กœ**๋ฅผ ์–ธ๊ธ‰ํ•  ๋•Œ, ๋ฆฌํ”„ ๋…ธ๋“œ ํ•ด์‹œ ์ž์ฒด์™€ ๋จธํด ๋ฃจํŠธ๋กœ ์ง์ ‘ ์ด์–ด์ง€๋Š” ๋‚ด๋ถ€ ๋…ธ๋“œ๋“ค์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฆฌํ”„ 2์˜ ๊ฒฝ๋กœ๊ฐ€ ์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์— ๊ฐ•์กฐ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% diagram %}
+
+{% node %}
+{% node #root label="๋จธํด ๋ฃจํŠธ" theme="blue" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 1, ๋…ธ๋“œ 2)" theme="blue" /%}
+{% /node %}
+
+{% node parent="root" y=100 x=-220 %}
+{% node #i-node-1 label="๋…ธ๋“œ 1" theme="blue" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 3, ๋…ธ๋“œ 4)" theme="blue" /%}
+{% /node %}
+
+{% node parent="root" y=100 x=220 %}
+{% node #i-node-2 label="๋…ธ๋“œ 2" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 5, ๋…ธ๋“œ 6)" /%}
+{% /node %}
+
+{% node parent="i-node-1" y=100 x=-110 %}
+{% node #i-node-3 label="๋…ธ๋“œ 3" theme="blue" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 1, ๋ฆฌํ”„ 2)" theme="blue" /%}
+{% /node %}
+
+{% node parent="i-node-1" y=100 x=110 %}
+{% node #i-node-4 label="๋…ธ๋“œ 4" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 3, ๋ฆฌํ”„ 4)" /%}
+{% /node %}
+
+{% node parent="i-node-2" y=100 x=-110 %}
+{% node #i-node-5 label="๋…ธ๋“œ 5" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 5, ๋ฆฌํ”„ 6)" /%}
+{% /node %}
+
+{% node parent="i-node-2" y=100 x=110 %}
+{% node #i-node-6 label="๋…ธ๋“œ 6" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 7, ๋ฆฌํ”„ 8)" /%}
+{% /node %}
+
+{% node parent="i-node-3" y="100" x="-40" %}
+{% node #leaf-1 label="๋ฆฌํ”„ 1" /%}
+{% node label="ํ•ด์‹œ(cNFT 1)" /%}
+{% /node %}
+
+{% node parent="i-node-3" y="100" x="70" %}
+{% node #leaf-2 label="๋ฆฌํ”„ 2" theme="blue" /%}
+{% node label="ํ•ด์‹œ(cNFT 2)" theme="blue" /%}
+{% /node %}
+
+{% node parent="i-node-4" y="100" x="-40" %}
+{% node #leaf-3 label="๋ฆฌํ”„ 3" /%}
+{% node label="ํ•ด์‹œ(cNFT 3)" /%}
+{% /node %}
+
+{% node parent="i-node-4" y="100" x="70" %}
+{% node #leaf-4 label="๋ฆฌํ”„ 4" /%}
+{% node label="ํ•ด์‹œ(cNFT 4)" /%}
+{% /node %}
+
+{% node parent="i-node-5" y="100" x="-40" %}
+{% node #leaf-5 label="๋ฆฌํ”„ 5" /%}
+{% node label="ํ•ด์‹œ(cNFT 5)" /%}
+{% /node %}
+
+{% node parent="i-node-5" y="100" x="70" %}
+{% node #leaf-6 label="๋ฆฌํ”„ 6" /%}
+{% node label="ํ•ด์‹œ(cNFT 6)" /%}
+{% /node %}
+
+{% node parent="i-node-6" y="100" x="-40" %}
+{% node #leaf-7 label="๋ฆฌํ”„ 7" /%}
+{% node label="ํ•ด์‹œ(cNFT 7)" /%}
+{% /node %}
+
+{% node parent="i-node-6" y="100" x="70" %}
+{% node #leaf-8 label="๋ฆฌํ”„ 8" /%}
+{% node label="ํ•ด์‹œ(cNFT 8)" /%}
+{% /node %}
+
+{% edge from="i-node-1" to="root" fromPosition="top" toPosition="bottom" theme="blue" animated=true /%}
+{% edge from="i-node-2" to="root" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="i-node-3" to="i-node-1" fromPosition="top" toPosition="bottom" theme="blue" animated=true /%}
+{% edge from="i-node-4" to="i-node-1" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-6" to="i-node-2" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-5" to="i-node-2" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="leaf-1" to="i-node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-2" to="i-node-3" fromPosition="top" toPosition="bottom" theme="blue" animated=true /%}
+{% edge from="leaf-4" to="i-node-4" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-3" to="i-node-4" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-5" to="i-node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-6" to="i-node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-7" to="i-node-6" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-8" to="i-node-6" fromPosition="top" toPosition="bottom" /%}
+
+{% /diagram %}
+
+## ๋ฆฌํ”„ ์ฆ๋ช…
+
+์••์ถ•๋œ NFT๊ฐ€ ๋จธํด ํŠธ๋ฆฌ์— ์กด์žฌํ•˜๋Š”์ง€ ์ฆ๋ช…ํ•˜๋ ค๋ฉด ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ํ•ด์‹ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋จธํด ๋ฃจํŠธ๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ๊นŒ์ง€ ํ•จ๊ป˜ ํ•ด์‹ฑํ•  ํŠน์ • ๊ฐ’๋“ค๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ’๋“ค์„ ๋ฆฌํ”„์˜ **์ฆ๋ช…**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ, ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ฆ๋ช…์€ ์ธ์ ‘ํ•œ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ํ•ด์‹œ์™€ ๋จธํด ๋ฃจํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ ‘ํ•œ ๋‚ด๋ถ€ ๋…ธ๋“œ ํ•ด์‹œ๋“ค์ž…๋‹ˆ๋‹ค. ๋ฆฌํ”„ 2์˜ ์ฆ๋ช…์ด ์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์— ๊ฐ•์กฐ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% diagram %}
+
+{% node %}
+{% node #root label="๋จธํด ๋ฃจํŠธ" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 1, ๋…ธ๋“œ 2)" /%}
+{% /node %}
+
+{% node parent="root" y=100 x=-220 %}
+{% node #i-node-1 label="๋…ธ๋“œ 1" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 3, ๋…ธ๋“œ 4)" /%}
+{% /node %}
+
+{% node parent="root" y=100 x=220 %}
+{% node #i-node-2 label="๋…ธ๋“œ 2" theme="mint" /%}
+{% node label="ํ•ด์‹œ(๋…ธ๋“œ 5, ๋…ธ๋“œ 6)" theme="mint" /%}
+{% /node %}
+
+{% node parent="i-node-1" y=100 x=-110 %}
+{% node #i-node-3 label="๋…ธ๋“œ 3" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 1, ๋ฆฌํ”„ 2)" /%}
+{% /node %}
+
+{% node parent="i-node-1" y=100 x=110 %}
+{% node #i-node-4 label="๋…ธ๋“œ 4" theme="mint" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 3, ๋ฆฌํ”„ 4)" theme="mint" /%}
+{% /node %}
+
+{% node parent="i-node-2" y=100 x=-110 %}
+{% node #i-node-5 label="๋…ธ๋“œ 5" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 5, ๋ฆฌํ”„ 6)" /%}
+{% /node %}
+
+{% node parent="i-node-2" y=100 x=110 %}
+{% node #i-node-6 label="๋…ธ๋“œ 6" /%}
+{% node label="ํ•ด์‹œ(๋ฆฌํ”„ 7, ๋ฆฌํ”„ 8)" /%}
+{% /node %}
+
+{% node parent="i-node-3" y="100" x="-40" %}
+{% node #leaf-1 label="๋ฆฌํ”„ 1" theme="mint" /%}
+{% node label="ํ•ด์‹œ(cNFT 1)" theme="mint" /%}
+{% /node %}
+
+{% node parent="i-node-3" y="100" x="70" %}
+{% node #leaf-2 label="๋ฆฌํ”„ 2" theme="blue" /%}
+{% node label="ํ•ด์‹œ(cNFT 2)" theme="blue" /%}
+{% /node %}
+
+{% node parent="i-node-4" y="100" x="-40" %}
+{% node #leaf-3 label="๋ฆฌํ”„ 3" /%}
+{% node label="ํ•ด์‹œ(cNFT 3)" /%}
+{% /node %}
+
+{% node parent="i-node-4" y="100" x="70" %}
+{% node #leaf-4 label="๋ฆฌํ”„ 4" /%}
+{% node label="ํ•ด์‹œ(cNFT 4)" /%}
+{% /node %}
+
+{% node parent="i-node-5" y="100" x="-40" %}
+{% node #leaf-5 label="๋ฆฌํ”„ 5" /%}
+{% node label="ํ•ด์‹œ(cNFT 5)" /%}
+{% /node %}
+
+{% node parent="i-node-5" y="100" x="70" %}
+{% node #leaf-6 label="๋ฆฌํ”„ 6" /%}
+{% node label="ํ•ด์‹œ(cNFT 6)" /%}
+{% /node %}
+
+{% node parent="i-node-6" y="100" x="-40" %}
+{% node #leaf-7 label="๋ฆฌํ”„ 7" /%}
+{% node label="ํ•ด์‹œ(cNFT 7)" /%}
+{% /node %}
+
+{% node parent="i-node-6" y="100" x="70" %}
+{% node #leaf-8 label="๋ฆฌํ”„ 8" /%}
+{% node label="ํ•ด์‹œ(cNFT 8)" /%}
+{% /node %}
+
+{% edge from="i-node-1" to="root" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-2" to="root" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="i-node-3" to="i-node-1" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-4" to="i-node-1" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-6" to="i-node-2" fromPosition="top" toPosition="bottom" /%}
+{% edge from="i-node-5" to="i-node-2" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="leaf-1" to="i-node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-2" to="i-node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-4" to="i-node-4" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-3" to="i-node-4" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-5" to="i-node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-6" to="i-node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-7" to="i-node-6" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-8" to="i-node-6" fromPosition="top" toPosition="bottom" /%}
+
+{% /diagram %}
+
+## ๋ฆฌํ”„ ๊ฒ€์ฆ
+
+๋ฆฌํ”„ ๋…ธ๋“œ์™€ ๊ทธ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋จธํด ๋ฃจํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+1. ์›์‹œ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ํ•ด์‹ฑํ•ฉ๋‹ˆ๋‹ค.
+2. 1๋‹จ๊ณ„์˜ ๊ฐ’์„ ํ˜•์ œ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ํ•ด์‹œ์™€ ํ•ด์‹ฑํ•˜์—ฌ ๋ฆฌํ”„ ๊ฒฝ๋กœ์˜ ๋‹ค์Œ ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+3. 2๋‹จ๊ณ„์˜ ๊ฒฝ๋กœ ๊ฐ’์„ ์ฆ๋ช…์˜ ๋‹ค์Œ ๊ฐ’์ธ ๋‹ค์Œ ํ˜•์ œ ๋‚ด๋ถ€ ๋…ธ๋“œ์™€ ํ•ด์‹ฑํ•ฉ๋‹ˆ๋‹ค.
+4. ๋จธํด ๋ฃจํŠธ๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ๊นŒ์ง€ ํ˜•์ œ ๋‚ด๋ถ€ ๋…ธ๋“œ ๊ฐ’๋“ค๊ณผ ๊ฐ’์„ ํ•ด์‹ฑํ•˜๋Š” ์ด ๊ณผ์ •์„ ํŠธ๋ฆฌ ์œ„์ชฝ์œผ๋กœ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.
+
+์šฐ๋ฆฌ๊ฐ€ ๊ณ„์‚ฐํ•œ ๋จธํด ๋ฃจํŠธ๊ฐ€ ํ•ด๋‹น ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋จธํด ๋ฃจํŠธ์™€ ์ผ์น˜ํ•˜๋ฉด ์ •ํ™•ํ•œ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๋จธํด ํŠธ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งˆ๋‹ค(์ฆ‰, cNFT๊ฐ€ ์ƒˆ ์†Œ์œ ์ž์—๊ฒŒ ์ „์†ก๋  ๋•Œ) ์ƒˆ๋กœ์šด ๋จธํด ๋ฃจํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์˜จ์ฒด์ธ์—์„œ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+## ๋™์‹œ์„ฑ
+
+cNFT์— ์‚ฌ์šฉ๋˜๋Š” ์˜จ์ฒด์ธ ๋จธํด ํŠธ๋ฆฌ๋Š” ๋™์ผํ•œ ๋ธ”๋ก์—์„œ ์—ฌ๋Ÿฌ ์“ฐ๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ์— ์ƒˆ๋กœ์šด cNFT๋ฅผ ๋ฏผํŒ…ํ•˜๊ณ , cNFT๋ฅผ ์ „์†กํ•˜๊ณ , cNFT๋ฅผ ์œ„์ž„ํ•˜๊ณ , cNFT๋ฅผ ์†Œ๊ฐํ•˜๋Š” ๋“ฑ์˜ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์˜จ์ฒด์ธ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์“ฐ๊ธฐ๊ฐ€ ๋™์ผํ•œ ๋ธ”๋ก ๋‚ด์˜ ๋‹ค๋ฅธ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด ์ „์†ก๋œ ์ฆ๋ช…์„ ๋ฌดํšจํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ [spl-account-compression](https://spl.solana.com/account-compression)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋จธํด ํŠธ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ๋จธํด ๋ฃจํŠธ๋งŒ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด์ „ ๋ฃจํŠธ๋“ค๊ณผ ์ด์ „์— ์ˆ˜์ •๋œ ๋ฆฌํ”„๋“ค์˜ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ [`ChangeLog`](https://github.com/solana-labs/solana-program-library/blob/master/libraries/concurrent-merkle-tree/src/changelog.rs#L9)๋„ ์ €์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒˆ ํŠธ๋žœ์žญ์…˜์ด ๋ณด๋‚ธ ๋ฃจํŠธ์™€ ์ฆ๋ช…์ด ์ด์ „ ์—…๋ฐ์ดํŠธ๋กœ ๋ฌดํšจํ™”๋˜์—ˆ๋”๋ผ๋„ ํ”„๋กœ๊ทธ๋žจ์ด ์ฆ๋ช…์„ ๋นจ๋ฆฌ ๊ฐ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ `ChangeLog` ์ˆ˜๋Š” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” [์ตœ๋Œ€ ๋ฒ„ํผ ํฌ๊ธฐ](/kr/bubblegum-v2/create-trees#creating-a-bubblegum-tree)์— ์˜ํ•ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+
+๋˜ํ•œ ๋จธํด ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ฆ๋ช…์ด ์˜จ์ฒด์ธ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฆ๋ช…์„ ๋ณด๋‚ผ ํ•„์š” ์—†์ด ํŠธ๋ฆฌ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ Bubblegum์ด ์ฆ๋ช… ์—†์ด ์ƒˆ๋กœ์šด cNFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

+ 181 - 0
src/pages/kr/bubblegum-v2/create-trees.md

@@ -0,0 +1,181 @@
+---
+title: Bubblegum ํŠธ๋ฆฌ ์ƒ์„ฑ
+metaTitle: Bubblegum ํŠธ๋ฆฌ ์ƒ์„ฑ | Bubblegum V2
+description: ์••์ถ•๋œ NFT๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋จธํด ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+## ์†Œ๊ฐœ
+
+์••์ถ•๋œ NFT์˜ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ์ €์žฅ๋˜๊ณ  ์˜จ์ฒด์ธ ๊ณ„์ •์— ์ €์žฅ๋˜์ง€ ์•Š์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋จธํด ํŠธ๋ฆฌ์™€ ๊ทธ ๊ตฌ์„ฑ์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ถ€ ์˜จ์ฒด์ธ ๊ณ„์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‘ ๊ฐœ์˜ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+- **๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •**. ์ด ๊ณ„์ •์€ ๋ชจ๋“  ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋จธํด ํŠธ๋ฆฌ๋ฅผ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. [SPL Account Compression Program](https://spl.solana.com/account-compression)์—์„œ ํฌํฌ๋œ [MPL Account Compression Program](https://github.com/metaplex-foundation/mpl-account-compression)์ด ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ, ์••์ถ•๋œ NFT์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+- **TreeConfigV2 ๊ณ„์ •**. ์ด ๋‘ ๋ฒˆ์งธ ๊ณ„์ •์€ ๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์˜ ์ฃผ์†Œ์—์„œ ํŒŒ์ƒ๋œ PDA์ž…๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT์— ํŠน์ •ํ•œ ๋จธํด ํŠธ๋ฆฌ์˜ ์ถ”๊ฐ€ ๊ตฌ์„ฑ(์˜ˆ: ํŠธ๋ฆฌ ์ œ์ž‘์ž, ๋ฏผํŒ…๋œ cNFT ์ˆ˜ ๋“ฑ)์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ๋‘ ๊ณ„์ •์œผ๋กœ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ด€๋œ ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๊ณ„์ •์ด ์žˆ๋Š” ๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์„ **Bubblegum ํŠธ๋ฆฌ**๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+{% diagram height="h-64 md:h-[200px]" %}
+
+{% node %}
+{% node #merkle-tree label="๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Account Compression Program" theme="dimmed" /%}
+{% /node %}
+
+{% node #tree-config-pda parent="merkle-tree" x="300" label="PDA" theme="crimson" /%}
+
+{% node parent="tree-config-pda" y="60" %}
+{% node #tree-config label="ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๊ณ„์ •" theme="crimson" /%}
+{% node label="์†Œ์œ ์ž: Bubblegum Program" theme="dimmed" /%}
+{% /node %}
+
+{% edge from="merkle-tree" to="tree-config-pda" /%}
+{% edge from="tree-config-pda" to="tree-config" /%}
+
+{% /diagram %}
+
+## Bubblegum ํŠธ๋ฆฌ ์ƒ์„ฑ
+
+์ด์ œ Bubblegum ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ด ๋‘ ๊ณ„์ •์„ ๋ชจ๋‘ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์šฐ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” **ํŠธ๋ฆฌ ์ƒ์„ฑ** ์ž‘์—…์„ ์ œ๊ณตํ•˜์—ฌ ์ด ๊ณผ์ •์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ Bubblegum ํŠธ๋ฆฌ๋ฅผ ์šฐ๋ฆฌ์˜ ์š”๊ตฌ์— ๋งž๊ฒŒ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜(๋Œ€๋ถ€๋ถ„ ์„ ํƒ์‚ฌํ•ญ)๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+- **๋จธํด ํŠธ๋ฆฌ**: ๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์„œ๋ช…์ž์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์ด ์ด ์ฃผ์†Œ์—์„œ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
+- **ํŠธ๋ฆฌ ์ œ์ž‘์ž**: Bubblegum ํŠธ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ •์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
+- **์ตœ๋Œ€ ๊นŠ์ด**์™€ **์ตœ๋Œ€ ๋ฒ„ํผ ํฌ๊ธฐ**: **์ตœ๋Œ€ ๊นŠ์ด** ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋จธํด ํŠธ๋ฆฌ๊ฐ€ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฆฌํ”„ ์ˆ˜(๋”ฐ๋ผ์„œ ์••์ถ•๋œ NFT ์ˆ˜)๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์ตœ๋Œ€๊ฐ’์€ `2^maxDepth`๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. **์ตœ๋Œ€ ๋ฒ„ํผ ํฌ๊ธฐ** ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋จธํด ํŠธ๋ฆฌ์˜ ์ตœ์†Œ ๋™์‹œ์„ฑ ์ œํ•œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ํŠธ๋ฆฌ์—์„œ ๋ณ‘๋ ฌ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€๊ฒฝ ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ž„์˜๋กœ ์„ ํƒํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์•„๋ž˜ ํ‘œ์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ฐ’ ์ง‘ํ•ฉ์—์„œ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ Solana ์ƒํƒœ๊ณ„ ๋‚ด ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•œ ๊ถŒ์žฅ ํŠธ๋ฆฌ ์„ค์ •์ž…๋‹ˆ๋‹ค.
+
+| cNFT ์ˆ˜ | ํŠธ๋ฆฌ ๊นŠ์ด | ์บ๋…ธํ”ผ ๊นŠ์ด | ๋™์‹œ์„ฑ ๋ฒ„ํผ | ํŠธ๋ฆฌ ๋น„์šฉ | cNFT๋‹น ๋น„์šฉ |
+| --------------- | ---------- | ------------ | ------------------ | --------- | ------------- |
+| 16,384          | 14         | 8            | 64                 | 0.3358    | 0.00002550    |
+| 65,536          | 16         | 10           | 64                 | 0.7069    | 0.00001579    |
+| 262,144         | 18         | 12           | 64                 | 2.1042    | 0.00001303    |
+| 1,048,576       | 20         | 13           | 1024               | 8.5012    | 0.00001311    |
+| 16,777,216      | 24         | 15           | 2048               | 26.1201   | 0.00000656    |
+| 67,108,864      | 26         | 17           | 2048               | 70.8213   | 0.00000606    |
+| 1,073,741,824   | 30         | 17           | 2048               | 72.6468   | 0.00000507    |
+
+ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊นŠ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+  {% totem %}
+  {% totem-accordion title="์ตœ๋Œ€ ๊นŠ์ด / ์ตœ๋Œ€ ๋ฒ„ํผ ํฌ๊ธฐ ํ…Œ์ด๋ธ”" %}
+
+  | ์ตœ๋Œ€ ๊นŠ์ด | ์ตœ๋Œ€ ๋ฒ„ํผ ํฌ๊ธฐ | ์ตœ๋Œ€ cNFT ์ˆ˜ |
+  | --------- | --------------- | ------------------- |
+  | 3         | 8               | 8                   |
+  | 5         | 8               | 32                  |
+  | 14        | 64              | 16,384              |
+  | 14        | 256             | 16,384              |
+  | 14        | 1,024           | 16,384              |
+  | 14        | 2,048           | 16,384              |
+  | 15        | 64              | 32,768              |
+  | 16        | 64              | 65,536              |
+  | 17        | 64              | 131,072             |
+  | 18        | 64              | 262,144             |
+  | 19        | 64              | 524,288             |
+  | 20        | 64              | 1,048,576           |
+  | 20        | 256             | 1,048,576           |
+  | 20        | 1,024           | 1,048,576           |
+  | 20        | 2,048           | 1,048,576           |
+  | 24        | 64              | 16,777,216          |
+  | 24        | 256             | 16,777,216          |
+  | 24        | 512             | 16,777,216          |
+  | 24        | 1,024           | 16,777,216          |
+  | 24        | 2,048           | 16,777,216          |
+  | 26        | 512             | 67,108,864          |
+  | 26        | 1,024           | 67,108,864          |
+  | 26        | 2,048           | 67,108,864          |
+  | 30        | 512             | 1,073,741,824       |
+  | 30        | 1,024           | 1,073,741,824       |
+  | 30        | 2,048           | 1,073,741,824       |
+
+  {% /totem-accordion %}
+  {% /totem %}
+
+- **๊ณต๊ฐœ**: Bubblegum ํŠธ๋ฆฌ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ๋œ ๊ฒฝ์šฐ ๋ˆ„๊ตฌ๋‚˜ ๊ทธ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํŠธ๋ฆฌ ์ œ์ž‘์ž ๋˜๋Š” ํŠธ๋ฆฌ ์œ„์ž„์ž([cNFT ์œ„์ž„](/kr/bubblegum-v2/delegate-cnfts)์—์„œ ๋…ผ์˜)๋งŒ์ด ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ ์šฐ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Bubblegum ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="Bubblegum ํŠธ๋ฆฌ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { generateSigner } from '@metaplex-foundation/umi'
+import { createTreeV2 } from '@metaplex-foundation/mpl-bubblegum'
+
+const merkleTree = generateSigner(umi)
+const builder = await createTreeV2(umi, {
+        merkleTree,
+        maxBufferSize: 64,
+        maxDepth: 14,
+      })
+
+await builder.sendAndConfirm(umi)
+```
+
+๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋ฆฌ ์ œ์ž‘์ž๋Š” Umi ์‹ ์›์œผ๋กœ ์„ค์ •๋˜๊ณ  ๊ณต๊ฐœ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” `false`๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ž˜ ์˜ˆ์ œ์—์„œ ๋ณด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+const customTreeCreator = generateSigner(umi)
+const builder = await createTreeV2(umi, {
+  // ...
+  treeCreator: customTreeCreator,
+  public: true,
+})
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Bubblegum ํŠธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ
+
+**Bubblegum ํŠธ๋ฆฌ**๋Š” ๋‘ ๊ฐœ์˜ ์˜จ์ฒด์ธ ๊ณ„์ •์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฏ€๋กœ ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+### ๋จธํด ํŠธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ
+
+๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:
+
+- **์ตœ๋Œ€ ๊นŠ์ด**, **์ตœ๋Œ€ ๋ฒ„ํผ ํฌ๊ธฐ**, ํŠธ๋ฆฌ์˜ **๊ถŒํ•œ** ๋ฐ ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ **์ƒ์„ฑ ์Šฌ๋กฏ**์„ ์ €์žฅํ•˜๋Š” **ํŠธ๋ฆฌ ํ—ค๋”**.
+- **๋ณ€๊ฒฝ ๋กœ๊ทธ**(๋˜๋Š” ๋ฃจํŠธ), **์‹œํ€€์Šค ๋ฒˆํ˜ธ** ๋“ฑ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ์˜ ์ €์ˆ˜์ค€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” **ํŠธ๋ฆฌ** ์ž์ฒด. ์ด ๋ฌธ์„œ์˜ [์ „์šฉ ํŽ˜์ด์ง€](/kr/bubblegum-v2/concurrent-merkle-trees)์—์„œ ๋™์‹œ ๋จธํด ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
+- [๋จธํด ํŠธ๋ฆฌ ์บ๋…ธํ”ผ](/kr/bubblegum-v2/merkle-tree-canopy) ํŽ˜์ด์ง€์—์„œ ๋…ผ์˜๋œ **์บ๋…ธํ”ผ**.
+
+๋‹ค์Œ์€ ์šฐ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="๋จธํด ํŠธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import {
+  fetchMerkleTree,
+} from "@metaplex-foundation/mpl-account-compression";
+
+const merkleTreeAccount = await fetchMerkleTree(umi, merkleTree)
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+### ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ
+
+ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๊ณ„์ •์—๋Š” ์••์ถ•๋œ NFT์— ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:
+
+- Bubblegum ํŠธ๋ฆฌ์˜ **ํŠธ๋ฆฌ ์ œ์ž‘์ž**.
+- Bubblegum ํŠธ๋ฆฌ์˜ **ํŠธ๋ฆฌ ์œ„์ž„์ž** (์žˆ๋Š” ๊ฒฝ์šฐ). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด **ํŠธ๋ฆฌ ์ œ์ž‘์ž**๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- ํŠธ๋ฆฌ์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” cNFT์˜ ์ตœ๋Œ€ ์ˆ˜์ธ Bubblegum ํŠธ๋ฆฌ์˜ **์ด ์šฉ๋Ÿ‰**.
+- ํŠธ๋ฆฌ์— ๋ฏผํŒ…๋œ cNFT ์ˆ˜๋ฅผ ์ถ”์ ํ•˜๋Š” **๋ฏผํŒ…๋œ ์ˆ˜**. ์ด ๊ฐ’์€ ๋จธํด ํŠธ๋ฆฌ ๋ฆฌํ”„๊ฐ€ ๊ณ ์œ ํ•˜๋„๋ก ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ **๋„Œ์Šค**("ํ•œ ๋ฒˆ ์‚ฌ์šฉ๋˜๋Š” ์ˆ˜") ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋„Œ์Šค๋Š” ์ž์‚ฐ์˜ ํŠธ๋ฆฌ ๋ฒ”์œ„ ๊ณ ์œ  ์‹๋ณ„์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
+- ํŠธ๋ฆฌ์—์„œ ๋ˆ„๊ตฌ๋‚˜ cNFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” **๊ณต๊ฐœ** ๋งค๊ฐœ๋ณ€์ˆ˜.
+- **์••์ถ• ํ•ด์ œ ๊ฐ€๋Šฅ**์€ Bubblegum V1์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
+- **๋ฒ„์ „**์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” LeafSchema์˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ ์šฐ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { fetchTreeConfigFromSeeds } from '@metaplex-foundation/mpl-bubblegum';
+
+const treeConfig = await fetchTreeConfigFromSeeds(umi, { merkleTree });
+```
+
+{% /dialect %}
+{% /dialect-switcher %}

+ 70 - 0
src/pages/kr/bubblegum-v2/delegate-cnfts.md

@@ -0,0 +1,70 @@
+---
+title: ์••์ถ•๋œ NFT ์œ„์ž„
+metaTitle: ์••์ถ•๋œ NFT ์œ„์ž„ | Bubblegum V2
+description: Bubblegum์—์„œ ์••์ถ•๋œ NFT๋ฅผ ์œ„์ž„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+์••์ถ•๋œ NFT์˜ ์†Œ์œ ์ž๋Š” cNFT์˜ ์†Œ์œ ๊ถŒ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๊ณ„์ •์— ์œ„์ž„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+์ด๋ฅผ ํ†ตํ•ด **์œ„์ž„ ๊ถŒํ•œ**์ด๋ผ๊ณ ๋„ ํ•˜๋Š” ์œ„์ž„๋œ ๊ณ„์ •์ด ์†Œ์œ ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+- [cNFT ์ „์†ก](/kr/bubblegum-v2/transfer-cnfts): ์œ„์ž„ ๊ถŒํ•œ์€ ์ „์†ก ํ›„ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ ์†Œ์œ ์ž๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- [cNFT ์†Œ๊ฐ](/kr/bubblegum-v2/burn-cnfts).
+- [cNFT ๋™๊ฒฐ ๋ฐ ํ•ด๋™](/kr/bubblegum-v2/freeze-cnfts).
+
+์ด๋Ÿฌํ•œ ๊ฐ ์ž‘์—…์€ ์œ„์ž„ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ **๋ฆฌํ”„ ์†Œ์œ ์ž** ๊ณ„์ • ๋Œ€์‹  **๋ฆฌํ”„ ์œ„์ž„์ž** ๊ณ„์ •์„ ์„œ๋ช…์ž๋กœ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+์••์ถ•๋œ NFT์— ๋Œ€ํ•œ ์œ„์ž„ ๊ถŒํ•œ์„ ์Šน์ธํ•˜๊ณ  ์ทจ์†Œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+## ์œ„์ž„ ๊ถŒํ•œ ์Šน์ธ
+
+์œ„์ž„ ๊ถŒํ•œ์„ ์Šน์ธํ•˜๊ฑฐ๋‚˜ ๊ต์ฒดํ•˜๋ ค๋ฉด ์†Œ์œ ์ž๊ฐ€ **์œ„์ž„** ๋ช…๋ น์–ด๋ฅผ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค:
+
+- **๋ฆฌํ”„ ์†Œ์œ ์ž**: ์„œ๋ช…์ž๋กœ์„œ ์••์ถ•๋œ NFT์˜ ํ˜„์žฌ ์†Œ์œ ์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ์ง€๋ถˆ์ž๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- **์ด์ „ ๋ฆฌํ”„ ์œ„์ž„์ž**: ์ด์ „ ์œ„์ž„ ๊ถŒํ•œ(์žˆ๋Š” ๊ฒฝ์šฐ). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด **๋ฆฌํ”„ ์†Œ์œ ์ž**๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **์ƒˆ ๋ฆฌํ”„ ์œ„์ž„์ž**: ์Šน์ธํ•  ์ƒˆ ์œ„์ž„ ๊ถŒํ•œ.
+
+์ถ”๊ฐ€๋กœ ์ด ๋ช…๋ น์–ด๋Š” Bubblegum ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•˜๋ฏ€๋กœ ์••์ถ•๋œ NFT์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฆฌํ”„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด์— ๊ณตํ†ต์ด๋ฏ€๋กœ [๋‹ค์Œ FAQ](/kr/bubblegum-v2/faq#replace-leaf-instruction-arguments)์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ Metaplex DAS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT ์œ„์ž„" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { getAssetWithProof, delegate } from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, { truncateCanopy: true });
+await delegate(umi, {
+  ...assetWithProof,
+  leafOwner,
+  previousLeafDelegate: leafOwner.publicKey,
+  newLeafDelegate: newDelegate,
+}).sendAndConfirm(umi);
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ
+
+๊ธฐ์กด ์œ„์ž„ ๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด ์†Œ์œ ์ž๊ฐ€ ์ž์‹ ์„ ์ƒˆ ์œ„์ž„ ๊ถŒํ•œ์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT์˜ ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { getAssetWithProof, delegate } from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+await delegate(umi, {
+  ...assetWithProof,
+  leafOwner,
+  previousLeafDelegate: currentDelegate,
+  newLeafDelegate: leafOwner.publicKey,
+}).sendAndConfirm(umi);
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 57 - 0
src/pages/kr/bubblegum-v2/delegate-trees.md

@@ -0,0 +1,57 @@
+---
+title: ํŠธ๋ฆฌ ์œ„์ž„
+metaTitle: ํŠธ๋ฆฌ ์œ„์ž„ | Bubblegum V2
+description: Bubblegum์—์„œ ๋จธํด ํŠธ๋ฆฌ๋ฅผ ์œ„์ž„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+์••์ถ•๋œ NFT์˜ ์†Œ์œ ์ž๊ฐ€ ์œ„์ž„ ๊ถŒํ•œ์„ ์Šน์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Bubblegum ํŠธ๋ฆฌ์˜ ์ œ์ž‘์ž๋„ ๋‹ค๋ฅธ ๊ณ„์ •์„ ์Šน์ธํ•˜์—ฌ ๋Œ€์‹  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+Bubblegum ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ์œ„์ž„ ๊ถŒํ•œ์ด ์Šน์ธ๋˜๋ฉด ์ œ์ž‘์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ [์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…](/kr/bubblegum-v2/mint-cnfts)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ์ธ ํŠธ๋ฆฌ์—์„œ๋งŒ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ๊ณต๊ฐœ ํŠธ๋ฆฌ์—์„œ๋Š” ๋ˆ„๊ตฌ๋‚˜ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์œ„์ž„ ๊ถŒํ•œ ์Šน์ธ
+
+Bubblegum ํŠธ๋ฆฌ์—์„œ ์ƒˆ๋กœ์šด ์œ„์ž„ ๊ถŒํ•œ์„ ์Šน์ธํ•˜๋ ค๋ฉด ์ œ์ž‘์ž๊ฐ€ **ํŠธ๋ฆฌ ์œ„์ž„ ์„ค์ •** ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค:
+
+- **๋จธํด ํŠธ๋ฆฌ**: ์œ„์ž„ํ•  ๋จธํด ํŠธ๋ฆฌ์˜ ์ฃผ์†Œ.
+- **ํŠธ๋ฆฌ ์ œ์ž‘์ž**: ์„œ๋ช…์ž๋กœ์„œ ๋จธํด ํŠธ๋ฆฌ์˜ ์ œ์ž‘์ž.
+- **์ƒˆ ํŠธ๋ฆฌ ์œ„์ž„์ž**: ์Šน์ธํ•  ์ƒˆ ์œ„์ž„ ๊ถŒํ•œ.
+
+{% dialect-switcher title="Bubblegum ํŠธ๋ฆฌ ์œ„์ž„" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { setTreeDelegate } from '@metaplex-foundation/mpl-bubblegum'
+
+await setTreeDelegate(umi, {
+  merkleTree,
+  treeCreator,
+  newTreeDelegate,
+}).sendAndConfirm(umi)
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ
+
+๊ธฐ์กด ์œ„์ž„ ๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด ํŠธ๋ฆฌ์˜ ์ œ์ž‘์ž๊ฐ€ ์ž์‹ ์„ ์ƒˆ ์œ„์ž„ ๊ถŒํ•œ์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Bubblegum ํŠธ๋ฆฌ์˜ ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { setTreeDelegate } from '@metaplex-foundation/mpl-bubblegum'
+
+await setTreeDelegate(umi, {
+  merkleTree,
+  treeCreator,
+  newTreeDelegate: treeCreator.publicKey,
+}).sendAndConfirm(umi)
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 114 - 0
src/pages/kr/bubblegum-v2/faq.md

@@ -0,0 +1,114 @@
+---
+title: FAQ
+metaTitle: FAQ | Bubblegum V2
+description: Bubblegum์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ.
+---
+
+## Bubblegum V2๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?
+
+Bubblegum V2๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๋Š” Bubblegum ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒˆ๋กœ์šด ๋ฐ˜๋ณต์ž…๋‹ˆ๋‹ค.
+์ด๋Š” ์•Œ๋ ค์ง„ Bubblegum ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€์ด์ง€๋งŒ ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
+Bubblegum V2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด cNFT๊ฐ€ Metaplex Token Metadata ์ปฌ๋ ‰์…˜ ๋Œ€์‹  MPL-Core ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™๊ฒฐ, ํ•ด๋™, ์†Œ์šธ๋ฐ”์šด๋“œ NFT์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค:
+- **๋™๊ฒฐ ๋ฐ ํ•ด๋™ ๊ธฐ๋Šฅ**: ํ”„๋กœ์ ํŠธ ์ œ์ž‘์ž๋Š” ์ด์ œ cNFT๋ฅผ ๋™๊ฒฐํ•˜๊ณ  ํ•ด๋™ํ•  ์ˆ˜ ์žˆ์–ด ํŠน์ • ์ด๋ฒคํŠธ ์ค‘ ์ „์†ก์„ ๋ฐฉ์ง€ํ•˜๊ฑฐ๋‚˜ ๋ฒ ์ŠคํŒ… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•ด ์ž์‚ฐ์„ ๋” ์ž˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **MPL-Core ์ปฌ๋ ‰์…˜ ํ†ตํ•ฉ**: Bubblegum V2 NFT๋Š” ์ด์ œ ํ† ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜์— ์ œํ•œ๋˜์ง€ ์•Š๊ณ  MPL-Core ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์–ด ๋” ๋„“์€ Metaplex ์ƒํƒœ๊ณ„์™€์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+- **๋กœ์—ดํ‹ฐ ๊ฐ•์ œ**: Bubblegum V2๋Š” [MPL-Core](https://docs.metaplex.com/core/overview) ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ `ProgramDenyList`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cNFT์— ๋กœ์—ดํ‹ฐ๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์†Œ์šธ๋ฐ”์šด๋“œ NFT**: cNFT๋Š” ์ด์ œ ์†Œ์šธ๋ฐ”์šด๋“œ(์–‘๋„ ๋ถˆ๊ฐ€๋Šฅ)๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ์†Œ์œ ์ž์˜ ์ง€๊ฐ‘์— ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž๊ฒฉ์ฆ๋ช…, ์ฐธ์„ ์ฆ๋ช…, ์‹ ์› ํ™•์ธ ๋“ฑ์— ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์—์„œ `PermanentFreezeDelegate` ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **์˜๊ตฌ ์ „์†ก ํ—ˆ์šฉ**: ์ปฌ๋ ‰์…˜์—์„œ `PermanentTransferDelegate` ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์˜๊ตฌ ์ „์†ก ์œ„์ž„์ž๋Š” ๋ฆฌํ”„ ์†Œ์œ ์ž์˜ ์ƒํ˜ธ ์ž‘์šฉ ์—†์ด cNFT๋ฅผ ์ƒˆ ์†Œ์œ ์ž์—๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ์ „์†ก, ์œ„์ž„, ์†Œ๊ฐ ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์— ํ•„์š”ํ•œ ์ธ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ๋‚˜์š”? {% #replace-leaf-instruction-arguments %}
+
+์ „์†ก, ์œ„์ž„, ์†Œ๊ฐ ๋“ฑ๊ณผ ๊ฐ™์ด Bubblegum ํŠธ๋ฆฌ์—์„œ ๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ํ”„๋กœ๊ทธ๋žจ์€ ํ˜„์žฌ ๋ฆฌํ”„๊ฐ€ ์œ ํšจํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜จ์ฒด์ธ ๊ณ„์ • ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— **์ฆ๋ช…**, **๋ฆฌํ”„ ์ธ๋ฑ์Šค**, **๋„Œ์Šค** ๋“ฑ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์ด ์กฐ๊ฐ๋“ค์„ ์ฑ„์šฐ๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+
+๋ชจ๋“  ์ •๋ณด๋Š” `getAsset`๊ณผ `getAssetProof` RPC ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ **Metaplex DAS API**์—์„œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ์˜ RPC ์‘๋‹ต๊ณผ ๋ช…๋ น์–ด์—์„œ ์˜ˆ์ƒํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ •ํ™•ํžˆ ๊ฐ™์ง€ ์•Š์œผ๋ฉฐ ํ•˜๋‚˜์—์„œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+๋‹คํ–‰ํžˆ ์šฐ๋ฆฌ SDK๋Š” ์•„๋ž˜ ์ฝ”๋“œ ์˜ˆ์ œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ชจ๋“  ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT์˜ ์ž์‚ฐ ID๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ์†Œ๊ฐ, ์ „์†ก, ์—…๋ฐ์ดํŠธ ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ช…๋ น์–ด์— ์ง์ ‘ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฌถ์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋ ‡๊ธด ํ•˜์ง€๋งŒ, ํŒŒ์‹ฑ์„ ์ง์ ‘ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ช…๋ น์–ด์—์„œ ์˜ˆ์ƒํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ Metaplex DAS API์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ถ„์„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” `getAsset`๊ณผ `getAssetProof` RPC ๋ฉ”์„œ๋“œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ๊ฐ `rpcAsset`๊ณผ `rpcAssetProof` ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+- **๋ฆฌํ”„ ์†Œ์œ ์ž**: `rpcAsset.ownership.owner`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **๋ฆฌํ”„ ์œ„์ž„์ž**: `rpcAsset.ownership.delegate`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•˜๋ฉฐ null์ผ ๋•Œ `rpcAsset.ownership.owner`๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **๋จธํด ํŠธ๋ฆฌ**: `rpcAsset.compression.tree` ๋˜๋Š” `rpcAssetProof.tree_id`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **๋ฃจํŠธ**: `rpcAssetProof.root`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **๋ฐ์ดํ„ฐ ํ•ด์‹œ**: `rpcAsset.compression.data_hash`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **ํฌ๋ฆฌ์—์ดํ„ฐ ํ•ด์‹œ**: `rpcAsset.compression.creator_hash`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **๋„Œ์Šค**: `rpcAsset.compression.leaf_id`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **์ธ๋ฑ์Šค**: `rpcAssetProof.node_index - 2^max_depth`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ. ์—ฌ๊ธฐ์„œ `max_depth`๋Š” ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊นŠ์ด์ด๋ฉฐ `rpcAssetProof.proof` ๋ฐฐ์—ด์˜ ๊ธธ์ด์—์„œ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์ฆ๋ช…**: `rpcAssetProof.proof`๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ฐ€๋Šฅ.
+- **๋ฉ”ํƒ€๋ฐ์ดํ„ฐ**: ํ˜„์žฌ `rpcAsset` ์‘๋‹ต์˜ ๋‹ค์–‘ํ•œ ํ•„๋“œ์—์„œ ์žฌ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+Bubblegum Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์œ„์˜ ์„ค๋ช…์— ๋งž๋Š” `getAssetWithProof` ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ `transfer` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ `leafOwner` ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์„œ๋ช…์ž์—ฌ์•ผ ํ•˜๊ณ  `assetWithProof`๊ฐ€ ์†Œ์œ ์ž๋ฅผ ๊ณต๊ฐœ ํ‚ค๋กœ ์ œ๊ณตํ•˜๋ฏ€๋กœ `leafOwner` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
+
+์บ๋…ธํ”ผ ํฌ๊ธฐ์— ๋”ฐ๋ผ `getAssetWithProof` ๋„์šฐ๋ฏธ์˜ `truncateCanopy: true` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์™€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ฆ๋ช…์„ ์ž๋ฆ…๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
+
+```ts
+import { getAssetWithProof, transfer } from '@metaplex-foundation/mpl-bubblegum'
+
+const assetWithProof = await getAssetWithProof(umi, assetId, 
+// {  truncateCanopy: true } // ์ฆ๋ช…์„ ๊ฐ€์ง€์น˜๊ธฐํ•˜๋Š” ์„ ํƒ์‚ฌํ•ญ 
+);
+await transferV2(umi, {
+  ...assetWithProof,
+  leafOwner: leafOwnerA, // ์„œ๋ช…์ž๋กœ์„œ.
+  newLeafOwner: leafOwnerB.publicKey,
+}).sendAndConfirm(umi);
+
+await transferV2(umi, {
+  ...assetWithProof,
+  leafOwner: leafOwnerA, // ์„œ๋ช…์ž๋กœ์„œ.
+  newLeafOwner: leafOwnerB.publicKey,
+}).sendAndConfirm(umi)
+```
+
+{% totem-accordion title="๋„์šฐ๋ฏธ ํ•จ์ˆ˜ ์—†์ด ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+
+์™„์„ฑ๋„๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋œ ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { publicKeyBytes } from '@metaplex-foundation/umi'
+import { transfer } from '@metaplex-foundation/mpl-bubblegum'
+
+const rpcAsset = await umi.rpc.getAsset(assetId)
+const rpcAssetProof = await umi.rpc.getAssetProof(assetId)
+
+await transfer(umi, {
+  leafOwner: leafOwnerA,
+  newLeafOwner: leafOwnerB.publicKey,
+  merkleTree: rpcAssetProof.tree_id,
+  root: publicKeyBytes(rpcAssetProof.root),
+  dataHash: publicKeyBytes(rpcAsset.compression.data_hash),
+  creatorHash: publicKeyBytes(rpcAsset.compression.creator_hash),
+  nonce: rpcAsset.compression.leaf_id,
+  index: rpcAssetProof.node_index - 2 ** rpcAssetProof.proof.length,
+  proof: rpcAssetProof.proof,
+}).sendAndConfirm(umi)
+```
+
+{% /totem-accordion %}
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## "ํŠธ๋žœ์žญ์…˜์ด ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค" ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• {% #transaction-size %}
+
+์ „์†ก์ด๋‚˜ ์†Œ๊ฐ๊ณผ ๊ฐ™์€ ๋ฆฌํ”„ ๊ต์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ "ํŠธ๋žœ์žญ์…˜์ด ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์†”๋ฃจ์…˜์„ ๊ณ ๋ คํ•˜์„ธ์š”:
+
+1. `truncateCanopy` ์˜ต์…˜ ์‚ฌ์šฉ:
+   `getAssetWithProof` ํ•จ์ˆ˜์— `{ truncateCanopy: true }`๋ฅผ ์ „๋‹ฌํ•˜์„ธ์š”:
+
+   ```ts
+   const assetWithProof = await getAssetWithProof(umi, assetId, 
+    { truncateCanopy: true }
+   );
+   ```
+
+   ์ด ์˜ต์…˜์€ ๋จธํด ํŠธ๋ฆฌ ๊ตฌ์„ฑ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์บ๋…ธํ”ผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ์ฆ๋ช…์„ ์ œ๊ฑฐํ•˜์—ฌ `assetWithProof`๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ RPC ํ˜ธ์ถœ์ด ์ถ”๊ฐ€๋˜์ง€๋งŒ ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค.
+
+2. ๋ฒ„์ „ํ™”๋œ ํŠธ๋žœ์žญ์…˜๊ณผ ์ฃผ์†Œ ์กฐํšŒ ํ…Œ์ด๋ธ” ํ™œ์šฉ:
+   ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์€ [๋ฒ„์ „ํ™”๋œ ํŠธ๋žœ์žญ์…˜๊ณผ ์ฃผ์†Œ ์กฐํšŒ ํ…Œ์ด๋ธ”](https://developers.metaplex.com/umi/toolbox/address-lookup-table)์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ ์ œํ•œ์„ ๊ทน๋ณตํ•˜๊ณ  ์ž‘์—…์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 170 - 0
src/pages/kr/bubblegum-v2/fetch-cnfts.md

@@ -0,0 +1,170 @@
+---
+title: ์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ
+metaTitle: ์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ | Bubblegum V2
+description: Bubblegum์—์„œ ์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+[๊ฐœ์š”](/kr/bubblegum#read-api) ํŽ˜์ด์ง€์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์••์ถ•๋œ NFT๋Š” ์ผ๋ฐ˜ NFT์ฒ˜๋Ÿผ ์˜จ์ฒด์ธ ๊ณ„์ • ๋‚ด์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ์ด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•œ ํŠธ๋žœ์žญ์…˜์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. {% .lead %}
+
+๋”ฐ๋ผ์„œ ์••์ถ•๋œ NFT์˜ ๊ฒ€์ƒ‰์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ์ธ๋ฑ์„œ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ธ๋ฑ์Šค๋œ ๋ฐ์ดํ„ฐ๋Š” **Metaplex DAS API**๋ผ๊ณ  ํ•˜๋Š” Solana RPC ๋ฉ”์„œ๋“œ์˜ ํ™•์žฅ์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ DAS API๋ฅผ ํ†ตํ•ด ๋ชจ๋“  **๋””์ง€ํ„ธ ์ž์‚ฐ**์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์••์ถ•๋œ NFT, ์ผ๋ฐ˜ NFT, ๋˜๋Š” ์‹ฌ์ง€์–ด ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ์ž์‚ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋ชจ๋“  RPC๊ฐ€ DAS API๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์••์ถ•๋œ NFT๋ฅผ ์ž‘์—…ํ•  ๊ณ„ํš์ด๋ผ๋ฉด RPC ์ œ๊ณต์—…์ฒด๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Metaplex DAS API๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  RPC ๋ชฉ๋ก์„ [์ „์šฉ ํŽ˜์ด์ง€](/kr/rpc-providers)์—์„œ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ํŽ˜์ด์ง€์—์„œ๋Š” Metaplex DAS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+## Metaplex DAS API SDK ์„ค์น˜
+
+Metaplex DAS API๋ฅผ ์ง€์›ํ•˜๋Š” RPC ์ œ๊ณต์—…์ฒด๋ฅผ ์„ ํƒํ–ˆ๋‹ค๋ฉด ์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ RPC ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ SDK๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ DAS API๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Metaplex DAS API๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์•„๋ž˜ ์ง€์นจ์„ ๋”ฐ๋ฅด์„ธ์š”.
+
+{% totem %}
+
+{% dialect-switcher title="Metaplex DAS API ์‹œ์ž‘ํ•˜๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+{% totem-prose %}
+Umi๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Metaplex DAS API ํ”Œ๋Ÿฌ๊ทธ์ธ์ด `mplBubblegum` ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‚ด์— ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฏธ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค!
+
+์ „์ฒด `mplBubblegum` ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ€์ ธ์˜ค์ง€ _์•Š๊ณ _ DAS API ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Metaplex DAS API ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง์ ‘ ์„ค์น˜ํ•˜์—ฌ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```sh
+npm install @metaplex-foundation/digital-asset-standard-api
+```
+
+๊ทธ ํ›„ Umi ์ธ์Šคํ„ด์Šค์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค:
+
+```ts
+import { dasApi } from '@metaplex-foundation/digital-asset-standard-api';
+
+umi.use(dasApi());
+```
+{% /totem-prose %}
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+{% totem-prose %}
+
+Metaplex DAS API์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” [์ €์žฅ์†Œ](https://github.com/metaplex-foundation/digital-asset-standard-api)์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /totem-prose %}
+{% /totem %}
+
+## ์ž์‚ฐ ID {% #asset-ids %}
+
+์••์ถ•๋˜์—ˆ๋“  ์•„๋‹ˆ๋“  NFT๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด NFT๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ  ID์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ **์ž์‚ฐ ID**๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
+
+- ์ผ๋ฐ˜ NFT์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ณ„์ •์ด ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ํŒŒ์ƒ๋˜๋ฏ€๋กœ ํ•ด๋‹น ๋ชฉ์ ์œผ๋กœ **NFT์˜ ๋ฏผํŠธ ์ฃผ์†Œ**๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+- ์••์ถ•๋œ NFT์˜ ๊ฒฝ์šฐ **๋จธํด ํŠธ๋ฆฌ์˜ ์ฃผ์†Œ**์™€ ๋จธํด ํŠธ๋ฆฌ์—์„œ ์••์ถ•๋œ NFT์˜ **๋ฆฌํ”„ ์ธ๋ฑ์Šค**์—์„œ ํŒŒ์ƒ๋˜๋Š” ํŠน๋ณ„ํ•œ **PDA**(ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ƒ ์ฃผ์†Œ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠน๋ณ„ํ•œ PDA๋ฅผ **๋ฆฌํ”„ ์ž์‚ฐ ID**๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
+
+DAS API ๋ฉ”์„œ๋“œ๊ฐ€ ๋Œ€๋Ÿ‰์œผ๋กœ ์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ(์˜ˆ: ์ฃผ์–ด์ง„ ์ฃผ์†Œ๊ฐ€ ์†Œ์œ ํ•œ ๋ชจ๋“  NFT ๊ฐ€์ ธ์˜ค๊ธฐ) ์ด๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ **๋ฆฌํ”„ ์ž์‚ฐ ID**๋ฅผ ์ง์ ‘ ํŒŒ์ƒํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋จธํด ํŠธ๋ฆฌ์˜ ์ฃผ์†Œ์™€ cNFT์˜ ๋ฆฌํ”„ ์ธ๋ฑ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํ”„ ์ž์‚ฐ ID๋ฅผ ํŒŒ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๋ฆฌํ”„ ์ž์‚ฐ ID PDA ์ฐพ๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { findLeafAssetIdPda } from '@metaplex-foundation/mpl-bubblegum'
+
+const [assetId, bump] = await findLeafAssetIdPda(umi, {
+  merkleTree,
+  leafIndex,
+})
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ
+
+์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ DAS API์˜ `getAsset` ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” **Rpc Asset** ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:
+
+- **Id**: ์œ„์—์„œ ๋…ผ์˜ํ•œ ์ž์‚ฐ ID.
+- **Interface**: ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š” ์ž์‚ฐ์˜ ์œ ํ˜•์„ ์ •์˜ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฐ’. ์˜ˆ: `V1_NFT` ๋˜๋Š” `ProgrammableNFT`.
+- **Ownership**: ์ž์‚ฐ์„ ๋ˆ„๊ฐ€ ์†Œ์œ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ์ฒด. ์„ค์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์œ„์ž„์ž์™€ ์ž์‚ฐ์ด ๋™๊ฒฐ๋กœ ํ‘œ์‹œ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+- **Mutable**: ์ž์‚ฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€์šธ.
+- **Authorities**: ๊ถŒํ•œ ๋ฐฐ์—ด. ๊ฐ๊ฐ์€ ๊ถŒํ•œ์ด ์ž์‚ฐ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒ”์œ„ ๋ฐฐ์—ด์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+- **Content**: ์ž์‚ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด. ์ฆ‰, URI์™€ ํŒŒ์‹ฑ๋œ `metadata` ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+- **Royalty**: ์ž์‚ฐ์ด ์ •์˜ํ•œ ๋กœ์—ดํ‹ฐ ๋ชจ๋ธ์„ ์ •์˜ํ•˜๋Š” ๊ฐ์ฒด. ํ˜„์žฌ ์ž์‚ฐ์˜ ํฌ๋ฆฌ์—์ดํ„ฐ์—๊ฒŒ ์ˆ˜์ต์˜ ๋ฐฑ๋ถ„์œจ์„ ๋ณด๋‚ด๋Š” ํ•˜๋‚˜์˜ ๋กœ์—ดํ‹ฐ ๋ชจ๋ธ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
+- **Supply**: ์ธ์‡„ ๊ฐ€๋Šฅํ•œ ์ž์‚ฐ์„ ๋‹ค๋ฃฐ ๋•Œ ์ด ๊ฐ์ฒด๋Š” ์ธ์‡„๋œ ์—๋””์…˜์˜ ํ˜„์žฌ ๋ฐ ์ตœ๋Œ€ ๊ณต๊ธ‰๋Ÿ‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+- **Creators**: ์ž์‚ฐ์˜ ํฌ๋ฆฌ์—์ดํ„ฐ ๋ชฉ๋ก. ๊ฐ๊ฐ์€ ํฌ๋ฆฌ์—์ดํ„ฐ๊ฐ€ ํ™•์ธ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” `verified` ๋ถ€์šธ๊ณผ ํฌ๋ฆฌ์—์ดํ„ฐ์—๊ฒŒ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๋กœ์—ดํ‹ฐ ๋ฐฑ๋ถ„์œจ์„ ๋‚˜ํƒ€๋‚ด๋Š” `share` ์ˆซ์ž๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+- **Grouping**: ์ž์‚ฐ์„ ๋Œ€๋Ÿ‰์œผ๋กœ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ‚ค/๊ฐ’ ๊ทธ๋ฃนํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐฐ์—ด. ํ˜„์žฌ ํ•˜๋‚˜์˜ ๊ทธ๋ฃนํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค โ€” `collection` โ€” ์ด๋ฅผ ํ†ตํ•ด ์ปฌ๋ ‰์…˜๋ณ„๋กœ ์ž์‚ฐ์„ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **Compression**: ์••์ถ•๋œ NFT๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ด ๊ฐ์ฒด๋Š” Bubblegum ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฆฌํ”„์˜ ์ „์ฒด ํ•ด์‹œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ์ž์‚ฐ์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” **ํฌ๋ฆฌ์—์ดํ„ฐ ํ•ด์‹œ**์™€ **๋ฐ์ดํ„ฐ ํ•ด์‹œ**์™€ ๊ฐ™์€ ๋ถ€๋ถ„ ํ•ด์‹œ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋จธํด ํŠธ๋ฆฌ ์ฃผ์†Œ, ๋ฃจํŠธ, ์‹œํ€€์Šค ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ์ž์‚ฐ ID์—์„œ ์ž์‚ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+const rpcAsset = await umi.rpc.getAsset(assetId)
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์••์ถ•๋œ NFT์˜ ์ฆ๋ช… ๊ฐ€์ ธ์˜ค๊ธฐ
+
+`getAsset` RPC ๋ฉ”์„œ๋“œ๊ฐ€ ์ž์‚ฐ์— ๋Œ€ํ•œ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์ž์‚ฐ์˜ **์ฆ๋ช…**์€ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. [๊ฐœ์š”](/kr/bubblegum#merkle-trees-leaves-and-proofs) ํŽ˜์ด์ง€์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์••์ถ•๋œ NFT์˜ ์ฆ๋ช…์€ ์ž์‚ฐ์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด์‹œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ ์—†์ด๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋กœ ํŠธ๋ฆฌ์— ์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ ์••์ถ•๋œ NFT์˜ ๋งŽ์€ ์ž‘์—…(์˜ˆ: ์†Œ๊ฐ, ์ „์†ก, ์—…๋ฐ์ดํŠธ ๋“ฑ)์€ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ž์‚ฐ์˜ ์ฆ๋ช…์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ž์‚ฐ์˜ ์ฆ๋ช…์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ฃผ์–ด์ง„ ํŠธ๋ฆฌ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์••์ถ•๋œ NFT์˜ ํ•ด์‹œ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด DAS API๊ฐ€ ๋ชจ๋“  ์••์ถ•๋œ NFT์˜ ์ฆ๋ช…๋„ ์ถ”์ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.
+
+์••์ถ•๋œ NFT์˜ ์ฆ๋ช…์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด `getAssetProof` RPC ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” **Rpc Asset Proof** ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:
+
+- **Proof**: ์•ฝ์†๋œ ๋Œ€๋กœ ์••์ถ•๋œ NFT์˜ ์ฆ๋ช….
+- **Root**: ์ž์‚ฐ์ด ์†ํ•œ ๋จธํด ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ. ์ œ๊ณต๋œ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ์„ ํ™•์ธํ•  ๋•Œ ์ตœ์ข… ํ•ด์‹œ๋กœ ์ด ๋ฃจํŠธ๊ฐ€ ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **Node Index**: ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋‹จ์ผ ๋…ธ๋“œ๋ฅผ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ, ์œ„์—์„œ ์•„๋ž˜๋กœ ์„ธ๋ฉด ๋จธํด ํŠธ๋ฆฌ์—์„œ ์ž์‚ฐ์˜ ์ธ๋ฑ์Šค. **๋ฆฌํ”„ ์ธ๋ฑ์Šค**๋ผ๊ณ  ํ•˜๋Š” ๋” ์œ ์šฉํ•œ ์ธ๋ฑ์Šค๋Š” ๋‹ค์Œ ๊ณต์‹์œผ๋กœ ์ด ๊ฐ’์—์„œ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: `leaf_index = node_index - 2^max_depth` ์—ฌ๊ธฐ์„œ `max_depth`๋Š” ๋จธํด ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊นŠ์ด์ž…๋‹ˆ๋‹ค. **๋ฆฌํ”„ ์ธ๋ฑ์Šค**๋Š” ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„๋งŒ(์ฆ‰, ๊ฐ€์žฅ ๋‚ฎ์€ ํ–‰) ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์„ผ ๊ฒฝ์šฐ ๋จธํด ํŠธ๋ฆฌ์—์„œ ์ž์‚ฐ์˜ ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค. ์ด ์ธ๋ฑ์Šค๋Š” ๋งŽ์€ ๋ช…๋ น์–ด์—์„œ ์š”์ฒญ๋˜๋ฉฐ ์ž์‚ฐ์˜ **๋ฆฌํ”„ ์ž์‚ฐ ID**๋ฅผ ํŒŒ์ƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+- **Leaf**: ์••์ถ•๋œ NFT์˜ ์ „์ฒด ํ•ด์‹œ.
+- **Tree ID**: ์ž์‚ฐ์ด ์†ํ•œ ๋จธํด ํŠธ๋ฆฌ์˜ ์ฃผ์†Œ.
+
+๋ณด์‹œ๋‹ค์‹œํ”ผ ์—ฌ๊ธฐ์˜ ์ผ๋ถ€ ์ •๋ณด๋Š” `getAsset` RPC ํ˜ธ์ถœ์—์„œ ์ค‘๋ณต๋˜์ง€๋งŒ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž์‚ฐ์˜ **์ฆ๋ช…**๊ณผ **๋…ธ๋“œ ์ธ๋ฑ์Šค**๋Š” ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ์˜ ์ฆ๋ช…์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT์˜ ์ฆ๋ช… ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+const rpcAssetProof = await umi.rpc.getAssetProof(assetId)
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์—ฌ๋Ÿฌ ์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ
+
+DAS API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด `getAssetsByOwner`์™€ `getAssetsByGroup` RPC ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์ž์‚ฐ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜๋œ **Rpc Asset List** ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:
+
+- **Items**: ์œ„์—์„œ ์„ค๋ช…ํ•œ **Rpc Asset** ๋ฐฐ์—ด.
+- **Total**: ์ œ๊ณต๋œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์‚ฐ์˜ ์ด ์ˆ˜.
+- **Limit**: ํŽ˜์ด์ง€์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ž์‚ฐ์˜ ์ตœ๋Œ€ ์ˆ˜.
+- **Page**: ๋ฒˆํ˜ธ ๋งค๊น€ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ํ˜„์žฌ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
+- **Before**์™€ **After**: ์ปค์„œ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ํ˜„์žฌ ์–ด๋–ค ์ž์‚ฐ ์ดํ›„ ๋ฐ/๋˜๋Š” ์ด์ „์— ์ž์‚ฐ์„ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ปค์„œ๋Š” ์ด์ „ ๋ฐ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **Errors**: RPC์—์„œ ๋ฐ˜ํ™˜๋œ ์ž ์žฌ์  ์˜ค๋ฅ˜ ๋ชฉ๋ก.
+
+๋‹ค์Œ์€ SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‘ RPC ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+### ์†Œ์œ ์ž๋ณ„
+
+{% dialect-switcher title="์†Œ์œ ์ž๋ณ„๋กœ ์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+const rpcAssetList = await umi.rpc.getAssetsByOwner({ owner })
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+### ์ปฌ๋ ‰์…˜๋ณ„
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜๋ณ„๋กœ ์••์ถ•๋œ NFT ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+const rpcAssetList = await umi.rpc.getAssetsByGroup({
+  groupKey: 'collection',
+  groupValue: collectionMint,
+})
+```
+
+{% /dialect %}
+{% /dialect-switcher %}

+ 171 - 0
src/pages/kr/bubblegum-v2/freeze-cnfts.md

@@ -0,0 +1,171 @@
+---
+title: ์••์ถ•๋œ NFT ๋™๊ฒฐ ๋ฐ ํ•ด๋™
+metaTitle: ์••์ถ•๋œ NFT ๋™๊ฒฐ ๋ฐ ํ•ด๋™ | Bubblegum V2
+description: Bubblegum์—์„œ ์••์ถ•๋œ NFT๋ฅผ ๋™๊ฒฐํ•˜๊ณ  ํ•ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+Bubblegum V2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์••์ถ•๋œ NFT๋ฅผ ๋™๊ฒฐํ•˜๊ณ  ํ•ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํ…Œ์ดํ‚น๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. {% .lead %}
+
+## ์••์ถ•๋œ NFT ๋™๊ฒฐ
+
+์ด์ „์— ๋ฆฌํ”„ ์œ„์ž„์ž์—๊ฒŒ ์œ„์ž„๋œ ์••์ถ•๋œ NFT๋ฅผ ๋™๊ฒฐํ•˜๋ ค๋ฉด `freezeV2` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์œ„์ž„๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•„๋ž˜์˜ `delegateAndFreezeV2`๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. `freezeV2` ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="๋ฆฌํ”„ ์œ„์ž„์ž๋กœ ์••์ถ•๋œ NFT ๋™๊ฒฐ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+```js
+import {
+  getAssetWithProof,
+  freezeV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId);
+await freezeV2(umi, {
+  ...assetWithProof,
+  leafOwner: umi.identity.publicKey,
+  authority: leafDelegate, // ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€๋ถˆ์ž๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค
+  leafDelegate: leafDelegate.publicKey,
+  // cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ ์ปฌ๋ ‰์…˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+  //coreCollection: collectionSigner.publicKey,
+}).sendAndConfirm(umi);
+```
+{% /totem %}
+{% totem-accordion title="์˜๊ตฌ ๋™๊ฒฐ ์œ„์ž„์ž๋กœ" %}
+```js
+import {
+  getAssetWithProof,
+  freezeV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId);
+await freezeV2(umi, {
+  ...assetWithProof,
+  leafOwner: umi.identity.publicKey,
+  authority: permanentFreezeDelegate,
+  leafDelegate: permanentFreezeDelegate.publicKey,
+  coreCollection: collectionSigner.publicKey,
+}).sendAndConfirm(umi);
+```
+{% /totem-accordion %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์••์ถ•๋œ NFT ์œ„์ž„ ๋ฐ ๋™๊ฒฐ
+
+์••์ถ•๋œ NFT๋ฅผ ๋™๊ฒฐํ•˜๋ ค๋ฉด `delegateAndFreezeV2` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="์••์ถ•๋œ NFT ์œ„์ž„ ๋ฐ ๋™๊ฒฐ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+```js
+import {
+  getAssetWithProof,
+  delegateAndFreezeV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+// newLeafDelegate๋Š” ๋‚˜์ค‘์— cNFT๋ฅผ ํ•ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” publicKey์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+const assetWithProof = await getAssetWithProof(umi, assetId);
+await delegateAndFreezeV2(umi, {
+  ...assetWithProof,
+  leafOwner: umi.identity.publicKey,
+  newLeafDelegate,
+}).sendAndConfirm(umi);
+
+```
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์••์ถ•๋œ NFT ํ•ด๋™
+
+์••์ถ•๋œ NFT๋ฅผ ํ•ด๋™ํ•˜๋ ค๋ฉด `thawV2` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="๋ฆฌํ”„ ์œ„์ž„์ž๋กœ ์••์ถ•๋œ NFT ํ•ด๋™" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+```js
+import {
+  getAssetWithProof,
+  thawV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId);
+// delegateAuthority๋Š” cNFT์˜ ์œ„์ž„ ๊ถŒํ•œ์œผ๋กœ ์Šน์ธ๋œ ์„œ๋ช…์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+await thawV2(umi, {
+  ...assetWithProof,
+  authority: delegateAuthority,
+}).sendAndConfirm(umi);
+```
+{% /totem %}    
+{% /dialect %}
+{% /dialect-switcher %}
+
+cNFT๊ฐ€ ์˜๊ตฌ ๋™๊ฒฐ ์œ„์ž„์ž์—๊ฒŒ ์œ„์ž„๋œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="์˜๊ตฌ ๋™๊ฒฐ ์œ„์ž„์ž๋กœ ์••์ถ•๋œ NFT ํ•ด๋™" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+```js
+import {
+  getAssetWithProof,
+  thawV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId);
+await thawV2(umi, {
+  ...assetWithProof,
+  authority: permanentFreezeDelegate,
+}).sendAndConfirm(umi);
+```
+{% /totem %}    
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ํ•ด๋™ ๋ฐ ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ
+
+ํ•ด๋™๊ณผ ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ๋ฅผ ๋™์‹œ์— ํ•˜๋ ค๋ฉด `thawAndRevokeV2` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="ํ•ด๋™ ๋ฐ ์œ„์ž„ ๊ถŒํ•œ ์ทจ์†Œ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+```js
+import {
+  getAssetWithProof,
+  thawAndRevokeV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+// delegateAuthority๋Š” cNFT์˜ ์œ„์ž„ ๊ถŒํ•œ์œผ๋กœ ์Šน์ธ๋œ ์„œ๋ช…์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+const assetWithProof = await getAssetWithProof(umi, assetId);
+await thawAndRevokeV2(umi, {
+  ...assetWithProof,
+  authority: delegateAuthority,
+}).sendAndConfirm(umi);
+```
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## cNFT๋ฅผ ์†Œ์šธ๋ฐ”์šด๋“œ๋กœ ๋งŒ๋“ค๊ธฐ
+cNFT๋ฅผ ์†Œ์šธ๋ฐ”์šด๋“œ๋กœ ๋งŒ๋“ค๋ ค๋ฉด cNFT๊ฐ€ [`permanentFreezeDelegate`](/kr/core/plugins/permanent-freeze-delegate) ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋Š” [mpl-core ์ปฌ๋ ‰์…˜](/kr/core/collections)์˜ ์ผ๋ถ€์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. `setNonTransferableV2` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cNFT๋ฅผ ์–‘๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="cNFT๋ฅผ ์†Œ์šธ๋ฐ”์šด๋“œ๋กœ ๋งŒ๋“ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+```js
+import {
+  getAssetWithProof,
+  setNonTransferableV2,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+const assetWithProof = await getAssetWithProof(umi, assetId);
+
+await setNonTransferableV2(umi, {
+    ...assetWithProof,
+    authority, // ์ปฌ๋ ‰์…˜์˜ ์˜๊ตฌ ๋™๊ฒฐ ์œ„์ž„์ž
+    coreCollection: collection.publicKey,
+}).sendAndConfirm(umi);
+```
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 245 - 0
src/pages/kr/bubblegum-v2/hashed-nft-data.md

@@ -0,0 +1,245 @@
+---
+title: NFT ๋ฐ์ดํ„ฐ ํ•ด์‹ฑ
+metaTitle: NFT ๋ฐ์ดํ„ฐ ํ•ด์‹ฑ | Bubblegum V2
+description: Bubblegum์—์„œ NFT ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ด์‹ฑ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+์ด์ „ ์„น์…˜์—์„œ Bubblegum ๋จธํด ํŠธ๋ฆฌ์˜ ๊ฐ ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์••์ถ•๋œ NFT(cNFT)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹ฑํ•˜์—ฌ ์–ป๋Š”๋‹ค๊ณ  ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. cNFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Bubblegum V2์˜ ๊ฐ cNFT๋Š” ๋ฏผํŒ… ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ๋‹ค์Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ํ•จ๊ป˜ ๋ฏผํŒ…๋˜๋ฉฐ, Bubblegum v1์€ ๋Œ€์‹  MetadataArgs๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”:
+
+```rust
+pub struct MetadataArgsV2 {
+    /// ์ž์‚ฐ์˜ ์ด๋ฆ„
+    pub name: String,
+    /// ์ž์‚ฐ์˜ ์‹ฌ๋ณผ
+    pub symbol: String,
+    /// ์ž์‚ฐ์„ ๋‚˜ํƒ€๋‚ด๋Š” JSON์„ ๊ฐ€๋ฆฌํ‚ค๋Š” URI
+    pub uri: String,
+    /// 2์ฐจ ํŒ๋งค์—์„œ ์ฐฝ์ž‘์ž์—๊ฒŒ ์ง€๋ถˆ๋˜๋Š” ๋กœ์—ดํ‹ฐ ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ (0-10000)
+    pub seller_fee_basis_points: u16,
+    /// ๋ถˆ๋ณ€, ํ•œ ๋ฒˆ ๋’ค์ง‘ํžˆ๋ฉด ์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋ชจ๋“  ํŒ๋งค๊ฐ€ 2์ฐจ ํŒ๋งค๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
+    pub primary_sale_happened: bool,
+    /// ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€, ๊ธฐ๋ณธ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
+    pub is_mutable: bool,
+    /// ํ† ํฐ ํ‘œ์ค€. ํ˜„์žฌ๋Š” `NonFungible`๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
+    pub token_standard: Option<TokenStandard>,
+    /// ์ฐฝ์ž‘์ž ๋ฐฐ์—ด
+    pub creators: Vec<Creator>,
+    /// ์ปฌ๋ ‰์…˜. V2์—์„œ๋Š” ๋‹จ์ˆœํžˆ `Pubkey`์ด๋ฉฐ ํ•ญ์ƒ ๊ฒ€์ฆ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
+    pub collection: Option<Pubkey>,
+}
+```
+
+cNFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์— ํ‘œ์‹œ๋˜๊ณ  ์„ค๋ช…๋œ ๋Œ€๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด์‹ฑ๋ฉ๋‹ˆ๋‹ค:
+
+{% diagram %}
+
+{% node %}
+{% node #metadata label="Metadata Args" theme="blue" /%}
+{% node label="Name" /%}
+{% node label="Symbol" /%}
+{% node label="URI" /%}
+{% node label="Seller Fee Basis Points" /%}
+{% node label="Primary Sale Happened" /%}
+{% node label="Is Mutable" /%}
+{% node label="Token Standard" /%}
+{% node label="Collection" /%}
+{% node label="Creators" /%}
+{% /node %}
+
+{% node #seller-fee-basis-points parent="metadata" y="305" label="Seller Fee Basis Points" theme="blue" /%}
+
+{% node #creators parent="metadata" y="370" label="Creators" theme="blue" /%}
+
+{% node parent="metadata" x="300" y="150" %}
+{% node #data-hash label="Data Hash" theme="mint" /%}
+{% node theme="transparent" %}
+Hash(Metadata Args, \
+Seller Fee Basis Points)
+{% /node %}
+{% /node %}
+
+{% node parent="creators" x="300" %}
+{% node #creator-hash label="Creator Hash" theme="mint" /%}
+{% node theme="transparent" label="Hash(Creators)" /%}
+{% /node %}
+
+{% node parent="data-hash" x="250" %}
+{% node #leaf-schema label="Leaf Schema V2" theme="blue" /%}
+{% node label="ID" /%}
+{% node label="Owner" /%}
+{% node label="Delegate" /%}
+{% node label="Nonce" /%}
+{% node label="Data Hash" /%}
+{% node label="Creator Hash" /%}
+{% node label="Collection Hash (V2์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€)" /%}
+{% node label="Asset Data Hash (V2์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€)" /%}
+{% node label="Flags (V2์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€)" /%}
+{% /node %}
+
+{% node parent="leaf-schema" x="200" %}
+{% node #leaf-node label="Leaf Node" theme="mint" /%}
+{% node theme="transparent" label="Hash(Leaf Schema)" /%}
+{% /node %}
+
+{% edge from="metadata" to="data-hash" /%}
+{% edge from="seller-fee-basis-points" to="data-hash" /%}
+{% edge from="creators" to="creator-hash" /%}
+
+{% edge from="data-hash" to="leaf-schema" /%}
+{% edge from="creator-hash" to="leaf-schema" /%}
+
+{% edge from="leaf-schema" to="leaf-node" /%}
+
+{% /diagram %}
+
+๋จผ์ € ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ keccak-256 ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์‹ฑ๋ฉ๋‹ˆ๋‹ค. Keccak-256์€ SHA-256๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ•๋ ฅํ•˜๋ฉฐ Ethereum๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ธ”๋ก์ฒด์ธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Solana์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+
+๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํ•ด์‹ฑ๋œ ๋‹ค์Œ `seller_fee_basis_points`์™€ ํ•จ๊ป˜ ๋‹ค์‹œ ํ•ด์‹ฑ๋œ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๊ฐ€ ์ „์ฒด `MetadataArgs` ๊ตฌ์กฐ์ฒด(์ตœ๋Œ€ 457๋ฐ”์ดํŠธ ๊ธธ์ด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ)๋ฅผ ์ „๋‹ฌํ•  ํ•„์š” ์—†์ด ํŒ๋งค์ž ์ˆ˜์ˆ˜๋ฃŒ ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋Œ€์‹  ์ด๋ฏธ ํ•ด์‹ฑ๋œ 32๋ฐ”์ดํŠธ ๋ฐฐ์—ด์˜ `MetadataArgs`์™€ `u16`(2๋ฐ”์ดํŠธ) `seller_fee_basis_points`๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ•จ๊ป˜ ํ•ด์‹ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ•ด์‹œ๋ฅผ ์žฌ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```rust
+/// ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
+///
+/// ํ•ด์‹œ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ์˜ keccak256 ํ•ด์‹œ๋กœ ๊ณ„์‚ฐ๋˜๋ฉฐ,
+/// ์ด๋Š” `seller_fee_basis_points`์™€ ํ•จ๊ป˜ ํ•ด์‹ฑ๋ฉ๋‹ˆ๋‹ค.
+pub fn hash_metadata(metadata: &MetadataArgs) -> Result<[u8; 32]> {
+    let hash = keccak::hashv(&[metadata.try_to_vec()?.as_slice()]);
+    // ์ƒˆ ๋ฐ์ดํ„ฐ ํ•ด์‹œ ๊ณ„์‚ฐ.
+    Ok(keccak::hashv(&[
+        &hash.to_bytes(),
+        &metadata.seller_fee_basis_points.to_le_bytes(),
+    ])
+    .to_bytes())
+}
+```
+
+๋‹ค์Œ์œผ๋กœ ์ฐฝ์ž‘์ž ๋ฐฐ์—ด์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•ด์‹ฑ๋ฉ๋‹ˆ๋‹ค.
+
+```rust
+/// ์ฐฝ์ž‘์ž์˜ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
+///
+/// ํ•ด์‹œ๋Š” ์ฐฝ์ž‘์ž ๋ฐ”์ดํŠธ์˜ keccak256 ํ•ด์‹œ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
+pub fn hash_creators(creators: &[Creator]) -> [u8; 32] {
+    // ์ฐฝ์ž‘์ž Vec๋ฅผ ๋ฐ”์ดํŠธ Vec๋กœ ๋ณ€ํ™˜
+    let creator_data = creators
+        .iter()
+        .map(|c| [c.address.as_ref(), &[c.verified as u8], &[c.share]].concat())
+        .collect::<Vec<_>>();
+    // ํ•ด์‹œ ๊ณ„์‚ฐ
+    keccak::hashv(
+        creator_data
+            .iter()
+            .map(|c| c.as_slice())
+            .collect::<Vec<&[u8]>>()
+            .as_ref(),
+    )
+    .to_bytes()
+}
+```
+
+์ด์–ด์„œ ์ปฌ๋ ‰์…˜ ๋ฐ ์ž์‚ฐ ๋ฐ์ดํ„ฐ ํ•ด์‹œ๊ฐ€ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค:
+
+```rust
+/// `LeafSchemaV2`์— ๋Œ€ํ•œ ์ปฌ๋ ‰์…˜์˜ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค(`None`์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’ ์ œ๊ณต).
+pub fn hash_collection_option(collection: Option<Pubkey>) -> Result<[u8; 32]> {
+    let collection_key = collection.unwrap_or(DEFAULT_COLLECTION);
+    Ok(keccak::hashv(&[collection_key.as_ref()]).to_bytes())
+}
+
+/// `LeafSchemaV2`์— ๋Œ€ํ•œ ์ž์‚ฐ ๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค(`None`์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’ ์ œ๊ณต).
+pub fn hash_asset_data_option(asset_data: Option<&[u8]>) -> Result<[u8; 32]> {
+    let data = asset_data.unwrap_or(b""); // None์„ ๋นˆ ๋ฐ์ดํ„ฐ๋กœ ์ฒ˜๋ฆฌ
+    Ok(keccak::hashv(&[data]).to_bytes())
+}
+
+```
+
+๋ฐ์ดํ„ฐ ํ•ด์‹œ์™€ ์ฐฝ์ž‘์ž ํ•ด์‹œ๋Š” ๋ฆฌํ”„๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์ •๋ณด์™€ ํ•จ๊ป˜ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
+
+๋ฐ์ดํ„ฐ์™€ ์ฐฝ์ž‘์ž ํ•ด์‹œ์˜ ๋ถ„๋ฆฌ๋Š” `seller_fee_basis_points`์™€ ์œ ์‚ฌํ•œ ์ด์œ ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๊ฐ€ ์ฐฝ์ž‘์ž ๋ฐฐ์—ด์„ ๊ฒ€์ฆํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ ํ•ด์‹ฑ๋œ 32๋ฐ”์ดํŠธ ๋ฐฐ์—ด์˜ `MetadataArgs`๋ฅผ ์ฐฝ์ž‘์ž ๋ฐฐ์—ด๊ณผ ํ•จ๊ป˜ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐฝ์ž‘์ž ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค์„ ํ‰๊ฐ€ํ•œ ๋‹ค์Œ `creator_hash`๋กœ ํ•ด์‹ฑํ•˜๊ณ  ๋‹ค๋ฅธ ๊ธฐ์กด ์ •๋ณด์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Bubblegum V1์€ `LeafSchemaV1`์„ ์‚ฌ์šฉํ•˜๊ณ  Bubblegum V2๋Š” `LeafSchemaV2`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+```rust
+#[derive(BorshSerialize, BorshDeserialize, PartialEq, Eq, Debug, Clone)]
+pub enum LeafSchema {
+    V1 {
+        id: Pubkey,
+        owner: Pubkey,
+        delegate: Pubkey,
+        nonce: u64,
+        data_hash: [u8; 32],
+        creator_hash: [u8; 32],
+    },
+    V2 {
+        id: Pubkey,
+        owner: Pubkey,
+        delegate: Pubkey,
+        nonce: u64,
+        data_hash: [u8; 32],
+        creator_hash: [u8; 32],
+        collection_hash: [u8; 32],
+        asset_data_hash: [u8; 32],
+        flags: u8,
+    },
+}
+```
+
+๋ฐ์ดํ„ฐ, ์ฐฝ์ž‘์ž, ์ปฌ๋ ‰์…˜ ๋ฐ ์ž์‚ฐ ๋ฐ์ดํ„ฐ ํ•ด์‹œ ์™ธ์—๋„ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ•ญ๋ชฉ๋“ค์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:
+
+* nonce: ์ด๋Š” ํŠธ๋ฆฌ์˜ ๊ฐ ๋ฆฌํ”„์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ "ํ•œ ๋ฒˆ ์‚ฌ์šฉ๋˜๋Š” ๋ฒˆํ˜ธ" ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋จธํด ํŠธ๋ฆฌ ๋ฆฌํ”„๊ฐ€ ๊ณ ์œ ํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ์ž์‚ฐ ์ฆ๋ช…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์˜คํ”„์ฒด์ธ ์ธ๋ฑ์„œ์—์„œ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค.
+* id - ์ด ์ž์‚ฐ ID๋Š” ๊ณ ์ •๋œ ์ ‘๋‘์‚ฌ, ๋จธํด ํŠธ๋ฆฌ Pubkey ๋ฐ nonce๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ PDA์ž…๋‹ˆ๋‹ค.
+* owner - cNFT ์†Œ์œ ์ž์˜ Pubkey๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์ง€๊ฐ‘์ž…๋‹ˆ๋‹ค.
+* delegate - cNFT์˜ ์œ„์ž„์ž์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Š” ์‚ฌ์šฉ์ž์˜ ์ง€๊ฐ‘์ด์ง€๋งŒ `delegate` Bubblegum ๋ช…๋ น์–ด๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+* flags - ์ด๋Š” NFT ์ƒํƒœ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๋น„ํŠธ๋งˆ์Šคํฌ์ž…๋‹ˆ๋‹ค. ๋น„ํŠธ 0์€ ์ž์‚ฐ ์ˆ˜์ค€์—์„œ์˜ ๋™๊ฒฐ ์ƒํƒœ(์†Œ์œ ์ž์— ์˜ํ•œ)์ด๊ณ  ๋น„ํŠธ 1์€ ์ปฌ๋ ‰์…˜ ์ˆ˜์ค€์—์„œ ์˜๊ตฌ ์œ„์ž„์ž์— ์˜ํ•œ ๋™๊ฒฐ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ ์ ˆํ•œ ๊ถŒํ•œ์— ์˜ํ•ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„ํŠธ 3์€ ์•„๋ฌด๋„ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์—†๊ณ  ์†Œ์šธ๋ฐ”์šด๋“œ ์ž์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ `nonTransferable` ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋น„ํŠธ๋“ค์€ ํ–ฅํ›„ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋จธํด ํŠธ๋ฆฌ์— ์กด์žฌํ•˜๋Š” 32๋ฐ”์ดํŠธ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ๋Š” ์Šคํ‚ค๋งˆ ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์‹ฑ๋ฉ๋‹ˆ๋‹ค:
+
+```rust
+impl LeafSchema {
+    pub fn to_node(&self) -> Node {
+        let hashed_leaf = match self {
+            LeafSchema::V1 {
+                id,
+                owner,
+                delegate,
+                nonce,
+                data_hash,
+                creator_hash,
+            } => keccak::hashv(&[
+                &[self.version().to_bytes()],
+                id.as_ref(),
+                owner.as_ref(),
+                delegate.as_ref(),
+                nonce.to_le_bytes().as_ref(),
+                data_hash.as_ref(),
+                creator_hash.as_ref(),
+            ])
+            .to_bytes(),
+            LeafSchema::V2 {
+                id,
+                owner,
+                delegate,
+                nonce,
+                data_hash,
+                creator_hash,
+                collection_hash,
+                asset_data_hash,
+                flags,
+            } => keccak::hashv(&[
+                &[self.version().to_bytes()],
+                id.as_ref(),
+                owner.as_ref(),
+                delegate.as_ref(),
+                nonce.to_le_bytes().as_ref(),
+                data_hash.as_ref(),
+                creator_hash.as_ref(),
+                collection_hash.as_ref(),
+                asset_data_hash.as_ref(),
+                &[*flags],
+            ])
+            .to_bytes(),
+        };
+        hashed_leaf
+    }
+}
+```
+
+๋ฆฌํ”„ ๋ณ€๊ฒฝ์„ ํฌํ•จํ•˜๋Š” Bubblegum ์ž‘์—…(`transfer`, `delegate`, `burn` ๋“ฑ)์€ ๋จธํด ํŠธ๋ฆฌ ๋ณ€๊ฒฝ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ ๋ฒ„์ „์— ๋”ฐ๋ผ `spl-account-compression` ๋˜๋Š” `mpl-account-compression`์— "์ด์ „" ๋ฐ "์ดํ›„" ํ•ด์‹ฑ๋œ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

+ 147 - 0
src/pages/kr/bubblegum-v2/index.md

@@ -0,0 +1,147 @@
+---
+title: ๊ฐœ์š”
+metaTitle: ๊ฐœ์š” | Bubblegum V2
+description: Bubblegum V2์™€ ์••์ถ•๋œ NFT์— ๋Œ€ํ•œ ๊ณ ์ˆ˜์ค€ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+---
+
+Bubblegum V2๋Š” Solana์—์„œ ์••์ถ•๋œ NFT(cNFT)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ Metaplex Protocol ํ”„๋กœ๊ทธ๋žจ์˜ ์ตœ์‹  ๋ฐ˜๋ณต์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์šด์˜์„ ์œ„ํ•ด ๊ตฌ์ถ•๋œ Bubblegum V2๋Š” ์›๋ณธ Bubblegum์˜ ๋ชจ๋“  ์žฅ์ ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ•๋ ฅํ•œ ์ƒˆ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT๋Š” ์˜จ์ฒด์ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์žฌ๊ณ ํ•จ์œผ๋กœ์จ NFT ์ƒ์„ฑ์„ ์ƒˆ๋กœ์šด ๊ทœ๋ชจ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. {% .lead %}
+
+{% quick-links %}
+
+{% quick-link title="์‹œ์ž‘ํ•˜๊ธฐ" icon="InboxArrowDown" href="/kr/bubblegum-v2/sdk" description="์›ํ•˜๋Š” ์–ธ์–ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„ ์••์ถ•๋œ NFT๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="API ์ฐธ์กฐ" icon="CodeBracketSquare" href="https://mpl-bubblegum.typedoc.metaplex.com/" target="_blank" description="ํŠน์ •ํ•œ ๊ฒƒ์„ ์ฐพ๊ณ  ๊ณ„์‹ ๊ฐ€์š”? API ์ฐธ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋‹ต์„ ์ฐพ์•„๋ณด์„ธ์š”." /%}
+
+{% /quick-links %}
+
+## Bubblegum V2์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ
+
+Bubblegum V2๋Š” ์›๋ณธ Bubblegum ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ฐ˜ ์œ„์— ๊ตฌ์ถ•๋˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๊ฐ•๋ ฅํ•œ ์ƒˆ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค:
+
+- **๋™๊ฒฐ ๋ฐ ํ•ด๋™ ๊ธฐ๋Šฅ**: ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋™๊ฒฐ/ํ•ด๋™์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค: 1) cNFT ์†Œ์œ ์ž๋Š” ์ž์‚ฐ ์ˆ˜์ค€ ์ œ์–ด๋ฅผ ์œ„ํ•ด ๋ฆฌํ”„ ์œ„์ž„์ž์—๊ฒŒ ๋™๊ฒฐ ๊ถŒํ•œ์„ ์œ„์ž„ํ•  ์ˆ˜ ์žˆ์–ด ํŠน์ • ์ด๋ฒคํŠธ ์ค‘ ์ „์†ก์„ ๋ฐฉ์ง€ํ•˜๊ฑฐ๋‚˜ ๋ฒ ์ŠคํŒ… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 2) ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ ์‹œ `PermanentFreezeDelegate` ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, ํ”„๋กœ์ ํŠธ ์ œ์ž‘์ž๋Š” ์ปฌ๋ ‰์…˜ ์ „์ฒด ์ œ์–ด๋ฅผ ์œ„ํ•ด ์˜๊ตฌ ๋™๊ฒฐ ์œ„์ž„์ž๋ฅผ ํ†ตํ•ด cNFT๋ฅผ ๋™๊ฒฐํ•˜๊ณ  ํ•ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- **MPL-Core ์ปฌ๋ ‰์…˜ ํ†ตํ•ฉ**: Bubblegum V2 NFT๋Š” ์ด์ œ ํ† ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜์— ์ œํ•œ๋˜์ง€ ์•Š๊ณ  MPL-Core ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์–ด ๋” ๋„“์€ Metaplex ์ƒํƒœ๊ณ„์™€์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+- **๋กœ์—ดํ‹ฐ ๊ฐ•์ œ**: Bubblegum V2๋Š” [MPL-Core](https://docs.metaplex.com/core/overview) ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ `ProgramDenyList`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cNFT์— ๋กœ์—ดํ‹ฐ๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์†Œ์šธ๋ฐ”์šด๋“œ NFT**: cNFT๋Š” ์ด์ œ ์†Œ์šธ๋ฐ”์šด๋“œ(์–‘๋„ ๋ถˆ๊ฐ€๋Šฅ)๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ์†Œ์œ ์ž์˜ ์ง€๊ฐ‘์— ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž๊ฒฉ์ฆ๋ช…, ์ฐธ์„ ์ฆ๋ช…, ์‹ ์› ํ™•์ธ ๋“ฑ์— ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ ์‹œ `PermanentFreezeDelegate` ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **์˜๊ตฌ ์ „์†ก ํ—ˆ์šฉ**: ์ปฌ๋ ‰์…˜์—์„œ `PermanentTransferDelegate` ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์˜๊ตฌ ์ „์†ก ์œ„์ž„์ž๋Š” ๋ฆฌํ”„ ์†Œ์œ ์ž์˜ ์ƒํ˜ธ ์ž‘์šฉ ์—†์ด cNFT๋ฅผ ์ƒˆ ์†Œ์œ ์ž์—๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **๊ถŒํ•œ์— ์˜ํ•œ ์†Œ๊ฐ**: ์ปฌ๋ ‰์…˜์— `PermanentBurnDelegate` ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, ์œ„์ž„์ž๋Š” ๋ฆฌํ”„ ์†Œ์œ ์ž์˜ ์„œ๋ช… ์—†์ด NFT๋ฅผ ์†Œ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์†์„ฑ**: MPL-Core `attributes` ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜ ์ˆ˜์ค€์—์„œ ์†์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์œ„ ๊ธฐ๋Šฅ๋“ค์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Bubblegum V2๋Š” ์ƒˆ๋กœ์šด ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ(`LeafSchemaV2`)๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. Bubblegum V2์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌํ”„์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๋‹ค์Œ ์„น์…˜์„ ํ™•์ธํ•˜์„ธ์š”.
+
+## LeafSchemaV2
+
+Bubblegum V2๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉด์„œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ(LeafSchemaV2)๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด ์Šคํ‚ค๋งˆ๋Š” ๋‹ค์Œ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:
+
+- ๊ธฐ์กด ํ† ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋Œ€์‹  MPL-Core ์ปฌ๋ ‰์…˜๊ณผ์˜ ํ†ตํ•ฉ
+- ๋™๊ฒฐ/ํ•ด๋™ ๊ธฐ๋Šฅ ์ง€์›
+- ์†Œ์šธ๋ฐ”์šด๋“œ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
+
+ํ”„๋กœ์ ํŠธ๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ ˆ๊ฑฐ์‹œ Bubblegum์„ ์‚ฌ์šฉํ•œ ์›๋ณธ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ๋‚˜ Bubblegum V2๋ฅผ ์‚ฌ์šฉํ•œ ์ƒˆ v2 ์Šคํ‚ค๋งˆ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ƒˆ๋กœ์šด `LeafSchemaV2`๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด [`createTreeV2` ๋ช…๋ น](/kr/bubblegum-v2/create-trees)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” V2 ๋จธํด ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. V1 ๋จธํด ํŠธ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ V2 ๋จธํด ํŠธ๋ฆฌ๋Š” V1 ๋ฆฌํ”„์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+## ๋จธํด ํŠธ๋ฆฌ, ๋ฆฌํ”„ ๋ฐ ์ฆ๋ช…
+
+์••์ถ•๋œ NFT๋Š” **๋จธํด ํŠธ๋ฆฌ**์˜ ๋งฅ๋ฝ์—์„œ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋จธํด ํŠธ๋ฆฌ๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š” [์ „์šฉ ๊ณ ๊ธ‰ ๊ฐ€์ด๋“œ](/kr/bubblegum-v2/concurrent-merkle-trees)์—์„œ ์„ค๋ช…ํ•˜์ง€๋งŒ, ์ด ๊ฐœ์š”์—์„œ๋Š” ๋จธํด ํŠธ๋ฆฌ๋ฅผ **๋ฆฌํ”„**๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ํ•ด์‹œ์˜ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฆฌํ”„๋Š” [์••์ถ•๋œ NFT์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹ฑ](/kr/bubblegum-v2/hashed-nft-data)ํ•˜์—ฌ ์–ป์–ด์ง‘๋‹ˆ๋‹ค.
+
+๋จธํด ํŠธ๋ฆฌ์˜ ๊ฐ ๋ฆฌํ”„์— ๋Œ€ํ•ด **์ฆ๋ช…**์ด๋ผ๊ณ  ํ•˜๋Š” ํ•ด์‹œ ๋ชฉ๋ก์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ˆ„๊ตฌ๋“ ์ง€ ์ฃผ์–ด์ง„ ๋ฆฌํ”„๊ฐ€ ํ•ด๋‹น ํŠธ๋ฆฌ์˜ ์ผ๋ถ€์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๊ฑฐ๋‚˜ ์ „์†ก๋  ๋•Œ๋งˆ๋‹ค ์—ฐ๊ด€๋œ ๋ฆฌํ”„๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ์ฆ๋ช…๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
+
+{% diagram %}
+
+{% node #root label="๋ฃจํŠธ ๋…ธ๋“œ" theme="slate" /%}
+{% node #root-hash label="ํ•ด์‹œ" parent="root" x="56" y="40" theme="transparent" /%}
+{% node #node-1 label="๋…ธ๋“œ 1" parent="root" y="100" x="-200" theme="blue" /%}
+{% node #node-1-hash label="ํ•ด์‹œ" parent="node-1" x="42" y="40" theme="transparent" /%}
+{% node #node-2 label="๋…ธ๋“œ 2" parent="root" y="100" x="200" theme="mint" /%}
+
+{% node #node-3 label="๋…ธ๋“œ 3" parent="node-1" y="100" x="-100" theme="mint" /%}
+{% node #node-4 label="๋…ธ๋“œ 4" parent="node-1" y="100" x="100" theme="blue" /%}
+{% node #node-4-hash label="ํ•ด์‹œ" parent="node-4" x="42" y="40" theme="transparent" /%}
+{% node #node-5 label="๋…ธ๋“œ 5" parent="node-2" y="100" x="-100" /%}
+{% node #node-6 label="๋…ธ๋“œ 6" parent="node-2" y="100" x="100" /%}
+
+{% node #leaf-1 label="๋ฆฌํ”„ 1" parent="node-3" y="100" x="-45" /%}
+{% node #leaf-2 label="๋ฆฌํ”„ 2" parent="node-3" y="100" x="55" /%}
+{% node #leaf-3 label="๋ฆฌํ”„ 3" parent="node-4" y="100" x="-45" theme="blue" /%}
+{% node #leaf-4 label="๋ฆฌํ”„ 4" parent="node-4" y="100" x="55" theme="mint" /%}
+{% node #leaf-5 label="๋ฆฌํ”„ 5" parent="node-5" y="100" x="-45" /%}
+{% node #leaf-6 label="๋ฆฌํ”„ 6" parent="node-5" y="100" x="55" /%}
+{% node #leaf-7 label="๋ฆฌํ”„ 7" parent="node-6" y="100" x="-45" /%}
+{% node #leaf-8 label="๋ฆฌํ”„ 8" parent="node-6" y="100" x="55" /%}
+{% node #nft label="NFT ๋ฐ์ดํ„ฐ" parent="leaf-3" y="100" x="-12" theme="blue" /%}
+
+{% node #proof-1 label="๋ฆฌํ”„ 4" parent="nft" x="200" theme="mint" /%}
+{% node #proof-2 label="๋…ธ๋“œ 3" parent="proof-1" x="90" theme="mint" /%}
+{% node #proof-3 label="๋…ธ๋“œ 2" parent="proof-2" x="97" theme="mint" /%}
+{% node #proof-legend label="์ฆ๋ช…" parent="proof-1" x="-6" y="-20" theme="transparent" /%}
+
+{% edge from="node-1" to="root" fromPosition="top" toPosition="bottom" theme="blue" animated=true /%}
+{% edge from="node-2" to="root" fromPosition="top" toPosition="bottom" theme="mint" animated=true /%}
+
+{% edge from="node-3" to="node-1" fromPosition="top" toPosition="bottom" theme="mint" animated=true /%}
+{% edge from="node-4" to="node-1" fromPosition="top" toPosition="bottom" theme="blue" animated=true /%}
+{% edge from="node-6" to="node-2" fromPosition="top" toPosition="bottom" /%}
+{% edge from="node-5" to="node-2" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="leaf-1" to="node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-2" to="node-3" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-4" to="node-4" fromPosition="top" toPosition="bottom" theme="mint" animated=true /%}
+{% edge from="leaf-3" to="node-4" fromPosition="top" toPosition="bottom" theme="blue" animated=true /%}
+{% edge from="leaf-5" to="node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-6" to="node-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-7" to="node-6" fromPosition="top" toPosition="bottom" /%}
+{% edge from="leaf-8" to="node-6" fromPosition="top" toPosition="bottom" /%}
+{% edge from="nft" to="leaf-3" fromPosition="top" toPosition="bottom" theme="blue" animated=true label="ํ•ด์‹œ" /%}
+
+{% /diagram %}
+
+๋”ฐ๋ผ์„œ ๋จธํด ํŠธ๋ฆฌ๋Š” ์ฃผ์–ด์ง„ ์••์ถ•๋œ NFT๊ฐ€ ์กด์žฌํ•จ์„ ๋ˆ„๊ตฌ๋“ ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์˜จ์ฒด์ธ ๊ตฌ์กฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. NFT ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ ๋„ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+์ด๋Š” ์ค‘์š”ํ•œ ์งˆ๋ฌธ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค: NFT ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅ๋˜๋‚˜์š”?
+
+## Metaplex DAS API
+
+์ƒˆ๋กœ์šด ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•  ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ด์‹ฑ๋˜์–ด ๋จธํด ํŠธ๋ฆฌ์— ์ƒˆ๋กœ์šด ๋ฆฌํ”„๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ „์ฒด NFT ๋ฐ์ดํ„ฐ๊ฐ€ ์••์ถ•๋œ NFT๋ฅผ ์ƒ์„ฑํ•œ ํŠธ๋žœ์žญ์…˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์••์ถ•๋œ NFT๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ณ€๊ฒฝ ๋กœ๊ทธ๋กœ ํŠธ๋žœ์žญ์…˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ณ„์ •์€ ์—†์ง€๋งŒ ์›์žฅ์˜ ๋ชจ๋“  ์ด์ „ ํŠธ๋žœ์žญ์…˜์„ ์‚ดํŽด๋ณด๊ณ  ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% diagram %}
+
+{% node #tx-1 label="ํŠธ๋žœ์žญ์…˜ 1" /%}
+{% node #tx-2 label="ํŠธ๋žœ์žญ์…˜ 2" parent="tx-1" y="50" /%}
+{% node #tx-3 label="ํŠธ๋žœ์žญ์…˜ 3" parent="tx-2" y="50" /%}
+{% node #tx-4 label="ํŠธ๋žœ์žญ์…˜ 4" parent="tx-3" y="50" /%}
+{% node #tx-5 label="ํŠธ๋žœ์žญ์…˜ 5" parent="tx-4" y="50" /%}
+{% node #tx-rest label="..." parent="tx-5" y="50" /%}
+
+{% node #nft-1 label="์ดˆ๊ธฐ NFT ๋ฐ์ดํ„ฐ" parent="tx-2" x="300" theme="blue" /%}
+{% node #nft-2 label="NFT ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋กœ๊ทธ" parent="tx-3" x="300" theme="blue" /%}
+{% node #nft-3 label="NFT ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋กœ๊ทธ" parent="tx-5" x="300" theme="blue" /%}
+
+{% edge from="nft-1" to="tx-2" label="์ €์žฅ๋จ" /%}
+{% edge from="nft-2" to="tx-3" label="์ €์žฅ๋จ" /%}
+{% edge from="nft-3" to="tx-5" label="์ €์žฅ๋จ" /%}
+
+{% /diagram %}
+
+ํ•˜๋‚˜์˜ NFT ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๋งค๋ฒˆ ํฌ๋กค๋งํ•˜๋Š” ๊ฒƒ์€ ์ตœ๊ณ ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์••์ถ•๋œ NFT๋Š” ์ผ๋ถ€ RPC๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ธ๋ฑ์‹ฑํ•˜์—ฌ ์ตœ์ข… ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ด๋ฅผ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒฐ๊ณผ RPC API๋ฅผ **Metaplex DAS API**๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
+
+๋ชจ๋“  RPC๊ฐ€ DAS API๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์••์ถ•๋œ NFT๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ ์ ˆํ•œ RPC๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด ["Metaplex DAS API RPC"](/kr/rpc-providers) ํŽ˜์ด์ง€์— ๊ด€์‹ฌ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๊ณ ๊ธ‰ ["NFT ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ธ๋ฑ์‹ฑ"](/kr/bubblegum-v2/stored-nft-data) ๊ฐ€์ด๋“œ์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋Šฅ
+
+NFT ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์ • ๋‚ด์— ์žˆ์ง€ ์•Š๋”๋ผ๋„ ์••์ถ•๋œ NFT์—์„œ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ NFT ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ํ•ด์‹ฑ๋œ ๋ฆฌํ”„๊ฐ€ ๋จธํด ํŠธ๋ฆฌ์—์„œ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•จ์œผ๋กœ์จ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์••์ถ•๋œ NFT์—์„œ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+- ์—ฐ๊ด€๋œ ์ปฌ๋ ‰์…˜์ด ์žˆ๊ฑฐ๋‚˜ ์—†์ด [cNFT๋ฅผ ๋ฏผํŒ…](/kr/bubblegum-v2/mint-cnfts)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT๋ฅผ ์ „์†ก](/kr/bubblegum-v2/transfer-cnfts)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT์˜ ๋ฐ์ดํ„ฐ๋‚˜ ์ปฌ๋ ‰์…˜์„ ์—…๋ฐ์ดํŠธ](/kr/bubblegum-v2/update-cnfts)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT๋ฅผ ์†Œ๊ฐ](/kr/bubblegum-v2/burn-cnfts)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT๋ฅผ ์œ„์ž„](/kr/bubblegum-v2/delegate-cnfts)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT ์ปฌ๋ ‰์…˜์„ ํ™•์ธํ•˜๊ณ  ํ™•์ธ ํ•ด์ œ](/kr/bubblegum-v2/verify-collections)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT์˜ ์ œ์ž‘์ž๋ฅผ ํ™•์ธํ•˜๊ณ  ํ™•์ธ ํ•ด์ œ](/kr/bubblegum-v2/verify-creators)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT๋ฅผ ๋™๊ฒฐํ•˜๊ณ  ํ•ด๋™](/kr/bubblegum-v2/freeze-cnfts)ํ•ฉ๋‹ˆ๋‹ค.
+- [cNFT๋ฅผ ์†Œ์šธ๋ฐ”์šด๋“œ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค](/kr/bubblegum-v2/freeze-cnfts#create-a-soulbound-c-nft).
+
+## ๋‹ค์Œ ๋‹จ๊ณ„
+
+์••์ถ•๋œ NFT๊ฐ€ ๋†’์€ ์ˆ˜์ค€์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์™€ Bubblegum V2์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์•Œ์•˜์œผ๋‹ˆ ์••์ถ•๋œ NFT์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์–ธ์–ด/ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์—ด๊ฑฐํ•˜๋Š” [์‹œ์ž‘ํ•˜๊ธฐ](/kr/bubblegum-v2/sdk) ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋‹ค์–‘ํ•œ [๊ธฐ๋Šฅ ํŽ˜์ด์ง€](/kr/bubblegum-v2/create-trees)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cNFT์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ cNFT์™€ ๋จธํด ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์‹์„ ๊นŠ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด [๊ณ ๊ธ‰ ๊ฐ€์ด๋“œ](/kr/bubblegum-v2/concurrent-merkle-trees)๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 33 - 0
src/pages/kr/bubblegum-v2/merkle-tree-canopy.md

@@ -0,0 +1,33 @@
+---
+title: ๋จธํด ํŠธ๋ฆฌ ์บ๋…ธํ”ผ
+metaTitle: ๋จธํด ํŠธ๋ฆฌ ์บ๋…ธํ”ผ | Bubblegum V2
+description: Bubblegum์˜ ๋จธํด ํŠธ๋ฆฌ ์บ๋…ธํ”ผ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+## ์†Œ๊ฐœ
+
+Solana์˜ ๋„คํŠธ์›Œํ‚น ์Šคํƒ์€ 1280๋ฐ”์ดํŠธ์˜ MTU ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ—ค๋”๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด 1232๋ฐ”์ดํŠธ๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค. ์••์ถ•๋œ NFT(cNFT)์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ํ˜„์žฌ ๊นŠ์ด๊ฐ€ 24๋ณด๋‹ค ํฐ ๋จธํด ํŠธ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ฆ๋ช…์ด ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+์ด๋Ÿฌํ•œ ์ฆ๋ช… ํฌ๊ธฐ ์ œํ•œ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด spl-account-compression์€ ๋จธํด ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋“ค์„ ์บ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ **์บ๋…ธํ”ผ**๋ผ๊ณ  ํ•˜๋ฉฐ, ๋™์‹œ ๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์˜ ๋์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
+
+๊นŠ์ด *d* ํŠธ๋ฆฌ์˜ ์ƒ์œ„ *n* ๋ ˆ๋ฒจ์„ ์บ์‹ฑํ•จ์œผ๋กœ์จ ์ฆ๋ช…์„ ์ฒซ ๋ฒˆ์งธ *d - n* ๋…ธ๋“œ๋กœ ์ž˜๋ผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ณ„์ • ์••์ถ• ํŠธ๋žœ์žญ์…˜์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ, 10์–ต ๊ฐœ ์ด์ƒ์˜ cNFT๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊นŠ์ด 31๊นŒ์ง€์˜ ํŠธ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋จธํด ํŠธ๋ฆฌ ๊ณ„์ •์— ์บ๋…ธํ”ผ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ๋ฐ”์ดํŠธ๋กœ ๊ณ„์ •์„ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ฐ”์ดํŠธ ์ˆ˜๋Š” (2*โฟ*โบยน - 1) * 32์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ *n*์€ ์บ๋…ธํ”ผ๊ฐ€ ์บ์‹œํ•˜๋ ค๋Š” ๋จธํด ํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ ์ˆ˜์ž…๋‹ˆ๋‹ค.
+
+์บ๋…ธํ”ผ๋Š” ๋™์‹œ ๋จธํด ํŠธ๋ฆฌ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ž‘์—…์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ์บ๋…ธํ”ผ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+
+## ์กฐํ•ฉ์„ฑ vs. ๋น„์šฉ ์ ˆ์•ฝ
+
+์•„๋ž˜ ํ‘œ๋Š” [compressed.app](https://compressed.app/)์˜ ๋„์›€์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ์บ๋…ธํ”ผ ํฌ๊ธฐ์— ๋”ฐ๋ผ 1,000,000 cNFT ๋ฏผํŒ…์˜ ์ด ๋น„์šฉ์ด ์–ด๋–ป๊ฒŒ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
+
+### ๋‹ค์–‘ํ•œ ์บ๋…ธํ”ผ ๊นŠ์ด๋กœ 1,000,000 cNFT๋ฅผ ์œ„ํ•œ ๋น„์šฉ
+*๊นŠ์ด 20์˜ ๋จธํด ํŠธ๋ฆฌ๋Š” 1,048,576 cNFT๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.*
+| ์บ๋…ธํ”ผ ๊นŠ์ด     | ์ฆ๋ช… ๋ฐ”์ดํŠธ   | ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ | ๋ฏผํŒ… ๋น„์šฉ (LUT๋ฅผ ์‚ฌ์šฉํ•œ tx๋‹น 3ํšŒ ๋ฏผํŒ…) | ์ด ๋น„์šฉ |
+| ---------------- | ------------- | ------------ | -----------------------------| ---------- |
+| 0                | 640           | 0.3091       | 1.6667                       | 1.9758     |
+| 14               | 192           | 7.6067       | 1.6667                       | 9.2734     |
+| 17               | 96            | 58.6933      | 1.6667                       | 60.36      |
+
+์บ๋…ธํ”ผ ๊นŠ์ด๊ฐ€ 0์ธ ์ด์œ ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€์žฅ ์ €๋ ดํ•œ ๋ฏผํŒ…์„ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” `transfer`, `delegate`, `burn`๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ๋งŽ์€ ์ฆ๋ช… ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์บ๋…ธํ”ผ ๊นŠ์ด๊ฐ€ 0์ธ ๊ฒฝ์šฐ, ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ ์ œํ•œ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด ์ฆ๋ช… ๋ฐ์ดํ„ฐ๋กœ ์†Œ๋น„๋˜์–ด Bubblegum ๋ช…๋ น์–ด๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น์–ด์™€ ์กฐํ•ฉํ•˜๋Š” ๋Šฅ๋ ฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
+
+๊ถ๊ทน์ ์œผ๋กœ ์บ๋…ธํ”ผ ํฌ๊ธฐ ๊ฒฐ์ •์€ ๋น„์šฉ๊ณผ ์กฐํ•ฉ์„ฑ ์‚ฌ์ด์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‰๊ฐ€๋Š” cNFT์˜ ์˜๋„๋œ ์‚ฌ์šฉ, ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์˜ ํ˜ธํ™˜์„ฑ, ํŠธ๋ฆฌ์˜ ์†Œ์œ ๊ถŒ ๊ตฌ์กฐ์™€ ๊ฐ™์€ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+ 135 - 0
src/pages/kr/bubblegum-v2/mint-cnfts.md

@@ -0,0 +1,135 @@
+---
+title: ์••์ถ•๋œ NFT ๋ฏผํŒ…
+metaTitle: ์••์ถ•๋œ NFT ๋ฏผํŒ… | Bubblegum V2
+description: Bubblegum V2์—์„œ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+[์ด์ „ ํŽ˜์ด์ง€](/kr/bubblegum-v2/create-trees)์—์„œ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋ ค๋ฉด Bubblegum ํŠธ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์•˜๊ณ , ํ•˜๋‚˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ฃผ์–ด์ง„ Bubblegum ํŠธ๋ฆฌ์—์„œ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+Bubblegum ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์–‘ํ•œ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ ๋ฒ„์ „์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฏผํŒ… ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Bubblegum V2๋Š” ์ฃผ์–ด์ง„ ์ปฌ๋ ‰์…˜์— ๋˜๋Š” ์ปฌ๋ ‰์…˜ ์—†์ด ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” **mintV2**๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฏผํŒ… ๋ช…๋ น์–ด๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.
+
+## ์ปฌ๋ ‰์…˜ ์—†์ด ๋ฏผํŒ…
+
+Bubblegum ํ”„๋กœ๊ทธ๋žจ์€ Bubblegum ํŠธ๋ฆฌ์—์„œ ์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” **mintV2** ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Bubblegum ํŠธ๋ฆฌ๊ฐ€ ๊ณต๊ฐœ๋œ ๊ฒฝ์šฐ ๋ˆ„๊ตฌ๋‚˜ ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํŠธ๋ฆฌ ์ œ์ž‘์ž๋‚˜ ํŠธ๋ฆฌ ์œ„์ž„์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+**mintV2** ๋ช…๋ น์–ด์˜ ์ฃผ์š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+- **๋จธํด ํŠธ๋ฆฌ**: ์••์ถ•๋œ NFT๊ฐ€ ๋ฏผํŒ…๋  ๋จธํด ํŠธ๋ฆฌ ์ฃผ์†Œ.
+- **ํŠธ๋ฆฌ ์ œ์ž‘์ž ๋˜๋Š” ์œ„์ž„์ž**: Bubblegum ํŠธ๋ฆฌ์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ โ€” ์ด๋Š” ํŠธ๋ฆฌ์˜ ์ œ์ž‘์ž๋‚˜ ์œ„์ž„์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ถŒํ•œ์€ ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐœ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ชจ๋“  ๊ถŒํ•œ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์„œ๋ช…์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **๋ฆฌํ”„ ์†Œ์œ ์ž**: ๋ฏผํŒ…๋  ์••์ถ•๋œ NFT์˜ ์†Œ์œ ์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ์ง€๋ถˆ์ž๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- **๋ฆฌํ”„ ์œ„์ž„์ž**: ๋ฏผํŒ…๋œ cNFT๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์ž„ ๊ถŒํ•œ (์žˆ๋Š” ๊ฒฝ์šฐ). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฆฌํ”„ ์†Œ์œ ์ž๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- **์ปฌ๋ ‰์…˜ ๊ถŒํ•œ**: ์ฃผ์–ด์ง„ ์ปฌ๋ ‰์…˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ.
+- **์ฝ”์–ด ์ปฌ๋ ‰์…˜**: ์••์ถ•๋œ NFT๊ฐ€ ์ถ”๊ฐ€๋  MPL-Core ์ปฌ๋ ‰์…˜ NFT.
+- **๋ฉ”ํƒ€๋ฐ์ดํ„ฐ**: ๋ฏผํŒ…๋  ์••์ถ•๋œ NFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ. NFT์˜ **์ด๋ฆ„**, **URI**, **์ปฌ๋ ‰์…˜**, **์ œ์ž‘์ž** ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. Bubblegum V2์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” `uses`์™€ ์ปฌ๋ ‰์…˜์˜ `verified` ํ”Œ๋ž˜๊ทธ์™€ ๊ฐ™์€ ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ œ์™ธํ•œ `MetadataArgsV2`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜ ์—†์ด ์••์ถ•๋œ NFT ๋ฏผํŒ…" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { none } from '@metaplex-foundation/umi';
+import { mintV2 } from '@metaplex-foundation/mpl-bubblegum';
+
+await mintV2(umi, {
+  leafOwner: umi.identity.publicKey,
+  merkleTree: merkleTree.publicKey,
+  metadata: {
+    name: 'My NFT',
+    uri: 'https://example.com/my-nft.json',
+    sellerFeeBasisPoints: 550, 
+    collection: none(),
+    creators: [],
+  },
+}).sendAndConfirm(umi);
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ปฌ๋ ‰์…˜์— ๋ฏผํŒ…
+
+์••์ถ•๋œ NFT๊ฐ€ ๋ฏผํŒ…๋œ _ํ›„์—_ ์ปฌ๋ ‰์…˜์„ ์„ค์ •ํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Bubblegum V2๋Š” ์••์ถ•๋œ NFT๋ฅผ ์ฃผ์–ด์ง„ ์ปฌ๋ ‰์…˜์— ์ง์ ‘ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Bubblegum V2๋Š” ์••์ถ•๋œ NFT๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์œ„ํ•ด MPL-Core ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ **mintV2** ๋ช…๋ น์–ด๊ฐ€ ์ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์™ธ์—๋„ ์ฝ”์–ด ์ปฌ๋ ‰์…˜์„ ์ „๋‹ฌํ•˜๊ณ  ์ปฌ๋ ‰์…˜ ๊ถŒํ•œ ๋˜๋Š” ์œ„์ž„์ž๋กœ ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+- **์ฝ”์–ด ์ปฌ๋ ‰์…˜**: MPL-Core ์ปฌ๋ ‰์…˜ NFT๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” `coreCollection` ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ๋ฏผํŠธ ์ฃผ์†Œโ€ฆ
+- **์ปฌ๋ ‰์…˜ ๊ถŒํ•œ**: ์ฃผ์–ด์ง„ ์ปฌ๋ ‰์…˜ NFT๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ. ์ด๋Š” ์ปฌ๋ ‰์…˜ NFT์˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์ด๋‚˜ ์œ„์ž„๋œ ์ปฌ๋ ‰์…˜ ๊ถŒํ•œ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ถŒํ•œ์€ Bubblegum ํŠธ๋ฆฌ๊ฐ€ ๊ณต๊ฐœ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+**๋ฉ”ํƒ€๋ฐ์ดํ„ฐ** ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” **์ปฌ๋ ‰์…˜** ๊ณต๊ฐœ ํ‚ค๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜์— ์••์ถ•๋œ NFT ๋ฏผํŒ…" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { some } from '@metaplex-foundation/umi';
+import { mintV2 } from '@metaplex-foundation/mpl-bubblegum';
+
+await mintV2(umi, {
+  collectionAuthority: umi.identity,
+  leafOwner: umi.identity.publicKey,
+  merkleTree: merkleTree.publicKey,
+  coreCollection: collectionSigner.publicKey,
+  metadata: {
+    name: 'My NFT',
+    uri: 'https://example.com/my-nft.json',
+    sellerFeeBasisPoints: 550, // 5.5%
+    collection: some(collectionSigner.publicKey),
+    creators: [],
+  },
+}).sendAndConfirm(umi);
+```
+
+{% totem-accordion title="MPL-Core ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ" %}
+
+์•„์ง ์ปฌ๋ ‰์…˜์ด ์—†๋‹ค๋ฉด [`@metaplex-foundation/mpl-core` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ](https://developers.metaplex.com/core/collections#creating-a-collection-with-plugins)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์— `BubblegumV2` ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”.
+npm install @metaplex-foundation/mpl-core
+๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“œ์„ธ์š”:
+
+```ts
+import { generateSigner } from '@metaplex-foundation/umi';
+import { createCollection } from '@metaplex-foundation/mpl-core';
+
+const collectionSigner = generateSigner(umi);
+await createCollection(umi, {
+    collection: collectionSigner,
+    name: "My Collection",
+    uri: "https://example.com/my-nft.json",
+    plugins: [
+      {
+        type: "BubblegumV2",
+      },
+    ],
+  }).sendAndConfirm(umi);
+```
+
+{% /totem-accordion %}
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+### ๋ฏผํŠธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ž์‚ฐ ID์™€ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ ๊ฐ€์ ธ์˜ค๊ธฐ {% #get-leaf-schema-from-mint-transaction %}
+
+`parseLeafFromMintV2Transaction` ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ `mintV2` ํŠธ๋žœ์žญ์…˜์—์„œ ๋ฆฌํ”„๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ž์‚ฐ ID๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ํŒŒ์‹ฑํ•˜๋ฏ€๋กœ `parseLeafFromMintV2Transaction`์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% callout type="note" title="ํŠธ๋žœ์žญ์…˜ ์™„๋ฃŒ" %}
+`parseLeafFromMintV2Transaction`์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
+{% /callout %}
+
+{% dialect-switcher title="๋ฏผํŠธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ฆฌํ”„ ์Šคํ‚ค๋งˆ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import {
+  mintV2,
+  parseLeafFromMintV2Transaction,
+} from '@metaplex-foundation/mpl-bubblegum';
+
+const { signature } = await mintV2(umi, {
+  // ... ์œ„์˜ ์„ธ๋ถ€์‚ฌํ•ญ ์ฐธ์กฐ
+}).sendAndConfirm(umi);
+
+const leaf = await parseLeafFromMintV2Transaction(umi, signature);
+const assetId = leaf.id;
+```
+
+{% /dialect %}
+{% /dialect-switcher %}

+ 15 - 0
src/pages/kr/bubblegum-v2/sdk/index.md

@@ -0,0 +1,15 @@
+---
+title: MPL-Bubblegum SDK
+metaTitle: SDK | Bubblegum V2
+description: MPL-Bubblegum SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Metaplex์˜ ์••์ถ•๋œ NFT ํ‘œ์ค€(cNFT)์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+MPL-Bubblegum์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด Metaplex ์••์ถ•๋œ NFT(cNFT) ํ‘œ์ค€์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์•„๋ž˜์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์–ธ์–ด/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
+
+{% quick-links %}
+
+{% quick-link title="JavaScript" icon="JavaScript" href="/kr/bubblegum-v2/sdk/javascript" description="Umi ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ MPL-Bubblegum JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="Rust" icon="Rust" href="/kr/bubblegum-v2/sdk/rust" description="MPL-Bubblegum Rust ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% /quick-links %}

+ 46 - 0
src/pages/kr/bubblegum-v2/sdk/javascript.md

@@ -0,0 +1,46 @@
+---
+title: MPL-Bubblegum JavaScript SDK
+metaTitle: JavaScript SDK | MPL-Bubblegum
+description: MPL-Bubblegum JavaScript SDK๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+Metaplex๋Š” MPL-Bubblegum ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. [Umi ํ”„๋ ˆ์ž„์›Œํฌ](/kr/umi) ๋•๋ถ„์— ๋งŽ์€ ์˜๊ฒฌ์ด ์žˆ๋Š” ์ข…์†์„ฑ ์—†์ด ์ œ๊ณต๋˜๋ฏ€๋กœ ๋ชจ๋“  JavaScript ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋Ÿ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+์‹œ์ž‘ํ•˜๋ ค๋ฉด [Umi ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ค์น˜](/kr/umi/getting-started)ํ•˜๊ณ  MPL-Bubblegum JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+## ์„ค์น˜
+
+JavaScript ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €(npm, yarn, bun ๋“ฑ)๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+```sh
+npm install @metaplex-foundation/mpl-bubblegum
+```
+
+{% quick-links %}
+
+{% quick-link title="typedoc" target="_blank" icon="JavaScript" href="https://mpl-bubblegum.typedoc.metaplex.com/" description="MPL-Bubblegum JavaScript SDK ์ƒ์„ฑ๋œ ํŒจํ‚ค์ง€ API ๋ฌธ์„œ." /%}
+
+{% quick-link title="npmjs.com" target="_blank" icon="JavaScript" href="https://www.npmjs.com/package/@metaplex-foundation/mpl-bubblegum" description="NPM์˜ MPL-Bubblegum Javascript SDK." /%}
+
+{% /quick-links %}
+
+## Umi ์„ค์ •
+
+์•„์ง `umi` ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด [Umi ์‹œ์ž‘ํ•˜๊ธฐ](/kr/umi/getting-started) ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+`umi` ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ MPL-Bubblegum ํŒจํ‚ค์ง€๋ฅผ `umi`์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+
+```js
+.use(mplBubblegum())
+```
+
+```ts
+import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
+import { mplBubblegum } from '@metaplex-foundation/mpl-bubblegum'
+
+// ์›ํ•˜๋Š” RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
+const umi = createUmi('http://api.devnet.solana.com')
+... // ์ถ”๊ฐ€ umi ์„ค์ •, ํŒจํ‚ค์ง€ ๋ฐ ์„œ๋ช…์ž
+.use(mplBubblegum())
+```
+
+์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ `umi` ์ธ์Šคํ„ด์Šค๊ฐ€ MPL-Bubblegum ํŒจํ‚ค์ง€์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด ๊ทธ ๊ธฐ๋Šฅ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 116 - 0
src/pages/kr/bubblegum-v2/sdk/rust.md

@@ -0,0 +1,116 @@
+---
+title: MPL-Bubblegum Rust SDK
+metaTitle: Rust SDK | MPL-Bubblegum
+description: MPL-Bubblegum Rust SDK๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+Metaplex๋Š” MPL-Bubblegum ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Rust ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Rust ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” CPI ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Rust ์Šคํฌ๋ฆฝํŠธ/๋นŒ๋“œ์™€ ์˜จ์ฒด์ธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ์„ค์น˜
+
+MPL-Bubblegum Rust SDK๋Š” ์Šคํฌ๋ฆฝํŠธ/๋ฐ์Šคํฌํ†ฑ/๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ Solana ์˜จ์ฒด์ธ ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```rust
+cargo add mpl-bubblegum
+```
+
+{% quick-links %}
+
+{% quick-link title="crates.io" target="_blank" icon="Rust" href="https://crates.io/crates/mpl-bubblegum" description="MPL-Bubblegum Rust ํฌ๋ ˆ์ดํŠธ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="docs.rs" target="_blank" icon="Rust" href="https://docs.rs/MPL-Bubblegum/latest/mpl_bubblegum/" description="MPL-Bubblegum์šฉ Rust SDK typedoc ํ”Œ๋žซํผ." /%}
+
+{% /quick-links %}
+
+## ๋กœ์ปฌ ์Šคํฌ๋ฆฝํŠธ
+
+๋กœ์ปฌ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ ๋‚˜์—ด๋œ ๋ชจ๋“  ๋ช…๋ น์–ด์˜ `Builder` ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋นŒ๋”๋Š” ๋งŽ์€ ์ž‘์—…์„ ์ถ”์ƒํ™”ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+
+๋ชจ๋“  Bubblegum ๋ช…๋ น์–ด ๋ชฉ๋ก์€ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: [MPL-Bubblegum - Rust Instructions](https://docs.rs/mpl-bubblegum/latest/mpl_bubblegum/instructions/index.html)
+
+Rust ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋” ํฌ๊ด„์ ์ธ ๊ฐ€์ด๋“œ๋Š” [Metaplex Rust SDK ๊ฐ€์ด๋“œ](/kr/guides/rust/metaplex-rust-sdks) ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
+
+#### CreateTreeConfigBuilder - ์˜ˆ์ œ
+
+```rust
+use mpl_bubblegum::{instructions::CreateTreeConfigV2Builder, programs::{SPL_ACCOUNT_COMPRESSION_ID, SPL_NOOP_ID}};
+use solana_client::{nonblocking::rpc_client, rpc_config::RpcSendTransactionConfig};
+use solana_sdk::{commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair, signer::Signer, system_program, transaction::Transaction};
+
+#[tokio::main]
+pub async fn create_tree(keypair: Keypair) {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com/".to_string());
+
+    let payer = keypair;
+        
+
+    let asset = Keypair::new();
+
+    let merkle_tree = Keypair::new();
+
+    let tree_config = Pubkey::find_program_address(
+        &[
+            &merkle_tree.pubkey().to_bytes(),
+        ],
+        &mpl_bubblegum::ID,
+    );
+
+    let create_tree_config_ix = CreateTreeConfigV2Builder::new()
+        .merkle_tree(merkle_tree.pubkey())
+        .tree_config(tree_config.0)
+        .payer(payer.pubkey())
+        .max_depth(20)
+        .max_buffer_size(1024)
+        .public(false)
+        .instruction();
+
+    let signers = vec![&asset, &payer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await;
+
+    let create_tree_config_tx = Transaction::new_signed_with_payer(
+        &[create_tree_config_ix],
+        Some(&payer.pubkey()),
+        &signers,
+        last_blockhash.unwrap(),
+    );
+
+    let res = rpc_client
+        .send_transaction_with_config(&create_tree_config_tx, RpcSendTransactionConfig {
+            skip_preflight: false,
+            preflight_commitment: Some(CommitmentConfig::confirmed().commitment),
+            encoding: None,
+            max_retries: None,
+            min_context_slot: None,
+        })
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res);
+}
+```
+
+## CPI (Cross Program Invocation)
+
+์ž์ฒด ํ”„๋กœ๊ทธ๋žจ์—์„œ CPI ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ `MPL-Bubblegum` Rust ํฌ๋ ˆ์ดํŠธ์˜ ๋ชจ๋“  ๋ช…๋ น์–ด์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด ํ•จ์ˆ˜์˜ `CpiBuilder` ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋ชจ๋“  Bubblegum ๋ช…๋ น์–ด ๋ชฉ๋ก์€ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: [Metaplex Bubblegum - Rust Instructions](https://docs.rs/mpl-bubblegum/latest/mpl_bubblegum/instructions/index.html)
+
+Metaplex ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CPI ๋ช…๋ น์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋” ํฌ๊ด„์ ์ธ ๊ฐ€์ด๋“œ๋Š” [Metaplex ํ”„๋กœ๊ทธ๋žจ์— CPIํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐ€์ด๋“œ](/kr/guides/rust/how-to-cpi-into-a-metaplex-program) ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
+
+#### CreateTreeConfigCpiBuilder - ์˜ˆ์ œ
+
+```rust
+CreateTreeConfigV2CpiBuilder::new()
+        .merkle_tree(context.accounts.merkle_tree)
+        .tree_config(context.accounts.tree_config)
+        .payer(context.accounts.payer)
+        .tree_creator(context.accounts.tree_creator)
+        .log_wrapper(SPL_NOOP_ID)
+        .compression_program(context.accounts.compression_program)
+        .system_program(context.accounts.system_program)
+        .max_depth(20)
+        .max_buffer_size(1024)
+        .public(false)
+        .invoke()
+```

+ 76 - 0
src/pages/kr/bubblegum-v2/stored-nft-data.md

@@ -0,0 +1,76 @@
+---
+title: NFT ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ธ๋ฑ์‹ฑ
+metaTitle: NFT ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ธ๋ฑ์‹ฑ | Bubblegum V2
+description: Bubblegum์—์„œ NFT ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+[๊ฐœ์š”](/kr/bubblegum#read-api)์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์••์ถ•๋œ NFT(cNFT)๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ์›์žฅ์— ์˜จ์ฒด์ธ์œผ๋กœ ๊ธฐ๋ก๋˜์ง€๋งŒ cNFT ์ƒํƒœ ๋ฐ์ดํ„ฐ๋Š” ๊ณ„์ • ๊ณต๊ฐ„์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” cNFT์˜ ์—„์ฒญ๋‚œ ๋น„์šฉ ์ ˆ์•ฝ์˜ ์ด์œ ์ด์ง€๋งŒ ํŽธ์˜์„ฑ๊ณผ ์œ ์šฉ์„ฑ์„ ์œ„ํ•ด cNFT ์ƒํƒœ ๋ฐ์ดํ„ฐ๋Š” RPC ์ œ๊ณต์—…์ฒด์— ์˜ํ•ด ์ธ๋ฑ์‹ฑ๋˜๊ณ  **Metaplex DAS API**๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+Metaplex๋Š” DAS API์˜ [์ฐธ์กฐ ๊ตฌํ˜„](https://github.com/metaplex-foundation/digital-asset-rpc-infrastructure)์„ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ, ์ผ๋ถ€ RPC ์ œ๊ณต์—…์ฒด๋Š” ํŠน์ • ๊ตฌํ˜„์„ ์œ„ํ•ด ์ด ์ฝ”๋“œ์˜ ์ผ๋ถ€ ๋˜๋Š” ์ „๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด ๋‹ค๋ฅธ RPC ์ œ๊ณต์—…์ฒด๋Š” ์ž์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Metaplex DAS API๋ฅผ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ RPC ์ œ๊ณต์—…์ฒด ๋ชฉ๋ก์€ ["Metaplex DAS API RPC"](/kr/rpc-providers) ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+DAS API์˜ Metaplex ์ฐธ์กฐ ๊ตฌํ˜„์—๋Š” ๋‹ค์Œ ์ฃผ์š” ํ•ญ๋ชฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:
+* Solana ๋ฌดํˆฌํ‘œ ๊ฒ€์ฆ์ž - ์ด ๊ฒ€์ฆ์ž๋Š” ํ•ฉ์˜ํ•˜์— ๊ฒ€์ฆ์ž ์›์žฅ๊ณผ ๊ณ„์ • ๋ฐ์ดํ„ฐ์—๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ์•ก์„ธ์Šคํ•˜๋„๋ก ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
+* Geyser ํ”Œ๋Ÿฌ๊ทธ์ธ - ํ”Œ๋Ÿฌ๊ทธ์ธ์„ "Plerkle"๋ผ๊ณ  ํ•˜๋ฉฐ ๊ฒ€์ฆ์ž์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ณ„์ • ์—…๋ฐ์ดํŠธ, ์Šฌ๋กฏ ์ƒํƒœ ์—…๋ฐ์ดํŠธ, ํŠธ๋žœ์žญ์…˜ ๋˜๋Š” ๋ธ”๋ก ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. cNFT ์ธ๋ฑ์‹ฑ์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ `notify_transaction` ๋ฉ”์„œ๋“œ๋Š” Bubblegum์ด๋‚˜ spl-account-compression ํŠธ๋žœ์žญ์…˜์ด ๊ฒ€์ฆ์ž์—์„œ ๋ณด์ผ ๋•Œ๋งˆ๋‹ค ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๋Ÿฌํ•œ ํŠธ๋žœ์žญ์…˜์€ ์ด๋ฒคํŠธ๋ฅผ spl-noop ๋ช…๋ น์–ด ๋ฐ์ดํ„ฐ๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋กœ๊ทธ ์ž˜๋ฆผ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด spl-account-compression๊ณผ Bubblegum์—์„œ ์‚ฌ์šฉ๋˜๋Š” spl-noop("์ž‘์—… ์—†์Œ") ํ”„๋กœ๊ทธ๋žจ์—์„œ ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+* Redis ํด๋Ÿฌ์Šคํ„ฐ - Redis ์ŠคํŠธ๋ฆผ์€ ๊ฐ ์—…๋ฐ์ดํŠธ ์œ ํ˜•(๊ณ„์ •, ํŠธ๋žœ์žญ์…˜ ๋“ฑ)์— ๋Œ€ํ•œ ํ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Geyser ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ์˜ ์ƒ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. Geyser ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Flatbuffers ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” Plerkle ์ง๋ ฌํ™” ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ์ง๋ ฌํ™”๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ ์ ˆํ•œ Redis ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
+* ์ธ์ œ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค - ์ด๋Š” Redis ์ŠคํŠธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ ์†Œ๋น„์ž์ž…๋‹ˆ๋‹ค. ์ธ์ œ์Šคํ„ฐ๋Š” ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•œ ๋‹ค์Œ Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋Š” SeaORM ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+* Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์ž์‚ฐ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ ๋ณด์•˜๋˜ ๋จธํด ํŠธ๋ฆฌ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€๊ฒฝ ๋กœ๊ทธ ํ…Œ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž๋Š” Bubblegum ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ž์‚ฐ ์ฆ๋ช…์„ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋จธํด ํŠธ๋ฆฌ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋Š” DAS API๊ฐ€ ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์„œ ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+* API ํ”„๋กœ์„ธ์Šค - ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ RPC ์ œ๊ณต์—…์ฒด์—์„œ ์ž์‚ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ API ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž์‚ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์š”์ฒญ์— ๋Œ€ํ•ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node %}
+{% node #validator label="๊ฒ€์ฆ์ž" theme="indigo" /%}
+{% node theme="dimmed" %}
+Geyser ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‹คํ–‰ํ•˜๊ณ  \
+ํŠธ๋žœ์žญ์…˜, ๊ณ„์ • \
+์—…๋ฐ์ดํŠธ ๋“ฑ์— ๋Œ€ํ•ด ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
+{% /node %}
+{% /node %}
+
+{% node x="200" parent="validator" %}
+{% node #messenger label="๋ฉ”์‹œ์ง€ ๋ฒ„์Šค" theme="blue" /%}
+{% node theme="dimmed" %}
+๊ฐ ์—…๋ฐ์ดํŠธ ์œ ํ˜•์— ๋Œ€ํ•œ \
+ํ๋กœ์„œ์˜ Redis ์ŠคํŠธ๋ฆผ.
+{% /node %}
+{% /node %}
+
+{% node x="200" parent="messenger" %}
+{% node #ingester label="์ธ์ œ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค" theme="indigo" /%}
+{% node theme="dimmed" %}
+๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  \
+๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
+{% /node %}
+{% /node %}
+
+{% node x="28" y="150" parent="ingester" %}
+{% node #database label="๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค" theme="blue" /%}
+{% node theme="dimmed" %}
+Postgres \
+๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
+{% /node %}
+{% /node %}
+
+{% node x="-228" parent="database" %}
+{% node #api label="API ํ”„๋กœ์„ธ์Šค" theme="indigo" /%}
+{% node theme="dimmed" %}
+RPC ์ œ๊ณต์—…์ฒด๊ฐ€ API๋ฅผ ์‹คํ–‰ํ•˜๊ณ \
+์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์‚ฐ ๋ฐ์ดํ„ฐ๋ฅผ \
+์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+{% /node %}
+{% /node %}
+
+{% node x="-200" parent="api" %}
+{% node #end_user label="์ตœ์ข… ์‚ฌ์šฉ์ž" theme="mint" /%}
+{% node theme="dimmed" %}
+getAsset(), \
+getAssetProof() ๋“ฑ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
+{% /node %}
+{% /node %}
+
+{% edge from="validator" to="messenger" /%}
+{% edge from="messenger" to="ingester" /%}
+{% edge from="ingester" to="database" /%}
+{% edge from="database" to="api" /%}
+{% edge from="api" to="end_user" /%}
+
+{% /diagram %}

+ 110 - 0
src/pages/kr/bubblegum-v2/transfer-cnfts.md

@@ -0,0 +1,110 @@
+---
+title: ์••์ถ•๋œ NFT ์ „์†ก
+metaTitle: ์••์ถ•๋œ NFT ์ „์†ก | Bubblegum v2
+description: Bubblegum์—์„œ ์••์ถ•๋œ NFT๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+**transferV2** ๋ช…๋ น์–ด๋Š” ์••์ถ•๋œ NFT๋ฅผ ํ•œ ์†Œ์œ ์ž์—์„œ ๋‹ค๋ฅธ ์†Œ์œ ์ž๋กœ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์†ก์„ ์Šน์ธํ•˜๋ ค๋ฉด ํ˜„์žฌ ์†Œ์œ ์ž๋‚˜ ์œ„์ž„ ๊ถŒํ•œ(์žˆ๋Š” ๊ฒฝ์šฐ) ์ค‘ ํ•˜๋‚˜๊ฐ€ ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์ž„๋œ ๊ถŒํ•œ์€ ๋ฆฌํ”„ ์œ„์ž„์ž๋‚˜ ์ปฌ๋ ‰์…˜์˜ `permanentTransferDelegate`์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ๋ช…๋ น์–ด๋Š” ์••์ถ•๋œ NFT๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฏ€๋กœ Bubblegum ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์••์ถ•๋œ NFT์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฆฌํ”„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด์— ๊ณตํ†ต์ด๋ฏ€๋กœ [๋‹ค์Œ FAQ](/kr/bubblegum-v2/faq#replace-leaf-instruction-arguments)์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ Metaplex DAS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% callout title="ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ" type="note" %}
+ํŠธ๋žœ์žญ์…˜ ํฌ๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด `getAssetWithProof`์™€ ํ•จ๊ป˜ `{ truncateCanopy: true }`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [FAQ](/kr/bubblegum-v2/faq#replace-leaf-instruction-arguments)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+{% /callout %}
+
+## Bubblegum V2 ์••์ถ•๋œ NFT ์ „์†ก
+
+๋ช…๋ น์–ด๋Š” ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค:
+
+- **๋ฆฌํ”„ ์†Œ์œ ์ž**: ์••์ถ•๋œ NFT์˜ ํ˜„์žฌ ์†Œ์œ ์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ์ง€๋ถˆ์ž๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- **๋ฆฌํ”„ ์œ„์ž„์ž**: ์••์ถ•๋œ NFT์˜ ํ˜„์žฌ ์†Œ์œ ์ž์™€ ์œ„์ž„ ๊ถŒํ•œ(์žˆ๋Š” ๊ฒฝ์šฐ). ์ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **๊ถŒํ•œ**: ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•˜๋Š” ์„ ํƒ์  ๊ถŒํ•œ. ๋ฆฌํ”„ ์†Œ์œ ์ž๋‚˜ `permanentTransferDelegate`์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ `์ง€๋ถˆ์ž`๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+- **์ƒˆ ๋ฆฌํ”„ ์†Œ์œ ์ž**: ์••์ถ•๋œ NFT์˜ ์ƒˆ ์†Œ์œ ์ž ์ฃผ์†Œ
+- **๋จธํด ํŠธ๋ฆฌ**: Bubblegum ํŠธ๋ฆฌ์˜ ์ฃผ์†Œ
+- **๋ฃจํŠธ**: Bubblegum ํŠธ๋ฆฌ์˜ ํ˜„์žฌ ๋ฃจํŠธ
+- **๋ฐ์ดํ„ฐ ํ•ด์‹œ**: ์••์ถ•๋œ NFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•ด์‹œ
+- **ํฌ๋ฆฌ์—์ดํ„ฐ ํ•ด์‹œ**: ์••์ถ•๋œ NFT์˜ ํฌ๋ฆฌ์—์ดํ„ฐ ํ•ด์‹œ
+- **๋„Œ์Šค**: ์••์ถ•๋œ NFT์˜ ๋„Œ์Šค
+- **์ธ๋ฑ์Šค**: ์••์ถ•๋œ NFT์˜ ์ธ๋ฑ์Šค
+- **์ปฌ๋ ‰์…˜**: ์••์ถ•๋œ NFT์˜ ์ฝ”์–ด ์ปฌ๋ ‰์…˜(cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ)
+
+JavaScript๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋จผ์ € `getAssetWithProof` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ `transferV2` ๋ช…๋ น์–ด์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT ์ „์†ก" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { getAssetWithProof, transferV2 } from '@metaplex-foundation/mpl-bubblegum';
+const assetWithProof = await getAssetWithProof(umi, assetId, {
+  truncateCanopy: true,
+})
+
+// ๊ทธ๋Ÿฌ๋ฉด leafOwnerA๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NFT๋ฅผ leafOwnerB๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+const leafOwnerB = generateSigner(umi)
+await transferV2(umi, {
+  // ์ž์‚ฐ๊ณผ ์ฆ๋ช…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+  ...assetWithProof,
+  authority: leafOwnerA,
+  newLeafOwner: leafOwnerB.publicKey,
+  // cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ ์ฝ”์–ด ์ปฌ๋ ‰์…˜์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+  //coreCollection: coreCollection.publicKey, 
+}).sendAndConfirm(umi)
+```
+
+{% totem-accordion title="์œ„์ž„์ž ์‚ฌ์šฉ" %}
+
+```ts
+import { getAssetWithProof, transferV2 } from '@metaplex-foundation/mpl-bubblegum'
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {
+  truncateCanopy: true,
+})
+await transferV2(umi, {
+  // ์ž์‚ฐ๊ณผ ์ฆ๋ช…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+  ...assetWithProof,
+  authority: delegateAuthority, // <- ์œ„์ž„๋œ ๊ถŒํ•œ์ด ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+  newLeafOwner: leafOwnerB.publicKey,
+  // cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ ์ฝ”์–ด ์ปฌ๋ ‰์…˜์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+  //coreCollection: coreCollection.publicKey, 
+}).sendAndConfirm(umi)
+```
+
+{% /totem-accordion %}
+
+{% totem-accordion title="์˜๊ตฌ ์ „์†ก ์œ„์ž„์ž ์‚ฌ์šฉ" %}
+
+```ts
+import { getAssetWithProof, transferV2 } from '@metaplex-foundation/mpl-bubblegum'
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {
+  truncateCanopy: true,
+})
+await transferV2(umi, {
+  ...assetWithProof,
+  authority: permanentTransferDelegate, // <- ์œ„์ž„๋œ ๊ถŒํ•œ์ด ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+  newLeafOwner: leafOwnerB.publicKey,
+  coreCollection: coreCollection.publicKey, 
+}).sendAndConfirm(umi)
+```
+
+{% /totem-accordion %}
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+### ์••์ถ•๋œ NFT์— ๋Œ€ํ•œ ์ „์†ก ๊ฐ€๋Šฅ์„ฑ ํ™•์ธ
+
+`canTransfer` ํ•จ์ˆ˜๋Š” ์••์ถ•๋œ NFT๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NFT๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฉด `true`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด `false`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋™๊ฒฐ๋œ cNFT์™€ `NonTransferable` cNFT๋Š” ์ „์†กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { canTransfer } from '@metaplex-foundation/mpl-bubblegum'
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {
+  truncateCanopy: true,
+})
+
+const canBeTransferred = canTransfer(assetWithProof)
+console.log("canBeTransferred", canBeTransferred ? "Yes" : "No")
+```

+ 74 - 0
src/pages/kr/bubblegum-v2/update-cnfts.md

@@ -0,0 +1,74 @@
+---
+title: ์••์ถ•๋œ NFT ์—…๋ฐ์ดํŠธ
+metaTitle: ์••์ถ•๋œ NFT ์—…๋ฐ์ดํŠธ | Bubblegum V2
+description: Bubblegum์—์„œ ์••์ถ•๋œ NFT๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+**updateMetadataV2** ๋ช…๋ น์–ด๋Š” ์••์ถ•๋œ NFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จธํด ๋ฃจํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ์ „ํŒŒ๋œ ํ•ด์‹œ๋ฅผ ๋ฐ˜์˜ํ•˜๊ณ , [Metaplex DAS API](https://github.com/metaplex-foundation/digital-asset-standard-api)๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” RPC ์ œ๊ณต์—…์ฒด๋Š” cNFT์˜ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
+
+๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์••์ถ•๋œ NFT๊ฐ€ ์ปฌ๋ ‰์…˜์˜ ํ™•์ธ๋œ ํ•ญ๋ชฉ์ธ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‘ ๊ถŒํ•œ ์ค‘ ํ•˜๋‚˜์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ
+
+cNFT๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค: ํŠธ๋ฆฌ ์†Œ์œ ์ž, ๋˜๋Š” (์ปฌ๋ ‰์…˜์— ์†ํ•œ ๊ฒฝ์šฐ) ์ปฌ๋ ‰์…˜ ๊ถŒํ•œ.
+
+### ์ปฌ๋ ‰์…˜ ๊ถŒํ•œ
+
+cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์— ์†ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น cNFT์˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์€ ์ปฌ๋ ‰์…˜์˜ ๊ถŒํ•œ์ด ๋ฉ๋‹ˆ๋‹ค. cNFT๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์—…๋ฐ์ดํŠธ ํ•จ์ˆ˜์— `coreCollection` ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ถŒํ•œ์€ ํ˜„์žฌ umi ์‹ ์›์—์„œ ์ถ”๋ก ๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ํ˜„์žฌ umi ์‹ ์›๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ `authority` ์ธ์ˆ˜๋ฅผ ์„œ๋ช…์ž ํƒ€์ž…์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด `noopSigner`๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+```js
+await updateMetadataV2(umi, {
+  ...
+  authority: collectionAuthority,
+  coreCollection: publicKey("11111111111111111111111111111111"),
+}).sendAndConfirm(umi)
+```
+
+### ํŠธ๋ฆฌ ๊ถŒํ•œ
+
+cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ cNFT์˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์€ cNFT๊ฐ€ ์†ํ•œ ํŠธ๋ฆฌ์˜ ๊ถŒํ•œ์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ํ•จ์ˆ˜์—์„œ `coreCollection` ์ธ์ˆ˜๋ฅผ **์ƒ๋žต**ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ถŒํ•œ์€ ํ˜„์žฌ umi ์‹ ์›์—์„œ ์ถ”๋ก ๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ํ˜„์žฌ umi ์‹ ์›๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ `authority` ์ธ์ˆ˜๋ฅผ ์„œ๋ช…์ž ํƒ€์ž…์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด `noopSigner`๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+## cNFT ์—…๋ฐ์ดํŠธ
+
+{% dialect-switcher title="์••์ถ•๋œ NFT ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import {
+  getAssetWithProof,
+  updateMetadataV2,
+  UpdateArgsArgs,
+} from '@metaplex-foundation/mpl-bubblegum'
+import { some } from '@metaplex-foundation/umi'
+
+// ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ๊ณผ ์ฆ๋ช…์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
+const assetWithProof = await getAssetWithProof(umi, assetId, {
+  truncateCanopy: true,
+})
+
+// ๊ทธ๋Ÿฐ ๋‹ค์Œ NFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+const updateArgs: UpdateArgsArgs = {
+  name: some('์ƒˆ ์ด๋ฆ„'),
+  uri: some('https://updated-example.com/my-nft.json'),
+}
+await updateMetadataV2(umi, {
+  ...assetWithProof,
+  leafOwner,
+  currentMetadata: assetWithProof.metadata,
+  updateArgs,
+  // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜. ๊ถŒํ•œ์ด ํ˜„์žฌ umi ์‹ ์›๊ณผ ๋‹ค๋ฅธ ์„œ๋ช…์ž ํƒ€์ž…์ธ ๊ฒฝ์šฐ
+  // ์—ฌ๊ธฐ์— ํ•ด๋‹น ์„œ๋ช…์ž๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
+  authority: <Signer>,
+  // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜. cNFT๊ฐ€ ์ปฌ๋ ‰์…˜์— ์†ํ•œ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+  coreCollection: publicKey("22222222222222222222222222222222"),
+}).sendAndConfirm(umi)
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 94 - 0
src/pages/kr/bubblegum-v2/verify-creators.md

@@ -0,0 +1,94 @@
+---
+title: ํฌ๋ฆฌ์—์ดํ„ฐ ๊ฒ€์ฆ
+metaTitle: ํฌ๋ฆฌ์—์ดํ„ฐ ๊ฒ€์ฆ | Bubblegum V2
+description: Bubblegum์—์„œ ํฌ๋ฆฌ์—์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ํ™•์ธ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+์••์ถ•๋œ NFT์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ํฌ๋ฆฌ์—์ดํ„ฐ ๋ชฉ๋ก์ด ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ํฌ๋ฆฌ์—์ดํ„ฐ๋Š” ํŠน๋ณ„ํ•œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cNFT์—์„œ ์ž์‹ ์„ ํ™•์ธํ•˜๊ณ  ํ™•์ธ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด๋Š” cNFT์˜ **Creators** ๋ฐฐ์—ด์˜ ํ•ด๋‹น ํ•ญ๋ชฉ์—์„œ **Verified** ๋ถ€์šธ์„ ํ† ๊ธ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€์šธ์€ ์ง€๊ฐ‘๊ณผ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์™€ ๊ฐ™์€ ์•ฑ์ด ์–ด๋–ค ํฌ๋ฆฌ์—์ดํ„ฐ๊ฐ€ ์ง„์งœ์ด๊ณ  ์–ด๋–ค ํฌ๋ฆฌ์—์ดํ„ฐ๊ฐ€ ์•„๋‹Œ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฏ€๋กœ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
+
+ํฌ๋ฆฌ์—์ดํ„ฐ๋Š” ๋ฏผํŠธ ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•˜์—ฌ [์••์ถ•๋œ NFT๋ฅผ ๋ฏผํŒ…](/kr/bubblegum-v2/mint-cnfts)ํ•  ๋•Œ ์ง์ ‘ ์ž์‹ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธด ํ•˜์ง€๋งŒ ์ด์ œ ํฌ๋ฆฌ์—์ดํ„ฐ๊ฐ€ ๊ธฐ์กด ์••์ถ•๋œ NFT์—์„œ ์ž์‹ ์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ํ™•์ธ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+## ํฌ๋ฆฌ์—์ดํ„ฐ ํ™•์ธ
+
+Bubblegum ํ”„๋กœ๊ทธ๋žจ์€ ํ™•์ธํ•˜๋ ค๋Š” ํฌ๋ฆฌ์—์ดํ„ฐ๊ฐ€ ์„œ๋ช…ํ•ด์•ผ ํ•˜๋Š” **verifyCreatorV2** ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํฌ๋ฆฌ์—์ดํ„ฐ๋Š” ์ด๋ฏธ ์••์ถ•๋œ NFT์˜ **Creators** ๋ฐฐ์—ด์˜ ์ผ๋ถ€์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ [`updateMetadataV2`](/kr/bubblegum-v2/update-cnfts) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ **Creators** ๋ฐฐ์—ด์— ํฌ๋ฆฌ์—์ดํ„ฐ๋ฅผ ๋จผ์ € ์ถ”๊ฐ€ํ•˜์„ธ์š”.
+
+์ถ”๊ฐ€๋กœ ์ด ๋ช…๋ น์–ด๋Š” Bubblegum ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„๋ฅผ ๊ต์ฒดํ•˜๋ฏ€๋กœ ์••์ถ•๋œ NFT์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฆฌํ”„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด์— ๊ณตํ†ต์ด๋ฏ€๋กœ [๋‹ค์Œ FAQ](/kr/bubblegum-v2/faq#replace-leaf-instruction-arguments)์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ Metaplex DAS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT์˜ ํฌ๋ฆฌ์—์ดํ„ฐ ํ™•์ธ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import {
+  getAssetWithProof,
+  verifyCreatorV2,
+  MetadataArgsV2Args
+} from '@metaplex-foundation/mpl-bubblegum';
+import {
+  unwrapOption,
+  none,
+} from '@metaplex-foundation/umi';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+const collectionOption = unwrapOption(assetWithProof.metadata.collection);
+const metadata: MetadataArgsV2Args = {
+  name: assetWithProof.metadata.name,
+  uri: assetWithProof.metadata.uri,
+  sellerFeeBasisPoints: assetWithProof.metadata.sellerFeeBasisPoints,
+  collection: collectionOption
+    ? collectionOption.key
+    : none(),
+  creators: assetWithProof.metadata.creators,
+};
+await verifyCreatorV2(umi, {
+  ...assetWithProof,
+  metadata,
+  creator: umi.identity, // ๋˜๋Š” umi ์‹ ์›๊ณผ ๋‹ค๋ฅธ ์„œ๋ช…์ž
+}).sendAndConfirm(umi);
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ํฌ๋ฆฌ์—์ดํ„ฐ ํ™•์ธ ํ•ด์ œ
+
+**verifyCreatorV2** ๋ช…๋ น์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ **unverifyCreatorV2** ๋ช…๋ น์–ด๋Š” ํฌ๋ฆฌ์—์ดํ„ฐ๊ฐ€ ์„œ๋ช…ํ•ด์•ผ ํ•˜๋ฉฐ ์••์ถ•๋œ NFT์—์„œ ํฌ๋ฆฌ์—์ดํ„ฐ์˜ ํ™•์ธ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์••์ถ•๋œ NFT์˜ ํฌ๋ฆฌ์—์ดํ„ฐ ํ™•์ธ ํ•ด์ œ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import {
+  getAssetWithProof,
+  unverifyCreatorV2,
+  MetadataArgsV2Args
+} from '@metaplex-foundation/mpl-bubblegum'
+import {
+  unwrapOption,
+  none,
+} from '@metaplex-foundation/umi';
+
+const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
+const metadata: MetadataArgsV2Args = {
+  name: assetWithProof.metadata.name,
+  uri: assetWithProof.metadata.uri,
+  sellerFeeBasisPoints: assetWithProof.metadata.sellerFeeBasisPoints,
+  collection: unwrapOption(assetWithProof.metadata.collection)
+    ? unwrapOption(assetWithProof.metadata.collection)!.key
+    : none(),
+  creators: assetWithProof.metadata.creators,
+};
+await unverifyCreatorV2(umi, {
+  ...assetWithProof,
+  metadata,
+  creator: umi.identity, // ๋˜๋Š” umi ์‹ ์›๊ณผ ๋‹ค๋ฅธ ์„œ๋ช…์ž
+}).sendAndConfirm(umi);
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 191 - 0
src/pages/kr/candy-machine/custom-guards/generating-client.md

@@ -0,0 +1,191 @@
+---
+title: Candy Machine์šฉ ์ปค์Šคํ…€ ๊ฐ€๋“œ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ
+metaTitle: ์ปค์Šคํ…€ ๊ฐ€๋“œ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ | Candy Machine 
+description: ์ปค์Šคํ…€ ๊ฐ€๋“œ์šฉ Umi ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+---
+
+Candy Machine Guard ํ”„๋กœ๊ทธ๋žจ์šฉ ์ปค์Šคํ…€ ๊ฐ€๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ›„์—๋Š” Umi SDK์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” Kinobi ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.
+
+## IDL ๋ฐ ์ดˆ๊ธฐ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ
+
+### Shankjs ๊ตฌ์„ฑ
+
+Shankjs๋Š” Anchor์™€ ๋น„-Anchor ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•˜๋Š” IDL ์ƒ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ์ปค์Šคํ…€ Candy Guard ๋ฐฐํฌ ํ‚ค๋กœ ์ด๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. mpl-candy-machine ์ €์žฅ์†Œ์˜ `/configs/shank.cjs`์— ์žˆ๋Š” ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์„ธ์š”.
+
+```js
+/configs/shank.cjs
+
+generateIdl({
+  generator: "anchor",
+  programName: "candy_guard",
+  programId: "Guard1JwRhJkVH6XZhzoYxeBVQe872VH6QggF4BWmS9g", // ์ปค์Šคํ…€ Candy Guard ๋ฐฐํฌ๋œ ํ”„๋กœ๊ทธ๋žจ ํ‚ค
+  idlDir,
+  binaryInstallDir,
+  programDir: path.join(programDir, "candy-guard", "program"),
+});
+
+```
+
+{% callout %}
+anchor 28์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋ˆ„๋ฝ๋œ crates.io crate๋กœ ์ธํ•ด Shankjs idl ์ƒ์„ฑ๊ธฐ์— anchor 27๋กœ์˜ ํด๋ฐฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+{% /callout %}
+
+```js
+/configs/shank.cjs
+
+generateIdl({
+  generator: "anchor",
+  programName: "candy_guard",
+  programId: "Guard1JwRhJkVH6XZhzoYxeBVQe872VH6QggF4BWmS9g", // ์ปค์Šคํ…€ Candy Guard ๋ฐฐํฌ๋œ ํ”„๋กœ๊ทธ๋žจ ํ‚ค
+  idlDir,
+  binaryInstallDir,
+  programDir: path.join(programDir, "candy-guard", "program"),
+  rustbin: {
+    locked: true,
+    versionRangeFallback: "0.27.0",
+  },
+});
+
+```
+
+### IDL ๋ฐ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ
+
+์ด์ œ IDL๊ณผ ์ดˆ๊ธฐ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”
+
+```shell
+pnpm run generate
+```
+
+์ด๋Š” `pnpm generate:idls`์™€ `pnpm generate:clients` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๊ณ  ์ดˆ๊ธฐ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
+์–ด๋–ค ์ด์œ ๋กœ๋“  ์ด๋ฅผ ๋ณ„๋„๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ํด๋ผ์ด์–ธํŠธ์— ๊ฐ€๋“œ ์ถ”๊ฐ€
+
+### ๊ฐ€๋“œ ํŒŒ์ผ ์ƒ์„ฑ
+
+์ดˆ๊ธฐ ํด๋ผ์ด์–ธํŠธ์˜ ์„ฑ๊ณต์ ์ธ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด `/clients/js/src`๋กœ ์ด๋™ํ•˜์„ธ์š”.
+
+์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” `/clients/js/src/defaultGuards` ํด๋”์— ์ƒˆ๋กœ์šด ๊ฐ€๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+์•„๋ž˜๋Š” ์ƒ์„ฑํ•œ ๊ฐ€๋“œ ์œ ํ˜•์— ๋”ฐ๋ผ ํ•„์š”์— ๋งž๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค.
+๊ฐ€๋“œ์— ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์ง€์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ˆ์‹œ๋กœ `customGuard.ts`๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค
+
+```ts
+import { PublicKey } from '@metaplex-foundation/umi'
+import {
+  getCustomGuardSerializer,
+  CustomGuard,
+  CustomGuardArgs,
+} from '../generated'
+import { GuardManifest, noopParser } from '../guards'
+
+export const customGuardManifest: GuardManifest<
+  CustomGuardArgs,
+  CustomGuard,
+  CustomGuardMintArgs
+> = {
+  name: 'customGuard',
+  serializer: getCustomGuardSerializer,
+  mintParser: (context, mintContext, args) => {
+    const { publicKeyArg1, arg1 } = args
+    return {
+      data: new Uint8Array(),
+      // ๋ฏผํŠธ args์—์„œ ์ปค์Šคํ…€ ๊ฐ€๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ณ„์ •์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
+      // ๊ฐ€๋“œ๋Š” ๋‚˜๋จธ์ง€ ๊ณ„์ •์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+      remainingAccounts: [
+        { publicKey: publicKeyArg1, isWritable: true },
+        { publicKey: publicKeyArg2, isWritable: false },
+      ],
+    }
+  },
+  routeParser: noopParser,
+}
+
+// ์—ฌ๊ธฐ์„œ ๊ฐ€๋“œ๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ์ปค์Šคํ…€ ๋ฏผํŠธ args๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
+// ๊ฐ€๋“œ๋Š” MintArgs๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+export type CustomGuardMintArgs = {
+  /**
+   * ์ปค์Šคํ…€ ๊ฐ€๋“œ ๋ฏผํŠธ ์ธ์ˆ˜ 1
+   */
+  publicKeyArg1: PublicKey
+
+  /**
+   * ์ปค์Šคํ…€ ๊ฐ€๋“œ ๋ฏผํŠธ ์ธ์ˆ˜ 2
+   */
+  publicKeyArg2: PublicKey
+
+  /**
+   * ์ปค์Šคํ…€ ๊ฐ€๋“œ ๋ฏผํŠธ ์ธ์ˆ˜ 3
+   */
+  arg3: Number
+}
+```
+
+### ๊ธฐ์กด ํŒŒ์ผ์— ๊ฐ€๋“œ ์ถ”๊ฐ€
+
+์—ฌ๊ธฐ์„œ ๊ธฐ์กด ํŒŒ์ผ๋“ค์— ์ƒˆ๋กœ์šด ๊ฐ€๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+`/clients/js/src/defaultGuards/index.ts`์—์„œ ์ƒˆ๋กœ์šด ๊ฐ€๋“œ๋ฅผ ๋‚ด๋ณด๋‚ด์„ธ์š”
+
+```ts
+...
+export * from './tokenGate';
+export * from './tokenPayment';
+export * from './token2022Payment';
+// ๊ฐ€๋“œ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€
+export * from './customGuard';
+```
+
+`/clients/js/src/defaultGuards/defaults.ts` ๋‚ด์—์„œ ๋‹ค์Œ ์œ„์น˜์— ๊ฐ€๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”;
+
+```ts
+import { CustomGuardArgs } from "../generated"
+
+export type DefaultGuardSetArgs = GuardSetArgs & {
+    ...
+     // ๊ฐ€๋“œ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€
+    customGuard: OptionOrNullable<CustomGuardArgs>;
+}
+```
+
+```ts
+import { CustomGuard } from "../generated"
+
+export type DefaultGuardSet = GuardSet & {
+    ...
+     // ๊ฐ€๋“œ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€
+    customGuard: Option<CustomGuard>
+}
+```
+
+```ts
+import { CustomGuardMintArgs } from "./defaultGuards/customGuard.ts"
+export type DefaultGuardSetMintArgs = GuardSetMintArgs & {
+    ...
+    // ๊ฐ€๋“œ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€
+    customGuard: OptionOrNullable<CustomGuardMintArgs>
+}
+```
+
+```ts
+export const defaultCandyGuardNames: string[] = [
+  ...// ๊ฐ€๋“œ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€
+  'customGuard',
+]
+```
+
+๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด๋ณด๋‚ธ customGuardManifest๋ฅผ `/clients/js/src/plugin.ts`์— ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+
+```ts
+import {customGuardManifest} from "./defaultGuards"
+
+ umi.guards.add(
+  ...// ๊ฐ€๋“œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€
+  customGuardManifest
+)
+```
+
+์ด ์ง€์ ์—์„œ ํด๋ผ์ด์–ธํŠธ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ npm์— ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ฐ€๋“œ ํด๋ผ์ด์–ธํŠธ์— ์•ก์„ธ์Šคํ•˜๋ ค๋Š” ํ”„๋กœ์ ํŠธ ํด๋”์— ๋งํฌ/์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+AVA์˜ ๋‚ด์žฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ฐ€๋“œ๋ฅผ ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์˜ˆ์‹œ๋Š” `/clients/js/tests`์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 17 - 0
src/pages/kr/candy-machine/getting-started/index.md

@@ -0,0 +1,17 @@
+---
+title: ์‹œ์ž‘ํ•˜๊ธฐ
+metaTitle: ์‹œ์ž‘ํ•˜๊ธฐ | Candy Machine
+description: Candy Machine์„ ์‹œ์ž‘ํ•˜์„ธ์š”.
+---
+
+Candy Machine์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์•„๋ž˜์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์–ธ์–ด/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
+
+{% quick-links %}
+
+{% quick-link title="JavaScript" icon="JavaScript" href="/kr/candy-machine/getting-started/js" description="Umi ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜์˜ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="Rust" icon="Rust" href="/kr/candy-machine/getting-started/rust" description="Rust ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="Sugar" icon="SolidCommandLine" href="/kr/candy-machine/sugar/getting-started" description="๋ช…๋ น์ค„ ๋„๊ตฌ Sugar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% /quick-links %}

+ 50 - 0
src/pages/kr/candy-machine/getting-started/js.md

@@ -0,0 +1,50 @@
+---
+title: JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•˜๊ธฐ
+metaTitle: JavaScript SDK | Candy Machine
+description: JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์‹œ์ž‘ํ•˜์„ธ์š”
+---
+
+Metaplex๋Š” Candy Machine๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. [Umi ํ”„๋ ˆ์ž„์›Œํฌ](https://github.com/metaplex-foundation/umi) ๋•๋ถ„์— ๋งŽ์€ ๊ณ ์ •๋œ ์ข…์†์„ฑ ์—†์ด ์ œ๊ณต๋˜๋ฏ€๋กœ ๋ชจ๋“  JavaScript ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋Ÿ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+์‹œ์ž‘ํ•˜๋ ค๋ฉด [Umi ํ”„๋ ˆ์ž„์›Œํฌ](https://github.com/metaplex-foundation/umi/blob/main/docs/installation.md)์™€ Candy Machine JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+```sh
+npm install \
+  @metaplex-foundation/umi \
+  @metaplex-foundation/umi-bundle-defaults \
+  @solana/web3.js@1 \
+  @metaplex-foundation/mpl-candy-machine
+```
+
+๋‹ค์Œ์œผ๋กœ `Umi` ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด `mplCandyMachine` ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
+import { mplCandyMachine } from '@metaplex-foundation/mpl-candy-machine'
+
+// ์„ ํƒํ•œ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
+const umi = createUmi('http://127.0.0.1:8899').use(mplCandyMachine())
+```
+
+๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์šฉํ•  ์ง€๊ฐ‘์„ Umi์—๊ฒŒ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” [ํ‚คํŽ˜์–ด](/kr/umi/connecting-to-umi#connecting-w-a-secret-key) ๋˜๋Š” [Solana ์ง€๊ฐ‘ ์–ด๋Œ‘ํ„ฐ](/kr/umi/connecting-to-umi#connecting-w-wallet-adapter)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด์ œ [๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜](https://mpl-candy-machine.typedoc.metaplex.com/)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  `Umi` ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•˜์—ฌ NFT์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Candy Machine ๊ณ„์ •๊ณผ ๊ด€๋ จ๋œ Candy Guard ๊ณ„์ •์„ ๊ฐ€์ ธ์˜ค๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```ts
+import { publicKey } from '@metaplex-foundation/umi'
+import {
+  fetchCandyMachine,
+  fetchCandyGuard,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyMachinePublicKey = publicKey('...')
+const candyMachine = await fetchCandyMachine(umi, candyMachinePublicKey)
+const candyGuard = await fetchCandyGuard(umi, candyMachine.mintAuthority)
+```
+
+๐Ÿ”— **์œ ์šฉํ•œ ๋งํฌ:**
+
+- [Umi ํ”„๋ ˆ์ž„์›Œํฌ](https://github.com/metaplex-foundation/umi)
+- [GitHub ์ €์žฅ์†Œ](https://github.com/metaplex-foundation/mpl-candy-machine)
+- [NPM ํŒจํ‚ค์ง€](https://www.npmjs.com/package/@metaplex-foundation/mpl-candy-machine)
+- [API ์ฐธ์กฐ](https://mpl-candy-machine.typedoc.metaplex.com/)

+ 20 - 0
src/pages/kr/candy-machine/getting-started/rust.md

@@ -0,0 +1,20 @@
+---
+title: Rust๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•˜๊ธฐ
+metaTitle: Candy Machine - ์‹œ์ž‘ํ•˜๊ธฐ - Rust SDK | Candy Machine
+description: Rust๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์‹œ์ž‘ํ•˜์„ธ์š”
+---
+
+Rust ๊ฐœ๋ฐœ์ž๋ผ๋ฉด Rust ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ํฌ๋ ˆ์ดํŠธ์—๋Š” ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ช…๋ น์–ด๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๋Š” Rust ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ Candy Machine ํ”„๋กœ๊ทธ๋žจ์— [CPI ํ˜ธ์ถœ](https://solanacookbook.com/references/programs.html#how-to-do-cross-program-invocation)์„ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+Candy Machine์€ ๋‘ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๊ฐœ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+- **Candy Machine Core**
+  - [GitHub ์ €์žฅ์†Œ](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-machine-core)
+  - [ํฌ๋ ˆ์ดํŠธ ํŽ˜์ด์ง€](https://crates.io/crates/mpl-candy-machine-core)
+  - [API ์ฐธ์กฐ](https://docs.rs/mpl-candy-machine-core/0.1.0/mpl_candy_machine_core/)
+- **Candy Guard**
+  - [GitHub ์ €์žฅ์†Œ](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard)
+  - [ํฌ๋ ˆ์ดํŠธ ํŽ˜์ด์ง€](https://crates.io/crates/mpl-candy-guard)
+  - [API ์ฐธ์กฐ](https://docs.rs/mpl-candy-guard/0.1.0/mpl_candy_guard/)

+ 351 - 0
src/pages/kr/candy-machine/guard-groups.md

@@ -0,0 +1,351 @@
+---
+title: ๊ฐ€๋“œ ๊ทธ๋ฃน
+metaTitle: ๊ฐ€๋“œ ๊ทธ๋ฃน | Candy Machine
+description: ์—ฌ๋Ÿฌ ๊ฐ€๋“œ ๊ทธ๋ฃน์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+[์ด์ „ ํŽ˜์ด์ง€](/kr/candy-machine/guards)์—์„œ ๊ฐ€๋“œ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์˜ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ…๋‹น 1 SOL์˜ ๊ฒฐ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํŠน์ • ๋‚ ์งœ ์ดํ›„์— ๋ฏผํŒ…์ด ์‹œ์ž‘๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ๋‚ ์งœ ์ดํ›„์— 2 SOL์„ ์ฒญ๊ตฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ํŠน์ • ํ† ํฐ ๋ณด์œ ์ž๊ฐ€ ๋ฌด๋ฃŒ๋กœ ๋˜๋Š” ํ• ์ธ๋œ ๊ฐ€๊ฒฉ์œผ๋กœ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? {% .lead %}
+
+๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ๊ฐ€๋“œ ์„ธํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ **๊ฐ€๋“œ ๊ทธ๋ฃน**์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค!
+
+## ๊ทธ๋ฃน์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?
+
+ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ๊ฐ€๋“œ์˜ ์„ค์ •์„ ์ œ๊ณตํ•˜์—ฌ [Candy Machine์— ๊ฐ€๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•](/kr/candy-machine/guards#creating-a-candy-machine-with-guards)์„ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”? ๊ฐ€๋“œ ๊ทธ๋ฃน๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ, ์‹๋ณ„์„ ์œ„ํ•ด ๊ณ ์œ ํ•œ **๋ ˆ์ด๋ธ”**์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ ๊ฐ ๊ฐ€๋“œ ๊ทธ๋ฃน์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:
+
+- **๋ ˆ์ด๋ธ”**: ๊ณ ์œ ํ•œ ํ…์ŠคํŠธ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. 6์ž ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **๊ฐ€๋“œ**: ํ•ด๋‹น ๊ทธ๋ฃน ๋‚ด์—์„œ ํ™œ์„ฑํ™”๋œ ๋ชจ๋“  ๊ฐ€๋“œ์˜ ์„ค์ •์ž…๋‹ˆ๋‹ค. ์ด๋Š” Candy Machine์— ์ง์ ‘ ๊ฐ€๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜คํ›„ 4์‹œ๋ถ€ํ„ฐ 5์‹œ๊นŒ์ง€ 1 SOL์„ ์ฒญ๊ตฌํ•˜๊ณ , ์˜คํ›„ 5์‹œ๋ถ€ํ„ฐ Candy Machine์ด ์†Œ์ง„๋  ๋•Œ๊นŒ์ง€ 2 SOL์„ ์ฒญ๊ตฌํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๋ชจ๋“  ๊ฒƒ์€ Bot Tax ๊ฐ€๋“œ๋ฅผ ํ†ตํ•ด ๋ด‡์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฐ›์œผ๋ฉด์„œ ๋ง์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ€๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+- ๊ทธ๋ฃน 1:
+  - **๋ ˆ์ด๋ธ”**: "early"
+  - **๊ฐ€๋“œ**:
+    - SOL ๊ฒฐ์ œ: 1 SOL
+    - ์‹œ์ž‘ ๋‚ ์งœ: ์˜คํ›„ 4์‹œ (๋‹จ์ˆœํ•จ์„ ์œ„ํ•ด ์‹ค์ œ ๋‚ ์งœ๋Š” ๋ฌด์‹œ)
+    - ์ข…๋ฃŒ ๋‚ ์งœ: ์˜คํ›„ 5์‹œ
+    - Bot Tax: 0.001 SOL
+- ๊ทธ๋ฃน 2:
+  - **๋ ˆ์ด๋ธ”**: "late"
+  - **๊ฐ€๋“œ**:
+    - SOL ๊ฒฐ์ œ: 2 SOL
+    - ์‹œ์ž‘ ๋‚ ์งœ: ์˜คํ›„ 5์‹œ
+    - Bot Tax: 0.001 SOL
+
+์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋งž์ถคํ˜• 2๋‹จ๊ณ„ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค!
+
+์ด์ œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์šฐ๋ฆฌ์˜ Candy Machine์—์„œ ๋ฏผํŒ…์„ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค **์–ด๋А ๊ทธ๋ฃน์—์„œ ๋ฏผํŒ…ํ•˜๋Š”์ง€ ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค**. ๋ฏผํŒ…ํ•  ๋•Œ ๊ทธ๋ฃน ๋ ˆ์ด๋ธ”์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š”:
+
+- ๊ตฌ๋งค์ž๊ฐ€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฏผํŒ… ๋™์ž‘์„ ๊ฒฝํ—˜ํ•˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ์ข…๋ฃŒ ๋‚ ์งœ ๋งจ ๋งˆ์ง€๋ง‰์— 1 SOL๋กœ ๋ฏผํŒ…์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ, ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ๋‚ ์งœ๊ฐ€ ์ง€๋‚ฌ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๊ทธ๋ฃน ๋ ˆ์ด๋ธ”์„ ์š”์ฒญํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜์€ ์„ฑ๊ณตํ•˜๊ณ  1 SOL๋งŒ ์ง€๋ถˆํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  2 SOL์ด ์ฒญ๊ตฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+- ๋ณ‘๋ ฌ ๊ทธ๋ฃน์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์ด ํŽ˜์ด์ง€ ๋’ท๋ถ€๋ถ„์—์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+{% 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 #group-1 theme="mint" z=1 %}
+๊ทธ๋ฃน 1: "early" {% .font-semibold %}
+{% /node %}
+{% node label="SOL ๊ฒฐ์ œ" /%}
+{% node label="์‹œ์ž‘ ๋‚ ์งœ" /%}
+{% node label="์ข…๋ฃŒ ๋‚ ์งœ" /%}
+{% node label="Bot Tax" /%}
+{% node theme="mint" z=1 %}
+๊ทธ๋ฃน 2: "late"
+{% /node %}
+{% node label="SOL ๊ฒฐ์ œ" /%}
+{% node label="์‹œ์ž‘ ๋‚ ์งœ" /%}
+{% node label="Bot Tax" /%}
+{% /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=-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" /%}
+
+{% 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="group-1" to="mint-1" theme="pink" %}
+์–ด๋А ๊ทธ๋ฃน์—์„œ \
+๋ฏผํŒ…ํ• ์ง€ ์„ ํƒ
+{% /edge %}
+
+{% /diagram %}
+
+์ด์ œ SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ฐ€๋“œ ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ Candy Machine ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๊ฐ€๋“œ ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ Candy Machine์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด `create` ํ•จ์ˆ˜์— `groups` ๋ฐฐ์—ด์„ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ์€ `label`๊ณผ ํ•ด๋‹น ๊ทธ๋ฃน์—์„œ ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ๋ชจ๋“  ๊ฐ€๋“œ์˜ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” `guards` ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„ ์˜ˆ์‹œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { some, sol, dateTime } from '@metaplex-foundation/umi'
+
+await create(umi, {
+  // ...
+  groups: [
+    {
+      label: 'early',
+      guards: {
+        solPayment: some({ lamports: sol(1), destination: treasury }),
+        startDate: some({ date: dateTime('2022-10-18T16:00:00Z') }),
+        endDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
+        botTax: some({ lamports: sol(0.001), lastInstruction: true }),
+      },
+    },
+    {
+      label: 'late',
+      guards: {
+        solPayment: some({ lamports: sol(2), destination: treasury }),
+        startDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
+        botTax: some({ lamports: sol(0.001), lastInstruction: true }),
+      },
+    },
+  ],
+}).sendAndConfirm(umi)
+```
+
+๊ทธ๋ฃน์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด `updateCandyGuard` ํ•จ์ˆ˜์— ๋™์ผํ•œ `groups` ์†์„ฑ์„ ์ œ๊ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+์ „์ฒด `guards` ๊ฐ์ฒด์™€ `groups` ๋ฐฐ์—ด์ด ์—…๋ฐ์ดํŠธ๋˜๋ฏ€๋กœ **๊ธฐ์กด์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค!**
+
+๋”ฐ๋ผ์„œ ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋”๋ผ๋„ ๋ชจ๋“  ๊ทธ๋ฃน์˜ ์„ค์ •์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„ค์ •์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š๋„๋ก ๋ฏธ๋ฆฌ ์ตœ์‹  candy guard ๊ณ„์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ "late" ๊ทธ๋ฃน์˜ SOL ๊ฒฐ์ œ ๊ฐ€๋“œ๋ฅผ 2 SOL ๋Œ€์‹  3 SOL๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```ts
+import { some, sol, dateTime } from '@metaplex-foundation/umi'
+
+const candyGuard = await fetchCandyGuard(umi, candyMachine.mintAuthority)
+await updateCandyGuard(umi, {
+  candyGuard: candyGuard.publicKey,
+  guards: candyGuard.guards,
+  groups: [
+    {
+      label: 'early',
+      guards: {
+        solPayment: some({ lamports: sol(1), destination: treasury }),
+        startDate: some({ date: dateTime('2022-10-18T16:00:00Z') }),
+        endDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
+        botTax: some({ lamports: sol(0.001), lastInstruction: true }),
+      },
+    },
+    {
+      label: 'late',
+      guards: {
+        solPayment: some({ lamports: sol(3), destination: treasury }),
+        startDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
+        botTax: some({ lamports: sol(0.001), lastInstruction: true }),
+      },
+    },
+  ],
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [updateCandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/functions/updateCandyGuard.html), [DefaultGuardSetArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ธฐ๋ณธ ๊ฐ€๋“œ
+
+์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋‘ ๊ทธ๋ฃน ๋ชจ๋‘์— ๋™์ผํ•œ **Bot Tax** ๊ฐ€๋“œ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ–ˆ์Œ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์ด๋Š” Candy Machine์— ์„ค์ •๋œ ๊ธ€๋กœ๋ฒŒ **๊ฐ€๋“œ**๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๊ฐ€๋“œ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•  ๋•Œ, [์ด์ „ ํŽ˜์ด์ง€](/kr/candy-machine/guards)์—์„œ ์„ค๋ช…ํ•œ Candy Machine์˜ ๊ธ€๋กœ๋ฒŒ ๊ฐ€๋“œ๋Š” **๊ธฐ๋ณธ ๊ฐ€๋“œ ์—ญํ• **์„ ํ•ฉ๋‹ˆ๋‹ค! ์ฆ‰, ๊ทธ๋ฃน์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ฎ์–ด์“ฐ์ง€ ์•Š๋Š” ํ•œ ๊ทธ๋ฃน์€ ๊ธ€๋กœ๋ฒŒ ๊ฐ€๋“œ์™€ ๋™์ผํ•œ ๊ฐ€๋“œ ์„ค์ •์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+๊ฐ„๋‹จํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค:
+
+- ๊ธฐ๋ณธ ๊ฐ€๋“œ์—์„œ๋Š” ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ ๊ทธ๋ฃน์˜ ๊ฐ€๋“œ์—์„œ๋Š” ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฐ€๋“œ๊ฐ€ ์žˆ์œผ๋ฉด, ๊ทธ๋ฃน์€ **๊ธฐ๋ณธ ๊ฐ€๋“œ์—์„œ ์ •์˜๋œ ๋Œ€๋กœ** ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+- ๊ธฐ๋ณธ ๊ฐ€๋“œ์—์„œ๋„ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  ๊ทธ๋ฃน์˜ ๊ฐ€๋“œ์—์„œ๋„ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” ๊ฐ€๋“œ๊ฐ€ ์žˆ์œผ๋ฉด, ๊ทธ๋ฃน์€ **๊ทธ๋ฃน์˜ ๊ฐ€๋“œ์—์„œ ์ •์˜๋œ ๋Œ€๋กœ** ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+- ๊ธฐ๋ณธ ๊ฐ€๋“œ๋‚˜ ๊ทธ๋ฃน์˜ ๊ฐ€๋“œ์—์„œ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฐ€๋“œ๋Š” ๊ทธ๋ฃน์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+์ด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ ์„น์…˜์˜ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ ธ์™€์„œ **Bot Tax** ๊ฐ€๋“œ๋ฅผ ๊ธฐ๋ณธ ๊ฐ€๋“œ๋กœ ์ด๋™ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+- ๊ธฐ๋ณธ ๊ฐ€๋“œ:
+  - Bot Tax: 0.001 SOL
+- ๊ทธ๋ฃน 1:
+  - **๋ ˆ์ด๋ธ”**: "early"
+  - **๊ฐ€๋“œ**:
+    - SOL ๊ฒฐ์ œ: 1 SOL
+    - ์‹œ์ž‘ ๋‚ ์งœ: ์˜คํ›„ 4์‹œ
+    - ์ข…๋ฃŒ ๋‚ ์งœ: ์˜คํ›„ 5์‹œ
+- ๊ทธ๋ฃน 2:
+  - **๋ ˆ์ด๋ธ”**: "late"
+  - **๊ฐ€๋“œ**:
+    - SOL ๊ฒฐ์ œ: 2 SOL
+    - ์‹œ์ž‘ ๋‚ ์งœ: ์˜คํ›„ 5์‹œ
+
+๋ณด์‹œ๋‹ค์‹œํ”ผ, ๊ธฐ๋ณธ ๊ฐ€๋“œ๋Š” ๊ทธ๋ฃน ๋‚ด์—์„œ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+{% 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 #group-1 theme="mint" z=1 %}
+๊ทธ๋ฃน 1: "early" {% .font-semibold %}
+{% /node %}
+{% node label="SOL ๊ฒฐ์ œ" /%}
+{% node label="์‹œ์ž‘ ๋‚ ์งœ" /%}
+{% node label="์ข…๋ฃŒ ๋‚ ์งœ" /%}
+{% node theme="mint" z=1 %}
+๊ทธ๋ฃน 2: "late"
+{% /node %}
+{% node label="SOL ๊ฒฐ์ œ" /%}
+{% 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=-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" /%}
+
+{% 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="group-1" to="mint-1" theme="pink" /%}
+
+{% /diagram %}
+
+๊ธฐ๋ณธ ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋ฏผํŒ…ํ•  ๋•Œ ๊ทธ๋ฃน์„ ์ œ๊ณตํ•ด์•ผ ํ•จ์— ์ฃผ์˜ํ•˜์„ธ์š”. ์ฆ‰, ๊ฐ€๋“œ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” **๊ธฐ๋ณธ ๊ฐ€๋“œ๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค**.
+
+{% dialect-switcher title="๊ธฐ๋ณธ ๊ฐ€๋“œ์™€ ๊ฐ€๋“œ ๊ทธ๋ฃน์œผ๋กœ Candy Machine ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ธฐ๋ณธ ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Candy Machine์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ `guards` ์†์„ฑ์„ `groups` ๋ฐฐ์—ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฐ€๋“œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { some, sol, dateTime } from '@metaplex-foundation/umi'
+
+await create(umi, {
+  // ...
+  guards: {
+    botTax: some({ lamports: sol(0.001), lastInstruction: true }),
+  },
+  groups: [
+    {
+      label: 'early',
+      guards: {
+        solPayment: some({ lamports: sol(1), destination: treasury }),
+        startDate: some({ date: dateTime('2022-10-18T16:00:00Z') }),
+        endDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
+      },
+    },
+    {
+      label: 'late',
+      guards: {
+        solPayment: some({ lamports: sol(2), destination: treasury }),
+        startDate: some({ date: dateTime('2022-10-18T17:00:00Z') }),
+      },
+    },
+  ],
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [DefaultGuardSetArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๋ณ‘๋ ฌ ๊ทธ๋ฃน
+
+๋ฏผํŒ…ํ•  ๋•Œ ๊ทธ๋ฃน ๋ ˆ์ด๋ธ”์„ ์š”๊ตฌํ•˜๋Š” ์ •๋ง ํฅ๋ฏธ๋กœ์šด ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” **์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ๋‘˜ ์ด์ƒ์˜ ์œ ํšจํ•œ ๊ทธ๋ฃน์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค**๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ชจ๋“  ๋ชจํ˜ธํ•จ์„ ์ œ๊ฑฐํ•˜๊ณ  ๊ตฌ๋งค์ž๊ฐ€ ๋ฏผํŒ…์„ ์‹œ๋„ํ•  ๊ทธ๋ฃน์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
+
+์ƒˆ๋กœ์šด ์˜ˆ์‹œ๋กœ ์ด๋ฅผ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. "Innocent Bird"๋ผ๋Š” NFT ์ปฌ๋ ‰์…˜์ด ์žˆ๊ณ  "Innocent Bird" NFT๋ฅผ ๋ณด์œ ํ•œ ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ 1 SOL์˜ ํ• ์ธ ๊ฐ€๊ฒฉ์„ ์ œ๊ณตํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ๋Š” 2 SOL์„ ์ฒญ๊ตฌํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๋‘ ๊ทธ๋ฃน ๋ชจ๋‘ ๋™์‹œ์—(์˜คํ›„ 4์‹œ๋ผ๊ณ  ํ•˜์ž) ๋ฏผํŒ…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ , ๋‘ ๊ทธ๋ฃน ๋ชจ๋‘ ๋ด‡์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ€๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+- ๊ธฐ๋ณธ ๊ฐ€๋“œ:
+  - ์‹œ์ž‘ ๋‚ ์งœ: ์˜คํ›„ 4์‹œ
+  - Bot Tax: 0.001 SOL
+- ๊ทธ๋ฃน 1:
+  - **๋ ˆ์ด๋ธ”**: "nft"
+  - **๊ฐ€๋“œ**:
+    - SOL ๊ฒฐ์ œ: 1 SOL
+    - NFT ๊ฒŒ์ดํŠธ: "Innocent Bird" ์ปฌ๋ ‰์…˜
+- ๊ทธ๋ฃน 2:
+  - **๋ ˆ์ด๋ธ”**: "public"
+  - **๊ฐ€๋“œ**:
+    - SOL ๊ฒฐ์ œ: 2 SOL
+
+๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ด๋Ÿฌํ•œ ๊ฐ€๋“œ ์„ค์ •์œผ๋กœ ๋‘ ๊ทธ๋ฃน ๋ชจ๋‘ ๋™์‹œ์— ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NFT ๋ณด์œ ์ž๊ฐ€ "public" ๊ทธ๋ฃน์—์„œ ๋ฏผํŒ…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค๋ฉด ์ „์ฒด 2 SOL์„ ์ง€๋ถˆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด "nft" ๊ทธ๋ฃน์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋“ค์˜ ์ตœ์„ ์˜ ์ด์ต์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๋ณ‘๋ ฌ ๊ทธ๋ฃน์œผ๋กœ Candy Machine ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฐ€๋“œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { some, sol, dateTime } from '@metaplex-foundation/umi'
+
+await create(umi, {
+  // ...
+  guards: {
+    botTax: some({ lamports: sol(0.001), lastInstruction: true }),
+    startDate: some({ date: dateTime('2022-10-18T16:00:00Z') }),
+  },
+  groups: [
+    {
+      label: 'early',
+      guards: {
+        solPayment: some({ amount: sol(1), destination: treasury }),
+        nftGate: some({
+          requiredCollection: innocentBirdCollectionNft.publicKey,
+        }),
+      },
+    },
+    {
+      label: 'late',
+      guards: {
+        solPayment: some({ amount: sol(2), destination: treasury }),
+      },
+    },
+  ],
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [DefaultGuardSetArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฒฐ๋ก 
+
+๊ฐ€๋“œ ๊ทธ๋ฃน์€ ์šฐ๋ฆฌ์˜ ์š”๊ตฌ์— ๋งž์ถ˜ ์ˆœ์ฐจ์  ๊ทธ๋ฆฌ๊ณ /๋˜๋Š” ๋ณ‘๋ ฌ ๋ฏผํŒ… ์›Œํฌํ”Œ๋กœ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ Candy Machine์— ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์ฐจ์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+[๋‹ค์Œ ํŽ˜์ด์ง€](/kr/candy-machine/guard-route)์—์„œ๋Š” ๊ฐ€๋“œ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ๊ธฐ๋Šฅ์ธ ๊ฐ€๋“œ ๋ช…๋ น์–ด๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

+ 207 - 0
src/pages/kr/candy-machine/guard-route.md

@@ -0,0 +1,207 @@
+---
+title: ํŠน๋ณ„ํ•œ ๊ฐ€๋“œ ๋ช…๋ น์–ด
+metaTitle: ํŠน๋ณ„ํ•œ ๊ฐ€๋“œ ๋ช…๋ น์–ด | Candy Machine
+description: ๊ฐ€๋“œ๋ณ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+์ด์ „ ํŽ˜์ด์ง€์—์„œ ๋ณธ ๋ฐ”์™€ ๊ฐ™์ด, ๊ฐ€๋“œ๋Š” Candy Machine์˜ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งž์ถคํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋“œ๊ฐ€ ๊ณ ์œ ํ•œ ๋งž์ถค ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ณ„์…จ๋‚˜์š”? {% .lead %}
+
+## Route ๋ช…๋ น์–ด
+
+Candy Guard ํ”„๋กœ๊ทธ๋žจ์€ **"Route" ๋ช…๋ น์–ด**๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํŠน๋ณ„ํ•œ ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
+
+์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Candy Machine์—์„œ **ํŠน์ • ๊ฐ€๋“œ๋ฅผ ์„ ํƒ**ํ•˜๊ณ  ํ•ด๋‹น ๊ฐ€๋“œ์— ํŠนํ™”๋œ **๋งž์ถค ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์„ ์„ ํƒ๋œ ๊ฐ€๋“œ๋กœ ๋ผ์šฐํŒ…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "Route" ๋ช…๋ น์–ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
+
+์ด ๊ธฐ๋Šฅ์€ ๊ฐ€๋“œ๊ฐ€ ๊ณ ์œ ํ•œ ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๊ฐ€๋“œ๋ฅผ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ€๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+- ๋ฌด๊ฑฐ์šด ์ž‘์—…์— ๋Œ€ํ•ด ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค์—์„œ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+- ์ปค์Šคํ…€ ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ–ˆ๋˜ ๋งž์ถค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+route ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ๋ผ์šฐํŒ…ํ•  ๊ฐ€๋“œ๋ฅผ ์ง€์ •ํ•˜๊ณ  **๊ฐ€๋“œ๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” route ์„ค์ •์„ ์ œ๊ณต**ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฐ€๋“œ๋ฅผ ์„ ํƒํ•˜์—ฌ "route" ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+Candy Guard ํ”„๋กœ๊ทธ๋žจ์— ๋“ฑ๋ก๋œ ๊ฐ€๋“œ๋‹น ํ•˜๋‚˜์˜ "route" ๋ช…๋ น์–ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ผํ•œ ๊ฐ€๋“œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด route ์„ค์ •์— **Path** ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฏผํŒ…์ด ๋๋‚œ ํ›„์—๋งŒ ํ•ด๋™๋  ์ˆ˜ ์žˆ๋Š” ๋™๊ฒฐ๋œ NFT์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ€๋“œ๋Š” route ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ treasury escrow ๊ณ„์ •์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์กฐ๊ฑด ํ•˜์—์„œ ๋ˆ„๊ตฌ๋‚˜ ๋ฏผํŒ…๋œ NFT๋ฅผ ํ•ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ž์˜ ๊ฒฝ์šฐ "init", ํ›„์ž์˜ ๊ฒฝ์šฐ "thaw"์™€ ๊ฐ™์€ **Path** ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‘ ๊ธฐ๋Šฅ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+route ๋ช…๋ น์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฐ ๊ฐ€๋“œ์™€ ๊ทธ ๊ธฐ๋ณธ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ [๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€](/kr/candy-machine/guards)์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์˜ˆ์‹œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ route ๋ช…๋ น์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [**Allow List**](/kr/candy-machine/guards/allow-list) ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ์ง€๊ฐ‘์ด ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ์ง€๊ฐ‘ ๋ชฉ๋ก์˜ ์ผ๋ถ€์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด route ๋ช…๋ น์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
+
+์ด๋Š” [Merkle Trees](https://en.m.wikipedia.org/wiki/Merkle_tree)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ํ—ˆ์šฉ๋œ ์ง€๊ฐ‘์˜ ์ „์ฒด ๋ชฉ๋ก์˜ ํ•ด์‹œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ํ•ด์‹œ(**Merkle Root**๋ผ๊ณ  ์•Œ๋ ค์ง„)๋ฅผ ๊ฐ€๋“œ ์„ค์ •์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ฐ‘์ด ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์Œ์„ ์ฆ๋ช…ํ•˜๋ ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด Merkle Root๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๊ฐ€๋“œ์˜ ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด์‹œ ๋ชฉ๋ก(**Merkle Proof**๋ผ๊ณ  ์•Œ๋ ค์ง„)์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ Allow List ๊ฐ€๋“œ๋Š” **route ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ์ง€๊ฐ‘์˜ Merkle Proof๋ฅผ ํ™•์ธ**ํ•˜๊ณ , ์„ฑ๊ณตํ•˜๋ฉด ๋ฏผํŒ… ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ๊ฒ€์ฆ ์ฆ๋ช… ์—ญํ• ์„ ํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ์— ์ž‘์€ PDA ๊ณ„์ •์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+{% 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="Route" theme="pink" /%}
+{% node label="Candy Machine Core Program" theme="pink" /%}
+{% /node %}
+{% node parent="route" x=70 y=-20 label="Merkle Proof ๊ฒ€์ฆ" 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 %}
+
+๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋ฏผํŒ… ๋ช…๋ น์–ด ๋‚ด์—์„œ ์ง์ ‘ Merkle Proof๋ฅผ ๊ฒ€์ฆํ•˜์ง€ ์•Š์„๊นŒ์š”? ๋‹จ์ˆœํžˆ ํฐ ํ—ˆ์šฉ ๋ชฉ๋ก์˜ ๊ฒฝ์šฐ Merkle Proof๊ฐ€ ์ƒ๋‹นํžˆ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŠน์ • ํฌ๊ธฐ ์ดํ›„์—๋Š” ์ด๋ฏธ ์ƒ๋‹นํ•œ ์–‘์˜ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฏผํŒ… ํŠธ๋žœ์žญ์…˜์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค์—์„œ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ํ—ˆ์šฉ ๋ชฉ๋ก์„ ํ•„์š”ํ•œ ๋งŒํผ ํฌ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ฐ€๋“œ์˜ route ๋ช…๋ น์–ด ํ˜ธ์ถœ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋“œ์˜ route ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด `route` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `guard` ์†์„ฑ์„ ํ†ตํ•ด ๊ฐ€๋“œ์˜ ์ด๋ฆ„์„ ์ „๋‹ฌํ•˜๊ณ  `routeArgs` ์†์„ฑ์„ ํ†ตํ•ด route ์„ค์ •์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ ๋ฏผํŒ… ์ „์— ์ง€๊ฐ‘์˜ Merkle Proof๋ฅผ ๊ฒ€์ฆํ•˜๋Š” Allow List ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```ts
+import {
+  create,
+  route,
+  getMerkleProof,
+  getMerkleRoot,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+// ํ—ˆ์šฉ ๋ชฉ๋ก์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
+// ๋ชฉ๋ก์˜ ์ฒซ ๋ฒˆ์งธ ์ง€๊ฐ‘์ด Metaplex identity๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.
+const allowList = [
+  'GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS',
+  '2vjCrmEFiN9CLLhiqy8u1JPh48av8Zpzp3kNkdTtirYG',
+  'AT8nPwujHAD14cLojTcB1qdBzA1VXnT6LVGuUd6Y73Cy',
+]
+const merkleRoot = getMerkleRoot(allowList)
+
+// Allow List ๊ฐ€๋“œ์™€ ํ•จ๊ป˜ Candy Machine์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+await create(umi, {
+  // ...
+  guards: {
+    allowList: some({ merkleRoot }),
+  },
+}).sendAndConfirm(umi)
+
+// ์ง€๊ธˆ ๋ฏผํŒ…์„ ์‹œ๋„ํ•˜๋ฉด Merkle Proof๋ฅผ ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
+
+// route ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Merkle Proof๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
+await route(umi, {
+  candyMachine: candyMachine.publicKey,
+  guard: 'allowList',
+  routeArgs: {
+    path: 'proof',
+    merkleRoot,
+    merkleProof: getMerkleProof(
+      allowList,
+      'GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS'
+    ),
+  },
+}).sendAndConfirm(umi)
+
+// ์ด์ œ ๋ฏผํŒ…์„ ์‹œ๋„ํ•˜๋ฉด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+```
+
+API ์ฐธ์กฐ: [route](https://mpl-candy-machine.typedoc.metaplex.com/functions/route.html), [DefaultGuardSetRouteArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetRouteArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ํ•˜๋Š” Route ๋ช…๋ น์–ด
+
+๊ฐ€๋“œ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ route ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์„ ํƒํ•˜๋ ค๋Š” ๊ฐ€๋“œ์˜ **๊ทธ๋ฃน ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ**์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ทธ๋ฃน์— ๋™์ผํ•œ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๊ฐ€๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด route ๋ช…๋ น์–ด์— ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ๊ทธ๋ฃน์—๋Š” ์—„์„ ๋œ VIP ์ง€๊ฐ‘์˜ **Allow List**๊ฐ€ ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ทธ๋ฃน์—๋Š” ์ถ”์ฒจ ๋‹น์ฒจ์ž๋ฅผ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ **Allow List**๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Allow List ๊ฐ€๋“œ์— ๋Œ€ํ•œ Merkle Proof๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์–ด๋А ๊ทธ๋ฃน์— ๋Œ€ํ•ด ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€๋„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="route ๋ช…๋ น์–ด ํ˜ธ์ถœ ์‹œ ๊ทธ๋ฃน์œผ๋กœ ํ•„ํ„ฐ๋ง" %}
+{% dialect title="JavaScript" id="js" %}
+
+๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•  ๋•Œ Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ `route` ํ•จ์ˆ˜๋Š” ์„ ํƒํ•˜๋ ค๋Š” ๊ทธ๋ฃน์˜ ๋ ˆ์ด๋ธ”๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•˜๋Š” `Option<string>` ํƒ€์ž…์˜ ์ถ”๊ฐ€ `group` ์†์„ฑ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
+
+```ts
+import {
+  create,
+  route,
+  getMerkleProof,
+  getMerkleRoot,
+} from "@metaplex-foundation/mpl-candy-machine";
+import { base58PublicKey, some } from "@metaplex-foundation/umi";
+
+// ํ—ˆ์šฉ ๋ชฉ๋ก๋“ค์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
+const allowListA = [...];
+const allowListB = [...];
+
+// ๋‘ ๊ฐœ์˜ Allow List ๊ฐ€๋“œ์™€ ํ•จ๊ป˜ Candy Machine์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+await create(umi, {
+  // ...
+  groups: [
+    {
+      label: "listA",
+      guards: {
+        allowList: some({ merkleRoot: getMerkleRoot(allowListA) }),
+      },
+    },
+    {
+      label: "listB",
+      guards: {
+        allowList: some({ merkleRoot: getMerkleRoot(allowListB) }),
+      },
+    },
+  ],
+}).sendAndConfirm(umi);
+
+// ์„ ํƒํ•  ๊ทธ๋ฃน์„ ์ง€์ •ํ•˜์—ฌ Merkle Proof๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
+await route(umi, {
+  candyMachine: candyMachine.publicKey,
+  guard: 'allowList',
+  group: some('listA'), // <- "allowListA"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
+  routeArgs: {
+    path: 'proof',
+    merkleRoot: getMerkleRoot(allowListA),
+    merkleProof: getMerkleProof(
+      allowListA,
+      base58PublicKey(umi.identity),
+    ),
+  },
+}).sendAndConfirm(umi);
+```
+
+API ์ฐธ์กฐ: [route](https://mpl-candy-machine.typedoc.metaplex.com/functions/route.html), [DefaultGuardSetRouteArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetRouteArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฒฐ๋ก 
+
+route ๋ช…๋ น์–ด๋Š” ๊ฐ€๋“œ๊ฐ€ ๊ณ ์œ ํ•œ ๋งž์ถค ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๊ฐ€๋“œ๋ฅผ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐ ๊ฐ€๋“œ์˜ ์ „์ฒด ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๋ณด๋ ค๋ฉด [์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ€๋“œ](/kr/candy-machine/guards)์˜ ์ „์šฉ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
+
+์ด์ œ Candy Machine๊ณผ ๊ฐ€๋“œ ์„ค์ •์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ชจ๋“  ๊ฒƒ์„ ์•Œ์•˜์œผ๋‹ˆ ๋ฏผํŒ…์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. [๋‹ค์Œ ํŽ˜์ด์ง€](/kr/candy-machine/mint)์—์„œ ๋งŒ๋‚˜์š”!

+ 391 - 0
src/pages/kr/candy-machine/guards.md

@@ -0,0 +1,391 @@
+---
+title: Candy ๊ฐ€๋“œ
+metaTitle: Candy ๊ฐ€๋“œ | Candy Machine
+description: ๊ฐ€๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ™œ์„ฑํ™”ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+์ด์ œ Candy Machine์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๋กœ๋“œํ•˜๋Š”์ง€ ์•Œ์•˜์œผ๋‹ˆ, ํผ์ฆ์˜ ๋งˆ์ง€๋ง‰ ์กฐ๊ฐ์ธ ๊ฐ€๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+## ๊ฐ€๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?
+
+๊ฐ€๋“œ๋Š” Candy Machine์˜ ๋ฏผํŒ…์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋Š” ๋ชจ๋“ˆ์‹ ์ฝ”๋“œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค!
+
+์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ฐ€๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ์›ํ•˜๋Š” ๋Œ€๋กœ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ๋ฌธ์„œ์˜ ๋’ท๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ€๋“œ๋ฅผ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+- **์‹œ์ž‘ ๋‚ ์งœ** ๊ฐ€๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ๋‚ ์งœ ์ด์ „์—๋Š” ๋ฏผํŒ…์ด ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ๋‚ ์งœ ์ดํ›„์˜ ๋ฏผํŒ…์„ ๊ธˆ์ง€ํ•˜๋Š” **์ข…๋ฃŒ ๋‚ ์งœ** ๊ฐ€๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **SOL ๊ฒฐ์ œ** ๊ฐ€๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ๋ฏผํŒ… ์ง€๊ฐ‘์€ ๊ตฌ์„ฑ๋œ ๊ธˆ์•ก์„ ๊ตฌ์„ฑ๋œ ๋Œ€์ƒ ์ง€๊ฐ‘์— ์ง€๋ถˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์ปฌ๋ ‰์…˜์˜ ํ† ํฐ์ด๋‚˜ NFT๋กœ ๊ฒฐ์ œํ•˜๋Š” ์œ ์‚ฌํ•œ ๊ฐ€๋“œ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
+- **ํ† ํฐ ๊ฒŒ์ดํŠธ**์™€ **NFT ๊ฒŒ์ดํŠธ** ๊ฐ€๋“œ๋Š” ๊ฐ๊ฐ ํŠน์ • ํ† ํฐ ๋ณด์œ ์ž์™€ NFT ๋ณด์œ ์ž๋กœ ๋ฏผํŒ…์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
+- **ํ—ˆ์šฉ ๋ชฉ๋ก** ๊ฐ€๋“œ๋Š” ์ง€๊ฐ‘์ด ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ง€๊ฐ‘ ๋ชฉ๋ก์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ์—๋งŒ ๋ฏผํŒ…์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฏผํŒ…์„ ์œ„ํ•œ ๊ฒŒ์ŠคํŠธ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+๋ณด์‹œ๋‹ค์‹œํ”ผ, ๊ฐ ๊ฐ€๋“œ๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ์ด๋Š” ๊ฐ€๋“œ๋“ค์„ ์กฐํ•ฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์™„๋ฒฝํ•œ Candy Machine์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ€๋“œ๋“ค์„ ์„ ํƒํ•˜๊ณ  ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## Candy Guard ๊ณ„์ •
+
+[Candy Machine ๊ณ„์ •](/kr/candy-machine/manage#candy-machine-account)์˜ ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•ด๋ณด์‹œ๋ฉด, ๊ทธ๊ณณ์—์„œ๋Š” ๊ฐ€๋“œ์˜ ํ”์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€๋“œ๋“ค์ด **Candy Guard ํ”„๋กœ๊ทธ๋žจ**์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋Š” **Candy Guard ๊ณ„์ •**์ด๋ผ๋Š” ๋ณ„๋„์˜ ๊ณ„์ •์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+๊ฐ Candy Machine ๊ณ„์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์ฒด Candy Guard ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ์ถ”๊ฐ€์ ์ธ ๋ณดํ˜ธ ๊ณ„์ธต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+์ด๋Š” Candy Guard ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ Candy Machine ๊ณ„์ •์˜ **๋ฏผํŠธ ๊ถŒํ•œ**์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋” ์ด์ƒ ๋ฉ”์ธ Candy Machine ํ”„๋กœ๊ทธ๋žจ(**Candy Machine Core ํ”„๋กœ๊ทธ๋žจ**์ด๋ผ๊ณ  ์•Œ๋ ค์ง„)์—์„œ ์ง์ ‘ ๋ฏผํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ๋Œ€์‹ , ๋ชจ๋“  ๊ฐ€๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋ฉด Candy Machine Core ํ”„๋กœ๊ทธ๋žจ์— ์œ„์ž„ํ•˜์—ฌ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•˜๋Š” Candy Guard ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ๋ฏผํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% 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 ๊ฒฐ์ œ" /%}
+{% node label="ํ† ํฐ ๊ฒฐ์ œ" /%}
+{% node label="์‹œ์ž‘ ๋‚ ์งœ" /%}
+{% node label="์ข…๋ฃŒ ๋‚ ์งœ" /%}
+{% 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๊ณผ Candy Guard ๊ณ„์ •์ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋ฏ€๋กœ, ์ €ํฌ SDK๋“ค์€ ์ด๋“ค์„ ํ•˜๋‚˜์˜ ์—”ํ‹ฐํ‹ฐ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. SDK๋กœ Candy Machine์„ ์ƒ์„ฑํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ Candy Guard ๊ณ„์ •๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ๊ป˜ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Candy Machine์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋™์‹œ์— ๊ฐ€๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ๋“ค์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+## ์™œ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ์ธ๊ฐ€์š”?
+
+๊ฐ€๋“œ๋“ค์ด ๋ฉ”์ธ Candy Machine ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์ด์œ ๋Š” ์ ‘๊ทผ ์ œ์–ด ๋กœ์ง์„ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ ์ฑ…์ž„์ธ ๋ฉ”์ธ Candy Machine ์ฑ…์ž„๊ณผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
+
+์ด๋Š” ๊ฐ€๋“œ๋“ค์„ ๋ชจ๋“ˆ์‹์œผ๋กœ ๋งŒ๋“ค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์ปค์Šคํ…€ ๊ฐ€๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ๋งŒ์˜ Candy Guard ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ฒƒ์€ Candy Machine Core ํ”„๋กœ๊ทธ๋žจ์— ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% 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="SOL ๊ฒฐ์ œ" /%}
+{% node label="ํ† ํฐ ๊ฒฐ์ œ" /%}
+{% node label="์‹œ์ž‘ ๋‚ ์งœ" /%}
+{% node label="์ข…๋ฃŒ ๋‚ ์งœ" /%}
+{% node label="..." /%}
+{% /node %}
+
+{% node parent="candy-machine-1" x=300 %}
+{% node #mint-1 label="๋ฏผํŒ…" theme="pink" /%}
+{% node label="Candy Guard Program" theme="pink" /%}
+{% /node %}
+{% node parent="mint-1" x=160 %}
+{% node #mint-1b label="๋ฏผํŒ…" theme="pink" /%}
+{% node label="์ปค์Šคํ…€ Candy Guard Program" theme="pink" /%}
+{% /node %}
+{% node parent="mint-1b" x=-80 y=-22 label="๋‹ค๋ฅธ ์ ‘๊ทผ ์ œ์–ด" theme="transparent" /%}
+
+{% node parent="mint-1" x=60 y=100 %}
+{% node #mint-2 label="๋ฏผํŒ…" theme="pink" /%}
+{% node label="Candy Machine Core Program" theme="pink" /%}
+{% /node %}
+{% node parent="mint-2" x=95 y=-20 label="๋™์ผํ•œ ๋ฏผํŒ… ๋กœ์ง" theme="transparent" /%}
+
+{% node #nft parent="mint-2" x=62 y=100 label="NFT" /%}
+
+{% node parent="mint-1b" x=250 %}
+{% node #candy-machine-2 label="Candy Machine" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Candy Machine Core Program" theme="dimmed" /%}
+{% /node %}
+
+{% node parent="candy-machine-2" y=80 x=0 %}
+{% node #candy-guard-2 label="Candy Guard" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: ์ปค์Šคํ…€ Candy Guard Program" theme="dimmed" /%}
+{% node label="๊ฐ€๋“œ" theme="mint" z=1 /%}
+{% node label="SOL ๊ฒฐ์ œ" /%}
+{% node label="ํ† ํฐ ๊ฒฐ์ œ" /%}
+{% node label="์‹œ์ž‘ ๋‚ ์งœ" /%}
+{% node %}
+๋‚˜์˜ ์ปค์Šคํ…€ ๊ฐ€๋“œ {% .font-semibold %}
+{% /node %}
+{% node label="..." /%}
+{% /node %}
+
+{% edge from="candy-guard-1" to="candy-machine-1" fromPosition="left" toPosition="left" arrow=false /%}
+{% edge from="candy-guard-2" to="candy-machine-2" fromPosition="right" toPosition="right" arrow=false /%}
+{% edge from="mint-1" to="mint-2" theme="pink" fromPosition="bottom" toPosition="top" /%}
+{% edge from="mint-1b" to="mint-2" theme="pink" fromPosition="bottom" toPosition="top" /%}
+{% 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-1b" theme="pink" /%}
+{% edge from="candy-guard-2" to="mint-1b" theme="pink" /%}
+
+{% /diagram %}
+
+์ €ํฌ SDK๋“ค์€ ๋˜ํ•œ ์ž์‹ ๋งŒ์˜ Candy Guard ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ปค์Šคํ…€ ๊ฐ€๋“œ๋“ค์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์นœ์ˆ™ํ•œ API๋ฅผ ํ™œ์šฉํ•˜๊ณ  ๊ฐ€๋“œ๋“ค์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ€๋“œ
+
+์ด์ œ ๊ฐ€๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ–ˆ์œผ๋‹ˆ, ์ €ํฌ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๊ฐ€๋“œ๋“ค์ด ๋ฌด์—‡์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+๋‹ค์Œ ๋ชฉ๋ก์—์„œ๋Š” ๊ฐ ๊ฐ€๋“œ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…๊ณผ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์œ„ํ•œ ์ „์šฉ ํŽ˜์ด์ง€ ๋งํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+- [**Address Gate**](/kr/candy-machine/guards/address-gate): ๋ฏผํŒ…์„ ๋‹จ์ผ ์ฃผ์†Œ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
+- [**Allow List**](/kr/candy-machine/guards/allow-list): ์ง€๊ฐ‘ ์ฃผ์†Œ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ˆ„๊ฐ€ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Bot Tax**](/kr/candy-machine/guards/bot-tax): ์œ ํšจํ•˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ๋ถ€๊ณผํ•  ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์„ธ๊ธˆ์ž…๋‹ˆ๋‹ค.
+- [**End Date**](/kr/candy-machine/guards/end-date): ๋ฏผํŒ…์„ ์ข…๋ฃŒํ•  ๋‚ ์งœ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Freeze Sol Payment**](/kr/candy-machine/guards/freeze-sol-payment): ๋™๊ฒฐ ๊ธฐ๊ฐ„๊ณผ ํ•จ๊ป˜ ๋ฏผํŒ… ๊ฐ€๊ฒฉ์„ SOL๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Freeze Token Payment**](/kr/candy-machine/guards/freeze-token-payment): ๋™๊ฒฐ ๊ธฐ๊ฐ„๊ณผ ํ•จ๊ป˜ ๋ฏผํŒ… ๊ฐ€๊ฒฉ์„ ํ† ํฐ ์–‘์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Gatekeeper**](/kr/candy-machine/guards/gatekeeper): Gatekeeper Network๋ฅผ ํ†ตํ•ด ๋ฏผํŒ…์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: Captcha ํ†ตํ•ฉ).
+- [**Mint Limit**](/kr/candy-machine/guards/mint-limit): ์ง€๊ฐ‘๋‹น ๋ฏผํŒ… ์ˆ˜ ์ œํ•œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Nft Burn**](/kr/candy-machine/guards/nft-burn): ์ง€์ •๋œ ์ปฌ๋ ‰์…˜์˜ ๋ณด์œ ์ž๋กœ ๋ฏผํŒ…์„ ์ œํ•œํ•˜๋ฉฐ, NFT ์†Œ๊ฐ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
+- [**Nft Gate**](/kr/candy-machine/guards/nft-gate): ์ง€์ •๋œ ์ปฌ๋ ‰์…˜์˜ ๋ณด์œ ์ž๋กœ ๋ฏผํŒ…์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
+- [**Nft Payment**](/kr/candy-machine/guards/nft-payment): ๋ฏผํŒ… ๊ฐ€๊ฒฉ์„ ์ง€์ •๋œ ์ปฌ๋ ‰์…˜์˜ NFT๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Redeemed Amount**](/kr/candy-machine/guards/redeemed-amount): ๋ฏผํŒ…๋œ ์ด๋Ÿ‰์„ ๊ธฐ์ค€์œผ๋กœ ๋ฏผํŒ… ์ข…๋ฃŒ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Sol Payment**](/kr/candy-machine/guards/sol-payment): ๋ฏผํŒ… ๊ฐ€๊ฒฉ์„ SOL๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Start Date**](/kr/candy-machine/guards/start-date): ๋ฏผํŒ… ์‹œ์ž‘ ๋‚ ์งœ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
+- [**Third Party Signer**](/kr/candy-machine/guards/third-party-signer): ํŠธ๋žœ์žญ์…˜์— ์ถ”๊ฐ€ ์„œ๋ช…์ž๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
+- [**Token Burn**](/kr/candy-machine/guards/token-burn): ์ง€์ •๋œ ํ† ํฐ์˜ ๋ณด์œ ์ž๋กœ ๋ฏผํŒ…์„ ์ œํ•œํ•˜๋ฉฐ, ํ† ํฐ ์†Œ๊ฐ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
+- [**Token Gate**](/kr/candy-machine/guards/token-gate): ์ง€์ •๋œ ํ† ํฐ์˜ ๋ณด์œ ์ž๋กœ ๋ฏผํŒ…์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
+- [**Token Payment**](/kr/candy-machine/guards/token-payment): ๋ฏผํŒ… ๊ฐ€๊ฒฉ์„ ํ† ํฐ ์–‘์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+## ๊ฐ€๋“œ์™€ ํ•จ๊ป˜ Candy Machine ์ƒ์„ฑํ•˜๊ธฐ
+
+์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑํ•œ Candy Machine์—๋Š” ํ™œ์„ฑํ™”๋œ ๊ฐ€๋“œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ€๋“œ๋ฅผ ์•Œ์•˜์œผ๋‹ˆ, ์ผ๋ถ€ ๊ฐ€๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋œ ์ƒˆ๋กœ์šด Candy Machine์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์€ ์‚ฌ์šฉํ•˜๋Š” SDK์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€์ง€๋งŒ(์•„๋ž˜ ์ฐธ์กฐ), ์ฃผ์š” ์•„์ด๋””์–ด๋Š” ํ•„์š”ํ•œ ์„ค์ •์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐ€๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฐ€๋“œ๋Š” ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ฐ€๋“œ์™€ ํ•จ๊ป˜ Candy Machine ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด, `create` ํ•จ์ˆ˜์— `guards` ์†์„ฑ์„ ์ œ๊ณตํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ๋ชจ๋“  ๊ฐ€๋“œ์˜ ์„ค์ •์„ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. `none()`์œผ๋กœ ์„ค์ •๋˜๊ฑฐ๋‚˜ ์ œ๊ณต๋˜์ง€ ์•Š์€ ๊ฐ€๋“œ๋Š” ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
+
+```ts
+import { some, sol, dateTime } from '@metaplex-foundation/umi'
+
+await create(umi, {
+  // ...
+  guards: {
+    botTax: some({ lamports: sol(0.01), lastInstruction: true }),
+    solPayment: some({ lamports: sol(1.5), destination: treasury }),
+    startDate: some({ date: dateTime('2023-04-04T16:00:00Z') }),
+    // ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ€๋“œ๋Š” ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค...
+  },
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [DefaultGuardSetArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฐ€๋“œ ์—…๋ฐ์ดํŠธ
+
+๊ฐ€๋“œ์—์„œ ๋ญ”๊ฐ€ ์ž˜๋ชป ์„ค์ •ํ•˜์…จ๋‚˜์š”? ๋ฏผํŒ… ๊ฐ€๊ฒฉ์— ๋Œ€ํ•ด ๋งˆ์Œ์ด ๋ฐ”๋€Œ์…จ๋‚˜์š”? ๋ฏผํŒ… ์‹œ์ž‘์„ ์กฐ๊ธˆ ์—ฐ๊ธฐํ•ด์•ผ ํ•˜๋‚˜์š”? ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ๊ฐ€๋“œ๋Š” ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์„ค์ •์œผ๋กœ ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์„ค์ •์„ ์ œ๊ณตํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ€๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋นˆ ์„ค์ •์„ ์ œ๊ณตํ•˜์—ฌ ํ˜„์žฌ ๊ฐ€๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ฐ€๋“œ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Candy Machine์˜ ๊ฐ€๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, `updateCandyGuard` ํ•จ์ˆ˜์˜ `guards` ๊ฐ์ฒด ๋‚ด์— ์„ค์ •์„ ์ œ๊ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. `none()`์œผ๋กœ ์„ค์ •๋˜๊ฑฐ๋‚˜ ์ œ๊ณต๋˜์ง€ ์•Š์€ ๊ฐ€๋“œ๋Š” ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
+
+์ „์ฒด `guards` ๊ฐ์ฒด๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฏ€๋กœ **๊ธฐ์กด์˜ ๋ชจ๋“  ๊ฐ€๋“œ๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค!**
+
+๋”ฐ๋ผ์„œ ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋”๋ผ๋„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ๋ชจ๋“  ๊ฐ€๋“œ์˜ ์„ค์ •์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ€๋“œ๋กœ ํด๋ฐฑํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € candy guard ๊ณ„์ •์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```tsx
+import { some, none, sol } from '@metaplex-foundation/umi'
+
+const candyGuard = fetchCandyGuard(umi, candyMachine.mintAuthority)
+await updateCandyGuard(umi, {
+  candyGuard: candyGuard.publicKey,
+  guards: {
+    ...candyGuard.guards,
+    botTax: none(),
+    solPayment: some({ lamports: sol(3), destination: treasury }),
+  },
+})
+```
+
+API ์ฐธ์กฐ: [updateCandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/functions/updateCandyGuard.html), [CandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/types/CandyGuard.html), [DefaultGuardSetArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Candy Machine์˜ ๊ฐ€๋“œ ๋ณด๊ธฐ
+
+Candy Machine์— ๊ฐ€๋“œ๋ฅผ ์„ค์ •ํ•˜๋ฉด, ์ œ๊ณต๋œ ๋ชจ๋“  ์„ค์ •์„ Candy Guard ๊ณ„์ •์—์„œ ๋ˆ„๊ตฌ๋‚˜ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ฐ€๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+candy machine์˜ `mintAuthority` ์†์„ฑ์—์„œ `fetchCandyGuard` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ candy machine๊ณผ ์—ฐ๊ฒฐ๋œ candy guard์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import {
+  fetchCandyMachine,
+  fetchCandyGuard,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyMachine = await fetchCandyMachine(umi, candyMachineAddress)
+const candyGuard = await fetchCandyGuard(umi, candyMachine.mintAuthority)
+
+candyGuard.guards // ๋ชจ๋“  ๊ฐ€๋“œ ์„ค์ •
+candyGuard.guards.botTax // Bot Tax ์„ค์ •
+candyGuard.guards.solPayment // Sol Payment ์„ค์ •
+// ...
+```
+
+`create` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ candy machine์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ๋œ candy guard ๊ณ„์ •์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์ฃผ์†Œ๊ฐ€ ๊ฒฐ์ •์ ์ž„์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋‚˜์˜ RPC ํ˜ธ์ถœ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ณ„์ •์„ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { assertAccountExists } from '@metaplex-foundation/umi'
+import {
+  findCandyGuardPda,
+  deserializeCandyMachine,
+  deserializeCandyGuard,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyGuardAddress = findCandyGuardPda(umi, { base: candyMachineAddress })
+const [rawCandyMachine, rawCandyGuard] = await umi.rpc.getAccounts([
+  candyMachineAddress,
+  candyGuardAddress,
+])
+assertAccountExists(rawCandyMachine)
+assertAccountExists(rawCandyGuard)
+
+const candyMachine = deserializeCandyMachine(umi, rawCandyMachine)
+const candyGuard = deserializeCandyGuard(umi, rawCandyGuard)
+```
+
+API ์ฐธ์กฐ: [fetchCandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/functions/fetchCandyGuard.html), [findCandyGuardPda](https://mpl-candy-machine.typedoc.metaplex.com/functions/findCandyGuardPda.html), [CandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/types/CandyGuard.html), [DefaultGuardSetArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/DefaultGuardSetArgs.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ˆ˜๋™์œผ๋กœ Candy Guard ๊ณ„์ • ๋ž˜ํ•‘ ๋ฐ ์–ธ๋ž˜ํ•‘
+
+์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Candy Machine๊ณผ Candy Guard ๊ณ„์ •์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
+
+ํ•˜์ง€๋งŒ Candy Machine๊ณผ Candy Guard๋Š” SDK๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
+
+๋จผ์ € ๋‘ ๊ณ„์ •์„ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์—ฐ๊ฒฐ/๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์—์„œ ๊ฐ€๋“œ ์—ฐ๊ฒฐ ๋ฐ ๋ถ„๋ฆฌ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ `create` ํ•จ์ˆ˜๋Š” ์ด๋ฏธ ์ƒ์„ฑ๋œ ๋ชจ๋“  Candy Machine ๊ณ„์ •์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด Candy Guard ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+
+ํ•˜์ง€๋งŒ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์—ฐ๊ฒฐ/๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { some, percentAmount, sol, dateTime } from '@metaplex-foundation/umi'
+
+// Candy Guard ์—†์ด Candy Machine ์ƒ์„ฑ
+const candyMachine = generateSigner(umi)
+await (await createCandyMachineV2(umi, {
+  candyMachine,
+  tokenStandard: TokenStandard.NonFungible,
+  collectionMint: collectionMint.publicKey,
+  collectionUpdateAuthority: umi.identity,
+  itemsAvailable: 100,
+  sellerFeeBasisPoints: percentAmount(1.23),
+  creators: [
+    { address: umi.identity.publicKey, verified: false, percentageShare: 100 },
+  ],
+  configLineSettings: some({
+    prefixName: 'My NFT #',
+    nameLength: 3,
+    prefixUri: 'https://example.com/',
+    uriLength: 20,
+    isSequential: false,
+  }),
+})).sendAndConfirm(umi)
+
+// Candy Guard ์ƒ์„ฑ
+const base = generateSigner(umi)
+const candyGuard = findCandyGuardPda(umi, { base: base.publicKey })
+await createCandyGuard(umi, {
+  base,
+  guards: {
+    botTax: { lamports: sol(0.01), lastInstruction: false },
+    solPayment: { lamports: sol(1.5), destination: treasury },
+    startDate: { date: dateTime('2022-10-17T16:00:00Z') },
+  },
+}).sendAndConfirm(umi)
+
+// Candy Guard๋ฅผ Candy Machine๊ณผ ์—ฐ๊ฒฐ
+await wrap(umi, {
+  candyMachine: candyMachine.publicKey,
+  candyGuard,
+}).sendAndConfirm(umi)
+
+// ์—ฐ๊ฒฐ ํ•ด์ œ
+await unwrap(umi, {
+  candyMachine: candyMachine.publicKey,
+  candyGuard,
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [createCandyMachineV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/createCandyMachineV2.html), [createCandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/functions/createCandyGuard.html), [wrap](https://mpl-candy-machine.typedoc.metaplex.com/functions/wrap.html), [unwrap](https://mpl-candy-machine.typedoc.metaplex.com/functions/unwrap.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฒฐ๋ก 
+
+๊ฐ€๋“œ๋Š” Candy Machine์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŠน์ • ์š”๊ตฌ์— ๋”ฐ๋ผ ๋ˆ„๊ตฌ๋‚˜ ์ž์‹ ๋งŒ์˜ ๊ฐ€๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. [๋‹ค์Œ ํŽ˜์ด์ง€](/kr/candy-machine/guard-groups)์—์„œ๋Š” ๊ฐ€๋“œ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜์—ฌ ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฏผํŒ… ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

+ 384 - 0
src/pages/kr/candy-machine/guards/allow-list.md

@@ -0,0 +1,384 @@
+---
+title: Allow List ๊ฐ€๋“œ
+metaTitle: Allow List | Candy Machine
+description: "์ง€๊ฐ‘ ์ฃผ์†Œ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ˆ„๊ฐ€ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค."
+---
+
+## ๊ฐœ์š”
+
+**Allow List** ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ์ง€๊ฐ‘์„ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ง€๊ฐ‘ ๋ชฉ๋ก๊ณผ ๋Œ€์กฐํ•˜์—ฌ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ๋ฏผํŒ… ์ง€๊ฐ‘์ด ์ด ๋ชฉ๋ก์— ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฏผํŒ…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
+
+์ด ๊ฐ€๋“œ์˜ ์„ค์ •์— ํฐ ์ง€๊ฐ‘ ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋ธ”๋ก์ฒด์ธ์— ๋งŽ์€ ์ €์žฅ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Allow List ๊ฐ€๋“œ๋Š” [**Merkle Trees**](https://en.m.wikipedia.org/wiki/Merkle_tree)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ… ์ง€๊ฐ‘์ด ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ์ง€๊ฐ‘ ๋ชฉ๋ก์˜ ์ผ๋ถ€์ž„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
+
+์ด๋Š” ๋ชจ๋“  ์žŽ์ด ๋‘ ๊ฐœ์”ฉ ์ž๊ธฐ ์ž์‹ ์„ ํ•ด์‹œํ•˜์—ฌ **Merkle Root**๋ผ๊ณ  ์•Œ๋ ค์ง„ ์ตœ์ข… ํ•ด์‹œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€์˜ ํ•ด์‹œ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ์žŽ์ด๋ผ๋„ ๋ณ€๊ฒฝ๋˜๋ฉด ์ตœ์ข… Merkle Root๊ฐ€ ์†์ƒ๋ฉ๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node #hash-7 label="Hash 7" theme="brown" /%}
+{% node #merkle-root label="Merkle Root" theme="transparent" parent="hash-7" x="-90" y="8" /%}
+{% node #hash-5 label="Hash 5" parent="hash-7" y="100" x="-200" theme="orange" /%}
+{% node #hash-6 label="Hash 6" parent="hash-7" y="100" x="200" theme="orange" /%}
+
+{% node #leaves label="์žŽ" parent="hash-5" y="105" x="-170" theme="transparent" /%}
+{% node #hash-1 label="Hash 1" parent="hash-5" y="100" x="-100" theme="orange" /%}
+{% node #hash-2 label="Hash 2" parent="hash-5" y="100" x="100" theme="orange" /%}
+{% node #hash-3 label="Hash 3" parent="hash-6" y="100" x="-100" theme="orange" /%}
+{% node #hash-4 label="Hash 4" parent="hash-6" y="100" x="100" theme="orange" /%}
+
+{% node #data label="๋ฐ์ดํ„ฐ" parent="hash-1" y="105" x="-80" theme="transparent" /%}
+{% node #Ur1C label="Ur1C...bWSG" parent="hash-1" y="100" x="-23" /%}
+{% node #sXCd label="sXCd...edkn" parent="hash-2" y="100" x="-20" /%}
+{% node #RbJs label="RbJs...Ek7u" parent="hash-3" y="100" x="-17" /%}
+{% node #rwAv label="rwAv...u1ud" parent="hash-4" y="100" x="-16" /%}
+
+{% edge from="hash-5" to="hash-7" fromPosition="top" toPosition="bottom" /%}
+{% edge from="hash-6" to="hash-7" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="hash-1" to="hash-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="hash-2" to="hash-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="hash-3" to="hash-6" fromPosition="top" toPosition="bottom" /%}
+{% edge from="hash-4" to="hash-6" fromPosition="top" toPosition="bottom" /%}
+
+{% edge from="Ur1C" to="hash-1" fromPosition="top" toPosition="bottom" path="straight" /%}
+{% edge from="sXCd" to="hash-2" fromPosition="top" toPosition="bottom" path="straight" /%}
+{% edge from="RbJs" to="hash-3" fromPosition="top" toPosition="bottom" path="straight" /%}
+{% edge from="rwAv" to="hash-4" fromPosition="top" toPosition="bottom" path="straight" /%}
+
+{% /diagram %}
+
+์žŽ์ด ํŠธ๋ฆฌ์˜ ์ผ๋ถ€์ž„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠธ๋ฆฌ๋ฅผ ์˜ฌ๋ผ๊ฐ€์„œ Merkle Root๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ชจ๋“  ์ค‘๊ฐ„ ํ•ด์‹œ์˜ ๋ชฉ๋ก๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ์ค‘๊ฐ„ ํ•ด์‹œ ๋ชฉ๋ก์„ **Merkle Proof**๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๋œ Merkle Root๊ฐ€ ์ €์žฅ๋œ Merkle Root์™€ ์ผ์น˜ํ•˜๋ฉด, ์žŽ์ด ํŠธ๋ฆฌ์˜ ์ผ๋ถ€์ด๋ฉฐ ๋”ฐ๋ผ์„œ ์›๋ž˜ ๋ชฉ๋ก์˜ ์ผ๋ถ€์ž„์„ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node #hash-7 label="Hash 7" theme="brown" /%}
+{% node #merkle-root label="Merkle Root" theme="transparent" parent="hash-7" x="-90" y="8" /%}
+{% node #hash-5 label="Hash 5" parent="hash-7" y="100" x="-200" theme="mint" /%}
+{% node #hash-6 label="Hash 6" parent="hash-7" y="100" x="200" theme="blue" /%}
+
+{% node #legend-merkle-proof label="Merkle Proof =" theme="transparent" parent="hash-7" x="200" y="10" /%}
+{% node #legend-hash-4 label="Hash 4" parent="legend-merkle-proof" x="100" y="-7" theme="mint" /%}
+{% node #plus label="+" parent="legend-hash-4" theme="transparent" x="81" y="8" /%}
+{% node #legend-hash-5 label="Hash 5" parent="legend-hash-4" x="100" theme="mint" /%}
+
+
+{% node #leaves label="์žŽ" parent="hash-5" y="105" x="-170" theme="transparent" /%}
+{% node #hash-1 label="Hash 1" parent="hash-5" y="100" x="-100" theme="orange" /%}
+{% node #hash-2 label="Hash 2" parent="hash-5" y="100" x="100" theme="orange" /%}
+{% node #hash-3 label="Hash 3" parent="hash-6" y="100" x="-100" theme="blue" /%}
+{% node #hash-4 label="Hash 4" parent="hash-6" y="100" x="100" theme="mint" /%}
+
+{% node #data label="๋ฐ์ดํ„ฐ" parent="hash-1" y="105" x="-80" theme="transparent" /%}
+{% node #Ur1C label="Ur1C...bWSG" parent="hash-1" y="100" x="-23" /%}
+{% node #sXCd label="sXCd...edkn" parent="hash-2" y="100" x="-20" /%}
+{% node #RbJs label="RbJs...Ek7u" parent="hash-3" y="100" x="-17" theme="blue" /%}
+{% node #rwAv label="rwAv...u1ud" parent="hash-4" y="100" x="-16" /%}
+
+{% edge from="hash-5" to="hash-7" fromPosition="top" toPosition="bottom" theme="mint" /%}
+{% edge from="hash-6" to="hash-7" fromPosition="top" toPosition="bottom" theme="blue" /%}
+
+{% edge from="hash-1" to="hash-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="hash-2" to="hash-5" fromPosition="top" toPosition="bottom" /%}
+{% edge from="hash-3" to="hash-6" fromPosition="top" toPosition="bottom" theme="blue" /%}
+{% edge from="hash-4" to="hash-6" fromPosition="top" toPosition="bottom" theme="mint" /%}
+
+{% edge from="Ur1C" to="hash-1" fromPosition="top" toPosition="bottom" path="straight" /%}
+{% edge from="sXCd" to="hash-2" fromPosition="top" toPosition="bottom" path="straight" /%}
+{% edge from="RbJs" to="hash-3" fromPosition="top" toPosition="bottom" path="straight" theme="blue" /%}
+{% edge from="rwAv" to="hash-4" fromPosition="top" toPosition="bottom" path="straight" /%}
+
+{% /diagram %}
+
+๋”ฐ๋ผ์„œ Allow List ๊ฐ€๋“œ์˜ ์„ค์ •์—๋Š” ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ํ—ˆ์šฉ ์ง€๊ฐ‘ ๋ชฉ๋ก์˜ ์ง„์‹ค์˜ ์›์ฒœ ์—ญํ• ์„ ํ•˜๋Š” Merkle Root๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ฐ‘์ด ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์Œ์„ ์ฆ๋ช…ํ•˜๋ ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด Merkle Root๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ณ  ๊ฐ€๋“œ์˜ ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ Merkle Proof๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์ €ํฌ SDK๋Š” ์ฃผ์–ด์ง„ ์ง€๊ฐ‘ ๋ชฉ๋ก์— ๋Œ€ํ•ด Merkle Root์™€ Merkle Proof๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋„์šฐ๋ฏธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+
+{% diagram  %}
+
+{% node %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node theme="dimmed" %}
+์†Œ์œ ์ž: Candy Machine Core Program {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+
+{% node parent="candy-machine" y="100" x="20" %}
+{% node #candy-guard label="Candy Guard" theme="blue" /%}
+{% node theme="dimmed" %}
+์†Œ์œ ์ž: Candy Guard Program {% .whitespace-nowrap %}
+{% /node %}
+{% node #candy-guard-guards label="๊ฐ€๋“œ" theme="mint" z=1 /%}
+{% node #allowList label="AllowList" /%}
+{% node #guardMerkleRoot label="- Merkle Root" /%}
+{% node label="..." /%}
+{% /node %}
+
+{% node parent="allowList" x="250" y="10" %}
+{% node #merkleRoot theme="slate" %}
+Merkle Root {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+
+{% node parent="merkleRoot" x="170" %}
+{% node #merkleProof theme="slate" %}
+Merkle Proof {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+
+{% node parent="merkleRoot" y="100" x="-12" %}
+{% node #walletList  %}
+๋ฏผํŒ…์ด ํ—ˆ์šฉ๋œ
+
+์ง€๊ฐ‘ ๋ชฉ๋ก
+{%/node %}
+{% /node %}
+{% edge from="merkleProof" to="walletList" arrow="none" fromPosition="bottom" toPosition="top" arrow="start" /%}
+{% edge from="merkleRoot" to="walletList" arrow="none" fromPosition="bottom" toPosition="top" arrow="start" /%}
+
+
+{% node parent="merkleProof" y="100" %}
+{% node #payer label="์ง€๋ถˆ์ž" theme="indigo" /%}
+{% node theme="dimmed"%}
+์†Œ์œ ์ž: Any Program {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+{% edge from="merkleProof" to="payer" arrow="none" fromPosition="bottom" toPosition="top" arrow="start" path="straight" /%}
+
+{% node parent="candy-machine" x="740" %}
+  {% node #route-validation theme="pink" %}
+    Route from the
+
+    _Candy Guard Program_
+  {% /node %}
+{% /node %}
+{% node parent="route-validation" y="-20" x="100" theme="transparent" %}
+  Merkle Proof ๊ฒ€์ฆ
+{% /node %}
+
+{% node parent="route-validation" #allowList-pda y="130" x="32" %}
+{% node theme="slate" %}
+Allowlist PDA {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+
+{% node parent="allowList-pda" #mint-candy-guard y="90" x="-31" %}
+  {% node theme="pink" %}
+    ๋ฏผํŒ… from
+
+    _Candy Guard Program_ {% .whitespace-nowrap %}
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-guard" y="-20" x="100" theme="transparent" %}
+  ์ ‘๊ทผ ์ œ์–ด
+{% /node %}
+
+{% node parent="mint-candy-guard" #mint-candy-machine y="110" x="-8" %}
+  {% node theme="pink" %}
+    ๋ฏผํŒ… from 
+    
+    _Candy Machine Program_ {% .whitespace-nowrap %}
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-machine" y="-20" x="110" theme="transparent" %}
+  ๋ฏผํŒ… ๋กœ์ง
+{% /node %}
+
+{% node #nft parent="mint-candy-machine" y="110" x="70" theme="blue" %}
+  NFT
+{% /node %}
+{% edge from="mint-candy-machine" to="nft" path="straight" /%}
+
+{% edge from="candy-guard" to="candy-machine" /%}
+{% edge from="guardMerkleRoot" to="merkleRoot" arrow="start" path="straight" /%}
+{% edge from="merkleRoot" to="route-validation" arrow="none" fromPosition="top" dashed=true /%}
+{% edge from="merkleProof" to="route-validation" arrow="none" fromPosition="top" dashed=true  %}
+์ง€๋ถˆ์ž์˜ Merkle Proof๊ฐ€ 
+
+๊ฐ€๋“œ์˜ Merkle Root์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฒ€์ฆ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค
+{% /edge %}
+{% edge from="candy-guard-guards" to="guards" /%}
+{% edge from="route-validation" to="allowList-pda" path="straight" /%}
+{% edge from="allowList-pda" to="mint-candy-guard" path="straight" /%}
+{% edge from="mint-candy-guard" to="mint-candy-machine" path="straight" /%}
+
+
+{% /diagram %}
+
+## ๊ฐ€๋“œ ์„ค์ •
+
+Allow List ๊ฐ€๋“œ๋Š” ๋‹ค์Œ ์„ค์ •์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
+
+- **Merkle Root**: ํ—ˆ์šฉ ๋ชฉ๋ก์„ ๋‚˜ํƒ€๋‚ด๋Š” Merkle Tree์˜ Root์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Allow List ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+Merkle Tree๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `getMerkleRoot`์™€ `getMerkleProof`๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+```ts
+import {
+  getMerkleProof,
+  getMerkleRoot,
+} from "@metaplex-foundation/mpl-candy-machine";
+
+const allowList = [
+  "Ur1CbWSGsXCdedknRbJsEk7urwAvu1uddmQv51nAnXB",
+  "GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS",
+  "AT8nPwujHAD14cLojTcB1qdBzA1VXnT6LVGuUd6Y73Cy",
+];
+
+const merkleRoot = getMerkleRoot(allowList);
+const validMerkleProof = getMerkleProof(
+  allowList,
+  "Ur1CbWSGsXCdedknRbJsEk7urwAvu1uddmQv51nAnXB"
+);
+const invalidMerkleProof = getMerkleProof(allowList, "invalid-address");
+```
+
+ํ—ˆ์šฉ ๋ชฉ๋ก์˜ Merkle Root๋ฅผ ๊ณ„์‚ฐํ•œ ํ›„์—๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์— Allow List ๊ฐ€๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { getMerkleRoot } from "@metaplex-foundation/mpl-candy-machine";
+
+const allowList = [
+  "Ur1CbWSGsXCdedknRbJsEk7urwAvu1uddmQv51nAnXB",
+  "GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS",
+  "AT8nPwujHAD14cLojTcB1qdBzA1VXnT6LVGuUd6Y73Cy",
+];
+
+create(umi, {
+  // ...
+  guards: {
+    allowList: some({ merkleRoot: getMerkleRoot(allowList) }),
+  },
+});
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [AllowList](https://mpl-candy-machine.typedoc.metaplex.com/types/AllowList.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+Sugar์—๋Š” merkle root๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. sugar์™€ ํ•จ๊ป˜ ํ—ˆ์šฉ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์•ž์„œ ์„ค๋ช…ํ•œ JavaScript ํ•จ์ˆ˜๋‚˜ [sol-tools](https://sol-tools.tonyboyle.io/cmv3/allow-list) ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด config์— merkle root ํ•ด์‹œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+```json
+"allowList" : {
+    "merkleRoot": "<HASH>"
+}
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๋ฏผํŒ… ์„ค์ •
+
+Allow List ๊ฐ€๋“œ๋Š” ๋‹ค์Œ ๋ฏผํŒ… ์„ค์ •์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
+
+- **Merkle Root**: ํ—ˆ์šฉ ๋ชฉ๋ก์„ ๋‚˜ํƒ€๋‚ด๋Š” Merkle Tree์˜ Root์ž…๋‹ˆ๋‹ค.
+
+๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๊ธฐ ์ „์— **Merkle Proof๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฏผํŒ… ์ง€๊ฐ‘์„ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค**. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ [Merkle Proof ๊ฒ€์ฆ](#validate-a-merkle-proof)์„ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+๋˜ํ•œ SDK์˜ ๋„์›€ ์—†์ด ๋ช…๋ น์–ด๋ฅผ ๊ตฌ์„ฑํ•  ๊ณ„ํš์ด๋ผ๋ฉด ๋ฏผํŒ… ๋ช…๋ น์–ด์˜ ๋‚˜๋จธ์ง€ ๊ณ„์ •์— Allow List Proof PDA๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Candy Guard์˜ ํ”„๋กœ๊ทธ๋žจ ๋ฌธ์„œ](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard#allowlist)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+{% dialect-switcher title="Allow List ๊ฐ€๋“œ๋กœ ๋ฏผํŒ…" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+๋‹ค์Œ๊ณผ ๊ฐ™์ด `mintArgs` ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Allow List ๊ฐ€๋“œ์˜ ๋ฏผํŒ… ์„ค์ •์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { getMerkleRoot } from "@metaplex-foundation/mpl-candy-machine";
+
+const allowList = [
+  "Ur1CbWSGsXCdedknRbJsEk7urwAvu1uddmQv51nAnXB",
+  "GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS",
+  "AT8nPwujHAD14cLojTcB1qdBzA1VXnT6LVGuUd6Y73Cy",
+];
+
+mintV2(umi, {
+  // ...
+  mintArgs: {
+    allowList: some({ merkleRoot: getMerkleRoot(allowList) }),
+  },
+});
+```
+
+API ์ฐธ์กฐ: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintV2.html), [AllowListMintArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/AllowListMintArgs.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+_๊ฐ€๋“œ๊ฐ€ ํ• ๋‹น๋˜๋Š” ์ฆ‰์‹œ sugar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค - ๋”ฐ๋ผ์„œ ํŠน์ • ๋ฏผํŒ… ์„ค์ •์ด ์—†์Šต๋‹ˆ๋‹ค._
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Route ๋ช…๋ น์–ด
+
+Allow List route ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
+
+### Merkle Proof ๊ฒ€์ฆ
+
+_Path: `proof`_
+
+๋ฏผํŒ… ๋ช…๋ น์–ด์— ์ง์ ‘ Merkle Proof๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋Œ€์‹ , ๋ฏผํŒ… ์ง€๊ฐ‘์€ Allow List ๊ฐ€๋“œ์˜ route ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ [์‚ฌ์ „ ๊ฒ€์ฆ](/kr/candy-machine/mint#minting-with-pre-validation)์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์ด route ๋ช…๋ น์–ด๋Š” ์ œ๊ณต๋œ Merkle Proof๋กœ๋ถ€ํ„ฐ Merkle Root๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์œ ํšจํ•œ ๊ฒฝ์šฐ ๋ฏผํŒ… ์ง€๊ฐ‘์ด ํ—ˆ์šฉ ๋ชฉ๋ก์˜ ์ผ๋ถ€์ž„์„ ์ฆ๋ช…ํ•˜๋Š” ์ƒˆ๋กœ์šด PDA ๊ณ„์ •์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฏผํŒ…ํ•  ๋•Œ Allow List ๊ฐ€๋“œ๋Š” ์ง€๊ฐ‘์— ๋Œ€ํ•œ ๋ฏผํŒ…์„ ์Šน์ธํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด ์ด PDA ๊ณ„์ •์˜ ์กด์žฌ๋งŒ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋ฏผํŒ… ๋ช…๋ น์–ด ๋‚ด์—์„œ ์ง์ ‘ Merkle Proof๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์—†์„๊นŒ์š”? ๋‹จ์ˆœํžˆ ํฐ ํ—ˆ์šฉ ๋ชฉ๋ก์˜ ๊ฒฝ์šฐ Merkle Proof๊ฐ€ ์ƒ๋‹นํžˆ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŠน์ • ํฌ๊ธฐ ์ดํ›„์—๋Š” ์ด๋ฏธ ์ƒ๋‹นํ•œ ์–‘์˜ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฏผํŒ… ํŠธ๋žœ์žญ์…˜์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค์—์„œ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ํ—ˆ์šฉ ๋ชฉ๋ก์„ ํ•„์š”ํ•œ ๋งŒํผ ํฌ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+route ๋ช…๋ น์–ด์˜ ์ด ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ ์ธ์ˆ˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค:
+
+- **Path** = `proof`: route ๋ช…๋ น์–ด์—์„œ ์‹คํ–‰ํ•  ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
+- **Merkle Root**: ํ—ˆ์šฉ ๋ชฉ๋ก์„ ๋‚˜ํƒ€๋‚ด๋Š” Merkle Tree์˜ Root์ž…๋‹ˆ๋‹ค.
+- **Merkle Proof**: Merkle Root๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๊ฐ€๋“œ ์„ค์ •์— ์ €์žฅ๋œ Merkle Root์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๋Š” ์ค‘๊ฐ„ ํ•ด์‹œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
+- **Minter** (์„ ํƒ์‚ฌํ•ญ): ์ง€๋ถˆ์ž์™€ ๋™์ผํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„œ๋ช…์ž๋กœ์„œ์˜ ๋ฏผํ„ฐ ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ์ œ๊ณต๋  ๋•Œ, ์ด ๊ณ„์ •์€ ์ฆ๋ช…์ด ์œ ํšจํ•˜๋ ค๋ฉด ํ—ˆ์šฉ ๋ชฉ๋ก์˜ ์ผ๋ถ€์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ง€๊ฐ‘ ์‚ฌ์ „ ๊ฒ€์ฆ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+๋‹ค์Œ๊ณผ ๊ฐ™์ด `routeArgs` ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Allow List ๊ฐ€๋“œ์˜ "Proof" Route ์„ค์ •์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import {
+  getMerkleProof,
+  getMerkleRoot,
+} from "@metaplex-foundation/mpl-candy-machine";
+import { publicKey } from "@metaplex-foundation/umi";
+
+const allowList = [
+  "Ur1CbWSGsXCdedknRbJsEk7urwAvu1uddmQv51nAnXB",
+  "GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS",
+  "AT8nPwujHAD14cLojTcB1qdBzA1VXnT6LVGuUd6Y73Cy",
+];
+
+await route(umi, {
+  // ...
+  guard: "allowList",
+  routeArgs: {
+    path: "proof",
+    merkleRoot: getMerkleRoot(allowList),
+    merkleProof: getMerkleProof(allowList, publicKey(umi.identity)),
+  },
+}).sendAndConfirm(umi);
+```
+
+์ด์ œ `umi.identity` ์ง€๊ฐ‘์ด Candy Machine์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+API ์ฐธ์กฐ: [route](https://mpl-candy-machine.typedoc.metaplex.com/functions/route.html), [AllowListRouteArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/AllowListRouteArgs.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+_Sugar๋Š” "Proof" Route๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค._ 
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}

+ 137 - 0
src/pages/kr/candy-machine/guards/bot-tax.md

@@ -0,0 +1,137 @@
+---
+title: Bot Tax ๊ฐ€๋“œ
+metaTitle: Bot Tax ๊ฐ€๋“œ | Candy Machine
+description: "์œ ํšจํ•˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ๋ถ€๊ณผํ•  ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์„ธ๊ธˆ์ž…๋‹ˆ๋‹ค."
+---
+
+{% callout type="warning" %}
+์ผ๋ถ€ ์ง€๊ฐ‘(Solflare, Phantom ๋ฐ ๊ธฐํƒ€ ์ง€๊ฐ‘๋“ค)์€ ํ˜„์žฌ ํŠธ๋žœ์žญ์…˜์— Lighthouse ๋ช…๋ น์–ด๋ฅผ ์ž๋™์œผ๋กœ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด `lastInstruction`์ด `true`๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ Bot Tax ๊ฐ€๋“œ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
+
+์ง€๊ฐ‘ ์„ ํƒ์€ ์‚ฌ์šฉ์ž์˜ ๋ชซ์ด๋ฏ€๋กœ **Solflare๋‚˜ ์œ ์‚ฌํ•œ ์ง€๊ฐ‘์œผ๋กœ ๋ฏผํŒ…ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค**. ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์ง€๊ฐ‘์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ…ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋œ๋‹ค๋ฉด, ๊ฑฐ์ง“ ์–‘์„ฑ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด `lastInstruction`์„ `false`๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”.
+
+Bot Tax ๊ฐ€๋“œ๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์„ธ์š”.
+{% /callout %}
+
+## ๊ฐœ์š”
+
+**Bot Tax** ๊ฐ€๋“œ๋Š” ๋ด‡์ด NFT ๋ฏผํŒ…์„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์œ ํšจํ•˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๋ฒŒ๊ธˆ์„ ๋ถ€๊ณผํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธˆ์•ก์€ ๋ณดํ†ต ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ์ง„์ •ํ•œ ์‹ค์ˆ˜์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ๋ด‡์—๊ฒŒ ํ”ผํ•ด๋ฅผ ์ฃผ๋„๋ก ์ž‘๊ฒŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ด‡ ์„ธ๊ธˆ์€ Candy Machine ๊ณ„์ •์œผ๋กœ ์ „์†ก๋˜๋ฏ€๋กœ ๋ฏผํŒ…์ด ๋๋‚˜๋ฉด Candy Machine ๊ณ„์ •์„ ์‚ญ์ œํ•˜์—ฌ ์ด ์ž๊ธˆ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ๊ฐ€๋“œ๋Š” ์•ฝ๊ฐ„ ํŠน๋ณ„ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ€๋“œ์˜ ๋ฏผํŒ… ๋™์ž‘์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. Bot Tax๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ณ  ๋‹ค๋ฅธ ๊ฐ€๋“œ๊ฐ€ ๋ฏผํŒ… ๊ฒ€์ฆ์— ์‹คํŒจํ•  ๋•Œ, **ํŠธ๋žœ์žญ์…˜์€ ์„ฑ๊ณตํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์žฅํ•ฉ๋‹ˆ๋‹ค**. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์ง€๋งŒ NFT๋„ ๋ฏผํŒ…๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ด‡์—์„œ Candy Machine ๊ณ„์ •์œผ๋กœ ์ž๊ธˆ์„ ์ „์†กํ•˜๋ ค๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+๋˜ํ•œ Bot Tax ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ๋ช…๋ น์–ด๊ฐ€ ํŠธ๋žœ์žญ์…˜์˜ ๋งˆ์ง€๋ง‰ ๋ช…๋ น์–ด์˜€๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋Š” ๋ด‡์ด ๋ฏผํŒ… ํ›„์— ์•…์„ฑ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์„ธ๊ธˆ ์ง€๋ถˆ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+
+{% diagram  %}
+
+{% node %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Candy Machine Core Program" theme="dimmed" /%}
+{% /node %}
+
+{% node parent="candy-machine" y="100" x="22" %}
+{% node #candy-guard label="Candy Guard" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Candy Guard Program" theme="dimmed" /%}
+{% node #candy-guard-guards label="๊ฐ€๋“œ" theme="mint" z=1 /%}
+{% node #botTax label="botTax" /%}
+{% node #lamports label="- Lamports" /%}
+{% node #lastInstruction label="- Last Instruction" /%}
+{% node label="..." /%}
+{% /node %}
+
+{% node parent="candy-machine" x="700" %}
+  {% node #mint-candy-guard theme="pink" %}
+    ๋ฏผํŒ… from
+
+    _Candy Guard Program_
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-guard" y="-20" x="100" theme="transparent" %}
+  ์ ‘๊ทผ ์ œ์–ด
+{% /node %}
+
+{% node parent="mint-candy-guard" y="150" x="-8" %}
+  {% node #mint-candy-machine theme="pink" %}
+    ๋ฏผํŒ… from 
+    
+    _Candy Machine Program_
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-machine" y="-20" x="110" theme="transparent" %}
+  ๋ฏผํŒ… ๋กœ์ง
+{% /node %}
+
+{% node #nft parent="mint-candy-machine" y="120" x="76" theme="blue" %}
+  NFT
+{% /node %}
+{% edge from="mint-candy-machine" to="nft" path="straight" /%}
+
+{% edge from="candy-guard" to="candy-machine" /%}
+{% edge from="lamports" to="mint-candy-guard" arrow="none" dashed=true /%}
+{% node parent="lamports" y="-30" x="200" theme="transparent" %}
+๋‹ค๋ฅธ ๊ฐ€๋“œ๊ฐ€ ๊ฒ€์ฆ์— ์‹คํŒจํ•˜๋ฉด
+
+์ด ๊ธˆ์•ก์˜ SOL์„ ์ฒญ๊ตฌ
+{% /node %}
+{% edge from="lastInstruction" to="mint-candy-guard" arrow="none" dashed=true %}
+
+{% /edge %}
+{% node parent="lastInstruction" y="15" x="200" theme="transparent" %}
+๋ฏผํŒ… ๋ช…๋ น์–ด๊ฐ€ ํŠธ๋žœ์žญ์…˜์˜
+
+๋งˆ์ง€๋ง‰ ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ฏผํŒ…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค
+{% /node %}
+{% edge from="candy-guard-guards" to="guards" /%}
+{% edge from="mint-candy-guard" to="mint-candy-machine" path="straight" /%}
+
+
+{% /diagram %}
+
+## ๊ฐ€๋“œ ์„ค์ •
+
+Bot Tax ๊ฐ€๋“œ๋Š” ๋‹ค์Œ ์„ค์ •๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
+
+- **Lamports**: ์œ ํšจํ•˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์ฒญ๊ตฌํ•  SOL(๋˜๋Š” lamports) ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค. ์ง„์ •ํ•œ ์‹ค์ˆ˜๋ฅผ ํ•œ ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ์ƒ๋‹นํžˆ ์ž‘์€ ๊ธˆ์•ก์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก ๊ฒ€์ฆ๋„ ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **Last Instruction**: ๋ฏผํŒ… ๋ช…๋ น์–ด๊ฐ€ ํŠธ๋žœ์žญ์…˜์˜ ๋งˆ์ง€๋ง‰ ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹ ๋•Œ ๋ฏผํŒ…์„ ๊ธˆ์ง€ํ•˜๊ณ  ๋ด‡ ์„ธ๊ธˆ์„ ์ฒญ๊ตฌํ• ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋ด‡์œผ๋กœ๋ถ€ํ„ฐ ๋” ๋‚˜์€ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์ด๋ฅผ `true`๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Bot Tax ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+create(umi, {
+  // ...
+  guards: {
+    botTax: some({
+      lamports: sol(0.01),
+      lastInstruction: true,
+    }),
+  },
+});
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [BotTax](https://mpl-candy-machine.typedoc.metaplex.com/types/BotTax.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+config.json ํŒŒ์ผ์˜ guard ์„น์…˜์— ๋‹ค์Œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”: 
+
+```json
+"botTax" : {
+    "value": SOL value,
+    "lastInstruction": boolean
+}
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๋ฏผํŒ… ์„ค์ •
+
+_Bot Tax ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค._
+
+## Route ๋ช…๋ น์–ด
+
+_Bot Tax ๊ฐ€๋“œ๋Š” route ๋ช…๋ น์–ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค._

+ 162 - 0
src/pages/kr/candy-machine/guards/sol-payment.md

@@ -0,0 +1,162 @@
+---
+title: "Sol Payment ๊ฐ€๋“œ"
+metaTitle: Sol Payment ๊ฐ€๋“œ | Candy Machine
+description: "Sol Payment ๊ฐ€๋“œ๋Š” ๋ฏผํŒ…ํ•  ๋•Œ ์ง€๋ถˆ์ž์—๊ฒŒ SOL ๊ธˆ์•ก์„ ์ฒญ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค."
+---
+
+## ๊ฐœ์š”
+
+**Sol Payment** ๊ฐ€๋“œ๋Š” ๋ฏผํŒ…ํ•  ๋•Œ ์ง€๋ถˆ์ž์—๊ฒŒ SOL ๊ธˆ์•ก์„ ์ฒญ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. SOL ๊ธˆ์•ก๊ณผ ๋Œ€์ƒ ์ฃผ์†Œ ๋ชจ๋‘ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% diagram  %}
+
+{% node %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node theme="dimmed" %}
+์†Œ์œ ์ž: Candy Machine Core Program {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+
+{% node parent="candy-machine" y="100" x="20" %}
+{% node #candy-guard label="Candy Guard" theme="blue" /%}
+{% node theme="dimmed" %}
+์†Œ์œ ์ž: Candy Guard Program {% .whitespace-nowrap %}
+{% /node %}
+{% node #candy-guard-guards label="๊ฐ€๋“œ" theme="mint" z=1/%}
+{% node label="Sol Payment" /%}
+{% node #amount label="- ๊ธˆ์•ก" /%}
+{% node #destination label="- ๋Œ€์ƒ" /%}
+{% node label="..." /%}
+{% /node %}
+
+{% node parent="destination" x="270" y="-9" %}
+{% node #payer theme="indigo" %}
+๋Œ€์ƒ ์ง€๊ฐ‘ {% .whitespace-nowrap %}
+{% /node %}
+{% node theme="dimmed" %}
+์†Œ์œ ์ž: System Program {% .whitespace-nowrap %}
+{% /node %}
+{% /node %}
+
+{% node parent="candy-machine" x="600" %}
+  {% node #mint-candy-guard theme="pink" %}
+    ๋ฏผํŒ… from
+
+    _Candy Guard Program_{% .whitespace-nowrap %}
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-guard" y="-20" x="100" theme="transparent" %}
+  ์ ‘๊ทผ ์ œ์–ด
+{% /node %}
+
+{% node parent="mint-candy-guard" #mint-candy-machine y="150" x="-8" %}
+  {% node theme="pink" %}
+    ๋ฏผํŒ… from 
+    
+    _Candy Machine Program_{% .whitespace-nowrap %}
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-machine" y="-20" x="140" theme="transparent" %}
+  ๋ฏผํŒ… ๋กœ์ง
+{% /node %}
+
+{% node #nft parent="mint-candy-machine" y="140" x="72" theme="blue" %}
+  NFT
+{% /node %}
+{% edge from="mint-candy-machine" to="nft" path="straight" /%}
+
+{% edge from="candy-guard" to="candy-machine" path="straight" /%}
+{% edge from="destination" to="payer" arrow="none" dashed=true /%}
+{% edge from="mint-candy-guard" to="payer" %}
+์ง€๋ถˆ์ž๋กœ๋ถ€ํ„ฐ
+
+SOL ์ „์†ก
+{% /edge %}
+{% edge from="mint-candy-guard" to="mint-candy-machine" /%}
+
+{% /diagram %}
+
+## ๊ฐ€๋“œ ์„ค์ •
+
+Sol Payment ๊ฐ€๋“œ๋Š” ๋‹ค์Œ ์„ค์ •๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
+
+- **Lamports**: ์ง€๋ถˆ์ž์—๊ฒŒ ์ฒญ๊ตฌํ•  SOL(๋˜๋Š” lamports) ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค.
+- **Destination**: ์ด ๊ฐ€๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒฐ์ œ๋ฅผ ๋ฐ›์„ ์ง€๊ฐ‘์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Sol Payment ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+์ด ์˜ˆ์‹œ์—์„œ๋Š” ํ˜„์žฌ identity๋ฅผ ๋Œ€์ƒ ์ง€๊ฐ‘์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+
+```ts
+create(umi, {
+  // ...
+  guards: {
+    solPayment: some({
+      lamports: sol(1.5),
+      destination: umi.identity.publicKey,
+    }),
+  },
+});
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [SolPayment](https://mpl-candy-machine.typedoc.metaplex.com/types/SolPayment.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+config.json ํŒŒ์ผ์˜ guard ์„น์…˜์— ๋‹ค์Œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”:
+
+```json
+"solPayment": {
+    "value": 1,
+    "destination": "<PUBKEY>"
+}
+```
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๋ฏผํŒ… ์„ค์ •
+
+Sol Payment ๊ฐ€๋“œ๋Š” ๋‹ค์Œ ๋ฏผํŒ… ์„ค์ •๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
+
+- **Destination**: ์ด ๊ฐ€๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒฐ์ œ๋ฅผ ๋ฐ›์„ ์ง€๊ฐ‘์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
+
+SDK์˜ ๋„์›€ ์—†์ด ๋ช…๋ น์–ด๋ฅผ ๊ตฌ์„ฑํ•  ๊ณ„ํš์ด๋ผ๋ฉด, ์ด๋Ÿฌํ•œ ๋ฏผํŒ… ์„ค์ •๋“ค์„ ๋ช…๋ น์–ด ์ธ์ˆ˜์™€ ๋‚˜๋จธ์ง€ ๊ณ„์ •์˜ ์กฐํ•ฉ์œผ๋กœ ์ œ๊ณตํ•ด์•ผ ํ•จ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Candy Guard์˜ ํ”„๋กœ๊ทธ๋žจ ๋ฌธ์„œ](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard#solpayment)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+{% dialect-switcher title="Sol Payment ๊ฐ€๋“œ๋กœ ๋ฏผํŒ…" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+๋‹ค์Œ๊ณผ ๊ฐ™์ด `mintArgs` ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Sol Payment ๊ฐ€๋“œ์˜ ๋ฏผํŒ… ์„ค์ •์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+mintV2(umi, {
+  // ...
+  mintArgs: {
+    solPayment: some({ destination: treasury }),
+  },
+});
+```
+
+API ์ฐธ์กฐ: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintV2.html), [SolPaymentMintArgs](https://mpl-candy-machine.typedoc.metaplex.com/types/SolPaymentMintArgs.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+_๊ฐ€๋“œ๊ฐ€ ํ• ๋‹น๋˜๋Š” ์ฆ‰์‹œ sugar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค - ๋”ฐ๋ผ์„œ ํŠน์ • ๋ฏผํŒ… ์„ค์ •์ด ์—†์Šต๋‹ˆ๋‹ค._
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Route ๋ช…๋ น์–ด
+
+_Sol Payment ๊ฐ€๋“œ๋Š” route ๋ช…๋ น์–ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค._

+ 114 - 0
src/pages/kr/candy-machine/guards/start-date.md

@@ -0,0 +1,114 @@
+---
+title: "Start Date ๊ฐ€๋“œ"
+metaTitle: Start Date ๊ฐ€๋“œ | Candy Machine
+description: "Start Date ๊ฐ€๋“œ๋Š” ๋ฏผํŒ…์˜ ์‹œ์ž‘ ๋‚ ์งœ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค."
+---
+
+## ๊ฐœ์š”
+
+**Start Date** ๊ฐ€๋“œ๋Š” ๋ฏผํŒ…์˜ ์‹œ์ž‘ ๋‚ ์งœ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‚ ์งœ ์ด์ „์—๋Š” ๋ฏผํŒ…์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+{% diagram  %}
+
+{% node %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Candy Machine Core Program" theme="dimmed" /%}
+{% /node %}
+
+{% node parent="candy-machine" y="100" x="22" %}
+{% node #candy-guard label="Candy Guard" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Candy Guard Program" theme="dimmed" /%}
+{% node #candy-guard-guards label="๊ฐ€๋“œ" theme="mint"/%}
+{% node #startDate label="startDate" /%}
+{% node #date label="- ๋‚ ์งœ" /%}
+{% node label="..." /%}
+{% /node %}
+
+{% node parent="candy-machine" #mint-candy-guard x="500" %}
+  {% node theme="pink" %}
+    ๋ฏผํŒ… from
+
+    _Candy Guard Program_
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-guard" y="-20" x="100" theme="transparent" %}
+  ์ ‘๊ทผ ์ œ์–ด
+{% /node %}
+
+{% node parent="mint-candy-guard" #mint-candy-machine y="150" x="-8" %}
+  {% node theme="pink" %}
+    ๋ฏผํŒ… from 
+    
+    _Candy Machine Program_
+  {% /node %}
+{% /node %}
+{% node parent="mint-candy-machine" y="-20" x="110" theme="transparent" %}
+  ๋ฏผํŒ… ๋กœ์ง
+{% /node %}
+
+{% node #nft parent="mint-candy-machine" y="120" x="70" theme="blue" %}
+  NFT
+{% /node %}
+{% edge from="mint-candy-machine" to="nft" path="straight" /%}
+
+{% edge from="candy-guard" to="candy-machine" /%}
+{% edge from="date" to="mint-candy-guard" arrow="none" dashed=true %}
+ํ•ด๋‹น ๋‚ ์งœ ์ด์ „์—๋Š”
+
+๋ฏผํŒ…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค
+{% /edge %}
+
+{% edge from="candy-guard-guards" to="guards" /%}
+{% edge from="mint-candy-guard" to="mint-candy-machine" path="straight" /%}
+
+{% /diagram %}
+
+## ๊ฐ€๋“œ ์„ค์ •
+
+Start Date ๊ฐ€๋“œ๋Š” ๋‹ค์Œ ์„ค์ •์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
+
+- **Date**: ๋ฏผํŒ…์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๊ธฐ์ค€ ๋‚ ์งœ์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Start Date ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+import { dateTime } from "@metaplex-foundation/umi";
+
+create(umi, {
+  // ...
+  guards: {
+    startDate: some({ date: dateTime("2022-01-24T15:30:00.000Z") }),
+  },
+});
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [StartDate](https://mpl-candy-machine.typedoc.metaplex.com/types/StartDate.html)
+
+{% /totem %}
+{% /dialect %}
+{% dialect title="Sugar" id="sugar" %}
+{% totem %}
+
+config.json ํŒŒ์ผ์˜ guard ์„น์…˜์— ๋‹ค์Œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”:
+
+```json
+"startDate" : {
+    "date": "string",
+}
+```
+
+๋‚ ์งœ๋Š” RFC 3339 ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹์€ "yyyy-mm-ddThh:mm:ssZ"์ด๋ฉฐ, T๋Š” ์ „์ฒด ๋‚ ์งœ์™€ ์ „์ฒด ์‹œ๊ฐ„ ์‚ฌ์ด์˜ ๊ตฌ๋ถ„์ž์ด๊ณ  Z๋Š” UTC๋กœ๋ถ€ํ„ฐ์˜ ์‹œ๊ฐ„๋Œ€ ์˜คํ”„์…‹์ž…๋‹ˆ๋‹ค(UTC ์‹œ๊ฐ„์˜ ๊ฒฝ์šฐ Z ๋˜๋Š” +00:00์„ ์‚ฌ์šฉ).
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๋ฏผํŒ… ์„ค์ •
+
+_Start Date ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค._
+
+## Route ๋ช…๋ น์–ด
+
+_Start Date ๊ฐ€๋“œ๋Š” route ๋ช…๋ น์–ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค._

+ 331 - 0
src/pages/kr/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine.md

@@ -0,0 +1,331 @@
+---
+title: Candy Machine์œผ๋กœ Solana์—์„œ Token Metadata NFT ์ปฌ๋ ‰์…˜ ์ƒ์„ฑํ•˜๊ธฐ
+metaTitle: Candy Machine์œผ๋กœ Solana์—์„œ Token Metadata NFT ์ปฌ๋ ‰์…˜ ์ƒ์„ฑํ•˜๊ธฐ | Candy Machine
+description: Candy Machine์„ ์‚ฌ์šฉํ•˜์—ฌ Solana ๋ธ”๋ก์ฒด์ธ์—์„œ NFT ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+---
+
+Solana์—์„œ NFT ์ปฌ๋ ‰์…˜์„ ์ถœ์‹œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Sugar CLI ๋„๊ตฌ ํ‚คํŠธ๊ฐ€ ๋” ๋ณต์žกํ•œ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ ๋‹จ๊ณ„๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ Solana ๋ธ”๋ก์ฒด์ธ์—์„œ Candy Machine์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋™ํ™”๋œ ์ถœ์‹œ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+## ์‚ฌ์ „ ์ค€๋น„ ์‚ฌํ•ญ
+
+- Solana CLI๊ฐ€ ์„ค์น˜๋˜๊ณ  ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [์„ค์น˜](https://docs.solanalabs.com/cli/install)
+  - CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ง€๊ฐ‘
+  - ๋ฉ”์ธ๋„ท ๋˜๋Š” ๋ฐ๋ธŒ๋„ท SOL๋กœ ์ง€๊ฐ‘์— ์ž๊ธˆ์ด ์žˆ์–ด์•ผ ํ•จ
+
+## ์ดˆ๊ธฐ ์„ค์ •
+
+### Sugar ์„ค์น˜
+
+#### Mac/Linux
+
+```
+bash <(curl -sSf https://sugar.metaplex.com/install.sh)
+```
+
+#### Windows
+
+๋‹ค์Œ URL์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ ์‹คํ–‰ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ Sugar๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```
+https://github.com/metaplex-foundation/winstaller/releases/latest/download/winstaller.exe
+```
+
+๋”๋ธ” ํด๋ฆญ์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”. ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•œ ํŒ์—… ๋ฉ”์‹œ์ง€ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด "์ถ”๊ฐ€ ์ •๋ณด"๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ "์‹คํ–‰"์„ ํด๋ฆญํ•ด ๋ณด์„ธ์š”.
+
+## ์—์…‹ ์ค€๋น„
+
+NFT๋Š” `์ด๋ฏธ์ง€`์™€ `๋ฉ”ํƒ€๋ฐ์ดํ„ฐ`๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๋ถ€๋ถ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
+
+์ด๋ฏธ์ง€๋Š” ์ง€๊ฐ‘๊ณผ ๋งˆ์ผ“์—์„œ ๋ณด์—ฌ์ง€๊ณ  ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด๋ฉฐ, `๋ฉ”ํƒ€๋ฐ์ดํ„ฐ`์—๋Š” `์ด๋ฆ„`, `์ด๋ฏธ์ง€`๋ฅผ ์ฐพ์„ ๋งํฌ, NFT์˜ `์†์„ฑ` ๋“ฑ ๋ธ”๋ก์ฒด์ธ์—์„œ ํ•ด๋‹น NFT์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ด€๋ จ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
+
+### Assets ํด๋”
+
+Sugar์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, Sugar๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ `assets` ํด๋”๋ฅผ ์ฐพ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.
+
+์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋ชจ๋‘ `assets` ํด๋”์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+### ํŒŒ์ผ ๋ช…๋ช…
+
+์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ JSON ํŒŒ์ผ์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ฆ๋ถ„ ์ธ๋ฑ์Šค ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์ธ๋ฑ์Šค๊ฐ€ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ `์ด๋ฏธ์ง€`์™€ `๋ฉ”ํƒ€๋ฐ์ดํ„ฐ` ํด๋”์— ๋™์ผํ•œ ์ˆ˜์˜ ํŒŒ์ผ์ด ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉด ํด๋” ๊ฒ€์ฆ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
+
+```
+assets/
+โ”œโ”€ 0.png
+โ”œโ”€ 0.json
+โ”œโ”€ 1.png
+โ”œโ”€ 1.json
+โ”œโ”€ 2.png
+โ”œโ”€ 2.json
+โ”œโ”€ ...
+```
+
+### ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ JSON
+
+{% partial file="token-standard-full.md" /%}
+
+```json
+{
+  "name": "My NFT #1",
+  "description": "My NFT Collection",
+  "image": "https://arweave.net/26YdhY_eAzv26YdhY1uu9uiA3nmDZYwP8MwZAultcE?ext=jpeg",
+  "external_url": "https://example.com",
+  "attributes": [
+    {
+      "trait_type": "trait1",
+      "value": "value1"
+    },
+    {
+      "trait_type": "trait2",
+      "value": "value2"
+    }
+  ],
+  "properties": {
+    "files": [
+      {
+        "uri": "https://www.arweave.net/abcd5678?ext=png",
+        "type": "image/png"
+      }
+    ],
+    "category": "image"
+  }
+}
+```
+
+### ์˜ˆ์‹œ ์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
+
+Candy Machine์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์‹œ ์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ GitHub์—์„œ ๋…น์ƒ‰ `code` ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  `zip ํ˜•์‹`์„ ์„ ํƒํ•˜์—ฌ zip ํ˜•์‹์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+[https://github.com/metaplex-foundation/example-candy-machine-assets](https://github.com/metaplex-foundation/example-candy-machine-assets)
+
+๋˜๋Š” git์ด ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์—์…‹์„ ์‹œ์Šคํ…œ์— ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ์ œ๊ณต๋œ ๋งํฌ์—์„œ ์••์ถ•๋œ ์‚ฌ๋ณธ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+
+```
+git clone https://github.com/metaplex-foundation/example-candy-machine-assets.git
+```
+
+### ์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ธฐ
+
+๋ ˆ์ด์–ด์—์„œ ์•„ํŠธ์›Œํฌ ์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ƒ์„ฑ๊ธฐ์— ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์™€ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ฉด ์ฃผ์–ด์ง„ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ x๊ฐœ์˜ ์—์…‹ ์ด๋ฏธ์ง€์™€ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์กฐํ•ฉ์„ ์ƒ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ์™€ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+| ์ด๋ฆ„                                                        | ํƒ€์ž…   | ๋‚œ์ด๋„ | ์š”๊ตฌ์‚ฌํ•ญ | ๋ฌด๋ฃŒ |
+| ----------------------------------------------------------- | ------ | ---------- | ------------ | ---- |
+| [nftchef](https://github.com/nftchef/art-engine)            | ์Šคํฌ๋ฆฝํŠธ | โญโญโญโญ   | JS ์ง€์‹ | โœ…   |
+| [hashlips](https://github.com/HashLips/hashlips_art_engine) | ์Šคํฌ๋ฆฝํŠธ | โญโญโญโญ   | JS ์ง€์‹ | โœ…   |
+| [Nft Art Generator](https://nft-generator.art/)             | ์›น UI | โญโญ       |              |      |
+| [bueno](https://bueno.art/generator)                        | ์›น UI | ์•Œ ์ˆ˜ ์—†์Œ    |              |      |
+
+### ์ปฌ๋ ‰์…˜ ์„ธ๋ถ€์‚ฌํ•ญ
+
+์ปฌ๋ ‰์…˜ ์ƒ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” NFT ์—์…‹๊ณผ ๊ฐ™์€ ์„ธ๋ถ€์‚ฌํ•ญ์ด ํ•„์š”ํ•œ๋ฐ, ์ด๋Š” `์ด๋ฏธ์ง€` ํŒŒ์ผ๊ณผ `๋ฉ”ํƒ€๋ฐ์ดํ„ฐ` json ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด `assets/` ํด๋”์˜ ๋ฃจํŠธ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค:
+
+```
+assets/
+โ”œโ”€ collection.jpg
+โ”œโ”€ collection.json
+โ”œโ”€ 0.png
+โ”œโ”€ 0.json
+โ”œโ”€ 1.png
+โ”œโ”€ 1.json
+โ”œโ”€ 2.png
+โ”œโ”€ 2.json
+โ”œโ”€ ...
+```
+
+์ปฌ๋ ‰์…˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ NFT ์—์…‹ json ํŒŒ์ผ๊ณผ ๋™์ผํ•œ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ `attributes` ํ•„๋“œ ์ž‘์„ฑ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```json
+{
+  "name": "My Collection",
+  "description": "This is My Nft Collection",
+  "image": "collection.jpg",
+  "external_url": "https://example.com",
+  "properties": {
+    "files": [
+      {
+        "uri": "https://example.com/1.jpg",
+        "type": "image/jpg"
+      }
+    ],
+    "category": "image"
+  }
+}
+```
+
+## Sugar
+
+๊ธฐ๋ณธ์ ์œผ๋กœ **Sugar**๋Š” Solana CLI์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ๊ฐ’์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค:
+
+- Solana CLI์—์„œ ์„ค์ •ํ•œ ์ง€๊ฐ‘
+- Solana CLI์—์„œ ์„ค์ •ํ•œ RPC URL
+
+### Sugar Launch
+
+์—์…‹ ํด๋”๊ฐ€ ์ค€๋น„๋˜๋ฉด **Sugar**๋กœ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ํ•  ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น์–ด๋Š”
+
+```shell
+sugar launch
+```
+
+์ด๋Š” Candy Machine ๋ฐฐํฌ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด **Sugar**์˜ CLI ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
+
+`sugar`๊ฐ€ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๋ผ๊ณ  ์š”์ฒญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+๊ทธ๋Ÿฐ ๋‹ค์Œ ์ž‘์„ฑํ•  ๋‹ค์Œ ์งˆ๋ฌธ๋“ค์ด ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค
+
+```
+Found xx file pairs in "assets". Is this how many NFTs you will have in your candy machine?
+```
+
+```
+Found symbol "xxxx" in your metadata file. Is this value correct?
+```
+
+```
+Found value xxx for seller fee basis points in your metadata file. Is this value correct?
+```
+
+```
+Do you want to use a sequential mint index generation? We recommend you choose no.
+```
+
+```
+How many creator wallets do you have? (max limit of 4)
+```
+
+์ฐฝ์ž‘์ž ์ง€๊ฐ‘์€ ๋กœ์—ดํ‹ฐ๋ฅผ ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•˜๋ฉด ๊ฐ ์ง€๊ฐ‘์— ๋Œ€ํ•œ `์ฃผ์†Œ`์™€ `์ง€๋ถ„` ๊ธˆ์•ก์„ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
+
+```
+Which extra features do you want to use? (use [SPACEBAR] to select options you want and hit [ENTER] when done)
+```
+
+์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” `hidden settings`๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‘๊ณ  `enter`๋ฅผ ๋ˆŒ๋Ÿฌ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+```
+What upload method do you want to use?
+```
+
+์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” `Bundlr`์„ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+```
+Do you want your NFTs to remain mutable? We HIGHLY recommend you choose yes.
+```
+
+๋‚˜์ค‘์— ํ•„์š”ํ•˜๋ฉด NFT๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ์˜ต์…˜์—์„œ ์˜ˆ(y)๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
+
+Sugar๋Š” ์ด์ œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+- ์ปฌ๋ ‰์…˜ NFT ์ƒ์„ฑ ๋ฐ ์—…๋กœ๋“œ
+- Irys (์ด์ „ Bundlr)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Arweave์— ์—์…‹ ์—…๋กœ๋“œ
+- Candy Machine ์ƒ์„ฑ
+
+์„ฑ๊ณตํ•˜๋ฉด ๋งํฌ ๋‚ด์— ์ž์‹ ์˜ Candy Machine ์ฃผ์†Œ๊ฐ€ ํฌํ•จ๋œ ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
+
+```
+https://www.solaneyes.com/address/Beag81WvAPUCeFpJ2qFnvd2f1CFCpQBf3abTJXA1fH9o?cluster=devnet
+```
+
+์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! Solana์—์„œ Candy Machine์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
+์œ„ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์˜จ์ฒด์ธ์—์„œ Candy Machine ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+### ๊ฐ€๋“œ์™€ ๊ทธ๋ฃน์œผ๋กœ Candy Machine ์—…๋ฐ์ดํŠธ
+
+ํ˜„์žฌ Candy Machine์—๋Š” ๊ฐ€๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Candy Guard๊ฐ€ Candy Machine์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด **๋ฏผํŠธ ๊ถŒํ•œ**(๋‹น์‹ )๋งŒ Candy Machine์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Candy Machine์— ๊ฐ€๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ผ๋ จ์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ณต๊ฐœ์ ์œผ๋กœ Candy Machine์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์—๊ฒŒ 1 SOL์„ ์ฒญ๊ตฌํ•˜๋ฉด์„œ ๊ณต๊ฐœ์ ์œผ๋กœ Candy Machine์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด **Sol Payment Guard**๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+#### ๊ฐ€๋“œ ์ถ”๊ฐ€ (SOL Payment)
+
+Candy Machine์— Sol Payment Guard๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ `sugar launch`๋ฅผ ์‹คํ–‰ํ•œ ํด๋”์˜ ๋ฃจํŠธ์— Sugar๊ฐ€ ์ƒ์„ฑํ•œ `config.json` ํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ตฌ์„ฑ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค:
+
+```json
+{
+  "tokenStandard": "nft",
+  "number": 16,
+  "symbol": "NUMBERS",
+  "sellerFeeBasisPoints": 500,
+  "isMutable": true,
+  "isSequential": false,
+  "creators": [
+    {
+      "address": "B1kwbSHRiXFPYvNbuhCX92ibngzxdmfBzfaJYuy9WYp5",
+      "share": 100
+    }
+  ],
+  "uploadMethod": "bundlr",
+  "ruleSet": null,
+  "awsConfig": null,
+  "sdriveApiKey": null,
+  "nftStorageAuthToken": null,
+  "shdwStorageAccount": null,
+  "pinataConfig": null,
+  "hiddenSettings": null,
+  "guards": null,
+  "maxEditionSupply": null
+}
+```
+
+์—ฌ๊ธฐ์„œ ๊ตฌ์„ฑ ํŒŒ์ผ ๋ ๋ถ€๋ถ„์˜ `guards` ํ•„๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  SOL Payment๊ฐ€ ์ „์†ก๋  ๋Œ€์ƒ ์ฃผ์†Œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```json
+"guards": {
+    "default": {
+        "solPayment": {
+            "value": 1,
+            "destination": "11111111111111111111111111111111"
+        }
+    }
+},
+```
+
+`config.json`์— ๊ฐ€๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:
+
+```
+sugar guard add
+```
+
+์ด์ „์— ์ด๋ฏธ Candy Guard๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด ๋Œ€์‹  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```
+sugar guard update
+```
+
+์ด๋Š” Candy Guard๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ๋ณธ ๊ฐ€๋“œ ๋ชฉ๋ก์— **SOL Payment Guard**๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+
+## Candy Machine ๋ณด๊ธฐ
+
+ํ„ฐ๋ฏธ๋„์—์„œ Candy Machine ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+
+```shell
+sugar show
+```
+
+์ด๋Š” ์‚ฝ์ž…๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ œ์™ธํ•œ ๋ชจ๋“  Candy Machine๊ณผ ๊ฐ€๋“œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
+
+## Candy Guard ๋ณด๊ธฐ
+
+ํ„ฐ๋ฏธ๋„์—์„œ Candy Machine ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+
+```shell
+sugar guard show
+```
+
+์ด๋Š” ์‚ฝ์ž…๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ œ์™ธํ•œ ๋ชจ๋“  Candy Machine๊ณผ ๊ฐ€๋“œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
+
+## ๋‹ค์Œ ๋‹จ๊ณ„
+
+์ด์ œ ์ž‘๋™ํ•˜๋Š” Candy Machine์ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์ด Candy Machine์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น UI์—์„œ Candy Machine์„ ํ˜ธ์ŠคํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์ž์ฒด UI๋ฅผ ์ƒ์„ฑํ•˜๊ณ  `umi` ํด๋ผ์ด์–ธํŠธ ๋ž˜ํผ์™€ `mpl-candy-machine` SDK๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋ฆฌ ๊ตฌ์ถ•๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ UI๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Candy Machine์˜ ์„ธ๋ถ€ ์ •๋ณด๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+### UI ๊ฐœ๋ฐœ ๋ฆฌ์†Œ์Šค
+
+- nextJS/React ๊ถŒ์žฅ
+- Metaplex Umi - [https://developers.metaplex.com/umi](https://developers.metaplex.com/umi)
+- Metaplex Candy Machine SDK - [https://developers.metaplex.com/candy-machine](https://developers.metaplex.com/candy-machine)
+
+### ์ถ”๊ฐ€ ์ฝ์„๊ฑฐ๋ฆฌ
+- [Sugar CLI ๋ฌธ์„œ](/kr/candy-machine/sugar)

+ 218 - 0
src/pages/kr/candy-machine/index.md

@@ -0,0 +1,218 @@
+---
+title: ๊ฐœ์š”
+metaTitle: ๊ฐœ์š” | Candy Machine
+description: Candy Machine์˜ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+---
+
+Metaplex Protocol **Candy Machine**์€ Solana์—์„œ ๊ณต์ •ํ•œ NFT ์ปฌ๋ ‰์…˜ ์ถœ์‹œ๋ฅผ ์œ„ํ•œ ์„ ๋„์ ์ธ ๋ฏผํŒ… ๋ฐ ๋ฐฐํฌ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด Candy Machine์„ ์ฐฝ์ž‘์ž๊ฐ€ ๋จผ์ € ๋กœ๋“œํ•˜๊ณ  ๊ตฌ๋งค์ž๊ฐ€ ์–ธ๋กœ๋“œํ•˜๋Š” ์ž„์‹œ ๊ตฌ์กฐ๋ฌผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฐฝ์ž‘์ž๋“ค์€ ์•ˆ์ „ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ๋””์ง€ํ„ธ ์ž์‚ฐ์„ ์˜จ์ฒด์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+์ด ์ด๋ฆ„์€ ๊ธฐ๊ณ„์  ํฌ๋žญํฌ๋ฅผ ํ†ตํ•ด ๋™์ „์„ ๋„ฃ๊ณ  ์‚ฌํƒ•์„ ๋‚˜๋ˆ„์–ด์ฃผ๋Š” ์žํŒ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์‚ฌํƒ•์€ NFT์ด๊ณ  ์ง€๋ถˆ์€ SOL ๋˜๋Š” SPL ํ† ํฐ์ž…๋‹ˆ๋‹ค.
+
+{% figure src="/assets/candy-machine/candy-machine-photo.png" alt="์ „ํ˜•์ ์ธ ์‚ฌํƒ• ์žํŒ๊ธฐ์˜ AI ์ƒ์„ฑ ์‚ฌ์ง„" caption="์ „ํ˜•์ ์ธ ์‚ฌํƒ• ์žํŒ๊ธฐ" /%}
+
+{% quick-links %}
+
+{% quick-link title="์‹œ์ž‘ํ•˜๊ธฐ" icon="InboxArrowDown" href="/kr/candy-machine/getting-started" description="์›ํ•˜๋Š” ์–ธ์–ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ๊ณ  Candy Machine์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+{% quick-link title="API ์ฐธ์กฐ" icon="CodeBracketSquare" href="https://mpl-candy-machine.typedoc.metaplex.com/" target="_blank" description="ํŠน์ •ํ•œ ๋‚ด์šฉ์„ ์ฐพ๊ณ  ์žˆ๋‚˜์š”? ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค." /%}
+{% /quick-links %}
+
+{% callout %}
+์ด ๋ฌธ์„œ๋Š” Metaplex Token Metadata NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Candy Machine V3์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. Core Asset์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด [Core Candy Machine](/kr/core-candy-machine)์„ ์ฐธ์กฐํ•˜์„ธ์š”.
+{% /callout %}
+
+## ์†Œ๊ฐœ
+
+2022๋…„ 9์›”๊นŒ์ง€ Solana์˜ ๋ชจ๋“  NFT ์ค‘ 78%๊ฐ€ Metaplex์˜ Candy Machine์„ ํ†ตํ•ด ๋ฏผํŒ…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Solana ์ƒํƒœ๊ณ„์—์„œ ์ž˜ ์•Œ๋ ค์ง„ ๋Œ€๋ถ€๋ถ„์˜ NFT ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์ž…๋‹ˆ๋‹ค.
+
+- SOL, NFT ๋˜๋Š” ๋ชจ๋“  Solana ํ† ํฐ์œผ๋กœ ์ง€๋ถˆ ๋ฐ›๊ธฐ.
+- ์‹œ์ž‘/์ข…๋ฃŒ ๋‚ ์งœ, ๋ฏผํŒ… ์ œํ•œ, ์ œ3์ž ์„œ๋ช…์ž ๋“ฑ์„ ํ†ตํ•ด ์ถœ์‹œ๋ฅผ ์ œํ•œ.
+- ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋ด‡ ์„ธ๊ธˆ๊ณผ Captcha์™€ ๊ฐ™์€ ๊ฒŒ์ดํŠธํ‚คํผ๋ฅผ ํ†ตํ•ด ๋ด‡์œผ๋กœ๋ถ€ํ„ฐ ์ถœ์‹œ๋ฅผ ๋ณดํ˜ธ.
+- ํŠน์ • NFT/ํ† ํฐ ๋ณด์œ ์ž ๋˜๋Š” ์„ ๋ณ„๋œ ์ง€๊ฐ‘ ๋ชฉ๋ก์œผ๋กœ ๋ฏผํŒ… ์ œํ•œ.
+- ๋‹ค์–‘ํ•œ ๊ทœ์น™ ์„ธํŠธ๋กœ ์—ฌ๋Ÿฌ ๋ฏผํŒ… ๊ทธ๋ฃน ์ƒ์„ฑ.
+- ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉด์„œ ์ถœ์‹œ ํ›„ NFT ๊ณต๊ฐœ.
+- ๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ!
+
+๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? Candy Machine์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!
+
+## Candy Machine์˜ ์ƒ๋ช…์ฃผ๊ธฐ
+
+์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ฐฝ์ž‘์ž๊ฐ€ ์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•˜๊ณ  ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node #action label="1. ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ" theme="pink" /%}
+{% node parent="action" x="250" %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์„ค์ •" /%}
+{% /node %}
+{% edge from="action" to="candy-machine" path="straight" /%}
+{% /diagram %}
+
+์ƒ์„ฑ๋œ Candy Machine์€ ์ž์ฒด ์„ค์ •์„ ์ถ”์ ํ•˜์—ฌ ๋ชจ๋“  NFT๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฏผํŒ…๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด Candy Machine์—์„œ ๋ฏผํŒ…๋œ ๋ชจ๋“  NFT์— ํ• ๋‹น๋  `creators` ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ ์ผ๋ถ€ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ Candy Machine์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: [Candy Machine ์„ค์ •](/kr/candy-machine/settings) ๋ฐ [Candy Machine ๊ด€๋ฆฌ](/kr/candy-machine/manage).
+
+๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ํ•ด๋‹น Candy Machine์—์„œ ์–ด๋–ค NFT๊ฐ€ ๋ฏผํŒ…๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, Candy Machine์ด ๋กœ๋“œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” Candy Machine์— ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node #action-1 label="1. ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ" theme="pink" /%}
+{% node #action-2 label="2. ์•„์ดํ…œ ์‚ฝ์ž…" parent="action-1" y="50" theme="pink" /%}
+{% node parent="action-1" x="250" %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์„ค์ •" /%}
+{% node #item-1 label="์•„์ดํ…œ 1" /%}
+{% node #item-2 label="์•„์ดํ…œ 2" /%}
+{% node #item-3 label="์•„์ดํ…œ 3" /%}
+{% node #item-rest label="..." /%}
+{% /node %}
+{% edge from="action-1" to="candy-machine" path="straight" /%}
+{% edge from="action-2" to="item-1" /%}
+{% edge from="action-2" to="item-2" /%}
+{% edge from="action-2" to="item-3" /%}
+{% edge from="action-2" to="item-rest" /%}
+{% /diagram %}
+
+๊ฐ ์•„์ดํ…œ์€ ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:
+
+- `name`: NFT์˜ ์ด๋ฆ„.
+- `uri`: NFT์˜ [JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ](https://developers.metaplex.com/token-metadata/token-standard#the-non-fungible-standard)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” URI. ์ด๋Š” JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์˜จ์ฒด์ธ(์˜ˆ: Arweave, IPFS) ๋˜๋Š” ์˜คํ”„์ฒด์ธ(์˜ˆ: AWS, ์ž์ฒด ์„œ๋ฒ„) ์Šคํ† ๋ฆฌ์ง€ ์ œ๊ณต์—…์ฒด๋ฅผ ํ†ตํ•ด ์—…๋กœ๋“œ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค๋ฅธ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ชจ๋“  NFT ๊ฐ„์— ๊ณต์œ ๋˜๋ฏ€๋กœ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด Candy Machine์˜ ์„ค์ •์— ์ง์ ‘ ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์•„์ดํ…œ ์‚ฝ์ž…](/kr/candy-machine/insert-items)์„ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+์ด ์‹œ์ ์—์„œ ์‹ค์ œ NFT๋Š” ์•„์ง ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ๋ฏผํŒ… ์‹œ **์˜จ๋””๋งจ๋“œ๋กœ NFT๋ฅผ ์ƒ์„ฑ**ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋กœ Candy Machine์„ ๋กœ๋“œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node #action-1 label="1. ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ" theme="pink" /%}
+{% node #action-2 label="2. ์•„์ดํ…œ ์‚ฝ์ž…" parent="action-1" y="50" theme="pink" /%}
+
+{% node parent="action-1" x="250" %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์„ค์ •" /%}
+{% node #item-1 label="์•„์ดํ…œ 1" /%}
+{% node #item-2 label="์•„์ดํ…œ 2" /%}
+{% node #item-3 label="์•„์ดํ…œ 3" /%}
+{% node #item-rest label="..." /%}
+{% /node %}
+
+{% node parent="candy-machine" x="180" y="20" %}
+{% node #mint label="3. ๋ฏผํŒ…" theme="pink" /%}
+{% node #mint-1 label="๋ฏผํŒ… #1" theme="pink" /%}
+{% node #mint-2 label="๋ฏผํŒ… #2" theme="pink" /%}
+{% node #mint-3 label="๋ฏผํŒ… #3" theme="pink" /%}
+{% /node %}
+
+{% node #nft-1 parent="mint" x="120" label="NFT" theme="blue" /%}
+{% node #nft-2 parent="nft-1" y="50" label="NFT" theme="blue" /%}
+{% node #nft-3 parent="nft-2" y="50" label="NFT" theme="blue" /%}
+
+{% edge from="action-1" to="candy-machine" path="straight" /%}
+{% edge from="action-2" to="item-1" /%}
+{% edge from="action-2" to="item-2" /%}
+{% edge from="action-2" to="item-3" /%}
+{% edge from="action-2" to="item-rest" /%}
+{% edge from="item-1" to="mint-1" /%}
+{% edge from="item-2" to="mint-2" /%}
+{% edge from="item-3" to="mint-3" /%}
+{% edge from="mint-1" to="nft-1" path="bezier" /%}
+{% edge from="mint-2" to="nft-2" path="bezier" /%}
+{% edge from="mint-3" to="nft-3" path="bezier" /%}
+{% /diagram %}
+
+Candy Machine์ด ๋กœ๋“œ๋˜๊ณ  ๋ชจ๋“  ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ NFT ๋ฏผํŒ…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ๋งŒ Solana ๋ธ”๋ก์ฒด์ธ์— NFT๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฏผํŒ… ์ „์— ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” Captcha ์ˆ˜ํ–‰์ด๋‚˜ ๋จธํด ์ฆ๋ช… ์ „์†ก๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ฒ€์ฆ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [๋ฏผํŒ…](/kr/candy-machine/mint)์„ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+Candy Machine์—์„œ ๋ชจ๋“  NFT๊ฐ€ ๋ฏผํŒ…๋˜๋ฉด ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œํ•˜์—ฌ ๋ธ”๋ก์ฒด์ธ์—์„œ ์ผ๋ถ€ ์ €์žฅ ๊ณต๊ฐ„์„ ํ•ด์ œํ•˜๊ณ  ์ผ๋ถ€ ์ž„๋Œ€๋ฃŒ๋ฅผ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Candy Machine ๊ด€๋ฆฌ](/kr/candy-machine/manage)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+{% diagram %}
+{% node #action-1 label="4. ์‚ญ์ œ" theme="pink" /%}
+{% node parent="action-1" x="150" %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์„ค์ •" /%}
+{% node #item-1 label="์•„์ดํ…œ 1" /%}
+{% node #item-2 label="์•„์ดํ…œ 2" /%}
+{% node #item-3 label="์•„์ดํ…œ 3" /%}
+{% node #item-rest label="..." /%}
+{% /node %}
+{% node #nft-1 parent="candy-machine" x="200" label="NFT" theme="blue" /%}
+{% node #nft-2 parent="nft-1" y="50" label="NFT" theme="blue" /%}
+{% node #nft-3 parent="nft-2" y="50" label="NFT" theme="blue" /%}
+{% edge from="action-1" to="candy-machine" path="straight" /%}
+{% /diagram %}
+
+## Candy Guard
+
+์ด์ œ Candy Machine์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ–ˆ์œผ๋ฏ€๋กœ ์ฐฝ์ž‘์ž๊ฐ€ Candy Machine์˜ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+์ฐฝ์ž‘์ž๋Š” "**๊ฐ€๋“œ**"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Metaplex Candy Machine์€ [**์ด 21๊ฐœ์˜ ๊ธฐ๋ณธ ๊ฐ€๋“œ**](/kr/candy-machine/guards)์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” **Candy Guard**๋ผ๋Š” ์ถ”๊ฐ€ Solana ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ณ ๊ธ‰ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ณธ Candy Guard ํ”„๋กœ๊ทธ๋žจ์„ ํฌํฌํ•˜์—ฌ ์ž์ฒด ์ปค์Šคํ…€ ๊ฐ€๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ๋„ ์—ฌ์ „ํžˆ ๋ฉ”์ธ Candy Machine ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๊ฐ ๊ฐ€๋“œ๋Š” ์›ํ•˜๋Š” ๋Œ€๋กœ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฐฝ์ž‘์ž๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ€๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ๋‚˜ ์–ธ์ œ๋“ ์ง€ ๋ฌด๋ฃŒ๋กœ NFT๋ฅผ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์œผ๋ฉฐ, ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋” ํ˜„์‹ค์ ์ธ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+Candy Machine์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ€๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:
+
+- **Sol Payment**: ์ด ๊ฐ€๋“œ๋Š” ๋ฏผํŒ… ์ง€๊ฐ‘์ด ๊ตฌ์„ฑ๋œ ๋ชฉ์ ์ง€ ์ง€๊ฐ‘์— ๊ตฌ์„ฑ๋œ SOL ๊ธˆ์•ก์„ ์ง€๋ถˆํ•ด์•ผ ํ•จ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
+- **Start Date**: ์ด ๊ฐ€๋“œ๋Š” ๊ตฌ์„ฑ๋œ ์‹œ๊ฐ„ ์ดํ›„์—๋งŒ ๋ฏผํŒ…์ด ์‹œ์ž‘๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
+- **Mint Limit**: ์ด ๊ฐ€๋“œ๋Š” ๊ฐ ์ง€๊ฐ‘์ด ๊ตฌ์„ฑ๋œ ๊ธˆ์•ก๋ณด๋‹ค ๋งŽ์ด ๋ฏผํŒ…ํ•  ์ˆ˜ ์—†๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
+- **Bot Tax**: ์ด ๊ฐ€๋“œ๋Š” ์กฐ๊ธˆ ํŠน๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒƒ๋„ ๋ณดํ˜ธํ•˜์ง€ ์•Š์ง€๋งŒ ๋ด‡์ด Candy Machine์„ ๋ฏผํŒ…ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํŒจํ•œ ๋ฏผํŒ…์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ๋‹ค๋ฅธ ํ™œ์„ฑํ™”๋œ ๊ฐ€๋“œ๊ฐ€ ๋ฏผํŒ… ๊ฒ€์ฆ์— ์‹คํŒจํ•˜๋ฉด ๋ฏผํŒ…์„ ์‹œ๋„ํ•œ ์ง€๊ฐ‘์— ์ž‘์€ ๊ตฌ์„ฑ๋œ SOL ๊ธˆ์•ก์„ ์ฒญ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
+
+๊ฒฐ๊ณผ์ ์œผ๋กœ SOL์„ ์ฒญ๊ตฌํ•˜๊ณ , ํŠน์ • ์‹œ๊ฐ„์— ์ถœ์‹œ๋˜๋ฉฐ, ์ง€๊ฐ‘๋‹น ์ œํ•œ๋œ ๋ฏผํŒ…๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๋ด‡ ๋ฐฉ์ง€ Candy Machine์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node %}
+{% node #candy-machine label="Candy Machine" theme="blue" /%}
+{% node label="์„ค์ •" /%}
+{% node #items label="์•„์ดํ…œ" /%}
+{% node #guards %}
+๊ฐ€๋“œ:
+
+- Sol Payment (0.1 SOL)
+- Start Date (1์›” 6์ผ)
+- Mint Limit (1)
+- Bot Tax (0.01 SOL)
+
+{% /node %}
+{% /node %}
+
+{% node parent="candy-machine" x="250" %}
+{% node #mints label="๋ฏผํŒ…" theme="pink" /%}
+{% node #mint-1 label="#1: ์ง€๊ฐ‘ A (1 SOL) 1์›” 5์ผ" theme="pink" /%}
+{% node #mint-2 label="#2: ์ง€๊ฐ‘ B (3 SOL) 1์›” 6์ผ" theme="pink" /%}
+{% node #mint-3 label="#3: ์ง€๊ฐ‘ B (2 SOL) 1์›” 6์ผ" theme="pink" /%}
+{% node #mint-4 label="#4: ์ง€๊ฐ‘ C (0.5 SOL) 1์›” 6์ผ" theme="pink" /%}
+{% /node %}
+{% node #fail-1 parent="mints" x="250" theme="red" %}
+๋„ˆ๋ฌด ์ด๋ฆ„ {% .text-xs %} \
+๋ด‡ ์„ธ๊ธˆ ์ฒญ๊ตฌ๋จ
+{% /node %}
+{% node #nft-2 parent="fail-1" y="50" label="NFT" theme="blue" /%}
+{% node #fail-3 parent="nft-2" y="50" theme="red" %}
+์ด๋ฏธ 1๊ฐœ ๋ฏผํŒ…ํ•จ {% .text-xs %} \
+๋ด‡ ์„ธ๊ธˆ ์ฒญ๊ตฌ๋จ
+{% /node %}
+{% node #fail-4 parent="fail-3" y="50" theme="red" %}
+SOL ๋ถ€์กฑ {% .text-xs %} \
+๋ด‡ ์„ธ๊ธˆ ์ฒญ๊ตฌ๋จ
+{% /node %}
+
+{% edge from="candy-machine" to="mint-1" /%}
+{% edge from="candy-machine" to="mint-2" /%}
+{% edge from="candy-machine" to="mint-3" /%}
+{% edge from="candy-machine" to="mint-4" /%}
+{% edge from="mint-1" to="fail-1" path="bezier" /%}
+{% edge from="mint-2" to="nft-2" path="bezier" /%}
+{% edge from="mint-3" to="fail-3" path="bezier" /%}
+{% edge from="mint-4" to="fail-4" path="bezier" /%}
+{% /diagram %}
+
+๋ณด์‹œ๋‹ค์‹œํ”ผ, 21๊ฐœ ์ด์ƒ์˜ ๊ธฐ๋ณธ ๊ฐ€๋“œ์™€ ์ปค์Šคํ…€ ๊ฐ€๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฐฝ์ž‘์ž๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์„ ๋ณ„ํ•˜๊ณ  ์™„๋ฒฝํ•œ Candy Machine์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๋งŽ์€ ํŽ˜์ด์ง€๋ฅผ ํ• ์• ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋“œ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์‹œ์ž‘์ ์€ [Candy Guards](/kr/candy-machine/guards) ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
+
+## ๋‹ค์Œ ๋‹จ๊ณ„
+
+์ด๊ฒƒ์ด Candy Machine์˜ ์ข‹์€ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ฐฐ์šธ ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด Candy Machine ๋ฌธ์„œ์˜ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+- [์‹œ์ž‘ํ•˜๊ธฐ](/kr/candy-machine/getting-started). Candy Machine์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ SDK๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
+- [Candy Machine ์„ค์ •](/kr/candy-machine/settings). Candy Machine ์„ค์ •์„ ๋งค์šฐ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [Candy Machine ๊ด€๋ฆฌ](/kr/candy-machine/manage). Candy Machine์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [์•„์ดํ…œ ์‚ฝ์ž…](/kr/candy-machine/insert-items). Candy Machine์— ์•„์ดํ…œ์„ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [Candy Guards](/kr/candy-machine/guards). ๊ฐ€๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [๊ฐ€๋“œ ๊ทธ๋ฃน](/kr/candy-machine/guard-groups). ์—ฌ๋Ÿฌ ๊ฐ€๋“œ ๊ทธ๋ฃน์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [ํŠน์ˆ˜ ๊ฐ€๋“œ ๋ช…๋ น์–ด](/kr/candy-machine/guard-route). ๊ฐ€๋“œ๋ณ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [๋ฏผํŒ…](/kr/candy-machine/mint). Candy Machine์—์„œ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฏผํŒ… ์ „ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+- [์ฐธ์กฐ](/kr/candy-machine/references). Candy Machine๊ณผ ๊ด€๋ จ๋œ API ์ฐธ์กฐ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

+ 189 - 0
src/pages/kr/candy-machine/insert-items.md

@@ -0,0 +1,189 @@
+---
+title: ์•„์ดํ…œ ์‚ฝ์ž…
+metaTitle: ์•„์ดํ…œ ์‚ฝ์ž… | Candy Machine
+description: Candy Machine์— ์•„์ดํ…œ์„ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+์ง€๊ธˆ๊นŒ์ง€ Candy Machine์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์ง€๋งŒ NFT๋กœ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ์„ ๋‚ด๋ถ€์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํŽ˜์ด์ง€์—์„œ ์ด๋ฅผ ๋‹ค๋ฃจ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+**์•„์ดํ…œ ์‚ฝ์ž…์€ [๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •](/kr/candy-machine/settings#config-line-settings)์„ ์‚ฌ์šฉํ•˜๋Š” Candy Machine์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค**๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” [์ˆจ๊ฒจ์ง„ ์„ค์ •](/kr/candy-machine/settings#hidden-settings)์„ ์‚ฌ์šฉํ•˜๋Š” Candy Machine์—์„œ ๋ฏผํŒ…๋œ NFT๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ "์ˆจ๊ฒจ์ง„" ์ด๋ฆ„๊ณผ URI๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+## JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ
+
+Candy Machine์— ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ๊ฐ ์•„์ดํ…œ์— ๋Œ€ํ•ด ๋‹ค์Œ ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:
+
+- **์ด๋ฆ„**: ์ด ์•„์ดํ…œ์—์„œ ๋ฏผํŒ…๋  NFT์˜ ์ด๋ฆ„. ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์—์„œ ์ด๋ฆ„ ์ ‘๋‘์‚ฌ๊ฐ€ ์ œ๊ณต๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ ‘๋‘์‚ฌ ๋’ค์— ์˜ค๋Š” ์ด๋ฆ„ ๋ถ€๋ถ„๋งŒ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **URI**: ์ด ์•„์ดํ…œ์—์„œ ๋ฏผํŒ…๋  NFT์˜ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” URI. ์—ฌ๊ธฐ์„œ๋„ ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์—์„œ ์ œ๊ณต๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š” URI ์ ‘๋‘์‚ฌ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.
+
+์•„์ดํ…œ์— ๋Œ€ํ•œ URI๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋จผ์ € JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์—…๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” AWS๋‚˜ ์ž์ฒด ์„œ๋ฒ„์™€ ๊ฐ™์€ ์˜คํ”„์ฒด์ธ ์†”๋ฃจ์…˜์ด๋‚˜ Arweave๋‚˜ IPFS์™€ ๊ฐ™์€ ์˜จ์ฒด์ธ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์˜ˆ์‹œ ์ž์‚ฐ์€ ์ด [Github ์ €์žฅ์†Œ](https://github.com/metaplex-foundation/example-candy-machine-assets)์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋‹คํ–‰ํžˆ ์šฐ๋ฆฌ์˜ SDK๊ฐ€ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSON ๊ฐ์ฒด๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ํ•ด๋‹น URI๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
+
+๋˜ํ•œ [Sugar](/kr/candy-machine/sugar)์™€ ๊ฐ™์€ ๋„๊ตฌ๋Š” ๋ณ‘๋ ฌ ์—…๋กœ๋“œ, ํ”„๋กœ์„ธ์Šค ์บ์‹ฑ ๋ฐ ์‹คํŒจํ•œ ์—…๋กœ๋“œ ์žฌ์‹œ๋„๋ฅผ ํ†ตํ•ด JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ๋ฅผ ์•„์ฃผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์•„์ดํ…œ ์—…๋กœ๋“œ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi๋Š” ์„ ํƒํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ œ๊ณต์—…์ฒด์— JSON ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `uploader` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ์—…๋กœ๋” ์ธํ„ฐํŽ˜์ด์Šค์˜ NFT.Storage ๊ตฌํ˜„์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+```ts
+import { nftStorage } from '@metaplex-foundation/umi-uploader-nft-storage'
+umi.use(nftStorageUploader({ token: 'YOUR_API_TOKEN' }))
+```
+
+๊ทธ๋Ÿฐ ๋‹ค์Œ `uploader` ์ธํ„ฐํŽ˜์ด์Šค์˜ `upload` ๋ฐ `uploadJson` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ๊ณผ ํ•ด๋‹น JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { createGenericFileFromBrowserFile } from '@metaplex-foundation/umi'
+
+// ์ž์‚ฐ ์—…๋กœ๋“œ.
+const file = await createGenericFileFromBrowserFile(event.target.files[0])
+const [fileUri] = await umi.uploader.upload([file])
+
+// JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ.
+const uri = await umi.uploader.uploadJson({
+  name: 'My NFT #1',
+  description: 'My description',
+  image: fileUri,
+})
+```
+
+API ์ฐธ์กฐ: [UploaderInterface](https://umi.typedoc.metaplex.com/interfaces/umi.UploaderInterface.html), [createGenericFileFromBrowserFile](https://umi.typedoc.metaplex.com/functions/umi.createGenericFileFromBrowserFile.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์•„์ดํ…œ ์‚ฝ์ž…
+
+์ด์ œ ๋ชจ๋“  ์•„์ดํ…œ์˜ ์ด๋ฆ„๊ณผ URI๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ Candy Machine ๊ณ„์ •์— ์‚ฝ์ž…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+์ด๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋ฉฐ, ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์„ ์‚ฌ์šฉํ•  ๋•Œ **๋ชจ๋“  ์•„์ดํ…œ์ด ์‚ฝ์ž…๋  ๋•Œ๊นŒ์ง€ ๋ฏผํŒ…์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**.
+
+์‚ฝ์ž…๋œ ๊ฐ ์•„์ดํ…œ์˜ ์ด๋ฆ„๊ณผ URI๋Š” ๊ฐ๊ฐ ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์˜ **์ด๋ฆ„ ๊ธธ์ด** ๋ฐ **URI ๊ธธ์ด** ์†์„ฑ์— ์˜ํ•ด ์ œ์•ฝ์„ ๋ฐ›๋Š”๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”.
+
+๋˜ํ•œ ํŠธ๋žœ์žญ์…˜์ด ํŠน์ • ํฌ๊ธฐ๋กœ ์ œํ•œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๋‹น ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ์˜ ์ˆ˜๋Š” ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์—์„œ ์ •์˜๋œ **์ด๋ฆ„ ๊ธธ์ด** ๋ฐ **URI ๊ธธ์ด** ์†์„ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด๋ฆ„๊ณผ URI๊ฐ€ ์งง์„์ˆ˜๋ก ํŠธ๋žœ์žญ์…˜์— ๋” ๋งŽ์ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ตฌ์„ฑ ๋ผ์ธ ์ถ”๊ฐ€" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ `addConfigLines` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์— ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•  ๊ตฌ์„ฑ ๋ผ์ธ๊ณผ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+
+```ts
+await addConfigLines(umi, {
+  candyMachine: candyMachine.publicKey,
+  index: 0,
+  configLines: [
+    { name: 'My NFT #1', uri: 'https://example.com/nft1.json' },
+    { name: 'My NFT #2', uri: 'https://example.com/nft2.json' },
+  ],
+}).sendAndConfirm(umi)
+```
+
+ํ˜„์žฌ ๋กœ๋“œ๋œ ์•„์ดํ…œ์˜ ๋์— ์•„์ดํ…œ์„ ๊ฐ„๋‹จํžˆ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด `candyMachine.itemsLoaded` ์†์„ฑ์„ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+await addConfigLines(umi, {
+  candyMachine: candyMachine.publicKey,
+  index: candyMachine.itemsLoaded,
+  configLines: [
+    { name: 'My NFT #3', uri: 'https://example.com/nft3.json' },
+    { name: 'My NFT #4', uri: 'https://example.com/nft4.json' },
+    { name: 'My NFT #5', uri: 'https://example.com/nft5.json' },
+  ],
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [addConfigLines](https://mpl-candy-machine.typedoc.metaplex.com/functions/addConfigLines.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ ์•„์ดํ…œ ์‚ฝ์ž…
+
+์ด๋ฆ„ ๋ฐ/๋˜๋Š” URI ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•ด๋‹น ์ ‘๋‘์‚ฌ ๋’ค์— ์˜ค๋Š” ๋ถ€๋ถ„๋งŒ ์‚ฝ์ž…ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฆ„ ๊ธธ์ด์™€ URI ๊ธธ์ด๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜๋‹น ํ›จ์”ฌ ๋” ๋งŽ์€ ์•„์ดํ…œ์„ ๋„ฃ๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์—์„œ ๊ตฌ์„ฑ ๋ผ์ธ ์ถ”๊ฐ€" %}
+{% dialect title="JavaScript" id="js" %}
+
+์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Candy Machine์— ๊ตฌ์„ฑ ๋ผ์ธ์„ ์ถ”๊ฐ€ํ•  ๋•Œ `addConfigLines` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ ‘๋‘์‚ฌ ๋’ค์— ์˜ค๋Š” ์ด๋ฆ„๊ณผ URI ๋ถ€๋ถ„๋งŒ ์ œ๊ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์ด ์žˆ๋Š” Candy Machine์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์„ธ์š”.
+
+```ts
+await create(umi, {
+  // ...
+  configLineSettings: some({
+    prefixName: 'My NFT #',
+    nameLength: 4,
+    prefixUri: 'https://example.com/nft',
+    uriLength: 9,
+    isSequential: false,
+  }),
+}).sendAndConfirm(umi)
+```
+
+๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ ๋ผ์ธ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+await addConfigLines(umi, {
+  candyMachine: candyMachine.publicKey,
+  index: candyMachine.itemsLoaded,
+  configLines: [
+    { name: '1', uri: '1.json' },
+    { name: '2', uri: '2.json' },
+    { name: '3', uri: '3.json' },
+  ],
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [addConfigLines](https://mpl-candy-machine.typedoc.metaplex.com/functions/addConfigLines.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ธฐ์กด ์•„์ดํ…œ ์žฌ์ •์˜
+
+์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ๋•Œ ํ•ด๋‹น ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ์œ„์น˜๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์ˆœ์„œ๋กœ ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ ์‚ฝ์ž…๋œ ์•„์ดํ…œ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ตฌ์„ฑ ๋ผ์ธ ์žฌ์ •์˜" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ ์˜ˆ์‹œ๋Š” ์„ธ ๊ฐœ์˜ ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•˜๊ณ  ๋‚˜์ค‘์— ์‚ฝ์ž…๋œ ๋‘ ๋ฒˆ์งธ ์•„์ดํ…œ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
+
+```ts
+await addConfigLines(umi, {
+  candyMachine: candyMachine.publicKey,
+  index: 0,
+  configLines: [
+    { name: 'My NFT #1', uri: 'https://example.com/nft1.json' },
+    { name: 'My NFT #2', uri: 'https://example.com/nft2.json' },
+    { name: 'My NFT #3', uri: 'https://example.com/nft3.json' },
+  ],
+}).sendAndConfirm(umi)
+
+await addConfigLines(umi, {
+  candyMachine: candyMachine.publicKey,
+  index: 1,
+  configLines: [{ name: 'My NFT #X', uri: 'https://example.com/nftX.json' }],
+}).sendAndConfirm(umi)
+
+candyMachine = await fetchCandyMachine(candyMachine.publicKey)
+candyMachine.items[0].name // "My NFT #1"
+candyMachine.items[1].name // "My NFT #X"
+candyMachine.items[2].name // "My NFT #3"
+```
+
+API ์ฐธ์กฐ: [addConfigLines](https://mpl-candy-machine.typedoc.metaplex.com/functions/addConfigLines.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฒฐ๋ก 
+
+๋ฐ”๋กœ ์ด๋ ‡๊ฒŒ NFT๋ฅผ ๋ฏผํŒ…ํ•  ์ค€๋น„๊ฐ€ ๋œ ๋กœ๋“œ๋œ Candy Machine์ด ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์•„์ง ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ๋“ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฏผํŒ…์˜ ๊ฐ€๊ฒฉ์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ตฌ๋งค์ž๊ฐ€ ํŠน์ • ํ† ํฐ์˜ ๋ณด์œ ์ž์ด๊ฑฐ๋‚˜ ํŠน์ • ์ปฌ๋ ‰์…˜์˜ NFT ๋ณด์œ ์ž์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ฏผํŒ…์˜ ์‹œ์ž‘ ๋‚ ์งœ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ• ๊นŒ์š”? ์ข…๋ฃŒ ์กฐ๊ฑด์€ ์–ด๋–จ๊นŒ์š”?
+
+[๋‹ค์Œ ํŽ˜์ด์ง€](/kr/candy-machine/guards)์—์„œ๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Candy Guard์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

+ 426 - 0
src/pages/kr/candy-machine/manage.md

@@ -0,0 +1,426 @@
+---
+title: Candy Machine ๊ด€๋ฆฌ
+metaTitle: ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ์‚ญ์ œ | Candy Machine
+description: Candy Machine์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+[์ด์ „ ํŽ˜์ด์ง€](/kr/candy-machine/settings)์—์„œ Candy Machine์˜ ๋‹ค์–‘ํ•œ ์„ค์ •์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์ƒ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ์กด Candy Machine์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ–ˆ์„ ๋•Œ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+๊ธฐ๋ณธ์ ์œผ๋กœ Candy Machine์˜ ์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•ด๋ณด์ฃ !
+
+## Candy Machine ์ƒ์„ฑ
+
+์ด์ „ ํŽ˜์ด์ง€์—์„œ ๋…ผ์˜ํ•œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด Candy Machine ๊ณ„์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์šฐ๋ฆฌ์˜ SDK๋Š” ์ด๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „์‹œ์ผœ ๋ชจ๋“  ์ƒˆ๋กœ์šด Candy Machine ๊ณ„์ •์„ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋œ ๊ฐ€๋“œ๋ฅผ ์ถ”์ ํ•˜๋Š” ์ƒˆ๋กœ์šด Candy Guard ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” Candy Machine ๊ณ„์ •์— ์ง‘์ค‘ํ•˜์ง€๋งŒ Candy Guard ๊ณ„์ •๊ณผ ์ด๋ฅผ ํ†ตํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋Š” [์ „์šฉ ํŽ˜์ด์ง€](/kr/candy-machine/guards)์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+Candy Machine์€ [์ปฌ๋ ‰์…˜ NFT์™€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๊ณ ](/kr/candy-machine/settings#metaplex-certified-collections) ํ•ด๋‹น ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์ด ์ด ์ž‘์—…์„ ์Šน์ธํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”. ์•„์ง Candy Machine์šฉ ์ปฌ๋ ‰์…˜ NFT๊ฐ€ ์—†๋‹ค๋ฉด ์šฐ๋ฆฌ์˜ SDK๊ฐ€ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% callout type="note" title="๋ฌด์ž‘์œ„์„ฑ" %}
+
+์ž์‚ฐ์˜ "๋ฌด์ž‘์œ„" ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„์ „ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค์™€ ์•…์˜์ ์ธ ์˜๋„๋กœ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณต๊ฐœ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์œ„ํ•ด [์ˆจ๊ฒจ์ง„ ์„ค์ •](/kr/candy-machine/settings#hidden-settings)์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /callout %}
+
+{% dialect-switcher title="Candy Machine ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ์€ Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ์ปฌ๋ ‰์…˜ NFT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+```ts
+import {
+  createNft,
+  TokenStandard,
+} from '@metaplex-foundation/mpl-token-metadata'
+import { create } from '@metaplex-foundation/mpl-candy-machine'
+import { generateSigner, percentAmount } from '@metaplex-foundation/umi'
+
+// ์ปฌ๋ ‰์…˜ NFT ์ƒ์„ฑ.
+const collectionMint = generateSigner(umi)
+await createNft(umi, {
+  mint: collectionMint,
+  authority: umi.identity,
+  name: 'My Collection NFT',
+  uri: 'https://example.com/path/to/some/json/metadata.json',
+  sellerFeeBasisPoints: percentAmount(9.99, 2), // 9.99%
+  isCollection: true,
+    collectionDetails: {
+    __kind: 'V1',
+    size: 0,
+  },
+}).sendAndConfirm(umi)
+
+// Candy Machine ์ƒ์„ฑ.
+const candyMachine = generateSigner(umi)
+await create(umi, {
+  candyMachine,
+  collectionMint: collectionMint.publicKey,
+  collectionUpdateAuthority: umi.identity,
+  tokenStandard: TokenStandard.NonFungible,
+  sellerFeeBasisPoints: percentAmount(9.99, 2), // 9.99%
+  itemsAvailable: 5000,
+  creators: [
+    {
+      address: umi.identity.publicKey,
+      verified: true,
+      percentageShare: 100,
+    },
+  ],
+  configLineSettings: some({
+    prefixName: '',
+    nameLength: 32,
+    prefixUri: '',
+    uriLength: 200,
+    isSequential: false,
+  }),
+}).sendAndConfirm(umi)
+```
+
+์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด ์ž‘์—…์€ ์ƒ์„ฑ๋œ Candy Machine๊ณผ ์ƒˆ๋กœ์šด Candy Guard ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๋„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Candy Guard๊ฐ€ ์—†๋Š” Candy Machine์€ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋Œ€์‹  `createCandyMachineV2` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```tsx
+import { createCandyMachineV2 } from '@metaplex-foundation/mpl-candy-machine'
+
+await createCandyMachineV2(umi, {
+  // ...
+}).sendAndConfirm(umi)
+```
+
+์ด ์˜ˆ์‹œ์—์„œ๋Š” ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋งŒ ์ง‘์ค‘ํ–ˆ์ง€๋งŒ ์ด `create` ํ•จ์ˆ˜๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ API ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html), [createCandyMachineV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/createCandyMachineV2.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Candy Machine ๊ณ„์ •
+
+์ด์ œ Candy Machine ๊ณ„์ •์„ ์ƒ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ๊ทธ ์•ˆ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+๋จผ์ € ๊ณ„์ •์ด ์ƒ์„ฑ๋  ๋•Œ ์ œ๊ณต๋œ ๋ชจ๋“  ์„ค์ •์„ ์ €์žฅํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์ด์ „ ํŽ˜์ด์ง€](/kr/candy-machine/settings)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+๋˜ํ•œ ๋‹ค์Œ ์†์„ฑ๋“ค์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:
+
+- **Items Redeemed**. Candy Machine์—์„œ ๋ฏผํŒ…๋œ NFT์˜ ์ˆ˜๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๊ฐ€ 0์—์„œ 1๋กœ ๋ณ€ํ•˜๋Š” ์ˆœ๊ฐ„ ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •์€ ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+- **Account Version**. ์ด ์—ด๊ฑฐํ˜•์€ Candy Machine์˜ ๊ณ„์ • ๋ฒ„์ „์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ณ„์ •์„ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” Candy Machine ํ”„๋กœ๊ทธ๋žจ(Candy Machine Core ๋ฐ Candy Guard ํ”„๋กœ๊ทธ๋žจ ํฌํ•จ)์˜ ์„ธ ๋ฒˆ์งธ์ด์ž ์ตœ์‹  ๋ฐ˜๋ณต์„ ์˜๋ฏธํ•˜๋Š” "Candy Machine V3"๊ณผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”.
+- **Feature Flags**. ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๋„์ž…๋จ์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์˜ ์ด์ „ ๋ฐ ์ดํ›„ ํ˜ธํ™˜์„ฑ์„ ๋„์™€์ค๋‹ˆ๋‹ค.
+
+๋งˆ์ง€๋ง‰์œผ๋กœ Candy Machine์— ์‚ฝ์ž…๋œ ๋ชจ๋“  ์•„์ดํ…œ๊ณผ ๋ฏผํŒ… ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” [**์ˆจ๊ฒจ์ง„ ์„ค์ •**](/kr/candy-machine/settings#hidden-settings)์€ ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ [**๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •**](/kr/candy-machine/settings#config-line-settings)์„ ์‚ฌ์šฉํ•˜๋Š” Candy Machine์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์—๋Š” ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:
+
+- ๋กœ๋“œ๋œ ์•„์ดํ…œ์˜ ์ˆ˜.
+- ์‚ฝ์ž…๋˜์—ˆ๊ฑฐ๋‚˜ ์‚ฝ์ž…๋  ๋ชจ๋“  ์•„์ดํ…œ์˜ ๋ชฉ๋ก. ์•„์ดํ…œ์ด ์•„์ง ์‚ฝ์ž…๋˜์ง€ ์•Š์•˜์„ ๋•Œ ํ•ด๋‹น ์œ„์น˜์˜ ์•„์ดํ…œ ์ด๋ฆ„๊ณผ URI๋Š” ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+- ๋กœ๋“œ๋œ ์•„์ดํ…œ์„ ์ถ”์ ํ•˜๋Š” ๋น„ํŠธ๋งต โ€” ์˜ˆ ๋˜๋Š” ์•„๋‹ˆ์˜ค์˜ ๋ชฉ๋ก. ์ด ๋น„ํŠธ๋งต์ด ๋ชจ๋“  ์˜ˆ๋กœ ๊ฐ€๋“ ์ฐผ์„ ๋•Œ ๋ชจ๋“  ์•„์ดํ…œ์ด ๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
+- ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋กœ ๋ฏผํŒ…ํ•  ๋•Œ ์•„์ง ๋ฏผํŒ…๋˜์ง€ _์•Š์€_ ๋ชจ๋“  ์•„์ดํ…œ์˜ ๋ชฉ๋ก. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฏธ ๋ฏผํŒ…๋œ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  ๋ฌด์ž‘์œ„๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ ธ์™€ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด ๋งˆ์ง€๋ง‰ ์„น์…˜์€ ์˜๋„์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์—ญ์ง๋ ฌํ™”๋˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ์˜ SDK๊ฐ€ ์‚ฌ๋žŒ์—๊ฒŒ ์นœ์ˆ™ํ•œ ํ˜•์‹์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•ด ์ค๋‹ˆ๋‹ค.
+
+Candy Machine ๊ณ„์ •์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์ •๋ณด๋Š” [ํ”„๋กœ๊ทธ๋žจ์˜ API ์ฐธ์กฐ](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-machine-core#account)๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
+
+{% dialect-switcher title="Candy Machine ๊ณ„์ • ๋‚ด๋ถ€" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ Candy Machine์ด ์–ด๋–ป๊ฒŒ ๋ชจ๋ธ๋ง๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ [`CandyMachine` ๊ณ„์ •์˜ API ์ฐธ์กฐ](https://mpl-candy-machine.typedoc.metaplex.com/types/CandyMachine.html)๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. `create` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ Candy Machine์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ํ•˜๋‚˜๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ [`candyGuard` ๊ณ„์ •์˜ API ์ฐธ์กฐ](https://mpl-candy-machine.typedoc.metaplex.com/types/CandyGuard.html)๋„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ Candy Machine ์†์„ฑ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ž‘์€ ์ฝ”๋“œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```tsx
+import {
+  fetchCandyMachine,
+  fetchCandyGuard,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyMachine = await fetchCandyMachine(umi, candyMachineAddress)
+const candyGuard = await fetchCandyGuard(umi, candyMachine.mintAuthority)
+
+candyMachine.publicKey // Candy Machine ๊ณ„์ •์˜ ๊ณต๊ฐœ ํ‚ค.
+candyMachine.mintAuthority // ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Candy Guard ์ฃผ์†Œ์ธ Candy Machine์˜ ๋ฏผํŠธ ๊ถŒํ•œ.
+candyMachine.data.itemsAvailable // ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ด NFT ์ˆ˜.
+candyMachine.itemsRedeemed // ๋ฏผํŒ…๋œ NFT ์ˆ˜.
+candyMachine.items[0].index // ์ฒซ ๋ฒˆ์งธ ๋กœ๋“œ๋œ ์•„์ดํ…œ์˜ ์ธ๋ฑ์Šค.
+candyMachine.items[0].name // ์ฒซ ๋ฒˆ์งธ ๋กœ๋“œ๋œ ์•„์ดํ…œ์˜ ์ด๋ฆ„ (์ ‘๋‘์‚ฌ ํฌํ•จ).
+candyMachine.items[0].uri // ์ฒซ ๋ฒˆ์งธ ๋กœ๋“œ๋œ ์•„์ดํ…œ์˜ URI (์ ‘๋‘์‚ฌ ํฌํ•จ).
+candyMachine.items[0].minted // ์ฒซ ๋ฒˆ์งธ ์•„์ดํ…œ์ด ๋ฏผํŒ…๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€.
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Candy Machine ๊ฐ€์ ธ์˜ค๊ธฐ
+
+๊ธฐ์กด Candy Machine์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์ฃผ์†Œ๋งŒ ์ œ๊ณตํ•˜๋ฉด ์šฐ๋ฆฌ์˜ SDK๊ฐ€ ๊ณ„์ • ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•ด ์ค๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ์€ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine๊ณผ ๊ด€๋ จ๋œ Candy Guard ๊ณ„์ •(์žˆ๋Š” ๊ฒฝ์šฐ)์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+```ts
+import { publicKey } from '@metaplex-foundation/umi'
+import {
+  fetchCandyMachine,
+  fetchCandyGuard,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyMachine = await fetchCandyMachine(umi, publicKey('...'))
+const candyGuard = await fetchCandyGuard(umi, candyMachine.mintAuthority)
+```
+
+API ์ฐธ์กฐ: [fetchCandyMachine](https://mpl-candy-machine.typedoc.metaplex.com/functions/fetchCandyMachine.html), [fetchCandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/functions/fetchCandyGuard.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ
+
+Candy Machine์ด ์ƒ์„ฑ๋˜๋ฉด Candy Machine์˜ ๊ถŒํ•œ์ธ ํ•œ ๋‚˜์ค‘์— ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช‡ ์„น์…˜์—์„œ ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ ๋จผ์ € Candy Machine์˜ **๊ถŒํ•œ**๊ณผ **๋ฏผํŠธ ๊ถŒํ•œ**์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+- ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ํ˜„์žฌ ๊ถŒํ•œ์„ ์„œ๋ช…์ž๋กœ ์ „๋‹ฌํ•˜๊ณ  ์ƒˆ ๊ถŒํ•œ์˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- ๋ฏผํŠธ ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ํ˜„์žฌ ๊ถŒํ•œ๊ณผ ์ƒˆ ๋ฏผํŠธ ๊ถŒํ•œ์„ ๋ชจ๋‘ ์„œ๋ช…์ž๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฏผํŠธ ๊ถŒํ•œ์ด ์ฃผ๋กœ Candy Guard๋ฅผ Candy Machine๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฏผํŠธ ๊ถŒํ•œ์„ ์„œ๋ช…์ž๋กœ ๋งŒ๋“ค๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ Candy Guard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์›๋ž˜ Candy Machine์— ๋ถ€์ž‘์šฉ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์˜ ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ์€ Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์˜ ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ด€๋ จ๋œ Candy Guard ๊ณ„์ •์˜ ๊ถŒํ•œ๋„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+```ts
+import { generateSigner } from '@metaplex-foundation/umi'
+import {
+  setCandyMachineAuthority,
+  setCandyGuardAuthority,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const newAuthority = generateSigner(umi)
+await setCandyMachineAuthority(umi, {
+  candyMachine: candyMachine.publicKey,
+  authority: currentAuthority,
+  newAuthority: newAuthority.publicKey,
+})
+  .add(
+    setCandyGuardAuthority(umi, {
+      candyGuard: candyMachine.mintAuthority,
+      authority: currentAuthority,
+      newAuthority: newAuthority.publicKey,
+    })
+  )
+  .sendAndConfirm(umi)
+```
+
+๊ด€๋ จ๋œ Candy Guard ๊ณ„์ •์„ ์žฌ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— `mintAuthority`๋ฅผ ์ง์ ‘ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ, ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+
+```ts
+import { generateSigner } from '@metaplex-foundation/umi'
+import { setMintAuthority } from '@metaplex-foundation/mpl-candy-machine'
+
+const newMintAuthority = generateSigner(umi)
+await setMintAuthority(umi, {
+  candyMachine: candyMachine.publicKey,
+  authority: currentAuthority,
+  mintAuthority: newMintAuthority,
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [setCandyMachineAuthority](https://mpl-candy-machine.typedoc.metaplex.com/functions/setCandyMachineAuthority.html), [setCandyGuardAuthority](https://mpl-candy-machine.typedoc.metaplex.com/functions/setCandyGuardAuthority.html), [setMintAuthority](https://mpl-candy-machine.typedoc.metaplex.com/functions/setMintAuthority.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ณต์œ  NFT ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ
+
+Candy Machine์˜ ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ์†์„ฑ๋„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [์ด์ „ ํŽ˜์ด์ง€](/kr/candy-machine/settings#settings-shared-by-all-nf-ts)์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ์†์„ฑ์€: ํŒ๋งค์ž ์ˆ˜์ˆ˜๋ฃŒ ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ, ์‹ฌ๋ณผ, ์ตœ๋Œ€ ์—๋””์…˜ ๊ณต๊ธ‰๋Ÿ‰, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๋ฐ ์ฐฝ์ž‘์ž์ž…๋‹ˆ๋‹ค.
+
+์ฒซ ๋ฒˆ์งธ NFT๊ฐ€ ๋ฏผํŒ…๋˜๋ฉด ์ด๋Ÿฌํ•œ ์†์„ฑ์€ ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”.
+
+{% dialect-switcher title="Candy Machine์˜ NFT ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ์€ Candy Machine์—์„œ ์ผ๋ถ€ ๊ณต์œ  NFT ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```tsx
+import { percentAmount } from '@metaplex-foundation/umi'
+import {
+  updateCandyMachine,
+  fetchCandyMachine,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyMachine = await fetchCandyMachine(umi, candyMachineAddress)
+await updateCandyMachine(umi, {
+  candyMachine: candyMachine.publicKey,
+  data: {
+    ...candyMachine.data,
+    symbol: 'NEW',
+    sellerFeeBasisPoints: percentAmount(5.5, 2),
+    creators: [{ address: newCreator, verified: false, percentageShare: 100 }],
+  },
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [updateCandyMachine](https://mpl-candy-machine.typedoc.metaplex.com/functions/updateCandyMachine.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ํ† ํฐ ํ‘œ์ค€ ์—…๋ฐ์ดํŠธ
+
+ํ† ํฐ ํ‘œ์ค€ ๋ฐ ๊ทœ์น™ ์„ธํŠธ ์†์„ฑ๋„ "ํ† ํฐ ํ‘œ์ค€ ์„ค์ •" ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์—์„œ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ผ๋ฐ˜ NFT์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” NFT๋กœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” NFT๋กœ ์ „ํ™˜ํ•  ๋•Œ ๋ฏผํŒ…๋œ NFT๊ฐ€ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๊ทœ์น™ ์„ธํŠธ๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+Candy Machine์ด ์ด์ „ ๊ณ„์ • ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๋ช…๋ น์–ด๋Š” ์ž๋™์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” NFT์™€ ์ผ๋ฐ˜ NFT๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ์ตœ์‹  ๊ณ„์ • ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋ฉด Candy Machine ๋˜๋Š” Candy Guard์—์„œ ๋ฏผํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์‹  ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์˜ ํ† ํฐ ํ‘œ์ค€ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ์€ Umi๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์˜ ํ† ํฐ ํ‘œ์ค€๊ณผ ๊ทœ์น™ ์„ธํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```ts
+import { TokenStandard } from '@metaplex-foundation/mpl-token-metadata'
+import { setTokenStandard } from '@metaplex-foundation/mpl-candy-machine'
+
+await setTokenStandard(umi, {
+  candyMachine: candyMachine.publicKey,
+  collectionMint: candyMachine.collectionMint,
+  collectionUpdateAuthority,
+  tokenStandard: TokenStandard.ProgrammableNonFungible,
+  ruleSet: newRuleSetAccount,
+}).sendAndConfirm(umi)
+```
+
+Candy Machine์ด ๊ณ„์ • ๋ฒ„์ „ `V1`์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ ˆ๊ฑฐ์‹œ ์ปฌ๋ ‰์…˜ ์œ„์ž„ ๊ถŒํ•œ ๋ ˆ์ฝ”๋“œ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ `collectionAuthorityRecord` ๊ณ„์ •์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+```ts
+import { findCollectionAuthorityRecordPda } from '@metaplex-foundation/mpl-token-metadata'
+import { findCandyMachineAuthorityPda } from '@metaplex-foundation/mpl-candy-machine'
+
+await setTokenStandard(umi, {
+  // ...
+  collectionAuthorityRecord: findCollectionAuthorityRecordPda(umi, {
+    mint: candyMachine.collectionMint,
+    collectionAuthority: findCandyMachineAuthorityPda(umi, {
+      candyMachine: candyMachine.publicKey,
+    }),
+  }),
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [setTokenStandard](https://mpl-candy-machine.typedoc.metaplex.com/functions/setTokenStandard.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ปฌ๋ ‰์…˜ ์—…๋ฐ์ดํŠธ
+
+Candy Machine๊ณผ ์—ฐ๊ฒฐ๋œ ์ปฌ๋ ‰์…˜ NFT๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์„ ์Šน์ธํ•˜๊ธฐ ์œ„ํ•ด ์ปฌ๋ ‰์…˜ NFT์˜ ๋ฏผํŠธ ๊ณ„์ • ์ฃผ์†Œ์™€ ํ•ด๋‹น ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์„ ์„œ๋ช…์ž๋กœ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์—ฌ๊ธฐ์„œ๋„ ์ฒซ ๋ฒˆ์งธ NFT๊ฐ€ ๋ฏผํŒ…๋˜๋ฉด ์ปฌ๋ ‰์…˜์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”.
+
+{% dialect-switcher title="Candy Machine์˜ ์ปฌ๋ ‰์…˜ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์˜ ์ปฌ๋ ‰์…˜ NFT๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด `setCollectionV2` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+await setCollectionV2(umi, {
+  candyMachine: candyMachine.publicKey,
+  collectionMint: candyMachine.collectionMint,
+  collectionUpdateAuthority: collectionUpdateAuthority.publicKey,
+  newCollectionMint: newCollectionMint.publicKey,
+  newCollectionUpdateAuthority,
+}).sendAndConfirm(umi)
+```
+
+Candy Machine์ด ๊ณ„์ • ๋ฒ„์ „ `V1`์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ ˆ๊ฑฐ์‹œ ์ปฌ๋ ‰์…˜ ์œ„์ž„ ๊ถŒํ•œ ๋ ˆ์ฝ”๋“œ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ `collectionDelegateRecord` ๊ณ„์ •์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+```ts
+import { findCollectionAuthorityRecordPda } from '@metaplex-foundation/mpl-token-metadata'
+import { findCandyMachineAuthorityPda } from '@metaplex-foundation/mpl-candy-machine'
+
+await setCollectionV2(umi, {
+  // ...
+  collectionDelegateRecord: findCollectionAuthorityRecordPda(umi, {
+    mint: candyMachine.collectionMint,
+    collectionAuthority: findCandyMachineAuthorityPda(umi, {
+      candyMachine: candyMachine.publicKey,
+    }),
+  }),
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [setCollectionV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/setCollectionV2.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์•„์ดํ…œ ์„ค์ • ์—…๋ฐ์ดํŠธ
+
+Candy Machine์˜ ์•„์ดํ…œ ์„ค์ •๋„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
+
+- ์•„์ดํ…œ ์„ค์ •์€ **๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •**๊ณผ **์ˆจ๊ฒจ์ง„ ์„ค์ •** ๊ฐ„์— ๋ชจ๋“œ๋ฅผ ๊ต์ฒดํ•˜๋„๋ก ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“œ๋ฅผ ๊ต์ฒดํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์„ค์ • ๋‚ด์˜ ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •**์„ ์‚ฌ์šฉํ•  ๋•Œ:
+  - **์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ดํ…œ** ์†์„ฑ์€ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+  - **์ด๋ฆ„ ๊ธธ์ด** ๋ฐ **URI ๊ธธ์ด** ์†์„ฑ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์—…๋ฐ์ดํŠธ ์ค‘์— Candy Machine ๊ณ„์ •์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋” ์ž‘์€ ๊ฐ’์œผ๋กœ๋งŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- ์ฒซ ๋ฒˆ์งธ NFT๊ฐ€ ๋ฏผํŒ…๋˜๋ฉด ์ด๋Ÿฌํ•œ ์„ค์ •์€ ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์˜ ์•„์ดํ…œ ์„ค์ • ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ ์˜ˆ์‹œ๋Š” Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์˜ ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ž‘์—…์„ ์ˆจ๊ฒจ์ง„ ์„ค์ •๊ณผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ดํ…œ ์†์„ฑ(์ˆจ๊ฒจ์ง„ ์„ค์ • ์‚ฌ์šฉ ์‹œ)์— ๋Œ€ํ•ด์„œ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import {
+  updateCandyMachine,
+  fetchCandyMachine,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+const candyMachine = await fetchCandyMachine(umi, candyMachineAddress)
+await updateCandyMachine(umi, {
+  candyMachine: candyMachine.publicKey,
+  data: {
+    ...candyMachine.data,
+    hiddenSettings: none(),
+    configLineSettings: some({
+      type: 'configLines',
+      prefixName: 'My New NFT #$ID+1$',
+      nameLength: 0,
+      prefixUri: 'https://arweave.net/',
+      uriLength: 43,
+      isSequential: true,
+    }),
+  },
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [updateCandyMachine](https://mpl-candy-machine.typedoc.metaplex.com/functions/updateCandyMachine.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Candy Machine ์‚ญ์ œ
+
+Candy Machine์ด ์™„์ „ํžˆ ๋ฏผํŒ…๋˜๋ฉด ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ํ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฐฝ์ž‘์ž๋Š” Candy Machine ๊ณ„์ •์˜ ์ €์žฅ ๋น„์šฉ๊ณผ ์„ ํƒ์ ์œผ๋กœ Candy Guard ๊ณ„์ •์˜ ๋น„์šฉ๋„ ๋˜๋Œ๋ ค ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine ์‚ญ์ œ" %}
+{% dialect title="JavaScript" id="js" %}
+
+๋‹ค์Œ๊ณผ ๊ฐ™์ด Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine ๊ณ„์ • ๋ฐ/๋˜๋Š” ๊ด€๋ จ๋œ Candy Guard ๊ณ„์ •์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```ts
+import {
+  deleteCandyMachine,
+  deleteCandyGuard,
+} from '@metaplex-foundation/mpl-candy-machine'
+
+await deleteCandyMachine(umi, {
+  candyMachine: candyMachine.publicKey,
+}).sendAndConfirm(umi)
+
+await deleteCandyGuard(umi, {
+  candyGuard: candyMachine.mintAuthority,
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [deleteCandyMachine](https://mpl-candy-machine.typedoc.metaplex.com/functions/deleteCandyMachine.html), [deleteCandyGuard](https://mpl-candy-machine.typedoc.metaplex.com/functions/deleteCandyGuard.html).
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฒฐ๋ก 
+
+์ด์ œ Candy Machine์„ ์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์•„์ง ์•„์ดํ…œ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. [๋‹ค์Œ ํŽ˜์ด์ง€](/kr/candy-machine/insert-items)์—์„œ ์ด๋ฅผ ๋‹ค๋ฃจ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

+ 579 - 0
src/pages/kr/candy-machine/mint.md

@@ -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์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

+ 138 - 0
src/pages/kr/candy-machine/pnfts.md

@@ -0,0 +1,138 @@
+---
+title: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT
+metaTitle: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT | Candy Machine
+description: candy machine์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+Token Metadata์˜ ๋ฒ„์ „ `1.7`์—์„œ [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์—์…‹ ํด๋ž˜์Šค](/kr/token-metadata/pnfts)๊ฐ€ ๋„์ž…๋˜์–ด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค ์ค‘์—์„œ๋„ ์ฐฝ์ž‘์ž๊ฐ€ 2์ฐจ ํŒ๋งค์— ๋Œ€ํ•œ ๋กœ์—ดํ‹ฐ๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
+
+Candy Machine Core์˜ ๋ฒ„์ „ `1.0`๊ณผ Candy Guard์˜ ๋ฒ„์ „ `1.0`๋ถ€ํ„ฐ **candy machine์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋ฅผ ๋ฏผํŒ…**ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ  ๊ธฐ์กด candy machine์˜ ํ† ํฐ ํ‘œ์ค€์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
+
+## ์ƒˆ๋กœ์šด candy machine์˜ ๊ฒฝ์šฐ
+
+`initializeV2`๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด๊ฐ€ Candy Machine Core ํ”„๋กœ๊ทธ๋žจ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” `initialize` ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ candy machine์— ์‚ฌ์šฉํ•  ํ† ํฐ ํ‘œ์ค€์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ํ† ํฐ ํ‘œ์ค€์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š” `V1` Candy Machine๊ณผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ Candy Machine์„ `V2`๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ํ•„๋“œ๋“ค์€ Candy Machine ์ง๋ ฌํ™” ๋กœ์ง์—์„œ ์ค‘๋‹จ ๋ณ€๊ฒฝ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด Candy Machine ๊ณ„์ • ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์กด ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+`initializeV2` ๋ช…๋ น์–ด๋Š” ์ผ๋ฐ˜ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” Candy Machine์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ `initialize` ๋ช…๋ น์–ด๋Š” ์ด์ œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NFT๋ฅผ ๋ฏผํŒ…ํ•  ๋•Œ Candy Machine Core์— ์œ„์ž„ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” Candy Guard ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+
+๋˜ํ•œ ์„ ํƒํ•˜๋Š” ํ† ํฐ ํ‘œ์ค€์— ๋”ฐ๋ผ ์ผ๋ถ€ ์„ ํƒ์  ๊ณ„์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ชจ๋“  ๋ฏผํŒ…๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT์— ํŠน์ • ๊ทœ์น™ ์ง‘ํ•ฉ์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด `ruleSet` ๊ณ„์ •์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `ruleSet` ๊ณ„์ •์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ์ปฌ๋ ‰์…˜ NFT์˜ ๊ทœ์น™ ์ง‘ํ•ฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฏผํŒ…๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT์—๋Š” ํ• ๋‹น๋œ ๊ทœ์น™ ์ง‘ํ•ฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ผ๋ฐ˜ NFT๋ฅผ ๋ฏผํŒ…ํ•  ๋•Œ๋Š” `ruleSet` ๊ณ„์ •์ด ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.
+
+์ถ”๊ฐ€์ ์œผ๋กœ, `collectionDelegateRecord` ๊ณ„์ •์€ ์ด์ œ Token Metadata์˜ ์ƒˆ๋กœ์šด [Metadata Delegate Record](https://docs.rs/mpl-token-metadata/latest/mpl_token_metadata/accounts/struct.MetadataDelegateRecord.html)๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ์˜ "[Candy Machine ์ƒ์„ฑ](/kr/candy-machine/manage#create-candy-machines)" ์„น์…˜์„ ์ฝ์–ด๋ณด์‹ค ์ˆ˜ ์žˆ์ง€๋งŒ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด SDK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ƒˆ๋กœ์šด PNFT Candy Machine ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { TokenStandard } from '@metaplex-foundation/mpl-token-metadata'
+import { create } from '@metaplex-foundation/mpl-candy-machine'
+import { generateSigner } from '@metaplex-foundation/umi'
+
+await create(umi, {
+  // ...
+  tokenStandard: TokenStandard.ProgrammableNonFungible,
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [create](https://mpl-candy-machine.typedoc.metaplex.com/functions/create.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ธฐ์กด candy machine์˜ ๊ฒฝ์šฐ
+
+์ƒˆ๋กœ์šด `setTokenStandard` ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด Candy Machine์˜ ํ† ํฐ ํ‘œ์ค€์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Candy Machine `V1`์—์„œ ์ด ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Candy Machine์„ `V2`๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ํ† ํฐ ํ‘œ์ค€์„ ๊ณ„์ • ๋ฐ์ดํ„ฐ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ์˜ "[ํ† ํฐ ํ‘œ์ค€ ์—…๋ฐ์ดํŠธ](/kr/candy-machine/manage#update-token-standard)" ์„น์…˜์„ ์ฝ์–ด๋ณด์‹ค ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธฐ์กด Candy Machine์˜ ํ† ํฐ ํ‘œ์ค€์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด SDK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์˜ ํ† ํฐ ํ‘œ์ค€ ๋ณ€๊ฒฝ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { TokenStandard } from '@metaplex-foundation/mpl-token-metadata'
+import { setTokenStandard } from '@metaplex-foundation/mpl-candy-machine'
+
+await setTokenStandard(umi, {
+  candyMachine: candyMachine.publicKey,
+  collectionMint: candyMachine.collectionMint,
+  collectionUpdateAuthority,
+  tokenStandard: TokenStandard.ProgrammableNonFungible,
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [setTokenStandard](https://mpl-candy-machine.typedoc.metaplex.com/functions/setTokenStandard.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+์ถ”๊ฐ€๋กœ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT์™€ ํ˜ธํ™˜๋˜๋Š” ์ปฌ๋ ‰์…˜ ์„ค์ •์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด `setCollectionV2` ๋ช…๋ น์–ด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ์ผ๋ฐ˜ NFT์™€๋„ ์ž‘๋™ํ•˜๋ฉฐ `setCollection` ๋ช…๋ น์–ด๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
+
+์—ฌ๊ธฐ์„œ๋„ ์ด ๋ฌธ์„œ์˜ "[์ปฌ๋ ‰์…˜ ์—…๋ฐ์ดํŠธ](/kr/candy-machine/manage#update-collection)" ์„น์…˜์—์„œ ๋” ์ž์„ธํžˆ ์ฝ์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์˜ ์ปฌ๋ ‰์…˜ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { setCollectionV2 } from '@metaplex-foundation/mpl-candy-machine'
+
+await setCollectionV2(umi, {
+  candyMachine: candyMachine.publicKey,
+  collectionMint: candyMachine.collectionMint,
+  collectionUpdateAuthority: collectionUpdateAuthority.publicKey,
+  newCollectionMint: newCollectionMint.publicKey,
+  newCollectionUpdateAuthority,
+}).sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [setCollectionV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/setCollectionV2.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ƒˆ๋กœ์šด ๋ฏผํŒ… ๋ช…๋ น์–ด
+
+Candy Machine Core์™€ Candy Guard ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘์˜ `mint` ๋ช…๋ น์–ด๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT ๋ฏผํŒ…์„ ์ง€์›ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด๋Š” `mintV2`๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ `mint` ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ถ”๊ฐ€ ๊ณ„์ •๋“ค์ด ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋„ ์ƒˆ๋กœ์šด `mintV2` ๋ช…๋ น์–ด๋Š” ์ผ๋ฐ˜ NFT๋ฅผ ๋ฏผํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ์กด `mint` ๋ช…๋ น์–ด๋“ค์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
+
+์ „์ฒด "[๋ฏผํŒ…](/kr/candy-machine/mint)" ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ์šด `mintV2` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="Candy Machine์—์„œ ๋ฏผํŒ…" %}
+{% dialect title="JavaScript" id="js" %}
+
+```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,
+    })
+  )
+  .sendAndConfirm(umi)
+```
+
+API ์ฐธ์กฐ: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/functions/mintV2.html)
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+Candy Guard ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ผ๋ถ€ ๊ฐ€๋“œ๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋ฅผ ์ง€์›ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์—…๋ฐ์ดํŠธ๊ฐ€ ์ผ๋ฐ˜ NFT๋ฅผ ๋ฏผํŒ…ํ•  ๋•Œ ์ค‘๋‹จ ๋ณ€๊ฒฝ์„ ๋„์ž…ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ํ† ํฐ ํ‘œ์ค€์— ๋”ฐ๋ผ ๋ฏผํŒ…ํ•  ๋•Œ ๋” ๋งŽ์€ ๋‚˜๋จธ์ง€ ๊ณ„์ •์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ฐ€๋“œ๋“ค์€:
+
+- `nftBurn`๊ณผ `nftPayment` ๊ฐ€๋“œ๋Š” ์ด์ œ ์†Œ๊ฐ/์ „์†ก๋˜๋Š” NFT๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- `FreezeSolPayment`์™€ `FreezeTokenPayment` ๊ฐ€๋“œ. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT๋Š” ์ •์˜์ƒ ํ•ญ์ƒ ๋™๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, Utility delegate๋ฅผ ํ†ตํ•ด ๋ฏผํŒ…๋  ๋•Œ ์ž ๊ธˆ(Locked)๋˜๊ณ  ํ•ด๋™ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ์ž ๊ธˆ ํ•ด์ œ(Unlocked)๋ฉ๋‹ˆ๋‹ค.
+
+## ์ถ”๊ฐ€ ์ž๋ฃŒ
+
+ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT์™€ Candy Machine์— ๋Œ€ํ•œ ๋‹ค์Œ ๋ฆฌ์†Œ์Šค๋“ค์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+- [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ NFT ๊ฐ€์ด๋“œ](/kr/token-metadata/pnfts)
+- [Candy Machine Core Program](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-machine-core)
+- [Candy Guard Program](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard)

+ 11 - 0
src/pages/kr/candy-machine/references/index.md

@@ -0,0 +1,11 @@
+---
+title: API ์ฐธ์กฐ
+metaTitle: API ์ฐธ์กฐ | Candy Machine
+description: Metaplex์˜ Candy Machine ์ œํ’ˆ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ฐ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.
+---
+
+- ๐Ÿ“ฆ JavaScript:
+    * [Candy Machine](https://mpl-candy-machine.typedoc.metaplex.com/)
+- ๐Ÿฆ€ Rust ํ”„๋กœ๊ทธ๋žจ:
+    * [Candy Machine Core](https://docs.rs/mpl-candy-machine-core/0.1.0/mpl_candy_machine_core/)
+    * [Candy Guard](https://docs.rs/mpl-candy-guard/0.1.0/mpl_candy_guard/)

+ 302 - 0
src/pages/kr/candy-machine/settings.md

@@ -0,0 +1,302 @@
+---
+title: Candy Machine ์„ค์ •
+metaTitle: ์„ค์ • | Candy Machine
+description: Candy Machine ์„ค์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+---
+
+์ด ํŽ˜์ด์ง€์—์„œ๋Š” Candy Machine์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์„ค์ •์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋กœ ์•Œ๋ ค์ง„ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์„ค์ •๋ณด๋‹ค๋Š” Candy Machine ์ž์ฒด์™€ ์ƒ์„ฑ๋˜๋Š” NFT์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์„ค์ •์— ์ง‘์ค‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ›„์ž๋Š” ์ „์šฉ ํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+## ๊ถŒํ•œ
+
+Solana์—์„œ ๊ณ„์ •์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ •๋ณด ์ค‘ ํ•˜๋‚˜๋Š” ๊ณ„์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ง€๊ฐ‘์œผ๋กœ, ์ด๋ฅผ **๊ถŒํ•œ**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋‚˜์ค‘์— ์—…๋ฐ์ดํŠธ, ์•„์ดํ…œ ์‚ฝ์ž…, ์‚ญ์ œ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์˜ ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ถŒํ•œ์ธ **๋ฏผํŠธ ๊ถŒํ•œ**์ด ์žˆ์Šต๋‹ˆ๋‹ค. Candy Machine์ด Candy Guard ์—†์ด ์ƒ์„ฑ๋˜๋ฉด ์ด ๊ถŒํ•œ์ด Candy Machine์—์„œ ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ง€๊ฐ‘์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ˆ„๊ตฌ๋„ ๋ฏผํŒ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ์ด ๋ฏผํŠธ ๊ถŒํ•œ์ด **๊ฐ€๋“œ**๋กœ ์•Œ๋ ค์ง„ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ๊ทœ์น™ ์„ธํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” Candy Guard์˜ ์ฃผ์†Œ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+
+์ค‘์š”ํ•œ ์ ์€ SDK๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Candy Machine์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ด€๋ จ๋œ Candy Guard์™€ ํ•จ๊ป˜ ํ•ญ์ƒ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์ด ๋ฏผํŠธ ๊ถŒํ•œ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ถŒํ•œ ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+
+์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•  ๋•Œ ๊ถŒํ•œ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Umi identity๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. `authority` ์†์„ฑ์— ์œ ํšจํ•œ ์„œ๋ช…์ž๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ด ๊ถŒํ•œ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```tsx
+import { generateSigner } from '@metaplex-foundation/umi'
+
+const myCustomAuthority = generateSigner(umi)
+const candyMachineSettings = {
+  authority: myCustomAuthority,
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๋ชจ๋“  NFT๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์„ค์ •
+
+Candy Machine ์„ค์ •์˜ ํฐ ๋ถ€๋ถ„์€ ํ•ด๋‹น Candy Machine์—์„œ ๋ฏผํŒ…๋  NFT๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งŽ์€ NFT ์†์„ฑ์ด ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์— ๋Œ€ํ•ด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Candy Machine์— ์•„์ดํ…œ์„ ๋กœ๋“œํ•  ๋•Œ๋งˆ๋‹ค ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š” ๋Œ€์‹  Candy Machine ์„ค์ •์—์„œ ํ•œ ๋ฒˆ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+๋ฏผํŒ…๋œ NFT๋ฅผ ์„œ๋กœ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์†์„ฑ์€ NFT์˜ **์ด๋ฆ„**๊ณผ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” **URI**๋ผ๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์•„์ดํ…œ ์‚ฝ์ž…](/kr/candy-machine/insert-items)์„ ์ฐธ์กฐํ•˜์„ธ์š”.
+
+๋‹ค์Œ์€ ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ์†์„ฑ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
+
+- **ํŒ๋งค์ž ์ˆ˜์ˆ˜๋ฃŒ ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ**: ๋ฏผํŒ…๋œ NFT์— ์„ค์ •๋˜์–ด์•ผ ํ•˜๋Š” 2์ฐจ ํŒ๋งค ๋กœ์—ดํ‹ฐ๋ฅผ ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ๋กœ ํ‘œ์‹œ. ์˜ˆ๋ฅผ ๋“ค์–ด `250`์€ `2.50%` ๋กœ์—ดํ‹ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
+- **์‹ฌ๋ณผ**: ๋ฏผํŒ…๋œ NFT์— ์‚ฌ์šฉํ•  ์‹ฌ๋ณผ โ€” ์˜ˆ: "MYPROJECT". ์ด๋Š” ์ตœ๋Œ€ 10์ž๊นŒ์ง€์˜ ํ…์ŠคํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋นˆ ํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์ตœ๋Œ€ ์—๋””์…˜ ๊ณต๊ธ‰๋Ÿ‰**: ๋ฏผํŒ…๋œ NFT์—์„œ ์ธ์‡„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์—๋””์…˜ ์ˆ˜. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋ฏผํŒ…๋œ NFT๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ธ์‡„๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ `0`์œผ๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ `null`๋กœ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์ฆ‰, Candy Machine์—์„œ๋Š” ๋ฌด์ œํ•œ ์—๋””์…˜์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+- **๋ณ€๊ฒฝ ๊ฐ€๋Šฅ**: ๋ฏผํŒ…๋œ NFT๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€. ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ์ด๋ฅผ `true`๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— NFT๋ฅผ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋ถˆ๋ณ€ NFT๋ฅผ ๋‹ค์‹œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
+- **์ฐฝ์ž‘์ž**: ๋ฏผํŒ…๋œ NFT์— ์„ค์ •๋˜์–ด์•ผ ํ•˜๋Š” ์ฐฝ์ž‘์ž ๋ชฉ๋ก. ์—ฌ๊ธฐ์—๋Š” ์ฃผ์†Œ์™€ ๋กœ์—ดํ‹ฐ์˜ ๋ฐฑ๋ถ„์œจ ์ง€๋ถ„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค โ€” ์ฆ‰, `5`๋Š” `5%`์ž…๋‹ˆ๋‹ค. Candy Machine ์ฃผ์†Œ๋Š” ํ•ญ์ƒ ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์˜ ์ฒซ ๋ฒˆ์งธ ์ฐฝ์ž‘์ž๋กœ ์„ค์ •๋˜๊ณ  ์ž๋™์œผ๋กœ ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ˆ„๊ตฌ๋‚˜ NFT๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” Candy Machine์—์„œ ๋ฏผํŒ…๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต๋œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ฐฝ์ž‘์ž๋Š” ๊ทธ ์ดํ›„์— ์„ค์ •๋˜๋ฉฐ ํ•ด๋‹น ์ฐฝ์ž‘์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+- **ํ† ํฐ ํ‘œ์ค€**: ๋ฏผํŒ…๋œ NFT์— ์‚ฌ์šฉํ•  [ํ† ํฐ ํ‘œ์ค€](/kr/token-metadata/token-standard). ์ง€๊ธˆ๊นŒ์ง€ ๋‘ ๊ฐ€์ง€ ํ† ํฐ ํ‘œ์ค€๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค: "[NonFungible](/kr/token-metadata/token-standard#the-non-fungible-standard)" ๋ฐ "[ProgrammableNonFungible](/kr/token-metadata/token-standard#the-programmable-non-fungible-standard)". ์ด๋Š” _๊ณ„์ • ๋ฒ„์ „_์ด 2 ์ด์ƒ์ธ Candy Machine์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **๊ทœ์น™ ์„ธํŠธ**: Candy Machine์ด "ProgrammableNonFungible" ํ† ํฐ ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“  ๋ฏผํŒ…๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” NFT์— ํ• ๋‹น๋  ๋ช…์‹œ์  ๊ทœ์น™ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™ ์„ธํŠธ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ์ปฌ๋ ‰์…˜ NFT์˜ ๊ทœ์น™ ์„ธํŠธ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์žˆ๋Š” ๊ฒฝ์šฐ). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” NFT๋Š” ๊ทœ์น™ ์„ธํŠธ ์—†์ด ๋ฏผํŒ…๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” _๊ณ„์ • ๋ฒ„์ „_์ด 2 ์ด์ƒ์ธ Candy Machine์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ณต์œ  NFT ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+
+์œ„์— ๋‚˜์—ด๋œ ์†์„ฑ ์ค‘ `sellerFeeBasisPoints`, `creators`, `tokenStandard` ์†์„ฑ๋งŒ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์†์„ฑ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:
+
+- `symbol`์€ ๋นˆ ๋ฌธ์ž์—ด๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค โ€” ์ฆ‰, ๋ฏผํŒ…๋œ NFT๋Š” ์‹ฌ๋ณผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+- `maxEditionSupply`๋Š” 0์œผ๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค โ€” ์ฆ‰, ๋ฏผํŒ…๋œ NFT๋Š” ์ธ์‡„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+- `isMutable`์€ `true`๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```tsx
+import { percentAmount, generateSigner, some } from '@metaplex-foundation/umi'
+import { TokenStandard } from '@metaplex-foundation/mpl-token-metadata'
+
+const creatorA = generateSigner(umi).publicKey
+const creatorB = generateSigner(umi).publicKey
+const candyMachineSettings = {
+  tokenStandard: TokenStandard.NonFungible,
+  sellerFeeBasisPoints: percentAmount(33.3, 2),
+  symbol: 'MYPROJECT',
+  maxEditionSupply: 0,
+  isMutable: true,
+  creators: [
+    { address: creatorA, percentageShare: 50, verified: false },
+    { address: creatorB, percentageShare: 50, verified: false },
+  ],
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## Metaplex ์ธ์ฆ ์ปฌ๋ ‰์…˜
+
+๊ฐ Candy Machine์€ [Metaplex ์ธ์ฆ ์ปฌ๋ ‰์…˜(MCC)](/kr/token-metadata/collections)์œผ๋กœ ์•Œ๋ ค์ง„ ํŠน๋ณ„ํ•œ NFT์™€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด **์ปฌ๋ ‰์…˜ NFT**๋Š” ๋ฏผํŒ…๋œ NFT๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์˜จ์ฒด์ธ์—์„œ ๊ฒ€์ฆ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ Candy Machine์—์„œ ๊ท€ํ•˜์˜ ์ปฌ๋ ‰์…˜ NFT๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด **์ปฌ๋ ‰์…˜์˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ**์ด Candy Machine์˜ ์ปฌ๋ ‰์…˜์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ Candy Machine์€ ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์˜ ์ปฌ๋ ‰์…˜์„ ์ž๋™์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜ NFT ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+
+์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ปฌ๋ ‰์…˜ NFT๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋‹ค์Œ ์†์„ฑ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+- `collectionMint`: ์ปฌ๋ ‰์…˜ NFT์˜ ๋ฏผํŠธ ๊ณ„์ • ์ฃผ์†Œ.
+- `collectionUpdateAuthority`: ์„œ๋ช…์ž๋กœ์„œ์˜ ์ปฌ๋ ‰์…˜ NFT์˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ.
+
+๋‹ค์Œ์€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+
+```tsx
+import { generateSigner, percentAmount } from '@metaplex-foundation/umi'
+import { createNft } from '@metaplex-foundation/mpl-token-metadata'
+
+// ์ปฌ๋ ‰์…˜ NFT ์ƒ์„ฑ.
+const collectionUpdateAuthority = generateSigner(umi)
+const collectionMint = generateSigner(umi)
+await createNft(umi, {
+  mint: collectionMint,
+  authority: collectionUpdateAuthority,
+  name: 'My Collection NFT',
+  uri: 'https://example.com/path/to/some/json/metadata.json',
+  sellerFeeBasisPoints: percentAmount(9.99, 2), // 9.99%
+  isCollection: true,
+    collectionDetails: {
+    __kind: 'V1',
+    size: 0,
+  },
+}).sendAndConfirm(umi)
+
+// ์„ค์ •์— ์ปฌ๋ ‰์…˜ ์ฃผ์†Œ์™€ ๊ถŒํ•œ ์ „๋‹ฌ.
+const candyMachineSettings = {
+  collectionMint: collectionMint.publicKey,
+  collectionUpdateAuthority,
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์•„์ดํ…œ ์„ค์ •
+
+Candy Machine ์„ค์ •์—๋Š” ๋‚ด๋ถ€์— ๋กœ๋“œ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๋กœ๋“œ๋  ์•„์ดํ…œ์— ๊ด€ํ•œ ์ •๋ณด๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. **์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ดํ…œ** ์†์„ฑ์ด ์ด ๋ฒ”์ฃผ์— ์†ํ•˜๋ฉฐ Candy Machine์—์„œ ๋ฏผํŒ…๋  NFT์˜ ์ตœ๋Œ€ ์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์•„์ดํ…œ ์ˆ˜ ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+
+์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•  ๋•Œ `itemsAvailable` ์†์„ฑ์€ ํ•„์ˆ˜์ด๋ฉฐ ํฐ ์ •์ˆ˜์˜ ๊ฒฝ์šฐ ์ˆซ์ž ๋˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ `bigint`์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+```tsx
+const candyMachineSettings = {
+  itemsAvailable: 500,
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+**์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ดํ…œ** ์†์„ฑ ์™ธ์—๋„ ์•„์ดํ…œ์ด Candy Machine์— ๋กœ๋“œ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ ์ค‘ ์ •ํ™•ํžˆ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋น„์›Œ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ์€:
+
+- **๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •**.
+- **์ˆจ๊ฒจ์ง„ ์„ค์ •**.
+
+Candy Machine์ด ์ด ๋‘ ๋ชจ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ๋˜ํ•œ **๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •**์ด ์‚ฌ์šฉ๋˜๋ฉด ๋” ์ด์ƒ **์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ดํ…œ** ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+
+๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+{% callout type="note" title="๋ฌด์ž‘์œ„์„ฑ" %}
+
+์ž์‚ฐ์˜ "๋ฌด์ž‘์œ„" ๋ฏผํŒ… ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„์ „ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค์™€ ์•…์˜์ ์ธ ์˜๋„๋กœ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณต๊ฐœ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์œ„ํ•ด [์ˆจ๊ฒจ์ง„ ์„ค์ •](#hidden-settings)์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /callout %}
+
+### ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •
+
+**๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •** ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด Candy Machine ๋‚ด๋ถ€์— ์žˆ๊ฑฐ๋‚˜ ์‚ฝ์ž…๋  ์•„์ดํ…œ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ดํ…œ์˜ **์ด๋ฆ„**๊ณผ **URI**์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๊ธธ์ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ํ•ด๋‹น ๊ธธ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๊ณต์œ  ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ Candy Machine์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •** ์†์„ฑ์€ ๋‹ค์Œ ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค:
+
+- **์ด๋ฆ„ ์ ‘๋‘์‚ฌ**: ๋ชจ๋“  ์‚ฝ์ž…๋œ ์•„์ดํ…œ์ด ๊ณต์œ ํ•˜๋Š” ์ด๋ฆ„ ์ ‘๋‘์‚ฌ. ์ด ์ ‘๋‘์‚ฌ๋Š” ์ตœ๋Œ€ 32์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **์ด๋ฆ„ ๊ธธ์ด**: ์ด๋ฆ„ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ์™ธํ•œ ๊ฐ ์‚ฝ์ž…๋œ ์•„์ดํ…œ์˜ ์ด๋ฆ„์— ๋Œ€ํ•œ ์ตœ๋Œ€ ๊ธธ์ด.
+- **URI ์ ‘๋‘์‚ฌ**: ๋ชจ๋“  ์‚ฝ์ž…๋œ ์•„์ดํ…œ์ด ๊ณต์œ ํ•˜๋Š” URI ์ ‘๋‘์‚ฌ. ์ด ์ ‘๋‘์‚ฌ๋Š” ์ตœ๋Œ€ 200์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **URI ๊ธธ์ด**: URI ์ ‘๋‘์‚ฌ๋ฅผ ์ œ์™ธํ•œ ๊ฐ ์‚ฝ์ž…๋œ ์•„์ดํ…œ์˜ URI์— ๋Œ€ํ•œ ์ตœ๋Œ€ ๊ธธ์ด.
+- **์ˆœ์ฐจ์ **: NFT๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ โ€” `true` โ€” ๋˜๋Š” ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋กœ โ€” `false` โ€” ๋ฏผํŒ…ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ตฌ๋งค์ž๊ฐ€ ๋‹ค์Œ์— ์–ด๋–ค NFT๊ฐ€ ๋ฏผํŒ…๋ ์ง€ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ `false`๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. SDK๋Š” ์ƒˆ๋กœ์šด Candy Machine์„ ์ƒ์„ฑํ•  ๋•Œ ์ˆœ์ฐจ์ ์„ `false`๋กœ ์„ค์ •ํ•œ ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+์ด๋Ÿฌํ•œ **์ด๋ฆ„**๊ณผ **URI** ์†์„ฑ์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ€์ง„ Candy Machine์„ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:
+
+- `1000`๊ฐœ์˜ ์•„์ดํ…œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+- ๊ฐ ์•„์ดํ…œ์˜ ์ด๋ฆ„์€ "My NFT Project #X"์ด๋ฉฐ, ์—ฌ๊ธฐ์„œ X๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์•„์ดํ…œ์˜ ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.
+- ๊ฐ ์•„์ดํ…œ์˜ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” Arweave์— ์—…๋กœ๋“œ๋˜์—ˆ์œผ๋ฏ€๋กœ URI๋Š” "https://arweave.net/"๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ตœ๋Œ€ 43์ž ๊ธธ์ด์˜ ๊ณ ์œ  ์‹๋ณ„์ž๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.
+
+์ด ์˜ˆ์‹œ์—์„œ ์ ‘๋‘์‚ฌ ์—†์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค:
+
+- ์ด๋ฆ„ ๊ธธ์ด = 20. "My NFT Project #"์— 16์ž, ๊ฐ€์žฅ ํฐ ์ˆซ์ž์ธ "1000"์— 4์ž.
+- URI ๊ธธ์ด = 63. "https://arweave.net/"์— 20์ž, ๊ณ ์œ  ์‹๋ณ„์ž์— 43์ž.
+
+1000๊ฐœ์˜ ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ๋•Œ ์•„์ดํ…œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ๋งŒ ์ด 83,000์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Candy Machine์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ณต๊ฐ„๊ณผ ๋”ฐ๋ผ์„œ ๋ธ”๋ก์ฒด์ธ์—์„œ ์ƒ์„ฑํ•˜๋Š” ๋น„์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+- ์ด๋ฆ„ ์ ‘๋‘์‚ฌ = "My NFT Project #"
+- ์ด๋ฆ„ ๊ธธ์ด = 4
+- URI ์ ‘๋‘์‚ฌ = "https://arweave.net/"
+- URI ๊ธธ์ด = 43
+
+1000๊ฐœ์˜ ์•„์ดํ…œ์œผ๋กœ ์ด์ œ ์•„์ดํ…œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ 47,000์ž๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+
+ํ•˜์ง€๋งŒ ๊ทธ๊ฒŒ ์ „๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค! ์ด๋ฆ„ ๋˜๋Š” URI ์ ‘๋‘์‚ฌ ๋‚ด์—์„œ **๋‘ ๊ฐœ์˜ ํŠน์ˆ˜ ๋ณ€์ˆ˜**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ๋”์šฑ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋Š”:
+
+- `$ID$`: 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์•„์ดํ…œ์˜ ์ธ๋ฑ์Šค๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.
+- `$ID+1$`: 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์•„์ดํ…œ์˜ ์ธ๋ฑ์Šค๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.
+
+์œ„์˜ ์˜ˆ์‹œ์—์„œ ์ด๋ฆ„ ์ ‘๋‘์‚ฌ์— `$ID+1$` ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋“  ์•„์ดํ…œ์— ์‚ฝ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์ด ๋ฉ๋‹ˆ๋‹ค:
+
+- ์ด๋ฆ„ ์ ‘๋‘์‚ฌ = "My NFT Project #$ID+1$"
+- ์ด๋ฆ„ ๊ธธ์ด = 0
+- URI ์ ‘๋‘์‚ฌ = "https://arweave.net/"
+- URI ๊ธธ์ด = 43
+
+๋งž์Šต๋‹ˆ๋‹ค, **์ด๋ฆ„ ๊ธธ์ด๊ฐ€ ์ด์ œ 0**์ด๊ณ  ํ•„์š”ํ•œ ๋ฌธ์ž๋ฅผ 43,000์ž๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+
+Umi๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ `some` ๋ฐ `none` ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— `configLineSettings` ๋ฐ `hiddenSettings` ์†์„ฑ์„ ํ†ตํ•ด ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ • ๋˜๋Š” ์ˆจ๊ฒจ์ง„ ์„ค์ •์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ • ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ•˜๋‚˜๋Š” ๊ตฌ์„ฑ๋˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” `none()`์œผ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ์˜ˆ์‹œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.
+
+```tsx
+import { some, none } from '@metaplex-foundation/umi'
+
+const candyMachineSettings = {
+  hiddenSettings: none(),
+  configLineSettings: some({
+    prefixName: 'My NFT Project #$ID+1$',
+    nameLength: 0,
+    prefixUri: 'https://arweave.net/',
+    uriLength: 43,
+    isSequential: false,
+  }),
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+### ์ˆจ๊ฒจ์ง„ ์„ค์ •
+
+์•„์ดํ…œ์„ ์ค€๋น„ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ **์ˆจ๊ฒจ์ง„ ์„ค์ •**์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •๊ณผ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ, ์ˆจ๊ฒจ์ง„ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฏผํŒ…๋œ ๋ชจ๋“  NFT๊ฐ€ ๋™์ผํ•œ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ URI๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ Candy Machine์— ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์™œ ๋ˆ„๊ตฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ์–ด ํ• ๊นŒ์š”? ๊ทธ ์ด์œ ๋Š” ๋ฏผํŒ… ํ›„ ๋ชจ๋“  NFT๋ฅผ ๊ณต๊ฐœํ•˜๋Š” **์ˆจ๊ธฐ๊ณ  ๊ณต๊ฐœํ•˜๋Š” NFT ๋“œ๋กญ**์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ์š”?
+
+- ๋จผ์ € ์ฐฝ์ž‘์ž๋Š” ์ˆจ๊ฒจ์ง„ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์˜ ์ด๋ฆ„๊ณผ URI๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. URI๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ฐœ๊ฐ€ ๊ณง ์ผ์–ด๋‚  ๊ฒƒ์ž„์„ ๋ช…ํ™•ํžˆ ํ•˜๋Š” "ํ‹ฐ์ €" JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
+- ๊ทธ๋‹ค์Œ ๊ตฌ๋งค์ž๋Š” ๋™์ผํ•œ URI์™€ ๋”ฐ๋ผ์„œ ๋™์ผํ•œ "ํ‹ฐ์ €" JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์ด๋Ÿฌํ•œ ๋ชจ๋“  NFT๋ฅผ ๋ฏผํŒ…ํ•ฉ๋‹ˆ๋‹ค.
+- ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“  NFT๊ฐ€ ๋ฏผํŒ…๋˜๋ฉด ์ฐฝ์ž‘์ž๋Š” ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์˜ URI๋ฅผ ํ•ด๋‹น NFT์— ํŠน์ •ํ•œ ์‹ค์ œ URI๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
+
+๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์˜ ๋ฌธ์ œ๋Š” ์ฐฝ์ž‘์ž๊ฐ€ ์–ด๋–ค ๊ตฌ๋งค์ž๊ฐ€ ์–ด๋–ค NFT๋ฅผ ๋ฐ›๋Š”์ง€ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ตฌ๋งค์ž๊ฐ€ NFT์™€ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๋งคํ•‘์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ˆจ๊ฒจ์ง„ ์„ค์ •์—๋Š” NFT ์ธ๋ฑ์Šค๋ฅผ ์‹ค์ œ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๋งคํ•‘ํ•˜๋Š” ํŒŒ์ผ์˜ 32์ž ํ•ด์‹œ๋กœ ์ฑ„์›Œ์ ธ์•ผ ํ•˜๋Š” **ํ•ด์‹œ** ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณต๊ฐœ ํ›„ ์ฐฝ์ž‘์ž๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์„ ๊ณต๊ฐœํ•  ์ˆ˜ ์žˆ๊ณ  ๊ตฌ๋งค์ž๋Š” ํ•ด๋‹น ํ•ด์‹œ๊ฐ€ ์ˆจ๊ฒจ์ง„ ์„ค์ •์— ์ œ๊ณต๋œ ํ•ด์‹œ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ ์ˆจ๊ฒจ์ง„ ์„ค์ • ์†์„ฑ์— ๋‹ค์Œ ์†์„ฑ๋“ค์ด ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:
+
+- **์ด๋ฆ„**: ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์˜ "์ˆจ๊ฒจ์ง„" ์ด๋ฆ„. ์ตœ๋Œ€ 32์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **URI**: ๋ชจ๋“  ๋ฏผํŒ…๋œ NFT์˜ "์ˆจ๊ฒจ์ง„" URI. ์ตœ๋Œ€ 200์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **ํ•ด์‹œ**: NFT ์ธ๋ฑ์Šค๋ฅผ ์‹ค์ œ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๋งคํ•‘ํ•˜๋Š” ํŒŒ์ผ์˜ 32์ž ํ•ด์‹œ๋กœ ๊ตฌ๋งค์ž๊ฐ€ ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ •์˜ ์ ‘๋‘์‚ฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ˆจ๊ฒจ์ง„ ์„ค์ •์˜ **์ด๋ฆ„**๊ณผ **URI**์—๋„ ํŠน์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ๋‹ค์‹œ ๋งํ•ด, ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋Š”:
+
+- `$ID$`: 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฏผํŒ…๋œ NFT์˜ ์ธ๋ฑ์Šค๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.
+- `$ID+1$`: 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฏผํŒ…๋œ NFT์˜ ์ธ๋ฑ์Šค๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.
+
+๋˜ํ•œ Candy Machine์— ์•„์ดํ…œ์„ ์‚ฝ์ž…ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ˆจ๊ฒจ์ง„ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ํฐ ๋“œ๋กญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—๋„ ์ฃผ๋ชฉํ•˜์„ธ์š”. ์œ ์ผํ•œ ์ฃผ์˜์‚ฌํ•ญ์€ ๋ฏผํŒ… ํ›„ ๊ฐ NFT์˜ ์ด๋ฆ„๊ณผ URI๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์˜คํ”„์ฒด์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ˆจ๊ฒจ์ง„ ์„ค์ •" %}
+{% dialect title="JavaScript" id="js" %}
+
+ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```ts
+import crypto from 'crypto'
+
+const revealData = [
+  { name: 'Nft #1', uri: 'http://example.com/1.json' },
+  { name: 'Nft #2', uri: 'http://example.com/2.json' },
+  { name: 'Nft #3', uri: 'http://example.com/3.json' },
+]
+
+const string = JSON.stringify(revealData)
+const hash = crypto.createHash('sha256').update(string).digest()
+
+console.log(hash)
+```
+
+Umi๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ `some` ๋ฐ `none` ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— `configLineSettings` ๋ฐ `hiddenSettings` ์†์„ฑ์„ ํ†ตํ•ด ๊ตฌ์„ฑ ๋ผ์ธ ์„ค์ • ๋˜๋Š” ์ˆจ๊ฒจ์ง„ ์„ค์ •์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ • ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ•˜๋‚˜๋Š” ๊ตฌ์„ฑ๋˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” `none()`์œผ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ Umi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ์˜ˆ์‹œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.
+
+```tsx
+import { some, none } from '@metaplex-foundation/umi'
+
+const candyMachineSettings = {
+  configLineSettings: none(),
+  hiddenSettings: some({
+    name: 'My NFT Project #$ID+1$',
+    uri: 'https://example.com/path/to/teaser.json',
+    hash: hashOfTheFileThatMapsUris,
+  }),
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ๊ฐ€๋“œ์™€ ๊ทธ๋ฃน
+
+์†Œ๊ฐœ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด ํŽ˜์ด์ง€๋Š” ์ฃผ์š” Candy Machine ์„ค์ •์— ์ค‘์ ์„ ๋‘์ง€๋งŒ ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์—์„œ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค.
+
+์ด๋Š” ์„ค๋ช…ํ•  ๋งŽ์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ๊ฐ€๋“œ๊ฐ€ ์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์ฃผ์ œ์ด๋ฏ€๋กœ ์ด ๋ฌธ์„œ์˜ ์ „์ฒด ์„น์…˜์„ ํ• ์• ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ๊ฐ€์žฅ ์ข‹์€ ๊ณณ์€ [Candy Guards](/kr/candy-machine/guards) ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
+
+## ๊ฒฐ๋ก 
+
+์ด์ œ ์ฃผ์š” Candy Machine ์„ค์ •์— ๋Œ€ํ•ด ์•Œ์•˜์œผ๋ฏ€๋กœ [๋‹ค์Œ ํŽ˜์ด์ง€](/kr/candy-machine/manage)์—์„œ ์ž์ฒด Candy Machine์„ ์ƒ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

+ 232 - 0
src/pages/kr/candy-machine/sugar/configuration.md

@@ -0,0 +1,232 @@
+---
+title: ๊ตฌ์„ฑ ํŒŒ์ผ
+metaTitle: ๊ตฌ์„ฑ ํŒŒ์ผ | Sugar
+description: Sugar ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์ž์„ธํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.
+---
+
+Sugar๋Š” ์—์…‹์„ ์—…๋กœ๋“œํ•˜๊ณ  Candy Machine์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด JSON ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํŒŒ์ผ ์ด๋ฆ„์€ `config.json`์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์—๋Š” Candy Machine์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„ค์ •๊ณผ ๋ฏผํŒ…ํ•  ์—์…‹์„ ์—…๋กœ๋“œํ•˜๋Š” ์„ค์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฏผํŒ…์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•  ๊ฐ€๋“œ์˜ ๊ตฌ์„ฑ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
+
+๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+```json
+{
+  "tokenStandard": "pnft",
+  "number": 10,
+  "symbol": "TEST",
+  "sellerFeeBasisPoints": 500,
+  "isMutable": true,
+  "isSequential": false,
+  "ruleSet": "eBJLFYPxJmMGKuFwpDWkzxZeUrad92kZRC5BJLpzyT9",
+  "creators": [
+    {
+      "address": "PanbgtcTiZ2PveV96t2FHSffiLHXXjMuhvoabUUKKm8",
+      "share": 50
+    },
+    {
+      "address": "PanbgtcTiZ2PveV96t2FHSffiLHXXjMuhvoabUUKKm8",
+      "share": 50
+    }
+  ],
+  "hiddenSettings": null,
+  "uploadMethod": "bundlr",
+  "awsConfig": null,
+  "nftStorageAuthToken": null,
+  "shdwStorageAccount": null,
+  "pinataConfig": null,
+  "sdriveApiKey": null,
+  "guards": {
+    "default": {
+      "botTax": {
+        "value": 0.01,
+        "lastInstruction": true
+      }
+    },
+    "groups": [
+      {
+        "label": "OGs",
+        "guards": {
+          "startDate": {
+            "date": "2022-10-20 12:00:00 +0000"
+          },
+          "tokenGate": {
+            "amount": 1,
+            "mint": "7nE1GmnMmDKiycFkpHF7mKtxt356FQzVonZqBWsTWZNf"
+          },
+          "solPayment": {
+            "value": 1,
+            "destination": "PanbgtcTiZ2PveV96t2FHSffiLHXXjMuhvoabUUKKm8"
+          }
+        }
+      },
+      {
+        "label": "Public",
+        "guards": {
+          "startDate": {
+            "date": "2022-10-20 18:00:00 +0000"
+          },
+          "solPayment": {
+            "value": 2,
+            "destination": "PanbgtcTiZ2PveV96t2FHSffiLHXXjMuhvoabUUKKm8"
+          }
+        }
+      }
+    ]
+  }
+}
+```
+
+๊ตฌ์„ฑ ํŒŒ์ผ์€ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ถ€๋ถ„์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: Candy Machine ์„ค์ •(`"tokenStandard"`๋ถ€ํ„ฐ `"hiddenSettings"`๊นŒ์ง€), ์—…๋กœ๋“œ ์„ค์ •(`"uploadMethod"`๋ถ€ํ„ฐ `"sdriveApiKey"`๊นŒ์ง€) ๋ฐ ๊ฐ€๋“œ ์„ค์ •(`"guards"`).
+
+## Candy Machine ์„ค์ •
+
+Candy Machine ์„ค์ •์€ ์—์…‹์˜ ์œ ํ˜•, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—์…‹ ์ˆ˜ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+| ์„ค์ • | ์˜ต์…˜ | ๊ฐ’/ํƒ€์ž… | ์„ค๋ช…               |
+| ------- | ------- | --------------- | ------------------------- |
+| tokenStandard |   |                 |                           |
+|         |         | "nft"           | ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ์—์…‹ (`NFT`)        |
+|         |         | "pnft"           | ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ์—์…‹ (`pNFT`) |
+| number  |         | Integer         | ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ ์ˆ˜ |
+| symbol  |         | String          | NFT์˜ ์‹ฌ๋ณผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด |
+| sellerFeeBasisPoint  |         | Integer          | ์ฐฝ์ž‘์ž๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋กœ์—ดํ‹ฐ(๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ, ์ฆ‰ 550์€ 5.5%๋ฅผ ์˜๋ฏธ)  |
+| isMutable |       | Boolean         | NFT ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ณ„์ •์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถˆ๋ฆฐ ๊ฐ’ |
+| isSequential |    | Boolean         | ๋ฏผํŒ… ์ค‘์— ์ˆœ์ฐจ์  ์ธ๋ฑ์Šค ์ƒ์„ฑ์„ ์‚ฌ์šฉํ• ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถˆ๋ฆฐ ๊ฐ’ |
+| ruleSet  |        | Public Key | *(์„ ํƒ์‚ฌํ•ญ)* ๋ฏผํŒ…๋œ `pNFT`๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์น™ ์„ธํŠธ |
+
+`creators` ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๋Œ€ 4๊ฐœ์˜ ์ฃผ์†Œ์™€ ๊ทธ๋“ค์˜ ๋ฐฑ๋ถ„์œจ ์ง€๋ถ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+| ์„ค์ • | ์˜ต์…˜ | ๊ฐ’/ํƒ€์ž… | ์„ค๋ช…               |
+| ------- | ------- | --------------- | ------------------------- |
+| creators |        | ์ตœ๋Œ€ 4๋ช…์˜ ์ฐฝ์ž‘์ž | ์ฐฝ์ž‘์ž ๋ชฉ๋ก ๋ฐ ๋กœ์—ดํ‹ฐ์˜ ๋ฐฑ๋ถ„์œจ ์ง€๋ถ„ |
+|          | address | Public Key | ์ฐฝ์ž‘์ž ๊ณต๊ฐœ ํ‚ค |
+|          | share | Integer | `0`๊ณผ `100` ์‚ฌ์ด์˜ ๊ฐ’ |
+
+{% callout %}
+
+์˜จ์ฒด์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์ตœ๋Œ€ 5๋ช…์˜ ์ฐฝ์ž‘์ž๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ, Candy Machine์€ ์ฐฝ์ž‘์ž ์ค‘ ํ•˜๋‚˜๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€ 4๋ช…์˜ ์ฐฝ์ž‘์ž๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
+
+์ง€๋ถ„ ๊ฐ’์˜ ํ•ฉ๊ณ„๋Š” 100์ด ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
+
+{% /callout %}
+
+Candy Machine์€ NFT๊ฐ€ ๋ฏผํŒ…๋  ๋•Œ ์ตœ์ข… ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–์ง€ ์•Š๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฏผํŒ…์ด ์™„๋ฃŒ๋œ ํ›„ ๊ณต๊ฐœ ๋‹จ๊ณ„๋ฅผ ๊ณ„ํšํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ *์ˆจ๊ฒจ์ง„* NFT์— ๋Œ€ํ•œ "ํ”Œ๋ ˆ์ด์Šคํ™€๋”" ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+| ์„ค์ • | ์˜ต์…˜ | ๊ฐ’/ํƒ€์ž… | ์„ค๋ช…               |
+| ------- | ------- | --------------- | ------------------------- |
+| hiddenSettings | | | |
+| | name | String | ๋ฏผํŠธ์˜ ์ด๋ฆ„(`$ID$` ๋˜๋Š” `$ID+1$` ๋ฏผํŠธ ์ธ๋ฑ์Šค ๊ต์ฒด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ `sugar reveal`์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Œ) |
+| | uri | String | ๋ฏผํŠธ์˜ URI(`$ID$` ๋˜๋Š” `$ID+1$` ๋ฏผํŠธ ์ธ๋ฑ์Šค ๊ต์ฒด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ) |
+| | hash | String | 32์ž ํ•ด์‹œ(๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฏผํŠธ ๋ฒˆํ˜ธ์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๋งคํ•‘์ด ์žˆ๋Š” ์บ์‹œ ํŒŒ์ผ์˜ ํ•ด์‹œ๋กœ, ๋ฏผํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ ์ˆœ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ. `sugar hash`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ)
+
+{% totem %}
+{% totem-accordion title="hiddenSettings ์˜ˆ์‹œ" %}
+๊ตฌ์„ฑ ํŒŒ์ผ์˜ `hiddenSettings` ์„น์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+```json
+"hiddenSettings": {
+    "name": "Name $ID+1$",
+    "uri": "https://arweave.net/IM4NByHrEzG87g2AhFY4pY7lk7YNriUVUUbZWhZ0HHY/26.png",
+    "hash": "49Bj8ZVSvSvAQwziKEts3iAeUhi27ATH"
+}
+```
+{% /totem-accordion %}
+{% /totem %}
+
+## ์—…๋กœ๋“œ ์„ค์ •
+
+Sugar๋Š” ๋‹ค์–‘ํ•œ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ธ‰์ž๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์‚ฌ์šฉํ•  ๊ณต๊ธ‰์ž๋Š” `uploadMethod` ์„ค์ •์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ๊ณต๊ธ‰์ž์— ๋”ฐ๋ผ ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์•„๋ž˜ ํ‘œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:
+
+| ์„ค์ • | ์˜ต์…˜ | ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’ | ์„ค๋ช…               |
+| ------- | ------- | --------------- | ------------------------- |
+| uploadMethod |   |  | ์ด๋ฏธ์ง€์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•  ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ |  
+|  |   | "bundlr" |  [Bundlr](https://bundlr.network)์„ ์‚ฌ์šฉํ•˜์—ฌ Arweave์— ์—…๋กœ๋“œํ•˜๊ณ  SOL๋กœ ๊ฒฐ์ œ (๋ฉ”์ธ๋„ท๊ณผ ๋ฐ๋ธŒ๋„ท ๋ชจ๋‘์—์„œ ์ž‘๋™; ๋ฐ๋ธŒ๋„ท์—์„œ๋Š” 7์ผ ๋™์•ˆ๋งŒ ํŒŒ์ผ์ด ์ €์žฅ๋จ)
+|  |   | "aws" | Amazon Web Services (AWS)์— ์—…๋กœ๋“œ |
+|  |   | "nftStorage" | [NFT.Storage](https://nft.storage)์— ์—…๋กœ๋“œ (๋ชจ๋“  ๋„คํŠธ์›Œํฌ์—์„œ ์ž‘๋™) |
+|  |   | "shdw" | GenesysGo [Shadow Drive](https://docs.shadow.cloud)์— ์—…๋กœ๋“œ (๋ฉ”์ธ๋„ท์—์„œ๋งŒ ์ž‘๋™)
+|  |   | "pinata" | [Pinata](https://www.pinata.cloud)์— ์—…๋กœ๋“œ (๋ชจ๋“  ๋„คํŠธ์›Œํฌ์—์„œ ์ž‘๋™; ๋ฌด๋ฃŒ ๋ฐ ๊ณ„์ธตํ™”๋œ ๊ตฌ๋…) |
+|  |   | "sdrive" | [SDrive Cloud Storage](https://sdrive.app)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Shadow Drive์— ์—…๋กœ๋“œ |
+|awsConfig | | | *("aws"๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ ํ•„์ˆ˜)* |
+| | bucket | String | AWS ๋ฒ„ํ‚ท ์ด๋ฆ„
+| | profile | String | ์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  AWS ํ”„๋กœํ•„ ์ด๋ฆ„ |
+| | directory | String | ํ•ญ๋ชฉ์„ ์—…๋กœ๋“œํ•  ๋ฒ„ํ‚ท ๋‚ด์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ. ๋นˆ ๋ฌธ์ž์—ด์€ ๋ฒ„ํ‚ท ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•จ์„ ์˜๋ฏธ. |
+| nftStorageAuthToken | | String | NFT.Storage API ํ‚ค *("nftStorage"๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ ํ•„์ˆ˜)* |
+| pinataConfig | | | *("pinata"๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ ํ•„์ˆ˜)* |
+| | JWT | String | JWT ์ธ์ฆ ํ† ํฐ |
+| | apiGateway | String | Pinata API์— ์—ฐ๊ฒฐํ•  URL |
+| | apiContent | String | ์—์…‹ ๋งํฌ ์ƒ์„ฑ์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•  URL |
+| | parallelLimit | Integer | ๋™์‹œ ์—…๋กœ๋“œ ์ˆ˜; ์†๋„ ์ œํ•œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ด ์„ค์ • ์‚ฌ์šฉ |
+| shadowStorageAccount | | String | Shadow Drive ์Šคํ† ๋ฆฌ์ง€ pubkey *("shdw"๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ ํ•„์ˆ˜)* |
+| sdriveApiKey | | String | SDrive API ํ‚ค *("sdrive"๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ ํ•„์ˆ˜)* |
+
+ํŠน์ • ์—…๋กœ๋“œ ๋ฐฉ๋ฒ• ์„ค์ •:
+
+{% totem %}
+{% totem-accordion title="Bundlr" %}
+
+`"bundlr"` ์—…๋กœ๋“œ ๋ฐฉ๋ฒ•์€ ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—…๋กœ๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ˆ˜์ˆ˜๋ฃŒ๋Š” ๊ตฌ์„ฑ๋œ ํ‚คํŽ˜์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ `SOL`๋กœ ์ง€๋ถˆ๋ฉ๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% totem-accordion title="AWS" %}
+
+`"aws"` ๋ฐฉ๋ฒ•์€ ํŒŒ์ผ์„ Amazon S3 ์Šคํ† ๋ฆฌ์ง€์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋ฉฐ, ๊ตฌ์„ฑ ํŒŒ์ผ์˜ `"awsConfig"` ํ•˜์— `bucket`, `profile`, `directory` ๋ฐ `domain` ๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ์‹œ์Šคํ…œ์— ์ž๊ฒฉ ์ฆ๋ช…์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์†์„ฑ์œผ๋กœ `~/.aws/credentials` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:
+
+```
+[default]
+aws_access_key_id=<ACCESS KEY ID>
+aws_secret_access_key=<SECRET ACCESS KEY>
+region=<REGION>
+```
+
+๋˜ํ•œ `"public-read"`๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋‹ค๋ฅธ ์ถœ์ฒ˜์—์„œ ์š”์ฒญ๋œ ์ฝ˜ํ…์ธ  ์•ก์„ธ์Šค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Cross-Origin Resource Sharing (CORS) ๊ทœ์น™์„ ์ ์šฉํ•˜์—ฌ ๋ฒ„ํ‚ท์˜ ACL ๊ถŒํ•œ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค(์ง€๊ฐ‘๊ณผ ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ/๋ฏธ๋””์–ด ํŒŒ์ผ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”). ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋Š” ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+* [๋ฒ„ํ‚ท ์ •์ฑ… ์˜ˆ์‹œ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)
+* [CORS ๊ตฌ์„ฑ](https://aws.amazon.com/premiumsupport/knowledge-center/s3-configure-cors/)
+
+`profile` ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์—์„œ ์ฝ์„ ํ”„๋กœํ•„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `directory` ๊ฐ’์€ ํŒŒ์ผ์ด ์—…๋กœ๋“œ๋  ๋ฒ„ํ‚ท ๋‚ด ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์œผ๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๊ตฌ๋ถ„๋œ ๋‹จ์ผ ๋ฒ„ํ‚ท์— ์—ฌ๋Ÿฌ candy machine ๋˜๋Š” ์ปฌ๋ ‰์…˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋นˆ ๋ฌธ์ž์—ด๋กœ ๋‘๋ฉด ํŒŒ์ผ์ด ๋ฒ„ํ‚ท์˜ ๋ฃจํŠธ์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ์ธ) `domain`์„ ์‚ฌ์šฉํ•˜๋ฉด AWS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ปค์Šคํ…€ ๋„๋ฉ”์ธ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„๋ฉ”์ธ์„ `https://mydomain.com`์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด `https://mydomain.com/0.json` ํ˜•์‹์˜ ํŒŒ์ผ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ AWS S3 ๋„๋ฉ”์ธ(`https://<BUCKET_NAME>.s3.amazonaws.com`)์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% totem-accordion title="NFT.Storage" %}
+
+NFT.Storage๋Š” ๊ณต๊ฐœ IPFS ๋„คํŠธ์›Œํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” ์ธ๊ธฐ ์žˆ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. API ํ‚ค(ํ† ํฐ)๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๊ณ„์ •์„ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ `"nftStorageAuthToken"`์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% totem-accordion title="Pinata" %}
+
+`"pinata"` ๋ฐฉ๋ฒ•์€ ํŒŒ์ผ์„ Pinata ์Šคํ† ๋ฆฌ์ง€์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์˜ `"pinataConfig"` ํ•˜์— `jwt`, `apiGateway`, `contentGateway` ๋ฐ `parallelLimit` ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+* `jwt`: JWT ์ธ์ฆ ํ† ํฐ
+* `apiGateway`: Pinata API์— ์—ฐ๊ฒฐํ•  URL (๊ณต๊ฐœ API ์—”๋“œํฌ์ธํŠธ์˜ ๊ฒฝ์šฐ `https://api.pinata.cloud` ์‚ฌ์šฉ)
+* `contentGateway`: ์—์…‹ ๋งํฌ ์ƒ์„ฑ์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•  URL (๊ณต๊ฐœ ๊ฒŒ์ดํŠธ์›จ์ด์˜ ๊ฒฝ์šฐ `https://gateway.pinata.cloud` ์‚ฌ์šฉ)
+* `parallelLimit`: (์„ ํƒ์‚ฌํ•ญ) ๋™์‹œ ์—…๋กœ๋“œ ์ˆ˜, ์†๋„ ์ œํ•œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ฐ’์„ ์กฐ์ •
+
+{% callout %}
+
+๊ณต๊ฐœ ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค โ€” ์‹ฌํ•˜๊ฒŒ ์†๋„ ์ œํ•œ์ด ์žˆ๊ณ  ์†๋„๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•˜๊ธฐ์— ์ข‹์Šต๋‹ˆ๋‹ค.
+
+{% /callout %}
+
+{% /totem-accordion %}
+{% totem-accordion title="Shadow Drive" %}
+
+Shadow Drive๋Š” Solana ๋ธ”๋ก์ฒด์ธ์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๊ตฌ์ถ•๋œ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค. Shadow Drive์— ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜๋ ค๋ฉด ๋จผ์ € ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” [Shadow Drive CLI](https://docs.shadow.cloud/build)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์„ ์ƒ์„ฑํ•œ ํ›„ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ `"shdwStorageAccount"` ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น pubkey ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜์„ธ์š”.
+
+{% callout %}
+
+Shadow Drive ์—…๋กœ๋“œ ๋ฐฉ๋ฒ•์€ `mainnet-beta`์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /callout %}
+
+{% /totem-accordion %}
+{% totem-accordion title="SDrive" %}
+
+SDrive๋Š” GenesysGo Shadow Drive ์œ„์— ๊ตฌ์ถ•๋œ ์Šคํ† ๋ฆฌ์ง€ ์•ฑ์ž…๋‹ˆ๋‹ค. API ํ‚ค(ํ† ํฐ)๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๊ณ„์ •์„ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ `"sdriveApiKey"`๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% /totem %}
+
+## ๊ฐ€๋“œ ์„ค์ •
+
+`guards` ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด Candy Machine์—์„œ ํ™œ์„ฑํ™”๋  ๊ฐ€๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+Candy Machine์€ ๋ฏผํŒ…์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. [๊ฐ€๋“œ](/kr/candy-machine/guards)๋Š” "๊ธฐ๋ณธ" [๊ฐ€๋“œ ๊ทธ๋ฃน](/kr/candy-machine/guard-groups)์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๊ฐ€๋“œ ๊ทธ๋ฃน์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 101 - 0
src/pages/kr/candy-machine/sugar/index.md

@@ -0,0 +1,101 @@
+---
+title: ๊ฐœ์š”
+metaTitle: ๊ฐœ์š” | Sugar
+description: Candy Machine ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ CLI ๋„๊ตฌ์ธ Sugar์˜ ์ž์„ธํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.
+---
+
+Sugar๋Š” Candy Machine๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Candy Machine์˜ ์ „์ฒด ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:
+
+- ๋ชจ๋“  Candy Machine ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ๋‹จ์ผ ๊ตฌ์„ฑ ํŒŒ์ผ;
+- ๋ฏธ๋””์–ด/๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ Candy Machine ๋ฐฐํฌ์˜ ํ–ฅ์ƒ๋œ ์„ฑ๋Šฅ &mdash; ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๊ณ„์‚ฐ ์‹œ๊ฐ„์„ ํ˜„์ €ํžˆ ๋‹จ์ถ•ํ•ฉ๋‹ˆ๋‹ค;
+- ์ •๋ณด ์ œ๊ณต์ ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๊ฒฌ๊ณ ํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ์ž…๋ ฅ ๊ฒ€์ฆ;
+- ๋ช…๋ น์ด ์ค‘๋‹จ๋˜์–ด๋„ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค โ€“ ์˜ˆ๋ฅผ ๋“ค์–ด, ์—…๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์—…๋กœ๋“œ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ์‹คํŒจํ•œ ๊ฒƒ๋“ค๋งŒ ์žฌ์‹œ๋„๋ฉ๋‹ˆ๋‹ค.
+
+Sugar ์„ค์ •์€ ์ข‹์•„ํ•˜๋Š” ํ„ฐ๋ฏธ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ด๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
+
+{% callout %}
+Sugar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Candy Machine์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ „์ฒด ๊ฐ€์ด๋“œ๋Š” [์—ฌ๊ธฐ](/kr/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine)์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /callout %}
+
+Sugar๋Š” Candy Machine ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ช…๋ น์–ด ๋ชจ์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์ค„์—์„œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ์ „์ฒด ๋ช…๋ น์–ด ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+```bash
+sugar
+```
+
+์ด๋Š” ๋ช…๋ น์–ด ๋ชฉ๋ก๊ณผ ๊ทธ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+```
+sugar-cli 2.7.1
+Metaplex Candy Machine ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
+
+USAGE:
+    sugar [OPTIONS] <SUBCOMMAND>
+
+OPTIONS:
+    -h, --help                     ๋„์›€๋ง ์ •๋ณด ์ถœ๋ ฅ
+    -l, --log-level <LOG_LEVEL>    ๋กœ๊ทธ ๋ ˆ๋ฒจ: trace, debug, info, warn, error, off
+    -V, --version                  ๋ฒ„์ „ ์ •๋ณด ์ถœ๋ ฅ
+
+SUBCOMMANDS:
+    airdrop       candy machine์—์„œ NFT ์—์–ด๋“œ๋ž
+    bundlr        bundlr ๋„คํŠธ์›Œํฌ์™€ ์ƒํ˜ธ์ž‘์šฉ
+    collection    candy machine์˜ ์ปฌ๋ ‰์…˜ ๊ด€๋ฆฌ
+    config        candy machine ๊ตฌ์„ฑ ๊ด€๋ฆฌ
+    deploy        ์บ์‹œ ํ•ญ๋ชฉ์„ ์˜จ์ฒด์ธ candy machine ๊ตฌ์„ฑ์— ๋ฐฐํฌ
+    freeze        freeze guard ์ž‘์—… ๊ด€๋ฆฌ
+    guard         candy machine์˜ ๊ฐ€๋“œ ๊ด€๋ฆฌ
+    hash          ์ˆจ๊ฒจ์ง„ ์„ค์ •์„ ์œ„ํ•œ ์บ์‹œ ํŒŒ์ผ ํ•ด์‹œ ์ƒ์„ฑ
+    help          ์ด ๋ฉ”์‹œ์ง€ ๋˜๋Š” ์ฃผ์–ด์ง„ ํ•˜์œ„ ๋ช…๋ น์˜ ๋„์›€๋ง ์ถœ๋ ฅ
+    launch        ์—์…‹์œผ๋กœ๋ถ€ํ„ฐ candy machine ๋ฐฐํฌ ์ƒ์„ฑ
+    mint          candy machine์—์„œ NFT ํ•˜๋‚˜ ๋ฏผํŒ…
+    reveal        ์ˆจ๊ฒจ์ง„ ์„ค์ • candy machine์—์„œ NFT ๊ณต๊ฐœ
+    show          ๊ธฐ์กด candy machine์˜ ์˜จ์ฒด์ธ ๊ตฌ์„ฑ ํ‘œ์‹œ
+    sign          candy machine์—์„œ NFT ํ•˜๋‚˜ ๋˜๋Š” ์ „์ฒด์— ์„œ๋ช…
+    upload        ์—์…‹์„ ์Šคํ† ๋ฆฌ์ง€์— ์—…๋กœ๋“œํ•˜๊ณ  ์บ์‹œ ๊ตฌ์„ฑ ์ƒ์„ฑ
+    validate      JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฒ€์ฆ
+    verify        ์—…๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ ํ™•์ธ
+    withdraw      candy machine ๊ณ„์ •์—์„œ ์ž๊ธˆ์„ ์ธ์ถœํ•˜์—ฌ ๊ณ„์ •์„ ๋‹ซ์Œ
+```
+
+ํŠน์ • ๋ช…๋ น์–ด(์˜ˆ: `deploy`)์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๋ฉด help ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”:
+
+```
+sugar help deploy
+```
+
+์ด๋Š” ๊ฐ„๋‹จํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ์˜ต์…˜ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+
+```
+์บ์‹œ ํ•ญ๋ชฉ์„ ์˜จ์ฒด์ธ candy machine ๊ตฌ์„ฑ์— ๋ฐฐํฌ
+
+USAGE:
+    sugar deploy [OPTIONS]
+
+OPTIONS:
+    -c, --config <CONFIG>
+            ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฒฝ๋กœ, ๊ธฐ๋ณธ๊ฐ’์€ "config.json" [default: config.json]
+
+        --cache <CACHE>
+            ์บ์‹œ ํŒŒ์ผ ๊ฒฝ๋กœ, ๊ธฐ๋ณธ๊ฐ’์€ "cache.json" [default: cache.json]
+
+        --collection-mint <COLLECTION_MINT>
+            candy machine์ด ํ† ํฐ์„ ๋ฏผํŒ…ํ•  ์„ ํƒ์  ์ปฌ๋ ‰์…˜ ์ฃผ์†Œ
+
+    -h, --help
+            ๋„์›€๋ง ์ •๋ณด ์ถœ๋ ฅ
+
+    -k, --keypair <KEYPAIR>
+            ํ‚คํŽ˜์–ด ํŒŒ์ผ ๊ฒฝ๋กœ, Sol config๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์€ "~/.config/solana/id.json"
+
+    -l, --log-level <LOG_LEVEL>
+            ๋กœ๊ทธ ๋ ˆ๋ฒจ: trace, debug, info, warn, error, off
+
+    -p, --priority-fee <PRIORITY_FEE>
+            ์šฐ์„ ์ˆœ์œ„ ์ˆ˜์ˆ˜๋ฃŒ ๊ฐ’ [default: 500]
+
+    -r, --rpc-url <RPC_URL>
+            RPC Url
+```
+
+Ape16Z๊ฐ€ ์˜๋ขฐํ•œ OtterSec์˜ Sugar ๊ฐ์‚ฌ ๋ณด๊ณ ์„œ๋Š” [์—ฌ๊ธฐ](https://docsend.com/view/is7963h8tbbvp2g9)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 50 - 0
src/pages/kr/cli/config/explorer.md

@@ -0,0 +1,50 @@
+---
+title: ํƒ์ƒ‰๊ธฐ ๊ตฌ์„ฑ
+description: ์„ ํ˜ธํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ ์„ค์ •
+---
+
+`mplx config explorer` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฑฐ๋ž˜์™€ ๊ณ„์ •์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•  ์„ ํ˜ธ ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+### ํƒ์ƒ‰๊ธฐ ์„ค์ •
+```bash
+mplx config explorer set
+```
+
+## ๋ช…๋ น์–ด
+
+### ํƒ์ƒ‰๊ธฐ ์„ค์ •
+์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜ ๋ชฉ๋ก์—์„œ ์„ ํ˜ธํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+#### ์˜ˆ์‹œ
+```bash
+mplx config explorer set
+```
+
+#### ์ฐธ๊ณ ์‚ฌํ•ญ
+- ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํƒ์ƒ‰๊ธฐ์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ™”ํ˜• ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค
+- ๊ตฌ์„ฑ์—์„œ ํ™œ์„ฑ ํƒ์ƒ‰๊ธฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค
+- ์„ ํƒํ•œ ํƒ์ƒ‰๊ธฐ๊ฐ€ ๊ฑฐ๋ž˜์™€ ๊ณ„์ • ์กฐํšŒ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
+- ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํƒ์ƒ‰๊ธฐ:
+  - Solana Explorer (https://explorer.solana.com)
+  - Solscan (https://solscan.io)
+  - Solana FM (https://solana.fm)
+
+## ๊ตฌ์„ฑ ํŒŒ์ผ
+
+ํƒ์ƒ‰๊ธฐ ๊ตฌ์„ฑ์€ ๊ตฌ์„ฑ ํŒŒ์ผ(๊ธฐ๋ณธ๊ฐ’: `~/.mplx/config.json`)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+```json
+{
+  "explorer": "https://explorer.solana.com"
+}
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ํƒ์ƒ‰๊ธฐ ์„ค์ •์€ ๊ฑฐ๋ž˜์™€ ๊ณ„์ •์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
+- ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
+- ์–ธ์ œ๋“ ์ง€ ์„ ํ˜ธ ํƒ์ƒ‰๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- ์„ ํƒํ•œ ํƒ์ƒ‰๊ธฐ๊ฐ€ ๋ช…๋ น์–ด ์ถœ๋ ฅ์˜ ๋ชจ๋“  ํƒ์ƒ‰๊ธฐ ๋งํฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
+- ๊ฐ ํƒ์ƒ‰๊ธฐ๋Š” ๋ธ”๋ก์ฒด์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค

+ 141 - 0
src/pages/kr/cli/config/rpcs.md

@@ -0,0 +1,141 @@
+---
+title: RPC
+description: ๊ตฌ์„ฑ์—์„œ RPC ์—”๋“œํฌ์ธํŠธ ๊ด€๋ฆฌ
+---
+
+๊ตฌ์„ฑ์—์„œ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด RPC๋ฅผ ์ถ”๊ฐ€, ๋‚˜์—ด, ์ œ๊ฑฐ ๋ฐ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+```bash
+# ์ƒˆ RPC ์—”๋“œํฌ์ธํŠธ ์ถ”๊ฐ€
+mplx config rpcs add <name> <endpoint>
+
+# ๋ชจ๋“  RPC ์—”๋“œํฌ์ธํŠธ ๋‚˜์—ด
+mplx config rpcs list
+
+# RPC ์—”๋“œํฌ์ธํŠธ ์ œ๊ฑฐ
+mplx config rpcs remove <name>
+
+# ํ™œ์„ฑ RPC ์—”๋“œํฌ์ธํŠธ ์„ค์ •
+mplx config rpcs set <name>
+```
+
+## ๋ช…๋ น์–ด
+
+### RPC ์ถ”๊ฐ€
+
+๊ตฌ์„ฑ์— ์ƒˆ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config rpcs add <name> <endpoint>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `name` | RPC ์—”๋“œํฌ์ธํŠธ์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„ (์˜ˆ: 'mainnet', 'devnet') |
+| `endpoint` | RPC ์—”๋“œํฌ์ธํŠธ URL |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config rpcs add mainnet https://api.mainnet-beta.solana.com
+```
+
+### RPC ๋‚˜์—ด
+
+๊ตฌ์„ฑ๋œ ๋ชจ๋“  RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config rpcs list
+```
+
+#### ์ถœ๋ ฅ
+
+```
+--------------------------------
+RPC Endpoints
+--------------------------------
+Name: mainnet
+Endpoint: https://api.mainnet-beta.solana.com
+Active: true
+
+Name: devnet
+Endpoint: https://api.devnet.solana.com
+Active: false
+--------------------------------
+```
+
+### RPC ์ œ๊ฑฐ
+
+๊ตฌ์„ฑ์—์„œ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config rpcs remove <name>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `name` | ์ œ๊ฑฐํ•  RPC ์—”๋“œํฌ์ธํŠธ์˜ ์ด๋ฆ„ |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config rpcs remove devnet
+```
+
+### ํ™œ์„ฑ RPC ์„ค์ •
+
+๊ตฌ์„ฑ์—์„œ ํ™œ์„ฑ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config rpcs set <name>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `name` | ํ™œ์„ฑ์œผ๋กœ ์„ค์ •ํ•  RPC ์—”๋“œํฌ์ธํŠธ์˜ ์ด๋ฆ„ |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config rpcs set mainnet
+```
+
+## ๊ตฌ์„ฑ ํŒŒ์ผ
+
+RPC๋Š” `~/.mplx/config.json`์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:
+
+```json
+{
+  "rpcs": {
+    "mainnet": {
+      "endpoint": "https://api.mainnet-beta.solana.com",
+      "active": true
+    },
+    "devnet": {
+      "endpoint": "https://api.devnet.solana.com",
+      "active": false
+    }
+  }
+}
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- RPC ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค
+- ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ RPC๋งŒ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- ํ™œ์„ฑ RPC๋Š” ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ž‘์—…์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
+- ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ RPC๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- ํ™œ์„ฑ RPC๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ RPC๊ฐ€ ์ž๋™์œผ๋กœ ํ™œ์„ฑ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค
+
+## ๊ด€๋ จ ๋ช…๋ น์–ด
+
+- [์ง€๊ฐ‘](/cli/config/wallets) - ์ง€๊ฐ‘ ๊ตฌ์„ฑ ๊ด€๋ฆฌ
+- [ํƒ์ƒ‰๊ธฐ](/cli/config/explorer) - ์„ ํ˜ธํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ ์„ค์ •

+ 167 - 0
src/pages/kr/cli/config/wallets.md

@@ -0,0 +1,167 @@
+---
+title: ์ง€๊ฐ‘
+description: ์ง€๊ฐ‘ ๊ตฌ์„ฑ ๊ด€๋ฆฌ
+---
+
+CLI์—์„œ ์ง€๊ฐ‘ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์ง€๊ฐ‘์„ ์ถ”๊ฐ€, ๋‚˜์—ด, ์ œ๊ฑฐ ๋ฐ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+```bash
+# ์ƒˆ ์ง€๊ฐ‘ ์ƒ์„ฑ
+mplx config wallets new --name <name>
+
+# ๊ธฐ์กด ์ง€๊ฐ‘ ์ถ”๊ฐ€
+mplx config wallets add <name> <keypairPath>
+
+# ๋ชจ๋“  ์ง€๊ฐ‘ ๋‚˜์—ด
+mplx config wallets list
+
+# ์ง€๊ฐ‘ ์ œ๊ฑฐ
+mplx config wallets remove <name>
+
+# ํ™œ์„ฑ ์ง€๊ฐ‘ ์„ค์ •
+mplx config wallets set <name>
+```
+
+## ๋ช…๋ น์–ด
+
+### ์ƒˆ ์ง€๊ฐ‘
+
+์ƒˆ ์ง€๊ฐ‘์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config wallets new --name <name>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `--name` | ์ง€๊ฐ‘์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„ |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config wallets new --name dev1
+```
+
+### ์ง€๊ฐ‘ ์ถ”๊ฐ€
+
+๊ธฐ์กด ์ง€๊ฐ‘์„ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config wallets add <name> <keypairPath>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `name` | ์ง€๊ฐ‘์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„ |
+| `keypairPath` | ํ‚คํŽ˜์–ด ํŒŒ์ผ ๊ฒฝ๋กœ |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config wallets add dev1 ~/.config/solana/devnet/dev1.json
+```
+
+### ์ง€๊ฐ‘ ๋‚˜์—ด
+
+๊ตฌ์„ฑ๋œ ๋ชจ๋“  ์ง€๊ฐ‘์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config wallets list
+```
+
+#### ์ถœ๋ ฅ
+
+```
+--------------------------------
+Wallets
+--------------------------------
+Name: dev1
+Public Key: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
+Active: true
+
+Name: dev2
+Public Key: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
+Active: false
+--------------------------------
+```
+
+### ์ง€๊ฐ‘ ์ œ๊ฑฐ
+
+๊ตฌ์„ฑ์—์„œ ์ง€๊ฐ‘์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config wallets remove <name>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `name` | ์ œ๊ฑฐํ•  ์ง€๊ฐ‘์˜ ์ด๋ฆ„ |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config wallets remove dev2
+```
+
+### ํ™œ์„ฑ ์ง€๊ฐ‘ ์„ค์ •
+
+๊ตฌ์„ฑ์—์„œ ํ™œ์„ฑ ์ง€๊ฐ‘์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx config wallets set <name>
+```
+
+#### ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `name` | ํ™œ์„ฑ์œผ๋กœ ์„ค์ •ํ•  ์ง€๊ฐ‘์˜ ์ด๋ฆ„ |
+
+#### ์˜ˆ์‹œ
+
+```bash
+mplx config wallets set dev1
+```
+
+## ๊ตฌ์„ฑ ํŒŒ์ผ
+
+์ง€๊ฐ‘์€ `~/.mplx/config.json`์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:
+
+```json
+{
+  "wallets": {
+    "dev1": {
+      "publicKey": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
+      "keypairPath": "~/.config/solana/devnet/dev1.json",
+      "active": true
+    },
+    "dev2": {
+      "publicKey": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+      "keypairPath": "~/.config/solana/devnet/dev2.json",
+      "active": false
+    }
+  }
+}
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ์ง€๊ฐ‘ ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค
+- ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ง€๊ฐ‘๋งŒ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- ํ™œ์„ฑ ์ง€๊ฐ‘์€ ๋ชจ๋“  ๊ฑฐ๋ž˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
+- ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์—ฌ๋Ÿฌ ์ง€๊ฐ‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- ํ™œ์„ฑ ์ง€๊ฐ‘์„ ์ œ๊ฑฐํ•˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ง€๊ฐ‘์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค
+- ํ‚คํŽ˜์–ด ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜๊ณ  ์ ˆ๋Œ€ ๊ณต์œ ํ•˜์ง€ ๋งˆ์„ธ์š”
+
+## ๊ด€๋ จ ๋ช…๋ น์–ด
+
+- [RPC](/cli/config/rpcs) - RPC ์—”๋“œํฌ์ธํŠธ ๊ด€๋ฆฌ
+- [ํƒ์ƒ‰๊ธฐ](/cli/config/explorer) - ์„ ํ˜ธํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ ์„ค์ •

+ 84 - 0
src/pages/kr/cli/core/create-asset.md

@@ -0,0 +1,84 @@
+---
+title: ์ž์‚ฐ ์ƒ์„ฑ
+description: ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ MPL Core ์ž์‚ฐ ์ƒ์„ฑ
+---
+
+`mplx core asset create` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ MPL Core ์ž์‚ฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๊ฐ„๋‹จํ•œ ์ƒ์„ฑ, ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ ๋˜๋Š” ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ. ์ด ๋ช…๋ น์–ด๋Š” ์ผ๊ด€๋œ ์ถœ๋ ฅ ํ˜•์‹์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ž์‚ฐ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+## ๋ฐฉ๋ฒ•
+
+### 1. ๊ฐ„๋‹จํ•œ ์ƒ์„ฑ
+๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„๊ณผ URI๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜์—ฌ ๋‹จ์ผ ์ž์‚ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx core asset create --name "My NFT" --uri "https://example.com/metadata.json"
+```
+
+### 2. ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ
+์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜์—ฌ ๋‹จ์ผ ์ž์‚ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๊ฐ€ ๋‘ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ์ž์‚ฐ ์ƒ์„ฑ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx core asset create --files --image "./my-nft.png" --json "./metadata.json"
+```
+
+### 3. ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ
+ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ํฌํ•จํ•œ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ๋‚ดํ•˜๋Š” ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx core asset create --wizard
+```
+
+## ์˜ต์…˜
+
+### ๊ธฐ๋ณธ ์˜ต์…˜
+- `--name <string>`: ์ž์‚ฐ ์ด๋ฆ„ (๊ฐ„๋‹จํ•œ ์ƒ์„ฑ์— ํ•„์ˆ˜)
+- `--uri <string>`: ์ž์‚ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ URI (๊ฐ„๋‹จํ•œ ์ƒ์„ฑ์— ํ•„์ˆ˜)
+- `--collection <string>`: ์ž์‚ฐ์˜ ์ปฌ๋ ‰์…˜ ID
+
+### ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์˜ต์…˜
+- `--files`: ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ
+- `--image <path>`: ์—…๋กœ๋“œํ•˜๊ณ  ์ž์‚ฐ์— ํ• ๋‹นํ•  ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
+- `--json <path>`: JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฒฝ๋กœ
+
+### ํ”Œ๋Ÿฌ๊ทธ์ธ ์˜ต์…˜
+- `--plugins`: ๋Œ€ํ™”ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ํƒ ์‚ฌ์šฉ
+- `--pluginsFile <path>`: ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ JSON ํŒŒ์ผ ๊ฒฝ๋กœ
+
+## ์˜ˆ์‹œ
+
+1. ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ ์ƒ์„ฑ:
+```bash
+mplx core asset create --wizard
+```
+
+2. ์ด๋ฆ„๊ณผ URI๋กœ ์ž์‚ฐ ์ƒ์„ฑ:
+```bash
+mplx core asset create --name "My NFT" --uri "https://example.com/metadata.json"
+```
+
+3. ํŒŒ์ผ์—์„œ ์ž์‚ฐ ์ƒ์„ฑ:
+```bash
+mplx core asset create --files --image "./my-nft.png" --json "./metadata.json"
+```
+
+4. ์ปฌ๋ ‰์…˜๊ณผ ํ•จ๊ป˜ ์ž์‚ฐ ์ƒ์„ฑ:
+```bash
+mplx core asset create --name "My NFT" --uri "https://example.com/metadata.json" --collection "collection_id_here"
+```
+
+5. ํŒŒ์ผ๊ณผ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ž์‚ฐ ์ƒ์„ฑ:
+```bash
+mplx core asset create --files --image "./my-nft.png" --json "./metadata.json" --collection "collection_id_here"
+```
+
+## ์ถœ๋ ฅ
+
+๋ช…๋ น์–ด๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+  Asset: <asset_address>
+  Signature: <transaction_signature>
+  Explorer: <explorer_url>
+  Core Explorer: https://core.metaplex.com/explorer/<asset_address>
+--------------------------------
+```

+ 82 - 0
src/pages/kr/cli/core/create-collection.md

@@ -0,0 +1,82 @@
+---
+title: ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
+description: ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ MPL Core ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
+---
+
+`mplx core collection create` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ MPL Core ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๊ฐ„๋‹จํ•œ ์ƒ์„ฑ, ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ ๋˜๋Š” ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ. ์ด ๋ช…๋ น์–ด๋Š” ์ผ๊ด€๋œ ์ถœ๋ ฅ ํ˜•์‹์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+## ๋ฐฉ๋ฒ•
+
+### 1. ๊ฐ„๋‹จํ•œ ์ƒ์„ฑ
+๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„๊ณผ URI๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜์—ฌ ๋‹จ์ผ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx core collection create --name "My Collection" --uri "https://example.com/metadata.json"
+```
+
+### 2. ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ
+์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜์—ฌ ๋‹จ์ผ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๊ฐ€ ๋‘ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx core collection create --files --image "./my-collection.png" --json "./metadata.json"
+```
+
+### 3. ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ
+ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ํฌํ•จํ•œ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ๋‚ดํ•˜๋Š” ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+```bash
+mplx core collection create --wizard
+```
+
+## ์˜ต์…˜
+
+### ๊ธฐ๋ณธ ์˜ต์…˜
+- `--name <string>`: ์ปฌ๋ ‰์…˜ ์ด๋ฆ„ (๊ฐ„๋‹จํ•œ ์ƒ์„ฑ์— ํ•„์ˆ˜)
+- `--uri <string>`: ์ปฌ๋ ‰์…˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ URI (๊ฐ„๋‹จํ•œ ์ƒ์„ฑ์— ํ•„์ˆ˜)
+
+### ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์˜ต์…˜
+- `--files`: ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ
+- `--image <path>`: ์—…๋กœ๋“œํ•˜๊ณ  ์ปฌ๋ ‰์…˜์— ํ• ๋‹นํ•  ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
+- `--json <path>`: JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฒฝ๋กœ
+
+### ํ”Œ๋Ÿฌ๊ทธ์ธ ์˜ต์…˜
+- `--plugins`: ๋Œ€ํ™”ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ํƒ ์‚ฌ์šฉ
+- `--pluginsFile <path>`: ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ JSON ํŒŒ์ผ ๊ฒฝ๋กœ
+
+## ์˜ˆ์‹œ
+
+1. ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ:
+```bash
+mplx core collection create --wizard
+```
+
+2. ์ด๋ฆ„๊ณผ URI๋กœ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ:
+```bash
+mplx core collection create --name "My Collection" --uri "https://example.com/metadata.json"
+```
+
+3. ํŒŒ์ผ์—์„œ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ:
+```bash
+mplx core collection create --files --image "./my-collection.png" --json "./metadata.json"
+```
+
+## ์ถœ๋ ฅ
+
+๋ช…๋ น์–ด๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+  Collection: <collection_address>
+  Signature: <transaction_signature>
+  Explorer: <explorer_url>
+  Core Explorer: https://core.metaplex.com/explorer/<collection_address>
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” `--image`์™€ `--json` ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
+- ๋งˆ๋ฒ•์‚ฌ ๋ฐฉ๋ฒ•์€ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ํฌํ•จํ•˜์—ฌ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
+- ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์€ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๋˜๋Š” JSON ํŒŒ์ผ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ `name` ํ•„๋“œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋˜๋Š” ๋งˆ๋ฒ•์‚ฌ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
+- ์ปฌ๋ ‰์…˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์ปฌ๋ ‰์…˜๋ณ„ ํ•„๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ํ‘œ์ค€ NFT ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค

+ 103 - 0
src/pages/kr/cli/core/fetch.md

@@ -0,0 +1,103 @@
+---
+title: ์ž์‚ฐ ๋˜๋Š” ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ
+description: ๋ฏผํŠธ ์ฃผ์†Œ๋กœ MPL Core ์ž์‚ฐ ๋˜๋Š” ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ
+---
+
+`mplx core fetch` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฏผํŠธ ์ฃผ์†Œ๋กœ MPL Core ์ž์‚ฐ์ด๋‚˜ ์ปฌ๋ ‰์…˜์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ์„ ํƒ์ ์œผ๋กœ ๊ด€๋ จ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ์ž์‚ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
+
+### ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+```bash
+mplx core fetch asset <assetId>
+```
+
+### ๋‹ค์šด๋กœ๋“œ ์˜ต์…˜
+```bash
+mplx core fetch asset <assetId> --download --output ./assets
+mplx core fetch asset <assetId> --download --image
+mplx core fetch asset <assetId> --download --metadata
+```
+
+### ์ž์‚ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ต์…˜
+- `--download`: ์ž์‚ฐ ํŒŒ์ผ์„ ๋””์Šคํฌ์— ๋‹ค์šด๋กœ๋“œ (์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ๋กœ ๊ฐœ๋ณ„ ํŒŒ์ผ ์„ ํƒ ๊ฐ€๋Šฅ)
+- `--output <path>`: ๋‹ค์šด๋กœ๋“œํ•œ ์ž์‚ฐ์„ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (--download ํ•„์š”)
+- `--image`: ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (--download ํ•„์š”)
+- `--metadata`: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (--download ํ•„์š”)
+- `--asset`: ์ž์‚ฐ ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (--download ํ•„์š”)
+
+## ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ
+
+### ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+```bash
+mplx core fetch collection <collectionId>
+```
+
+### ๋‹ค์šด๋กœ๋“œ ์˜ต์…˜
+```bash
+mplx core fetch collection <collectionId> --output ./collections
+```
+
+### ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ต์…˜
+- `-o, --output <path>`: ๋‹ค์šด๋กœ๋“œํ•œ ์ปฌ๋ ‰์…˜ ํŒŒ์ผ์˜ ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ํด๋”๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+
+## ์˜ˆ์‹œ
+
+### ์ž์‚ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ˆ์‹œ
+1. ๋‹จ์ผ ์ž์‚ฐ ๊ฐ€์ ธ์˜ค๊ธฐ:
+```bash
+mplx core fetch asset 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa
+```
+
+2. ์ž์‚ฐ ํŒŒ์ผ์„ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œ:
+```bash
+mplx core fetch asset 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --download --output ./assets
+```
+
+3. ์ด๋ฏธ์ง€๋งŒ ๋‹ค์šด๋กœ๋“œ:
+```bash
+mplx core fetch asset 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --download --image
+```
+
+### ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ˆ์‹œ
+1. ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ:
+```bash
+mplx core fetch collection HaKyubAWuTS9AZkpUHtFkTKAHs1KKAJ3onZPmaP9zBpe
+```
+
+2. ์ปฌ๋ ‰์…˜ ํŒŒ์ผ์„ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œ:
+```bash
+mplx core fetch collection HaKyubAWuTS9AZkpUHtFkTKAHs1KKAJ3onZPmaP9zBpe --output ./collections
+```
+
+## ์ถœ๋ ฅ
+
+### ์ž์‚ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์ถœ๋ ฅ
+ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ๋‹ค์Œ ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:
+```
+<output_directory>/
+  <assetId>/
+    metadata.json
+    image.<extension>
+    asset.json
+```
+
+### ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์ถœ๋ ฅ
+ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ๋‹ค์Œ ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:
+```
+<output_directory>/
+  <collectionId>/
+    metadata.json
+    image.<extension>
+    collection.json
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ๊ฐ€์ ธ์˜ค๊ธฐ ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ ์œ ํ˜•์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ ์ ˆํ•œ ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
+- ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค
+- ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ JSON ํŒŒ์ผ์€ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์˜ˆ์˜๊ฒŒ ์ธ์‡„๋ฉ๋‹ˆ๋‹ค
+- ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ์›๋ž˜ ํ˜•์‹๊ณผ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
+- ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค
+- ์ž์‚ฐ์˜ ๊ฒฝ์šฐ ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ(์ด๋ฏธ์ง€, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋˜๋Š” ์ž์‚ฐ ๋ฐ์ดํ„ฐ)๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

+ 86 - 0
src/pages/kr/cli/core/plugins.md

@@ -0,0 +1,86 @@
+---
+title: ํ”Œ๋Ÿฌ๊ทธ์ธ
+description: MPL Core ์ž์‚ฐ ๋ฐ ์ปฌ๋ ‰์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ
+---
+
+`mplx core plugins` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด MPL Core ์ž์‚ฐ๊ณผ ์ปฌ๋ ‰์…˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ์—ญ๋Ÿ‰์œผ๋กœ ์ž์‚ฐ๊ณผ ์ปฌ๋ ‰์…˜์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+## ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
+
+์ž์‚ฐ ๋˜๋Š” ์ปฌ๋ ‰์…˜์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+
+### ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+```bash
+mplx core plugins add <assetId> [options]
+```
+
+### ์˜ต์…˜
+- `--wizard`: ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ํƒ ๋ฐ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ ๋ชจ๋“œ
+- `--collection`: ๋Œ€์ƒ์ด ์ปฌ๋ ‰์…˜์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ (๊ธฐ๋ณธ๊ฐ’: false)
+
+### ๋ฐฉ๋ฒ•
+
+#### 1. ๋งˆ๋ฒ•์‚ฌ ๋ชจ๋“œ ์‚ฌ์šฉ
+```bash
+mplx core plugins add <assetId> --wizard
+```
+๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
+1. ํ”Œ๋Ÿฌ๊ทธ์ธ ์œ ํ˜•์„ ์„ ํƒํ•˜๋Š” ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ ์‹คํ–‰
+2. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ ์•ˆ๋‚ด
+3. ๊ตฌ์„ฑ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž์‚ฐ/์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€
+
+#### 2. JSON ํŒŒ์ผ ์‚ฌ์šฉ
+```bash
+mplx core plugins add <assetId> ./plugin.json
+```
+JSON ํŒŒ์ผ์€ ๋‹ค์Œ ํ˜•์‹์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+```json
+{
+  "pluginType": {
+    "property1": "value1",
+    "property2": "value2"
+  }
+}
+```
+
+### ์˜ˆ์‹œ
+
+#### ์ž์‚ฐ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
+```bash
+mplx core plugins add 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --wizard
+```
+
+#### ์ปฌ๋ ‰์…˜์— ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
+```bash
+mplx core plugins add 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --wizard --collection
+```
+
+#### JSON์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
+```bash
+mplx core plugins add 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa ./my-plugin.json
+```
+
+## ์ถœ๋ ฅ
+
+ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ๋‹ค์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+  Asset: <assetId>
+  Signature: <transactionSignature>
+  Explorer: <explorerUrl>
+  Core Explorer: https://core.metaplex.com/explorer/<assetId>
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ๋งˆ๋ฒ•์‚ฌ ๋ชจ๋“œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ ํƒํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋Œ€ํ™”ํ˜• ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
+- ์ž์‚ฐ๊ณผ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
+- ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์œ ํšจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ์ž์‚ฐ์ด๋‚˜ ์ปฌ๋ ‰์…˜์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ ์ ˆํ•œ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
+  - ํ”Œ๋Ÿฌ๊ทธ์ธ ์œ ํ˜• ๊ฒ€์ฆ
+  - ๊ตฌ์„ฑ ๊ฒ€์ฆ
+  - ๊ฑฐ๋ž˜ ์„œ๋ช… ๋ฐ ํ™•์ธ
+  - ๊ถŒํ•œ ํ™•์ธ

+ 82 - 0
src/pages/kr/cli/core/update-asset.md

@@ -0,0 +1,82 @@
+---
+title: ์ž์‚ฐ ์—…๋ฐ์ดํŠธ
+description: MPL Core ์ž์‚ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ์†์„ฑ ์—…๋ฐ์ดํŠธ
+---
+
+`mplx core asset update` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์ด๋ฆ„, URI ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ MPL Core ์ž์‚ฐ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ์ž์‚ฐ ๋˜๋Š” ์—ฌ๋Ÿฌ ์ž์‚ฐ์„ ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+### ๋‹จ์ผ ์ž์‚ฐ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update <assetId> [options]
+```
+
+### ์—…๋ฐ์ดํŠธ ์˜ต์…˜
+- `--name <string>`: ์ž์‚ฐ์˜ ์ƒˆ ์ด๋ฆ„
+- `--uri <string>`: ์ž์‚ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ƒˆ URI
+- `--image <path>`: ์ƒˆ ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
+- `--json <path>`: ์ƒˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ JSON ํŒŒ์ผ ๊ฒฝ๋กœ
+
+## ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•
+
+### 1. ์ด๋ฆ„๊ณผ URI ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update <assetId> --name "Updated Asset" --uri "https://example.com/metadata.json"
+```
+
+### 2. JSON ํŒŒ์ผ๋กœ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update <assetId> --json ./asset/metadata.json
+```
+
+### 3. ์ด๋ฏธ์ง€๋กœ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update <assetId> --image ./asset/image.jpg
+```
+
+### 4. JSON๊ณผ ์ด๋ฏธ์ง€๋กœ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update <assetId> --json ./asset/metadata.json --image ./asset/image.jpg
+```
+
+## ์˜ˆ์‹œ
+
+### ์ž์‚ฐ ์ด๋ฆ„ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --name "New Asset Name"
+```
+
+### ์ƒˆ ์ด๋ฏธ์ง€๋กœ ์ž์‚ฐ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --image ./images/new-image.png
+```
+
+### ์ƒˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์ž์‚ฐ ์—…๋ฐ์ดํŠธ
+```bash
+mplx core asset update 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa --json ./metadata/new-metadata.json
+```
+
+## ์ถœ๋ ฅ
+
+์—…๋ฐ์ดํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ๋‹ค์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+  Asset: <assetId>
+  Signature: <transactionSignature>
+  Explorer: <explorerUrl>
+  Core Explorer: https://core.metaplex.com/explorer/<assetId>
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์—…๋ฐ์ดํŠธ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: `--name`, `--uri`, `--image`, `--json` ๋˜๋Š” `--edit`
+- `--name` ๋ฐ `--uri` ํ”Œ๋ž˜๊ทธ๋Š” `--json` ๋˜๋Š” `--edit`์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
+- `--json`์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ ์œ ํšจํ•œ `name` ํ•„๋“œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- `--image` ํ”Œ๋ž˜๊ทธ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ด๋ฏธ์ง€ URI์™€ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ฐธ์กฐ๋ฅผ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
+  - ์ ์ ˆํ•œ ์Šคํ† ๋ฆฌ์ง€์— ํŒŒ์ผ ์—…๋กœ๋“œ
+  - ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ JSON ํ˜•์‹ํ™”
+  - ์ด๋ฏธ์ง€ ํŒŒ์ผ ์œ ํ˜• ๊ฐ์ง€
+  - ์ปฌ๋ ‰์…˜ ๊ถŒํ•œ ํ™•์ธ

+ 80 - 0
src/pages/kr/cli/index.md

@@ -0,0 +1,80 @@
+---
+title: ์†Œ๊ฐœ
+description: Metaplex CLI์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค
+---
+
+# Metaplex CLI
+
+Metaplex CLI๋Š” Solana์—์„œ Metaplex ํ”„๋กœํ† ์ฝœ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ์Œ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. NFT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ด๋“  ๋””์ง€ํ„ธ ์ž์‚ฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ฐฝ์ž‘์ž์ด๋“ , CLI๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+## ์ฃผ์š” ๊ธฐ๋Šฅ
+
+### ํ•ต์‹ฌ ๊ธฐ๋Šฅ
+- MPL Core ์ž์‚ฐ ๋ฐ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
+- ์ž์‚ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ ๋ฐ ์—…๋ฐ์ดํŠธ
+- ์ž์‚ฐ ๋ฐ ์ปฌ๋ ‰์…˜ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
+- ์ž์‚ฐ ์†์„ฑ ๋ฐ ํŠน์„ฑ ๊ด€๋ฆฌ
+
+### ๋„๊ตฌ์ƒ์ž ์œ ํ‹ธ๋ฆฌํ‹ฐ
+- ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ํ† ํฐ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
+- ์ฃผ์†Œ ๊ฐ„ SOL ์ „์†ก
+- SOL ์ž”์•ก ํ™•์ธ
+- ํ…Œ์ŠคํŠธ ๋ชฉ์ ์˜ SOL ์—์–ด๋“œ๋กญ
+
+### ๊ตฌ์„ฑ ๊ด€๋ฆฌ
+- ์—ฌ๋Ÿฌ ์ง€๊ฐ‘ ๊ด€๋ฆฌ
+- RPC ์—”๋“œํฌ์ธํŠธ ๊ตฌ์„ฑ
+- ์„ ํ˜ธํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ํƒ์ƒ‰๊ธฐ ์„ค์ •
+- CLI ๋™์ž‘ ์‚ฌ์šฉ์ž ์ •์˜
+
+## CLI๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 
+
+1. **๊ฐœ๋ฐœ์ž ์นœํ™”์ **: ๊ฐœ๋ฐœ์ž๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๊ตฌ์ถ•๋˜์–ด ๊ฐ„๋‹จํ•œ ๋ช…๋ น๊ณผ ๊ณ ๊ธ‰ ์˜ต์…˜์„ ๋ชจ๋‘ ์ œ๊ณต
+2. **๋Œ€ํ™”ํ˜• ๋ชจ๋“œ**: ๋ณต์žกํ•œ ์ž‘์—…์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋งˆ๋ฒ•์‚ฌ
+3. **์œ ์—ฐํ•œ ๊ตฌ์„ฑ**: ์—ฌ๋Ÿฌ ์ง€๊ฐ‘๊ณผ RPC ์—”๋“œํฌ์ธํŠธ๋กœ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉ์ž ์ •์˜
+4. **ํฌ๊ด„์ ์ธ ๋„๊ตฌ**: NFT ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํ•œ ๊ณณ์—์„œ ์ œ๊ณต
+5. **ํฌ๋กœ์Šค ํ”Œ๋žซํผ**: Windows, macOS, Linux์—์„œ ์ž‘๋™
+
+## ์‹œ์ž‘ํ•˜๊ธฐ
+
+1. [CLI ์„ค์น˜](/kr/cli/installation)
+2. ํ™˜๊ฒฝ ๊ตฌ์„ฑ:
+   - [์ง€๊ฐ‘ ์„ค์ •](/kr/cli/config/wallets)
+   - [RPC ์—”๋“œํฌ์ธํŠธ ๊ตฌ์„ฑ](/kr/cli/config/rpcs)
+   - [์„ ํ˜ธํ•˜๋Š” ํƒ์ƒ‰๊ธฐ ์„ ํƒ](/kr/cli/config/explorer)
+3. ํ•ต์‹ฌ ๋ช…๋ น ์‚ฌ์šฉ ์‹œ์ž‘:
+   - [์ž์‚ฐ ์ƒ์„ฑ](/kr/cli/core/create-asset)
+   - [์ปฌ๋ ‰์…˜ ์ƒ์„ฑ](/kr/cli/core/create-collection)
+   - [์ž์‚ฐ ์—…๋ฐ์ดํŠธ](/kr/cli/core/update-asset)
+   - [์ž์‚ฐ ๊ฐ€์ ธ์˜ค๊ธฐ](/kr/cli/core/fetch)
+
+## ๋ช…๋ น ๊ตฌ์กฐ
+
+CLI๋Š” ๊ณ„์ธต์  ๋ช…๋ น ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:
+
+```bash
+mplx <category> <command> [options]
+```
+
+์นดํ…Œ๊ณ ๋ฆฌ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:
+- `core`: MPL Core ์ž์‚ฐ ๊ด€๋ฆฌ
+- `toolbox`: ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ช…๋ น
+- `config`: ๊ตฌ์„ฑ ๊ด€๋ฆฌ
+
+## ๋ชจ๋ฒ” ์‚ฌ๋ก€
+
+1. **๊ตฌ์„ฑ ์‚ฌ์šฉ**: ๋” ์›ํ™œํ•œ ๊ฒฝํ—˜์„ ์œ„ํ•ด ์ง€๊ฐ‘๊ณผ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ค์ •
+2. **๋Œ€ํ™”ํ˜• ๋ชจ๋“œ**: ์•ˆ๋‚ด์‹ ์ž‘์—…์„ ์œ„ํ•ด `--wizard` ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ
+3. **์ž”์•ก ํ™•์ธ**: ํŠธ๋žœ์žญ์…˜ ์ „์— ํ•ญ์ƒ SOL ์ž”์•ก ํ™•์ธ
+4. **๋จผ์ € ํ…Œ์ŠคํŠธ**: ๋ฉ”์ธ๋„ท ๋ฐฐํฌ ์ „์— ๋ฐ๋ธŒ๋„ท ์‚ฌ์šฉ
+5. **๋ฐฑ์—…**: ์ง€๊ฐ‘ ํŒŒ์ผ๊ณผ ๊ตฌ์„ฑ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€
+
+## ์ง€์› ๋ฐ ๋ฆฌ์†Œ์Šค
+
+- [GitHub ์ €์žฅ์†Œ](https://github.com/metaplex-foundation/cli)
+- [๋ฌธ์„œ](https://developers.metaplex.com)
+- [Discord ์ปค๋ฎค๋‹ˆํ‹ฐ](https://discord.gg/metaplex)
+
+## ๋‹ค์Œ ๋‹จ๊ณ„
+
+์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”? [์„ค์น˜ ๊ฐ€์ด๋“œ](/kr/cli/installation)๋กœ ์ด๋™ํ•˜์—ฌ ์‹œ์Šคํ…œ์— CLI๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.

+ 169 - 0
src/pages/kr/cli/installation.md

@@ -0,0 +1,169 @@
+---
+title: ์„ค์น˜
+description: Metaplex CLI ์„ค์น˜ ๋ฐ ์„ค์ •
+---
+
+# ์„ค์น˜ ๊ฐ€์ด๋“œ
+
+์ด ๊ฐ€์ด๋“œ๋Š” ์‹œ์Šคํ…œ์— Metaplex CLI๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
+
+## ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ
+
+CLI๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ํ™•์ธํ•˜์„ธ์š”:
+
+- Node.js 16.x ์ด์ƒ
+- npm 7.x ์ด์ƒ
+- Solana ์ง€๊ฐ‘ (์„ ํƒ์‚ฌํ•ญ, ๊ถŒ์žฅ)
+- Git (์„ ํƒ์‚ฌํ•ญ, ๊ฐœ๋ฐœ์šฉ)
+
+## ์„ค์น˜ ๋ฐฉ๋ฒ•
+
+### npm ์‚ฌ์šฉ (๊ถŒ์žฅ)
+
+```bash
+npm install -g @metaplex-foundation/cli
+```
+
+### yarn ์‚ฌ์šฉ
+
+```bash
+yarn global add @metaplex-foundation/cli
+```
+
+### pnpm ์‚ฌ์šฉ
+
+```bash
+pnpm add -g @metaplex-foundation/cli
+```
+
+## ์„ค์น˜ ํ™•์ธ
+
+์„ค์น˜ ํ›„ CLI๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธ:
+
+```bash
+mplx --version
+```
+
+ํ˜„์žฌ CLI ๋ฒ„์ „์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+## ์ดˆ๊ธฐ ์„ค์ •
+
+### 1. ๊ตฌ์„ฑ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
+
+CLI๋Š” ์ฒ˜์Œ ๊ตฌ์„ฑ ์„ค์ •์„ ํ•  ๋•Œ `~/.config/mplx`์— ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ ๋‹ค์Œ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:
+- ์ง€๊ฐ‘ ๊ตฌ์„ฑ
+- RPC ์—”๋“œํฌ์ธํŠธ ์„ค์ •
+- ํƒ์ƒ‰๊ธฐ ๊ธฐ๋ณธ ์„ค์ •
+- ๊ธฐํƒ€ CLI ์„ค์ •
+
+### 2. ํ™˜๊ฒฝ ๊ตฌ์„ฑ
+
+#### ์ง€๊ฐ‘ ์„ค์ •
+```bash
+# ์ƒˆ ์ง€๊ฐ‘ ์ƒ์„ฑ
+mplx config wallets new --name dev1
+
+# ๋˜๋Š” ๊ธฐ์กด ์ง€๊ฐ‘ ์ถ”๊ฐ€
+mplx config wallets add <name> <path>
+mplx config wallets add dev1 /path/to/keypair.json
+
+# ์ง€๊ฐ‘์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+mplx config wallets set
+```
+
+์ถ”๊ฐ€ ์ •๋ณด๋Š” ์ฐธ์กฐ
+
+#### RPC ์—”๋“œํฌ์ธํŠธ ๊ตฌ์„ฑ
+```bash
+mplx config set rpcUrl  https://api.mainnet-beta.solana.com
+```
+
+#### ์„ ํ˜ธํ•˜๋Š” ํƒ์ƒ‰๊ธฐ ์„ค์ •
+```bash
+mplx config explorer set
+```
+
+## ๊ฐœ๋ฐœ ์„ค์น˜
+
+CLI์— ๊ธฐ์—ฌํ•˜๊ฑฐ๋‚˜ ์†Œ์Šค์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด:
+
+1. ์ €์žฅ์†Œ ๋ณต์ œ:
+```bash
+git clone https://github.com/metaplex-foundation/cli.git
+cd cli
+```
+
+2. ์ข…์†์„ฑ ์„ค์น˜:
+```bash
+npm install
+```
+
+3. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ:
+```bash
+npm run build
+```
+
+4. CLI ์—ฐ๊ฒฐ:
+```bash
+npm link
+```
+
+## ๋ฌธ์ œ ํ•ด๊ฒฐ
+
+### ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ
+
+1. **๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ**
+   - ์ „์—ญ npm bin ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ PATH์— ์žˆ๋Š”์ง€ ํ™•์ธ
+   - ํŒจํ‚ค์ง€ ์žฌ์„ค์น˜ ์‹œ๋„
+
+2. **๊ถŒํ•œ ์˜ค๋ฅ˜**
+   - Unix ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ์ „์—ญ ์„ค์น˜ ์‹œ `sudo` ์‚ฌ์šฉ
+   - ๋˜๋Š” sudo ์—†์ด ์ „์—ญ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋„๋ก npm ๊ตฌ์„ฑ
+
+3. **Node ๋ฒ„์ „ ๋ฌธ์ œ**
+   - nvm์„ ์‚ฌ์šฉํ•˜์—ฌ Node.js ๋ฒ„์ „ ๊ด€๋ฆฌ
+   - ํ˜ธํ™˜๋˜๋Š” Node.js ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธ
+
+### ๋„์›€๋ง
+
+๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ:
+
+1. [๋ฌธ์„œ](https://developers.metaplex.com) ํ™•์ธ
+2. [GitHub ์ด์Šˆ](https://github.com/metaplex-foundation/cli/issues) ๊ฒ€์ƒ‰
+3. [Discord ์ปค๋ฎค๋‹ˆํ‹ฐ](https://discord.gg/metaplex) ์ฐธ์—ฌ
+
+## ๋‹ค์Œ ๋‹จ๊ณ„
+
+์ด์ œ CLI๊ฐ€ ์„ค์น˜๋˜์—ˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+1. [ํ•ต์‹ฌ ๋ช…๋ น์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ](/kr/cli/core/create-asset)
+2. [๋„๊ตฌ์ƒ์ž ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ์ƒ‰](/kr/cli/toolbox/token-create)
+3. [ํ™˜๊ฒฝ ๊ตฌ์„ฑ](/kr/cli/config/wallets)
+
+## ์—…๋ฐ์ดํŠธ
+
+CLI๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ:
+
+```bash
+npm update -g @metaplex-foundation/cli
+```
+
+yarn์œผ๋กœ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ:
+
+```bash
+yarn global upgrade @metaplex-foundation/cli
+```
+
+## ์ œ๊ฑฐ
+
+CLI๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด:
+
+```bash
+npm uninstall -g @metaplex-foundation/cli
+```
+
+yarn์œผ๋กœ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ:
+
+```bash
+yarn global remove @metaplex-foundation/cli
+```

+ 52 - 0
src/pages/kr/cli/toolbox/sol-airdrop.md

@@ -0,0 +1,52 @@
+---
+title: SOL ์—์–ด๋“œ๋กญ
+description: ์ง€์ •๋œ ์ฃผ์†Œ๋กœ SOL ์—์–ด๋“œ๋กญ
+---
+
+`mplx toolbox sol airdrop` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •๋œ ์ฃผ์†Œ๋กœ SOL์„ ์—์–ด๋“œ๋กญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋ชฉ์ ์œผ๋กœ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+### ํ˜„์žฌ ์ง€๊ฐ‘์œผ๋กœ ์—์–ด๋“œ๋กญ
+```bash
+mplx toolbox sol airdrop <amount>
+```
+
+### ํŠน์ • ์ฃผ์†Œ๋กœ ์—์–ด๋“œ๋กญ
+```bash
+mplx toolbox sol airdrop <amount> <address>
+```
+
+## ์ธ์ˆ˜
+
+- `amount`: ์—์–ด๋“œ๋กญํ•  SOL ์–‘ (ํ•„์ˆ˜)
+- `address`: SOL์„ ์—์–ด๋“œ๋กญํ•  ์ฃผ์†Œ (์„ ํƒ์ , ๊ธฐ๋ณธ๊ฐ’์€ ํ˜„์žฌ ์ง€๊ฐ‘)
+
+## ์˜ˆ์‹œ
+
+### ํ˜„์žฌ ์ง€๊ฐ‘์œผ๋กœ 1 SOL ์—์–ด๋“œ๋กญ
+```bash
+mplx toolbox sol airdrop 1
+```
+
+### ํŠน์ • ์ฃผ์†Œ๋กœ 2 SOL ์—์–ด๋“œ๋กญ
+```bash
+mplx toolbox sol airdrop 2 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa
+```
+
+## ์ถœ๋ ฅ
+
+์—์–ด๋“œ๋กญ์ด ์„ฑ๊ณตํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ๋‹ค์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+    Airdropped <amount> SOL to <address>
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ์ด ๋ช…๋ น์–ด๋Š” ์ฃผ๋กœ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
+- ์—์–ด๋“œ๋กญ ์–‘์€ SOL๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค (lamports๊ฐ€ ์•„๋‹˜)
+- ์ฃผ์†Œ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด SOL์€ ํ˜„์žฌ ์ง€๊ฐ‘ ์ฃผ์†Œ๋กœ ์—์–ด๋“œ๋กญ๋ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” ๊ฐœ๋ฐœ ๋„คํŠธ์›Œํฌ(devnet/testnet) ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
+- ์—์–ด๋“œ๋กญ ์ž‘์—…์„ ์œ„ํ•ด ์ง€๊ฐ‘์— ์ถฉ๋ถ„ํ•œ SOL์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”

+ 59 - 0
src/pages/kr/cli/toolbox/sol-balance.md

@@ -0,0 +1,59 @@
+---
+title: SOL ์ž”์•ก
+description: ์ง€๊ฐ‘ ์ฃผ์†Œ์˜ SOL ์ž”์•ก ํ™•์ธ
+---
+
+์ง€๊ฐ‘ ์ฃผ์†Œ์˜ SOL ์ž”์•ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋ชจ๋“  ์ง€๊ฐ‘์˜ SOL ์ž”์•ก์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+```bash
+mplx toolbox sol-balance <address>
+```
+
+## ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `address` | ํ™•์ธํ•  ์ง€๊ฐ‘ ์ฃผ์†Œ (์„ ํƒ์ , ๊ธฐ๋ณธ๊ฐ’์€ ํ™œ์„ฑ ์ง€๊ฐ‘) |
+
+## ์˜ˆ์‹œ
+
+### ํ™œ์„ฑ ์ง€๊ฐ‘ ์ž”์•ก ํ™•์ธ
+
+```bash
+mplx toolbox sol-balance
+```
+
+### ํŠน์ • ์ง€๊ฐ‘ ์ž”์•ก ํ™•์ธ
+
+```bash
+mplx toolbox sol-balance 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
+```
+
+## ์ถœ๋ ฅ
+
+๋ช…๋ น์–ด๋Š” SOL ์ž”์•ก์„ ํ˜•์‹ํ™”๋œ ์ถœ๋ ฅ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+
+```
+--------------------------------
+SOL Balance
+--------------------------------
+Address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
+Balance: 1.5 SOL
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ์ฃผ์†Œ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์–ด๋Š” ํ™œ์„ฑ ์ง€๊ฐ‘์˜ ์ž”์•ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
+- ์ž”์•ก์€ SOL๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค (lamports๊ฐ€ ์•„๋‹˜)
+- ๋ช…๋ น์–ด๋Š” ํ™œ์„ฑ RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
+- ๊ฑฐ๋ž˜์— ์ถฉ๋ถ„ํ•œ SOL์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
+- ์ž”์•ก์€ ์‹ค์‹œ๊ฐ„์ด๋ฉฐ ๋ธ”๋ก์ฒด์ธ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค
+
+## ๊ด€๋ จ ๋ช…๋ น์–ด
+
+- [SOL ์ „์†ก](/cli/toolbox/sol-transfer) - ์ฃผ์†Œ ๊ฐ„ SOL ์ „์†ก
+- [ํ† ํฐ ์ „์†ก](/cli/toolbox/token-transfer) - ํ† ํฐ ์ „์†ก
+- [์—์–ด๋“œ๋กญ](/cli/toolbox/sol-airdrop) - SOL ์—์–ด๋“œ๋กญ ์š”์ฒญ (devnet๋งŒ)

+ 43 - 0
src/pages/kr/cli/toolbox/sol-transfer.md

@@ -0,0 +1,43 @@
+---
+title: SOL ์ „์†ก
+description: ์ง€์ •๋œ ์ฃผ์†Œ๋กœ SOL ์ „์†ก
+---
+
+`mplx toolbox sol transfer` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์ง€๊ฐ‘์—์„œ ๋ชจ๋“  Solana ์ฃผ์†Œ๋กœ SOL์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+```bash
+mplx toolbox sol transfer <amount> <address>
+```
+
+## ์ธ์ˆ˜
+
+- `amount`: ์ „์†กํ•  SOL ์–‘ (ํ•„์ˆ˜)
+- `address`: SOL์„ ์ „์†กํ•  Solana ์ฃผ์†Œ (ํ•„์ˆ˜)
+
+## ์˜ˆ์‹œ
+
+### ์ฃผ์†Œ๋กœ 1 SOL ์ „์†ก
+```bash
+mplx toolbox sol transfer 1 5avjMVza8SuMhgTfzEGNWJskDELMCQk9juAAc8zeQoNa
+```
+
+## ์ถœ๋ ฅ
+
+์ „์†ก์ด ์„ฑ๊ณตํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ๋‹ค์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+    Transferred <amount> SOL to <address>
+    Signature: <transactionSignature>
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ์ „์†ก ์–‘์€ SOL๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค (lamports๊ฐ€ ์•„๋‹˜)
+- ๋Œ€์ƒ ์ฃผ์†Œ๋Š” ์œ ํšจํ•œ Solana ๊ณต๊ฐœ ํ‚ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” Solana ๋„คํŠธ์›Œํฌ(mainnet/devnet/testnet)์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
+- ์ „์†ก์„ ์œ„ํ•ด ์ง€๊ฐ‘์— ์ถฉ๋ถ„ํ•œ SOL์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
+- ๊ฑฐ๋ž˜ ์„œ๋ช…์€ ํ™•์ธ ๋ชฉ์ ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค
+- ์ „์†ก์€ ๋ธ”๋ก์ฒด์ธ์—์„œ ํ™•์ธ๋˜๋ฉด ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

+ 91 - 0
src/pages/kr/cli/toolbox/token-create.md

@@ -0,0 +1,91 @@
+---
+title: ํ† ํฐ ์ƒ์„ฑ
+description: Solana์—์„œ ์ƒˆ ๋Œ€์ฒด ๊ฐ€๋Šฅ ํ† ํฐ ์ƒ์„ฑ
+---
+
+`mplx toolbox token create` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Solana์—์„œ ์ƒˆ๋กœ์šด ๋Œ€์ฒด ๊ฐ€๋Šฅ ํ† ํฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ† ํฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+### ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ
+```bash
+mplx toolbox token create --wizard
+```
+
+### ์ง์ ‘ ์ƒ์„ฑ
+```bash
+mplx toolbox token create --name "My Token" --symbol "TOKEN" --mint-amount 1000000
+```
+
+## ์˜ต์…˜
+
+### ํ•„์ˆ˜ ์˜ต์…˜ (๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ)
+- `--name <string>`: ํ† ํฐ ์ด๋ฆ„ (์˜ˆ: "My Awesome Token")
+- `--symbol <string>`: ํ† ํฐ ์‹ฌ๋ณผ (2-6์ž, ์˜ˆ: "MAT")
+- `--mint-amount <number>`: ๋ฐœํ–‰ํ•  ํ† ํฐ์˜ ์ดˆ๊ธฐ ์–‘ (0๋ณด๋‹ค ์ปค์•ผ ํ•จ)
+
+### ์„ ํƒ์  ์˜ต์…˜
+- `--decimals <number>`: ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜ (0-9, ๊ธฐ๋ณธ๊ฐ’: 0)
+- `--description <string>`: ํ† ํฐ๊ณผ ๊ทธ ๋ชฉ์ ์— ๋Œ€ํ•œ ์„ค๋ช…
+- `--image <path>`: ํ† ํฐ ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ (PNG, JPG ๋˜๋Š” GIF)
+- `--speed-run`: ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ์Šคํ”ผ๋“œ๋Ÿฐ ๋ชจ๋“œ ํ™œ์„ฑํ™”
+
+## ์˜ˆ์‹œ
+
+### ๊ธฐ๋ณธ ์ •๋ณด๋กœ ํ† ํฐ ์ƒ์„ฑ
+```bash
+mplx toolbox token create --name "My Token" --symbol "TOKEN" --mint-amount 1000000
+```
+
+### ๋ชจ๋“  ์˜ต์…˜์œผ๋กœ ํ† ํฐ ์ƒ์„ฑ
+```bash
+mplx toolbox token create \
+  --name "My Awesome Token" \
+  --symbol "MAT" \
+  --description "A token for awesome things" \
+  --image ./token-image.png \
+  --decimals 2 \
+  --mint-amount 1000000
+```
+
+### ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ† ํฐ ์ƒ์„ฑ
+```bash
+mplx toolbox token create --wizard
+```
+
+## ์ถœ๋ ฅ
+
+ํ† ํฐ ์ƒ์„ฑ์ด ์„ฑ๊ณตํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ๋‹ค์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:
+```
+--------------------------------
+Token created successfully!
+
+Token Details:
+Name: <name>
+Symbol: <symbol>
+Decimals: <decimals>
+Initial Supply: <formattedAmount>
+
+Mint Address: <mintAddress>
+Explorer: <explorerUrl>
+
+Transaction Signature: <signature>
+Explorer: <transactionExplorerUrl>
+Execution Time: <time> seconds
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ํ† ํฐ ์‹ฌ๋ณผ์€ 2-6์ž ๊ธธ์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ๋ฐœํ–‰ ์–‘์€ 0๋ณด๋‹ค ์ปค์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ์†Œ์ˆ˜์ ์€ ํ† ํฐ์˜ ์ตœ์†Œ ๋‹จ์œ„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: ์†Œ์ˆ˜์  2์ž๋ฆฌ๋Š” 100 ํ† ํฐ = 100_00์„ ์˜๋ฏธ)
+- ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ PNG, JPG ๋˜๋Š” GIF ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
+- ๋งˆ๋ฒ•์‚ฌ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค
+- ๋ช…๋ น์–ด๋Š” ์ž๋™์œผ๋กœ ๋‹ค์Œ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
+  - ํ† ํฐ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (์ œ๊ณต๋œ ๊ฒฝ์šฐ)
+  - ํ† ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฐ ์—…๋กœ๋“œ
+  - ๋ธ”๋ก์ฒด์ธ์—์„œ ํ† ํฐ ์ƒ์„ฑ
+  - ์ดˆ๊ธฐ ๊ณต๊ธ‰๋Ÿ‰ ๋ฐœํ–‰
+- ๊ฑฐ๋ž˜ ์„œ๋ช…๊ณผ ๋ฐœํ–‰ ์ฃผ์†Œ๋Š” ํ™•์ธ์„ ์œ„ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค
+- ์Šคํ”ผ๋“œ๋Ÿฐ ๋ชจ๋“œ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

+ 66 - 0
src/pages/kr/cli/toolbox/token-transfer.md

@@ -0,0 +1,66 @@
+---
+title: ํ† ํฐ ์ „์†ก
+description: ๋Œ€์ƒ ์ฃผ์†Œ๋กœ ํ† ํฐ ์ „์†ก
+---
+
+์ง€๊ฐ‘์—์„œ ๋Œ€์ƒ ์ฃผ์†Œ๋กœ ํ† ํฐ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ์ง€๊ฐ‘์— ํ† ํฐ ๊ณ„์ •์ด ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
+
+## ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
+
+```bash
+mplx toolbox token transfer <mintAddress> <amount> <destination>
+```
+
+## ์ธ์ˆ˜
+
+| ์ธ์ˆ˜ | ์„ค๋ช… |
+|----------|-------------|
+| `mintAddress` | ์ „์†กํ•  ํ† ํฐ์˜ ๋ฐœํ–‰ ์ฃผ์†Œ |
+| `amount` | ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ๋กœ ์ „์†กํ•  ํ† ํฐ ์–‘ |
+| `destination` | ๋Œ€์ƒ ์ง€๊ฐ‘ ์ฃผ์†Œ |
+
+## ์˜ˆ์‹œ
+
+### ๋Œ€์ƒ ์ฃผ์†Œ๋กœ 100 ํ† ํฐ ์ „์†ก
+
+```bash
+mplx toolbox token transfer 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU 10000000000 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
+```
+
+## ์ถœ๋ ฅ
+
+๋ช…๋ น์–ด๋Š” ํ† ํฐ์„ ์ „์†กํ•˜๋Š” ๋™์•ˆ ์ง„ํ–‰๋ฅ  ์Šคํ”ผ๋„ˆ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์„ฑ๊ณต ์‹œ ๊ฑฐ๋ž˜ ์„œ๋ช…์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค:
+
+```
+--------------------------------
+Token Transfer         
+--------------------------------
+โ ‹ Transferring tokens...
+โœ” Tokens Transferred Successfully!
+--------------------------------
+'Tokens Transferred Successfully!'
+Signature: 2xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
+--------------------------------
+```
+
+## ์ฐธ๊ณ ์‚ฌํ•ญ
+
+- ๋ช…๋ น์–ด๋Š” ๋Œ€์ƒ ์ฃผ์†Œ์— ํ† ํฐ ๊ณ„์ •์ด ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
+- ์–‘์€ ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค (ํ† ํฐ 1๊ฐœ = ๋ฒ ์ด์‹œ์Šค ํฌ์ธํŠธ 1,000,000,000๊ฐœ)
+- ์ƒˆ ํ† ํฐ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ž„๋Œ€ ๋ฉด์ œ๋ฅผ ์œ„ํ•ด SOL์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
+- ์ „์†กํ•˜๊ธฐ ์ „์— ์ง€๊ฐ‘์— ์ถฉ๋ถ„ํ•œ ํ† ํฐ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
+
+## ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
+
+์ „์†ก์ด ์‹คํŒจํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+- ํ† ํฐ ์ž”์•ก ๋ถ€์กฑ
+- ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐœํ–‰ ์ฃผ์†Œ
+- ์œ ํšจํ•˜์ง€ ์•Š์€ ๋Œ€์ƒ ์ฃผ์†Œ
+- ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜
+
+## ๊ด€๋ จ ๋ช…๋ น์–ด
+
+- [ํ† ํฐ ์ƒ์„ฑ](/cli/toolbox/token-create) - ์ƒˆ ํ† ํฐ ์ƒ์„ฑ
+- [์ž”์•ก ํ™•์ธ](/cli/toolbox/sol-balance) - ํ† ํฐ ์ž”์•ก ํ™•์ธ
+- [SOL ์ „์†ก](/cli/toolbox/sol-transfer) - ์ฃผ์†Œ ๊ฐ„ SOL ์ „์†ก

+ 467 - 0
src/pages/kr/core/collections.md

@@ -0,0 +1,467 @@
+---
+title: ์ปฌ๋ ‰์…˜ ๊ด€๋ฆฌ
+metaTitle: ๊ฒ€์ฆ๋œ ์ปฌ๋ ‰์…˜ | Core
+description: Metaplex Core ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‚ฐ์„ ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๋“ฑ Core ์ปฌ๋ ‰์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+## ์ปฌ๋ ‰์…˜์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?
+
+์ปฌ๋ ‰์…˜์€ ํ•จ๊ป˜ ์†ํ•˜๋Š” ์ž์‚ฐ๋“ค์˜ ๊ทธ๋ฃน์œผ๋กœ, ๊ฐ™์€ ์‹œ๋ฆฌ์ฆˆ๋‚˜ ๊ทธ๋ฃน์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ž์‚ฐ์„ ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ปฌ๋ ‰์…˜ ์ด๋ฆ„๊ณผ ์ปฌ๋ ‰์…˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜๊ณผ ๊ด€๋ จ๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ชฉ์ ์„ ๊ฐ€์ง„ ์ปฌ๋ ‰์…˜ ์ž์‚ฐ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ์ž์‚ฐ์€ ์ปฌ๋ ‰์…˜์˜ ํ‘œ์ง€ ์—ญํ• ์„ ํ•˜๋ฉฐ ์ปฌ๋ ‰์…˜ ์ „์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ปฌ๋ ‰์…˜ ์ž์‚ฐ์—์„œ ์ €์žฅ๋˜๊ณ  ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+| ๊ณ„์ •            | ์„ค๋ช…                                              |
+| --------------- | ------------------------------------------------- |
+| key             | ๊ณ„์ • ํ‚ค ๊ตฌ๋ถ„์ž                                    |
+| updateAuthority | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ                                    |
+| name            | ์ปฌ๋ ‰์…˜ ์ด๋ฆ„                                       |
+| uri             | ์ปฌ๋ ‰์…˜์˜ ์˜คํ”„์ฒด์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ URI           |
+| num minted      | ์ปฌ๋ ‰์…˜์—์„œ ๋ฏผํŒ…๋œ ์ž์‚ฐ ์ˆ˜                         |
+| current size    | ํ˜„์žฌ ์ปฌ๋ ‰์…˜์— ์žˆ๋Š” ์ž์‚ฐ ์ˆ˜                        |
+
+## ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
+
+Core ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด `CreateCollection` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% totem %}
+{% totem-accordion title="๊ธฐ์ˆ ์  ๋ช…๋ น์–ด ์„ธ๋ถ€์‚ฌํ•ญ - CreateCollectionV1" %}
+
+**๋ช…๋ น์–ด ๊ณ„์ • ๋ชฉ๋ก**
+
+| ๊ณ„์ •            | ์„ค๋ช…                                              |
+| --------------- | ------------------------------------------------- |
+| collection      | Core ์ž์‚ฐ์ด ์†ํ•œ ์ปฌ๋ ‰์…˜                           |
+| updateAuthority | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ                                    |
+| payer           | ์ €์žฅ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ง€๋ถˆํ•˜๋Š” ๊ณ„์ •                       |
+| systemProgram   | ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ •                              |
+
+**๋ช…๋ น์–ด ์ธ์ˆ˜**
+
+| ์ธ์ˆ˜    | ์„ค๋ช…                                              |
+| ------- | ------------------------------------------------- |
+| name    | Core ์ž์‚ฐ์ด ์†ํ•œ ์ปฌ๋ ‰์…˜                           |
+| uri     | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ                                    |
+| plugins | ์ปฌ๋ ‰์…˜์ด ๊ฐ€์ ธ์•ผ ํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ                       |
+
+์ผ๋ถ€ ๊ณ„์ •๊ณผ ์ธ์ˆ˜๋Š” ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด SDK์—์„œ ์ถ”์ƒํ™”๋˜๊ฑฐ๋‚˜ ์„ ํƒ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+์˜จ์ฒด์ธ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Github](https://github.com/metaplex-foundation/mpl-core/blob/5a45f7b891f2ca58ad1fc18e0ebdd0556ad59a4b/programs/mpl-core/src/instruction.rs#L30)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% /totem %}
+
+### ๊ฐ„๋‹จํ•œ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
+
+๋‹ค์Œ ์ฝ”๋“œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ํŠน๋ณ„ํ•œ ๊ฒƒ ์—†์ด ๊ฐ„๋‹จํ•œ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="MPL Core ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { generateSigner } from '@metaplex-foundation/umi'
+import { createCollection } from '@metaplex-foundation/mpl-core'
+
+const collectionSigner = generateSigner(umi)
+
+await createCollection(umi, {
+  collection: collectionSigner,
+  name: 'My Collection',
+  uri: 'https://example.com/my-collection.json',
+})
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use mpl_core::instructions::CreateCollectionV1Builder;
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
+
+pub async fn create_collection() {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let payer = Keypair::new();
+    let collection = Keypair::new();
+
+    let create_collection_ix = CreateCollectionV1Builder::new()
+        .collection(collection.pubkey())
+        .payer(payer.pubkey())
+        .name("My Collection".into())
+        .uri("https://example.com/my-collection.json".into())
+        .instruction();
+
+    let signers = vec![&collection, &payer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let create_collection_tx = Transaction::new_signed_with_payer(
+        &[create_collection_ix],
+        Some(&payer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&create_collection_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res)
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+### ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
+
+๋‹ค์Œ ์ฝ”๋“œ๋Š” [๋กœ์—ดํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ](/kr/core/plugins/royalties)์ด ์—ฐ๊ฒฐ๋œ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. [์—ฌ๊ธฐ](/kr/core/plugins)์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ MPL Core ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { generateSigner, publicKey } from '@metaplex-foundation/umi'
+import { createCollection, ruleSet } from '@metaplex-foundation/mpl-core'
+
+const collectionSigner = generateSigner(umi)
+
+const creator1 = publicKey('11111111111111111111111111111111')
+const creator2 = publicKey('22222222222222222222222222222222')
+
+await createCollection(umi, {
+  collection: collectionSigner,
+  name: 'My NFT',
+  uri: 'https://example.com/my-nft.json',
+  plugins: [
+    {
+      type: 'Royalties',
+      basisPoints: 500,
+      creators: [
+        {
+          address: creator1,
+          percentage: 20,
+        },
+        {
+          address: creator2,
+          percentage: 80,
+        },
+      ],
+      ruleSet: ruleSet('None'), // ํ˜ธํ™˜์„ฑ ๊ทœ์น™ ์„ธํŠธ
+    },
+  ],
+}).sendAndConfirm(umi)
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use mpl_core::{
+    instructions::CreateCollectionV1Builder,
+    types::{Creator, Plugin, PluginAuthority, PluginAuthorityPair, Royalties, RuleSet},
+};
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction};
+use std::str::FromStr;
+
+pub async fn create_collection_with_plugin() {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let payer = Keypair::new();
+    let collection = Keypair::new();
+
+    let creator = Pubkey::from_str("11111111111111111111111111111111").unwrap();
+
+    let create_collection_ix = CreateCollectionV1Builder::new()
+        .collection(collection.pubkey())
+        .payer(payer.pubkey())
+        .name("My Nft".into())
+        .uri("https://example.com/my-nft.json".into())
+        .plugins(vec![PluginAuthorityPair {
+            plugin: Plugin::Royalties(Royalties {
+                basis_points: 500,
+                creators: vec![Creator {
+                    address: creator,
+                    percentage: 100,
+                }],
+                rule_set: RuleSet::None,
+            }),
+            authority: Some(PluginAuthority::None),
+        }])
+        .instruction();
+
+    let signers = vec![&collection, &payer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let create_collection_tx = Transaction::new_signed_with_payer(
+        &[create_collection_ix],
+        Some(&payer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&create_collection_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res)
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ
+
+์ปฌ๋ ‰์…˜์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { fetchCollectionV1 } from '@metaplex-foundation/mpl-core'
+import { publicKey } from '@metaplex-foundation/umi'
+
+const collectionId = publicKey('11111111111111111111111111111111')
+
+const collection = await fetchCollection(umi, collectionId)
+
+console.log(collection)
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use std::str::FromStr;
+use mpl_core::Collection;
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::pubkey::Pubkey;
+
+pub async fn fetch_collection() {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let collection_id = Pubkey::from_str("11111111111111111111111111111111").unwrap();
+
+    let rpc_data = rpc_client.get_account_data(&collection_id).await.unwrap();
+
+    let collection = Collection::from_bytes(&rpc_data).unwrap();
+
+    print!("{:?}", collection)
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ปฌ๋ ‰์…˜ ์—…๋ฐ์ดํŠธ
+
+Core ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด `UpdateCollection` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% totem %}
+{% totem-accordion title="๊ธฐ์ˆ ์  ๋ช…๋ น์–ด ์„ธ๋ถ€์‚ฌํ•ญ - UpdateCollectionV1" %}
+
+**๋ช…๋ น์–ด ๊ณ„์ • ๋ชฉ๋ก**
+
+| ๊ณ„์ •               | ์„ค๋ช…                                              |
+| ------------------ | ------------------------------------------------- |
+| collection         | Core ์ž์‚ฐ์ด ์†ํ•œ ์ปฌ๋ ‰์…˜                           |
+| payer              | ์ €์žฅ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ง€๋ถˆํ•˜๋Š” ๊ณ„์ •                       |
+| authority          | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ                                    |
+| newUpdateAuthority | ์ปฌ๋ ‰์…˜์˜ ์ƒˆ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ                         |
+| systemProgram      | ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ •                              |
+| logWrapper         | SPL Noop ํ”„๋กœ๊ทธ๋žจ                                 |
+
+**๋ช…๋ น์–ด ์ธ์ˆ˜**
+
+| ์ธ์ˆ˜ | ์„ค๋ช…                          |
+| ---- | ----------------------------- |
+| name | MPL Core ์ž์‚ฐ์˜ ์ด๋ฆ„          |
+| uri  | ์˜คํ”„์ฒด์ธ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ URI  |
+
+์ผ๋ถ€ ๊ณ„์ •๊ณผ ์ธ์ˆ˜๋Š” ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด SDK์—์„œ ์ถ”์ƒํ™”๋˜๊ฑฐ๋‚˜ ์„ ํƒ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+์˜จ์ฒด์ธ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Github](https://github.com/metaplex-foundation/mpl-core/blob/5a45f7b891f2ca58ad1fc18e0ebdd0556ad59a4b/programs/mpl-core/src/instruction.rs#L167C4-L167C23)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% /totem %}
+
+{% seperator h="6" /%}
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { publicKey } from '@metaplex-foundation/umi'
+import { updateCollection } from '@metaplex-foundation/mpl-core'
+
+const collectionAddress = publicKey('1111111111111111111111111111111')
+
+await updateCollection(umi, {
+  collection: collectionAddress,
+  name: 'my-nft',
+  uri: 'https://exmaple.com/new-uri',
+}).sendAndConfirm(umi)
+```
+
+{% /dialect %}
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use std::str::FromStr;
+
+use mpl_core::instructions::UpdateCollectionV1Builder;
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction};
+
+pub async fn update_collection() {
+
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let authority = Keypair::new();
+    let collection = Pubkey::from_str("11111111111111111111111111111111").unwrap();
+
+    let update_collection_ix = UpdateCollectionV1Builder::new()
+        .collection(collection)
+        .payer(authority.pubkey())
+        .new_name("My Collection".into())
+        .new_uri("https://example.com/my-collection.json".into())
+        .instruction();
+
+    let signers = vec![&authority];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let update_collection_tx = Transaction::new_signed_with_payer(
+        &[update_collection_ix],
+        Some(&authority.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&update_collection_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res)
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ปฌ๋ ‰์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ
+
+Core ์ปฌ๋ ‰์…˜์— ์—ฐ๊ฒฐ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด `updateCollectionPlugin` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% totem %}
+{% totem-accordion title="๊ธฐ์ˆ ์  ๋ช…๋ น์–ด ์„ธ๋ถ€์‚ฌํ•ญ - UpdateCollectionPluginV1" %}
+
+**๋ช…๋ น์–ด ๊ณ„์ • ๋ชฉ๋ก**
+
+| ๊ณ„์ •          | ์„ค๋ช…                                              |
+| ------------- | ------------------------------------------------- |
+| collection    | Core ์ž์‚ฐ์ด ์†ํ•œ ์ปฌ๋ ‰์…˜                           |
+| payer         | ์ €์žฅ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ง€๋ถˆํ•˜๋Š” ๊ณ„์ •                       |
+| authority     | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ                                    |
+| systemProgram | ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ •                              |
+| logWrapper    | SPL Noop ํ”„๋กœ๊ทธ๋žจ                                 |
+
+**๋ช…๋ น์–ด ์ธ์ˆ˜**
+
+| ์ธ์ˆ˜   | ์„ค๋ช…                        |
+| ------ | --------------------------- |
+| plugin | ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ     |
+
+์ผ๋ถ€ ๊ณ„์ •์€ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด SDK์—์„œ ์ถ”์ƒํ™”๋˜๊ฑฐ๋‚˜ ์„ ํƒ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+์˜จ์ฒด์ธ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Github](https://github.com/metaplex-foundation/mpl-core/blob/5a45f7b891f2ca58ad1fc18e0ebdd0556ad59a4b/programs/mpl-core/src/instruction.rs#L81)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% /totem %}
+
+{% seperator h="6" /%}
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { publicKey } from '@metaplex-foundation/umi'
+import { updateCollectionPlugin, ruleSet } from '@metaplex-foundation/mpl-core'
+
+const collectionAddress = publicKey('1111111111111111111111111111111')
+
+const newCreator = publicKey('5555555555555555555555555555555')
+
+await updateCollectionPlugin(umi, {
+  collection: collectionAddress,
+  plugin: {
+    type: 'Royalties',
+    basisPoints: 400,
+    creators: [{ address: newCreator, percentage: 100 }],
+    ruleSet: ruleSet('None'),
+  },
+}).sendAndConfirm(umi)
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use std::str::FromStr;
+use mpl_core::{
+    instructions::UpdateCollectionPluginV1Builder,
+    types::{Creator, Plugin, Royalties, RuleSet},
+};
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction};
+
+pub async fn update_collection_plugin() {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let authority = Keypair::new();
+    let collection = Pubkey::from_str("11111111111111111111111111111111").unwrap();
+
+    let new_creator = Pubkey::from_str("22222222222222222222222222222222").unwrap();
+
+    let update_collection_plugin_ix = UpdateCollectionPluginV1Builder::new()
+        .collection(collection)
+        .payer(authority.pubkey())
+        .plugin(Plugin::Royalties(Royalties {
+            basis_points: 500,
+            creators: vec![Creator {
+                address: new_creator,
+                percentage: 100,
+            }],
+            rule_set: RuleSet::None,
+        }))
+        .instruction();
+
+    let signers = vec![&authority];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let update_collection_plugin_tx = Transaction::new_signed_with_payer(
+        &[update_collection_plugin_ix],
+        Some(&payer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&update_collection_plugin_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res)
+}
+```
+
+{% /dialect %}
+{% /dialect-switcher %}

+ 419 - 0
src/pages/kr/core/create-asset.md

@@ -0,0 +1,419 @@
+---
+title: ์ž์‚ฐ ์ƒ์„ฑํ•˜๊ธฐ
+metaTitle: ์ž์‚ฐ ์ƒ์„ฑํ•˜๊ธฐ | Core
+description: Metaplex Core ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Core NFT ์ž์‚ฐ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+[Core ๊ฐœ์š”](/kr/core)์—์„œ ๋…ผ์˜ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, Core์˜ ๋””์ง€ํ„ธ ์ž์‚ฐ์€ ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์˜จ์ฒด์ธ ๊ณ„์ •๊ณผ ํ† ํฐ์„ ์„ค๋ช…ํ•˜๋Š” ์˜คํ”„์ฒด์ธ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ž์‚ฐ์„ ๋ฏผํŒ…ํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+## ์ƒ์„ฑ ๊ณผ์ •
+
+1. **์˜คํ”„์ฒด์ธ ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ.** ๋จผ์ € ์˜คํ”„์ฒด์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž์‚ฐ์„ ์„ค๋ช…ํ•˜๋Š” JSON ํŒŒ์ผ์ด ์–ด๋”˜๊ฐ€์— ์ €์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. JSON ํŒŒ์ผ์ด **URI**๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ, ์–ด๋””์— ์ €์žฅ๋˜๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํ”„์ฒด์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” [๊ธฐ์กด ํ† ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ‘œ์ค€](/kr/token-metadata/token-standard#the-non-fungible-standard)๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+2. **์˜จ์ฒด์ธ ์ž์‚ฐ ๊ณ„์ • ์ƒ์„ฑ.** ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ž์‚ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•  ์˜จ์ฒด์ธ ์ž์‚ฐ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๋ฉด์„œ ์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋ฅผ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+## ์˜คํ”„์ฒด์ธ ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ
+
+๋ชจ๋“  ์ €์žฅ ์„œ๋น„์Šค(Arweave, IPFS, AWS ๋“ฑ...)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜คํ”„์ฒด์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ์ž์ฒด ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ์ค‘ ์ผ๋ถ€๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด `Umi`๋Š” `Irys(Arweave์— ์—…๋กœ๋“œ)` ๋ฐ `nftStorage(IPFS์— ์—…๋กœ๋“œ)`์™€ ๊ฐ™์€ ์ „์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ ํƒ๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ž์‚ฐ๊ณผ JSON ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ" %}
+{% dialect title="JavaScript" id="js" %}
+{% totem %}
+
+```ts
+const [imageUri] = await umi.uploader.upload([imageFile])
+const uri = await umi.uploader.uploadJson({
+  name: 'My NFT',
+  description: 'This is my NFT',
+  image: imageUri,
+  // ...
+})
+```
+
+{% totem-accordion title="์—…๋กœ๋” ์„ ํƒ" %}
+
+Umi๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์—…๋กœ๋”๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด ์—…๋กœ๋”์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, Irys ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+```ts
+import { irysUploader } from '@metaplex-foundation/umi-uploader-irys'
+
+umi.use(irysUploader())
+```
+
+{% /totem-accordion %}
+
+{% /totem %}
+{% /dialect %}
+{% /dialect-switcher %}
+
+์ด์ œ **URI**๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ์ž์‚ฐ ์ƒ์„ฑ
+
+์ž์‚ฐ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด `createV1` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. `createV1` ๋ช…๋ น์–ด๋Š” ์ž์‚ฐ์˜ ๊ธฐ๋ณธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ž์‚ฐ์„ ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€ํ•˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” [๋‚˜์ค‘์—](#create-an-asset-with-plugins) ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.
+
+๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:
+
+{% totem %}
+{% totem-accordion title="๊ธฐ์ˆ ์  ๋ช…๋ น์–ด ์„ธ๋ถ€์‚ฌํ•ญ" %}
+**๋ช…๋ น์–ด ๊ณ„์ • ๋ชฉ๋ก**
+
+| ๊ณ„์ •          | ์„ค๋ช…                                                   |
+| ------------- | ------------------------------------------------------ |
+| asset         | MPL Core ์ž์‚ฐ์˜ ์ฃผ์†Œ                                   |
+| collection    | Core ์ž์‚ฐ์ด ์†ํ•œ ์ปฌ๋ ‰์…˜                               |
+| authority     | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ                                         |
+| payer         | ์ €์žฅ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ง€๋ถˆํ•˜๋Š” ๊ณ„์ •                            |
+| new owner     | ์ž์‚ฐ์„ ๋ฐ›์„ ์†Œ์œ ์ž                                     |
+| systemProgram | ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ •                                   |
+| logWrapper    | SPL Noop ํ”„๋กœ๊ทธ๋žจ                                      |
+
+**๋ช…๋ น์–ด ์ธ์ˆ˜**
+
+| ์ธ์ˆ˜      | ์„ค๋ช…                                                        |
+| --------- | ----------------------------------------------------------- |
+| dataState | ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์ • ์ƒํƒœ์— ์ €์žฅ๋˜๋Š”์ง€ ์žฅ๋ถ€ ์ƒํƒœ์— ์ €์žฅ๋˜๋Š”์ง€      |
+| name      | MPL Core ์ž์‚ฐ์˜ ์ด๋ฆ„                                        |
+| uri       | ์˜คํ”„์ฒด์ธ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ URI                                |
+| plugins   | ์ž์‚ฐ์ด ๊ฐ€์ ธ์•ผ ํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ                                   |
+
+์ผ๋ถ€ ๊ณ„์ •/์ธ์ˆ˜๋Š” ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด SDK์—์„œ ์ถ”์ƒํ™”๋˜๊ฑฐ๋‚˜ ์„ ํƒ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+์˜จ์ฒด์ธ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Github](https://github.com/metaplex-foundation/mpl-core/blob/5a45f7b891f2ca58ad1fc18e0ebdd0556ad59a4b/programs/mpl-core/src/instruction.rs#L18)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+{% /totem-accordion %}
+{% /totem %}
+
+{% seperator h="6" /%}
+
+{% dialect-switcher title="์ž์‚ฐ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { generateSigner, publicKey } from '@metaplex-foundation/umi'
+import { create } from '@metaplex-foundation/mpl-core'
+
+const assetSigner = generateSigner(umi)
+
+const result = await create(umi, {
+  asset: assetSigner,
+  name: 'My Asset',
+  uri: 'https://example.com/my-asset.json',
+  //owner: publicKey('11111111111111111111111111111111'), //๋‹ค๋ฅธ ์ง€๊ฐ‘์œผ๋กœ ๋ฏผํŒ…ํ•˜๊ธฐ ์œ„ํ•œ ์„ ํƒ ์‚ฌํ•ญ
+}).sendAndConfirm(umi)
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use mpl_core::instructions::CreateV1Builder;
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
+
+
+pub async fn create_asset() {
+
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let payer = Keypair::new();
+    let asset = Keypair::new();
+
+    let create_asset_ix = CreateV1Builder::new()
+        .asset(asset.pubkey())
+        .payer(payer.pubkey())
+        .name("My Nft".into())
+        .uri("https://example.com/my-nft.json".into())
+        .instruction();
+
+    let signers = vec![&asset, &payer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let create_asset_tx = Transaction::new_signed_with_payer(
+        &[create_asset_ix],
+        Some(&payer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client.send_and_confirm_transaction(&create_asset_tx).await.unwrap();
+
+    println!("Signature: {:?}", res)
+}
+```
+
+{% /dialect %}
+
+{% dialect title="Rust (CPI)" id="rust-cpi" %}
+
+```rust
+let create_ix = CreateV1CpiBuilder::new()
+        .asset(input.asset.pubkey())
+        .collection(input.collection)
+        .authority(input.authority)
+        .payer(payer)
+        .owner(input.owner)
+        .update_authority(input.update_authority)
+        .system_program(system_program::ID)
+        .data_state(input.data_state.unwrap_or(DataState::AccountState))
+        .name(input.name.unwrap_or(DEFAULT_ASSET_NAME.to_owned()))
+        .uri(input.uri.unwrap_or(DEFAULT_ASSET_URI.to_owned()))
+        .plugins(input.plugins)
+        .invoke();
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์ปฌ๋ ‰์…˜์— ์ž์‚ฐ ์ƒ์„ฑ
+
+MPL Core ์ž์‚ฐ์€ MPL Core ์ปฌ๋ ‰์…˜์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ปฌ๋ ‰์…˜์— ๋ฐ”๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ์ž์‚ฐ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด [์—ฌ๊ธฐ](/kr/core/collections)๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.
+
+{% dialect-switcher title="์ปฌ๋ ‰์…˜์— ์ž์‚ฐ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { generateSigner, publicKey } from '@metaplex-foundation/umi'
+import {
+  createCollection,
+  create,
+  fetchCollection,
+} from '@metaplex-foundation/mpl-core'
+
+const collectionSigner = generateSigner(umi)
+
+// ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
+// ๋‹จ์ผ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
+// sleep ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 'finalized' ์ปค๋ฐ‹ ๋ ˆ๋ฒจ์„
+// ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ปฌ๋ ‰์…˜์ด
+// ์™„์ „ํžˆ ์ž‘์„ฑ๋œ ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+await createCollection(umi, {
+  collection: collectionSigner,
+  name: 'My Collection',
+  uri: 'https://example.com/my-collection.json',
+}).sendAndConfirm(umi)
+
+// ์ปฌ๋ ‰์…˜ ๊ฐ€์ ธ์˜ค๊ธฐ
+const collection = await fetchCollection(umi, collectionSigner.publicKey)
+
+
+// assetSigner ์ƒ์„ฑ ํ›„ ์ž์‚ฐ ์ƒ์„ฑ
+const assetSigner = generateSigner(umi)
+
+await create(umi, {
+  asset: assetSigner,
+  collection: collection,
+  name: 'My Asset',
+  uri: 'https://example.com/my-asset.json',
+  //owner: publicKey('11111111111111111111111111111111'), //๋‹ค๋ฅธ ์ง€๊ฐ‘์œผ๋กœ ๋ฏผํŒ…ํ•˜๊ธฐ ์œ„ํ•œ ์„ ํƒ ์‚ฌํ•ญ
+}).sendAndConfirm(umi)
+```
+
+{% /dialect %}
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use mpl_core::instructions::{CreateCollectionV1Builder, CreateV1Builder};
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
+
+pub async fn create_asset_with_collection() {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let signer = Keypair::new(); // ์—ฌ๊ธฐ์„œ ํ‚คํŽ˜์–ด ๋กœ๋“œ
+
+    let collection = Keypair::new();
+
+    let create_collection_ix = CreateCollectionV1Builder::new()
+        .collection(collection.pubkey())
+        .payer(signer.pubkey())
+        .name("My Collection".into())
+        .uri("https://example.com/my-collection.json".into())
+        .instruction();
+
+    let signers = vec![&collection, &signer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let create_collection_tx = Transaction::new_signed_with_payer(
+        &[create_collection_ix],
+        Some(&signer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&create_collection_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res);
+
+    let asset = Keypair::new();
+
+    let create_asset_ix = CreateV1Builder::new()
+        .asset(asset.pubkey())
+        .collection(Some(collection.pubkey()))
+        .payer(signer.pubkey())
+        .name("My Nft".into())
+        .uri("https://example.com/my-nft.json".into())
+        .instruction();
+
+    let signers = vec![&asset, &signer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let create_asset_tx = Transaction::new_signed_with_payer(
+        &[create_asset_ix],
+        Some(&signer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&create_asset_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res)
+}
+```
+
+{% /dialect %}
+
+{% dialect title="Rust (CPI)" id="rust-cpi" %}
+
+```rust
+let create_ix = CreateV1CpiBuilder::new(input.program)
+    .asset(input.asset.pubkey())
+    .collection(Some(input.collection))
+    .authority(Some(input.authority))
+    .payer(input.payer)
+    .owner(Some(input.owner))
+    .update_authority(Some(input.update_authority))
+    .system_program(system_program::ID)
+    .data_state(input.data_state.unwrap_or(DataState::AccountState))
+    .name(input.name)
+    .uri(input.uri)
+    .plugins(input.plugins)
+    .invoke();
+```
+
+{% /dialect %}
+
+{% /dialect-switcher %}
+
+## ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์ž์‚ฐ ์ƒ์„ฑ
+
+MPL Core ์ž์‚ฐ์€ ์ปฌ๋ ‰์…˜๊ณผ ์ž์‚ฐ ๋ ˆ๋ฒจ ๋ชจ๋‘์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ Core ์ž์‚ฐ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ƒ์„ฑ ์ค‘์— `plugins` ๋ฐฐ์—ด ์ธ์ˆ˜์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํƒ€์ž…๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” `Freeze` ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ฏผํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์ž์‚ฐ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```ts
+import { generateSigner } from '@metaplex-foundation/umi'
+import { create, ruleSet } from '@metaplex-foundation/mpl-core'
+
+const creator1 = publicKey('11111111111111111111111111111111')
+const creator2 = publicKey('22222222222222222222222222222222')
+
+const assetSigner = generateSigner(umi)
+
+await create(umi, {
+  asset: assetSigner,
+  name: 'My Asset',
+  uri: 'https://example.com/my-asset.json',
+  plugins: [
+    {
+      type: 'Royalties',
+      basisPoints: 500,
+      creators: [
+        {
+          address: creator1,
+          percentage: 20,
+        },
+        {
+          address: creator2,
+          percentage: 80,
+        },
+      ],
+      ruleSet: ruleSet('None'), // ํ˜ธํ™˜์„ฑ ๊ทœ์น™ ์„ธํŠธ
+    },
+  ],
+}).sendAndConfirm(umi)
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+use std::str::FromStr;
+use mpl_core::{
+    instructions::CreateV1Builder,
+    types::{Creator, Plugin, PluginAuthority, PluginAuthorityPair, Royalties, RuleSet},
+};
+use solana_client::nonblocking::rpc_client;
+use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction};
+
+pub async fn create_asset_with_plugin() {
+    let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
+
+    let payer = Keypair::new();
+    let asset = Keypair::new();
+
+    let creator = Pubkey::from_str("11111111111111111111111111111111").unwrap();
+
+    let create_asset_with_plugin_ix = CreateV1Builder::new()
+        .asset(asset.pubkey())
+        .payer(payer.pubkey())
+        .name("My Nft".into())
+        .uri("https://example.com/my-nft.json".into())
+        .plugins(vec![PluginAuthorityPair {
+            plugin: Plugin::Royalties(Royalties {
+                basis_points: 500,
+                creators: vec![Creator {
+                    address: creator,
+                    percentage: 100,
+                }],
+                rule_set: RuleSet::None,
+            }),
+            authority: Some(PluginAuthority::None),
+        }])
+        .instruction();
+
+    let signers = vec![&asset, &payer];
+
+    let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
+
+    let create_asset_with_plugin_tx = Transaction::new_signed_with_payer(
+        &[create_asset_with_plugin_ix],
+        Some(&payer.pubkey()),
+        &signers,
+        last_blockhash,
+    );
+
+    let res = rpc_client
+        .send_and_confirm_transaction(&create_asset_with_plugin_tx)
+        .await
+        .unwrap();
+
+    println!("Signature: {:?}", res)
+}
+
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชฉ๋ก์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋˜์ง€๋งŒ ์ด์— ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค:
+
+- [์†Œ๊ฐ ์œ„์ž„์ž](/kr/core/plugins/burn-delegate)
+- [๋™๊ฒฐ ์œ„์ž„์ž](/kr/core/plugins/freeze-delegate)
+- [๋กœ์—ดํ‹ฐ](/kr/core/plugins/royalties)
+- [์ „์†ก ์œ„์ž„์ž](/kr/core/plugins/transfer-delegate)
+- [์—…๋ฐ์ดํŠธ ์œ„์ž„์ž](/kr/core/plugins/update-delegate)

+ 38 - 0
src/pages/kr/core/index.md

@@ -0,0 +1,38 @@
+---
+title: ๊ฐœ์š”
+metaTitle: ๊ฐœ์š” | Core
+description: Metaplex์—์„œ ๋งŒ๋“  Core๋ผ๋Š” ์ƒˆ๋กœ์šด Solana NFT ์ž์‚ฐ ํ‘œ์ค€์˜ ๊ฐœ๋žต์ ์ธ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+---
+
+Metaplex Core("Core")๋Š” ์ด์ „ ํ‘œ์ค€์˜ ๋ณต์žก์„ฑ๊ณผ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋””์ง€ํ„ธ ์ž์‚ฐ์„ ์œ„ํ•œ ๊น”๋”ํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ํ•ต์‹ฌ ์‚ฌ์–‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฐจ์„ธ๋Œ€ Solana NFT ํ‘œ์ค€์€ ๋‹จ์ผ ๊ณ„์ • ์„ค๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏผํŒ… ๋น„์šฉ์„ ์ค„์ด๊ณ  ๋‹ค๋ฅธ ๋Œ€์•ˆ๊ณผ ๋น„๊ตํ•˜์—ฌ Solana ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‚ฐ์˜ ๋™์ž‘๊ณผ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์œ ์—ฐํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. {% .lead %}
+
+[https://core.metaplex.com/](https://core.metaplex.com/)์—์„œ Core์˜ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด๊ณ  ์ž์‚ฐ์„ ๋ฏผํŒ…ํ•ด๋ณด์„ธ์š”!
+
+{% quick-links %}
+
+{% quick-link title="์‹œ์ž‘ํ•˜๊ธฐ" icon="InboxArrowDown" href="/kr/core/getting-started" description="์›ํ•˜๋Š” ์–ธ์–ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ๊ณ  Solana์—์„œ ๋””์ง€ํ„ธ ์ž์‚ฐ์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”." /%}
+
+{% quick-link title="API ์ฐธ์กฐ" icon="CodeBracketSquare" href="https://mpl-core.typedoc.metaplex.com/" target="_blank" description="ํŠน์ •ํ•œ ๋‚ด์šฉ์„ ์ฐพ๊ณ  ์žˆ๋‚˜์š”? API ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ต์„ ์ฐพ์œผ์„ธ์š”." /%}
+
+{% quick-link title="MPL Token Metadata์™€์˜ ์ฐจ์ด์  ๊ฐœ์š”" icon="AcademicCap" href="/kr/core/tm-differences" description="Token Metadata์— ์ต์ˆ™ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ณ€๊ฒฝ๋œ ๋™์ž‘์˜ ๊ฐœ์š”๋ฅผ ๋ณด๊ณ  ์‹ถ๋‚˜์š”?" /%}
+
+{% quick-link title="UI์—์„œ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด์„ธ์š”!" icon="Beaker" href="https://core.metaplex.com/" target="_blank" description="์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์›น์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด Core๋ฅผ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด์„ธ์š”!" /%}
+
+{% /quick-links %}
+
+## ์†Œ๊ฐœ
+
+Metaplex Core๋Š” Metaplex Protocol์˜ ์ƒˆ๋กœ์šด NFT ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. Metaplex Token Metadata Program์„ ํฌํ•จํ•œ ๋‹ค๋ฅธ ํ‘œ์ค€๊ณผ ๋น„๊ตํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:
+
+- **์ „๋ก€ ์—†๋Š” ๋น„์šฉ ํšจ์œจ์„ฑ**: Metaplex Core๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋Œ€์•ˆ๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ฏผํŒ… ๋น„์šฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Token Metadata๋กœ .022 SOL ๋˜๋Š” Token Extensions๋กœ .0046 SOL์ด ๋“œ๋Š” NFT๋ฅผ Core๋กœ๋Š” .0029 SOL์— ๋ฏผํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **๋‚ฎ์€ ์ปดํ“จํŠธ**: Core ์ž‘์—…์€ ์ž‘์€ Compute Unit ๋ฐœ์ž๊ตญ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋” ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์ด ํ•˜๋‚˜์˜ ๋ธ”๋ก์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฏผํŒ…์„ ์œ„ํ•ด 205000 CU ๋Œ€์‹  Core๋Š” ๋‹จ์ง€ 17000 CU๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+- **๋‹จ์ผ ๊ณ„์ • ์„ค๊ณ„**: SPL Token์ด๋‚˜ Token Extensions(์ผ๋ช… Token22)์™€ ๊ฐ™์€ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ํ† ํฐ ํ‘œ์ค€์— ์˜์กดํ•˜๋Š” ๋Œ€์‹  Core๋Š” NFT ํ‘œ์ค€์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Core๋Š” ์†Œ์œ ์ž๋ฅผ ์ถ”์ ํ•˜๋Š” ๋‹จ์ผ ๊ณ„์ •๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+- **๊ฐ•์ œ ๋กœ์—ดํ‹ฐ**: Core๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ [๋กœ์—ดํ‹ฐ ์ง‘ํ–‰](/kr/core/plugins/royalties)์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
+- **์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ ์ง€์›**: ์ž์‚ฐ์„ [์ปฌ๋ ‰์…˜](/kr/core/collections)์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Token Metadata์—์„œ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Core์—์„œ๋Š” ์ปฌ๋ ‰์…˜์ด ์ž์ฒด ์ž์‚ฐ ํด๋ž˜์Šค๋กœ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค:
+- **์ปฌ๋ ‰์…˜ ๋ ˆ๋ฒจ ์ž‘์—…**: Core๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ปฌ๋ ‰์…˜ ๋ ˆ๋ฒจ์—์„œ ๋ชจ๋“  ์ž์‚ฐ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ์ž์‚ฐ์„ ๋™๊ฒฐํ•˜๊ฑฐ๋‚˜ ๋กœ์—ดํ‹ฐ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋™์‹œ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
+- **๊ณ ๊ธ‰ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ง€์›**: ๋‚ด์žฅ๋œ ์Šคํ…Œ์ดํ‚น๋ถ€ํ„ฐ ์ž์‚ฐ ๊ธฐ๋ฐ˜ ํฌ์ธํŠธ ์‹œ์Šคํ…œ๊นŒ์ง€, Metaplex Core์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์•„ํ‚คํ…์ฒ˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ์ปค์Šคํ„ฐ๋งˆ์ด์ œ์ด์…˜์˜ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ƒ์„ฑ, ์ „์†ก, ์†Œ๊ฐ๊ณผ ๊ฐ™์€ ์ž์‚ฐ ์ƒ๋ช… ์ฃผ๊ธฐ ์ด๋ฒคํŠธ์— ํ›…์„ ๊ฑธ์–ด ์ปค์Šคํ…€ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์‚ฐ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: ๊ถŒํ•œ ์œ„์ž„ ๋˜๋Š” DAS์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ƒ‰์ธํ™”๋˜๋Š” ์˜จ์ฒด์ธ ์†์„ฑ ์ถ”๊ฐ€:
+- **์ฆ‰์„ ์ƒ‰์ธํ™”**: [DAS๋ฅผ ์ง€์›ํ•˜๋Š” ๋งŽ์€ RPC ์ œ๊ณต์—…์ฒด](/kr/rpc-providers)๊ฐ€ ์ด๋ฏธ Core๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ๋‹ค์Œ ๋‹จ๊ณ„
+
+Metaplex Core๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ฐœ๋žต์ ์œผ๋กœ ์‚ดํŽด๋ณด์•˜์œผ๋ฏ€๋กœ, Core ์ž์‚ฐ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์–ธ์–ด/ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋‚˜์—ดํ•˜๋Š” [์‹œ์ž‘ํ•˜๊ธฐ](/kr/core/getting-started) ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. [MPL Token Metadata์™€์˜ ์ฐจ์ด์ ](/kr/core/tm-differences) ํŽ˜์ด์ง€๋„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cNFT์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ 300 - 0
src/pages/kr/core/what-is-an-asset.md

@@ -0,0 +1,300 @@
+---
+title: MPL Core ์ž์‚ฐ
+metaTitle: Core ์ž์‚ฐ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ | Core
+description: MPL Core ์ž์‚ฐ์ด ๋ฌด์—‡์ด๋ฉฐ ์™œ Solana NFT์˜ ๋ฏธ๋ž˜์ธ์ง€ ์•Œ์•„๋ณด์„ธ์š”.
+---
+
+## ๊ฐœ์š”
+
+[Solana์˜ Token ํ”„๋กœ๊ทธ๋žจ](https://spl.solana.com/token)๊ณผ ๊ฐ™์€ ๊ธฐ์กด ์ž์‚ฐ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ตฌ๋ณ„๋˜๋Š” ์ ์€, Metaplex Core์™€ Core ์ž์‚ฐ(๋•Œ๋•Œ๋กœ Core NFT ์ž์‚ฐ์ด๋ผ๊ณ  ๋ถˆ๋ฆผ)์€ ์—ฐ๊ด€ ํ† ํฐ ๊ณ„์ •๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๊ณ„์ •์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  Core ์ž์‚ฐ์€ ์ง€๊ฐ‘๊ณผ "๋ฏผํŠธ" ๊ณ„์ • ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ž์‚ฐ ์ž์ฒด ๋‚ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node %}
+{% node #wallet label="์ง€๊ฐ‘ ๊ณ„์ •" theme="indigo" /%}
+{% node label="์†Œ์œ ์ž: ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ" theme="dimmed" /%}
+{% /node %}
+{% node y="70" parent="wallet" label="๋ˆ„๊ตฐ๊ฐ€์˜ ์ง€๊ฐ‘." theme="transparent" /%}
+
+{% node x="200" parent="wallet" %}
+{% node #asset label="์ž์‚ฐ ๊ณ„์ •" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Core ํ”„๋กœ๊ทธ๋žจ" theme="dimmed" /%}
+{% /node %}
+{% node y="70" parent="asset" theme="transparent" %}
+์†Œ์œ ์ž๋ฅผ ํฌํ•จํ•œ \
+์ž์‚ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ
+{% /node %}
+
+{% edge from="wallet" to="asset" /%}
+
+{% /diagram %}
+
+## Core ์ž์‚ฐ ๊ณ„์ •
+
+Core ์ž์‚ฐ ๊ณ„์ •์€ ๋””์ง€ํ„ธ ์ž์‚ฐ์„ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์˜จ์ฒด์ธ ์†Œ์œ ๊ถŒ์„ ์œ„ํ•œ ํŽธ๊ฒฌ ์—†๋Š” ๋ธ”๋ก์ฒด์ธ ์›์‹œ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+{% diagram %}
+{% node %}
+{% node #wallet label="์ง€๊ฐ‘ ๊ณ„์ •" theme="indigo" /%}
+{% node label="์†Œ์œ ์ž: ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ" theme="dimmed" /%}
+{% /node %}
+{% node y="70" parent="wallet" theme="transparent" /%}
+{% node x="200" parent="wallet" %}
+{% node #asset label="์ž์‚ฐ ๊ณ„์ •" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Core ํ”„๋กœ๊ทธ๋žจ" theme="dimmed" /%}
+{% node label="ํ‚ค = ์ž์‚ฐ" /%}
+{% node label="์†Œ์œ ์ž" /%}
+{% node label="์—…๋ฐ์ดํŠธ ๊ถŒํ•œ" /%}
+{% node label="์ด๋ฆ„" /%}
+{% node label="URI" /%}
+{% /node %}
+{% node y="70" parent="asset" theme="transparent" %}
+{% /node %}
+
+{% edge from="wallet" to="asset" /%}
+
+{% /diagram %}
+
+{% seperator h="6" /%}
+
+{% totem %}
+{% totem-accordion title="์˜จ์ฒด์ธ ์ž์‚ฐ ๊ณ„์ • ๊ตฌ์กฐ" %}
+
+MPL Core ์ž์‚ฐ์˜ ์˜จ์ฒด์ธ ๊ณ„์ • ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. [๋งํฌ](https://github.com/metaplex-foundation/mpl-core/blob/ce5d16f2de3c0038caae81a8c6496420b1a0462a/programs/mpl-core/src/state/asset.rs#L19)
+
+| ์ด๋ฆ„             | ํƒ€์ž…            | ํฌ๊ธฐ | ์„ค๋ช…                                                      |                                                                                                                            |
+| ---------------- | --------------- | ---- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
+| key              | u8              | 1    | ๊ณ„์ • ํƒ€์ž…์˜ ๊ตฌ๋ถ„์ž                                         |                                                                                                                            |
+| owner            | pubKey          | 32   | ์ž์‚ฐ์˜ ์†Œ์œ ์ž                                              |                                                                                                                            |
+| update_authority | enum<publicKey> | 33   | ์ƒˆ ์ž์‚ฐ์˜ ๊ถŒํ•œ ๋˜๋Š” CollectionID                           | [๋งํฌ](https://github.com/metaplex-foundation/mpl-core/blob/main/clients/rust/src/generated/types/update_authority.rs#L14) |
+| name             | string          | 36   | ์ž์‚ฐ์˜ ์ด๋ฆ„                                                |                                                                                                                            |
+| uri              | string          | 204  | ์˜คํ”„์ฒด์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž์‚ฐ์˜ URI                       |                                                                                                                            |
+| seq              | string          |      | ์••์ถ•๊ณผ ํ•จ๊ป˜ ์ƒ‰์ธํ™”์— ์‚ฌ์šฉ๋˜๋Š” ์‹œํ€€์Šค ๋ฒˆํ˜ธ                   |                                                                                                                            |
+
+{% /totem-accordion %}
+{% /totem %}
+
+## ๋‚ด ์ž์‚ฐ์ด ์ปฌ๋ ‰์…˜์— ์†ํ•ด ์žˆ๋‚˜์š”?
+
+MPL Core ์ž์‚ฐ์€ ์ปฌ๋ ‰์…˜์— ์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MPL Core ์ž์‚ฐ ๋ฐ์ดํ„ฐ์˜ `updateAuthority` ํ•„๋“œ๋Š” ๋‘ ๊ฐ€์ง€ ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž์‚ฐ์˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์„ ๋ณด๊ณ ํ•˜๊ฑฐ๋‚˜ ์ž์‚ฐ์ด ์†ํ•œ MPL Core ์ปฌ๋ ‰์…˜์˜ publicKey๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
+
+์ž์‚ฐ์„ ํ†ตํ•ด ์ง์ ‘ ๋˜๋Š” MPL Core ์ž์‚ฐ์˜ `collectionAddress` ํ—ฌํผ๋ฅผ ํ†ตํ•ด `updateAuthority` ํ•„๋“œ์— ์•ก์„ธ์Šคํ•  ๋•Œ, ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค:
+
+**์ปฌ๋ ‰์…˜**
+
+์ž์‚ฐ์ด ์ฃผ์–ด์ง„ ์ฃผ์†Œ์˜ ์ปฌ๋ ‰์…˜์— ์†ํ•ฉ๋‹ˆ๋‹ค.
+{% dialect-switcher title="์ž์‚ฐ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```javascript
+{
+  __kind: 'Collection'
+  fields: [PublicKey]
+}
+import { fetchAssetV1 } from '@metaplex-foundation/mpl-core'
+
+const asset = await fetchAssetV1(umi, assetAddress.publicKey)
+const collectionId = collectionAddress(asset)
+
+console.log({collectionId})
+console.log({asset})
+
+// ๋กœ๊ทธ
+collection: '2222222222222222222222222222222'
+asset: {
+    key: AssetV1,
+    owner: "11111111111111111111111111111111",
+    updateAuthority: {
+      type: 'Collection',
+      address: '2222222222222222222222222222222'
+    },
+    name: "My Core Asset",
+    uri: "https://example.com/metadata.json",
+    ...
+}
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+Collection(Pubkey)
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+**์ฃผ์†Œ**
+
+์ž์‚ฐ์— ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์ด ์„ค์ •๋˜์–ด ์žˆ๊ณ  ์ปฌ๋ ‰์…˜์— ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+{% dialect-switcher title="์ž์‚ฐ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```javascript
+import { fetchAssetV1 } from '@metaplex-foundation/mpl-core'
+
+const asset = await fetchAssetV1(umi, assetAddress.publicKey)
+const collectionId = collectionAddress(asset)
+
+console.log({collectionId})
+console.log({asset})
+
+// ๋กœ๊ทธ
+collectionId: undefined
+asset: {
+    key: AssetV1,
+    owner: "11111111111111111111111111111111",
+    updateAuthority: {
+      type: 'Address',
+      address: '2222222222222222222222222222222'
+    }
+    name: "My Core Asset",
+    uri: "https://example.com/metadata.json",
+    ...
+}
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+Address(Pubkey)
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+**์—†์Œ**
+
+์ž์‚ฐ์— ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์ด ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
+
+{% dialect-switcher title="์ž์‚ฐ ์ƒ์„ฑ" %}
+{% dialect title="JavaScript" id="js" %}
+
+```javascript
+import { fetchAssetV1 } from '@metaplex-foundation/mpl-core'
+
+const asset = await fetchAssetV1(umi, assetAddress.publicKey)
+const collectionId = collectionAddress(asset)
+
+console.log({collectionId})
+console.log({asset})
+
+// ๋กœ๊ทธ
+collectionId: undefined
+asset: {
+    key: AssetV1,
+    owner: "11111111111111111111111111111111",
+    updateAuthority: {
+      type: 'None',
+    },
+    name: "My Core Asset",
+    uri: "https://example.com/metadata.json",
+}
+```
+
+{% /dialect %}
+
+{% dialect title="Rust" id="rust" %}
+
+```rust
+None
+```
+
+{% /dialect %}
+{% /dialect-switcher %}
+
+## ์˜คํ”„์ฒด์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
+
+์ž์‚ฐ ๊ณ„์ •์˜ ์ค‘์š”ํ•œ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋Š” ์˜คํ”„์ฒด์ธ์˜ JSON ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” `URI` ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์˜จ์ฒด์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ๊ด€๋ จ๋œ ์ˆ˜์ˆ˜๋ฃŒ์˜ ์ œ์•ฝ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉด์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ JSON ํŒŒ์ผ์€ ๋ˆ„๊ตฌ๋‚˜ ํ† ํฐ์—์„œ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” [ํŠน์ • ํ‘œ์ค€](/kr/token-metadata/token-standard)์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
+
+์˜คํ”„์ฒด์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์œ„์น˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSON ํŒŒ์ผ์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์ธ๊ธฐ ์žˆ๋Š” ์žฅ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+
+- Arweave
+- NFT.Storage/IPFS
+- Amazon AWS S3/Google Cloud
+
+{% diagram %}
+{% node %}
+{% node #wallet label="์ง€๊ฐ‘ ๊ณ„์ •" theme="indigo" /%}
+{% node label="์†Œ์œ ์ž: ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ" theme="dimmed" /%}
+{% /node %}
+{% node y="70" parent="wallet" theme="transparent" /%}
+{% node x="200" parent="wallet" %}
+{% node #asset label="์ž์‚ฐ ๊ณ„์ •" theme="blue" /%}
+{% node label="์†Œ์œ ์ž: Core ํ”„๋กœ๊ทธ๋žจ" theme="dimmed" /%}
+{% node label="ํ‚ค = ์ž์‚ฐ" /%}
+{% node label="์†Œ์œ ์ž" /%}
+{% node label="์—…๋ฐ์ดํŠธ ๊ถŒํ•œ" /%}
+{% node label="์ด๋ฆ„" /%}
+{% node #uri label="URI" /%}
+{% /node %}
+{% node y="70" parent="asset" theme="transparent" %}
+{% /node %}
+
+{% node parent="uri" x="-200" y="-23" %}
+{% node #json theme="slate" %}
+์˜คํ”„์ฒด์ธ \
+JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
+{% /node %}
+{% node label="์ด๋ฆ„" /%}
+{% node label="์„ค๋ช…" /%}
+{% node label="์ด๋ฏธ์ง€" /%}
+{% node label="์• ๋‹ˆ๋ฉ”์ด์…˜ URL" /%}
+{% node label="์†์„ฑ" /%}
+{% node label="..." /%}
+{% /node %}
+
+{% edge from="wallet" to="asset" /%}
+{% edge from="uri" to="json" path="straight" /%}
+
+{% /diagram %}
+
+{% partial file="token-standard-full.md" /%}
+
+{% totem %}
+{% totem-accordion title="์˜ˆ์‹œ" %}
+
+```json
+{
+  "name": "SolanaArtProject #1",
+  "description": "Generative art on Solana.",
+  "image": "https://arweave.net/26YdhY_eAzv26YdhY1uu9uiA3nmDZYwP8MwZAultcE?ext=jpeg",
+  "animation_url": "https://arweave.net/ZAultcE_eAzv26YdhY1uu9uiA3nmDZYwP8MwuiA3nm?ext=glb",
+  "external_url": "https://example.com",
+  "attributes": [
+    {
+      "trait_type": "trait1",
+      "value": "value1"
+    },
+    {
+      "trait_type": "trait2",
+      "value": "value2"
+    }
+  ],
+  "properties": {
+    "files": [
+      {
+        "uri": "https://www.arweave.net/abcd5678?ext=png",
+        "type": "image/png"
+      },
+      {
+        "uri": "https://watch.videodelivery.net/9876jkl",
+        "type": "unknown",
+        "cdn": true
+      },
+      {
+        "uri": "https://www.arweave.net/efgh1234?ext=mp4",
+        "type": "video/mp4"
+      }
+    ],
+    "category": "video"
+  }
+}
+```
+
+{% /totem-accordion %}
+{% /totem %}
+
+์ด JSON ํŒŒ์ผ์€ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋„๋ก Arweave์™€ ๊ฐ™์€ ์˜๊ตฌ ์ €์žฅ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ `์—…๋ฐ์ดํŠธ ๊ถŒํ•œ` ํ•„๋“œ๋ฅผ None์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค๊ณ , ๋”ฐ๋ผ์„œ `URI`์™€ `Name` ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜คํ”„์ฒด์ธ JSON ํŒŒ์ผ์˜ ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.