SHiNE-server/shine-solana/shine/scripts/CreateGovernmentNFTAndDAO/README.md

3.7 KiB
Raw Blame History

CreateGovernmentNFTAndDAO

RU

Скрипты для Devnet, чтобы управлять NFT через DAO (Realms/SPL Governance):

  1. создать предложение на выпуск NFT (mint) и выполнить его;
  2. создать предложение на сжигание NFT (burn) и выполнить его.

Что лежит в папке

  • config.env — параметры кластера, DAO, ключей.
  • keypairs/ — ключи оператора и второго участника.
  • runs/ — отчёты запусков (proposal, tx и т.д.).
  • 00_prepare_voter2_deposit.js — депонирование governance-токена для второго голосующего.
  • 01_create_nft_for_wallet_admin.js — создать NFT на кошелёк и делегировать право governance PDA.
  • 01b_create_empty_nft_template.js — создать пустой NFT mint-шаблон (supply=0) для будущего DAO mint.
  • 02_propose_vote_mint_nft.js — создать+подписать+проголосовать за proposal на mint.
  • 03_execute_mint_nft.js — выполнить proposal mint.
  • 04_propose_vote_burn_nft.js — создать+подписать+проголосовать за proposal на burn.
  • 05_execute_burn_nft.js — выполнить proposal burn.

Важно перед запуском

  1. Нужен node, @solana/web3.js, @solana/spl-token, @solana/spl-governance.
  2. В config.env должен быть корректный REALM, GOVERNANCE, GOVERNING_MINT, MAIN_KEYPAIR.
  3. Для mint via DAO целевой ATA должен существовать заранее (скрипт 02 это проверяет).

Быстрый полный тест (mint + burn)

  1. Создать NFT-шаблон (куда DAO будет минтить):
    • node 01b_create_empty_nft_template.js ./config.env
  2. Создать ATA для целевого кошелька и этого mint (если ещё нет).
  3. Поднять proposal на mint:
    • node 02_propose_vote_mint_nft.js ./config.env <target_wallet> <nft_mint>
  4. Выполнить proposal (команду берёшь из консоли шага 3):
    • node 03_execute_mint_nft.js ./config.env <proposal> <proposal_tx> <nft_mint> <target_wallet>
  5. Создать NFT для burn-теста:
    • node 01_create_nft_for_wallet_admin.js ./config.env <wallet_with_nft>
  6. Поднять proposal на burn:
    • node 04_propose_vote_burn_nft.js ./config.env <wallet_with_nft> <nft_mint>
  7. Выполнить proposal burn (команда из шага 6):
    • node 05_execute_burn_nft.js ./config.env <proposal> <proposal_tx> <nft_mint> <wallet_with_nft>

Как проверить результат

Смотри JSON-отчёты в runs/: там есть proposal, proposalTransaction, tx подписи и mint/кошельки.

Для проверки через час:

  1. поднимаешь proposal (скрипт 02 или 04);
  2. ждёшь;
  3. запускаешь соответствующий execute скрипт с параметрами из отчёта.

Проверка DAO

В текущем config.env:

  • Realm: 2DTh1ivaekAW8kRYzGPsL2taFLJFFkBjEwqPisebxsS7
  • Governance PDA: EMZ8vmr1xB4HZBDCFL9rHB98m1C5cYrGnRA8ZHayyGwD
  • Governing mint: F1KctLRvVzqwcBYNGsivnjR39gY8Uvq5U3uyaqEBNASg

EN

Devnet scripts for DAO-governed NFT flow (Realms/SPL Governance):

  • propose/sign/vote/execute NFT mint to a wallet;
  • propose/sign/vote/execute NFT burn from a wallet.

Main idea: first script in each pair creates proposal and vote, second script executes proposal later.