Отключить репосты и добавить Solana-модуль

This commit is contained in:
AidarKC
2026-05-24 12:16:39 +03:00
parent abdce05136
commit 56cd90a197
95 changed files with 24261 additions and 64 deletions
@@ -0,0 +1,66 @@
# 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.