3.7 KiB
3.7 KiB
CreateGovernmentNFTAndDAO
RU
Скрипты для Devnet, чтобы управлять NFT через DAO (Realms/SPL Governance):
- создать предложение на выпуск NFT (
mint) и выполнить его; - создать предложение на сжигание 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.
Важно перед запуском
- Нужен
node,@solana/web3.js,@solana/spl-token,@solana/spl-governance. - В
config.envдолжен быть корректныйREALM,GOVERNANCE,GOVERNING_MINT,MAIN_KEYPAIR. - Для
mint via DAOцелевой ATA должен существовать заранее (скрипт02это проверяет).
Быстрый полный тест (mint + burn)
- Создать NFT-шаблон (куда DAO будет минтить):
node 01b_create_empty_nft_template.js ./config.env
- Создать ATA для целевого кошелька и этого mint (если ещё нет).
- Поднять proposal на mint:
node 02_propose_vote_mint_nft.js ./config.env <target_wallet> <nft_mint>
- Выполнить proposal (команду берёшь из консоли шага 3):
node 03_execute_mint_nft.js ./config.env <proposal> <proposal_tx> <nft_mint> <target_wallet>
- Создать NFT для burn-теста:
node 01_create_nft_for_wallet_admin.js ./config.env <wallet_with_nft>
- Поднять proposal на burn:
node 04_propose_vote_burn_nft.js ./config.env <wallet_with_nft> <nft_mint>
- Выполнить 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/кошельки.
Для проверки через час:
- поднимаешь proposal (скрипт
02или04); - ждёшь;
- запускаешь соответствующий
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.