# Разворачивание контрактов
## Предварительные действия
Установить зависимости:
```shell=
yarn
```
если выдаст ошибку с чексуммами то:
```shell=
YARN_CHECKSUM_BEHAVIOR=update yarn
```
Создать файл .env в корне проекта, ввести мнемоническую фразу. Пример:
```shell=
MNEMONIC = inherit winter miracle exercise leader harbor fantasy turkey sponsor danger goose debate
```
Транзакции будут совершаться с первого аккаунта от мнемоники, при необходимости можно переопределить в файле hardhat.config.ts.
## Деплой
Для основной сети:
```shell=
yarn deploy --network matic
```
Для тестовой сети:
```shell=
yarn deploy --network "matic-test"
```
Для деплоев с нуля при наличии предыдущих деплоев добавить флаг `--reset`.
Адреса задеплоеных контрактов сохраняются в папке deployments.
## Верификация на polygonscan
```shell=
yarn verify --api-key <ввести ключ> --network <ввести сеть>
```
Для верификации прокси скопировать адрес прокси контракта, перейти на https://polygonscan.com/proxyContractChecker для основной сети или https://mumbai.polygonscan.com/proxyContractChecker для тестовой сети, вставить адрес в форму и нажать Verify.
## MetaCore
[Предварительные действия](#Предварительные-действия).
Задать в файле hardhat.config.ts нужный адрес для root, если ничего не менять будет использован 3й адрес от мнемоники для основной сети и 1й для тестовой сети:
```typescript=
root: {
default: 2,
"matic-test": 0,
matic: "0x..." // Основная сеть
},
```
[Вызвать деплой](#Деплой).
[Верифицировать контракты](#Верификация-на-polygonscan).
## MetaPayment
[Предварительные действия](#Предварительные-действия).
Задать в файле hardhat.config.ts адрес MetaCore:
```typescript=
metaCore: {
default: 2,
"matic-test": "0x...", // Тестовая сеть
matic: "0x..." // Основная сеть
},
```
[Вызвать деплой](#Деплой).
[Верифицировать контракты](#Верификация-на-polygonscan).
Установить адрес MetaPayment в MetaCore:
- Перейти на страницу MetaCore в polygonscan
- Write as proxy
- Connect to web3 (с первого кошелька от мнемоники если не переопределен deployer в hardhat.config.ts)
- `setPaymentChannelAddress(newAddress: <ввести адрес MetaPayment>)`
## United-Verse
[Предварительные действия](#Предварительные-действия).
Задать в файле hardhat.config.ts адреса (см. пример выше):
- otherPool
- metaDevelopmentAndIncentiveFund
- teamFund
- liquidityListingFund
- metaPool
- stablecoin
- rewardsFund
- royaltyNFTGiftsPool
- sfcr
- sfcr2
- metaCore
[Вызвать деплой](#Деплой).
[Верифицировать контракты](#Верификация-на-polygonscan).
Выдать в MetaPayment META_ROLE роли для Core, Holding, MetaForceContract, RequestMFSContract:
- Перейти на страницу MetaPayment в polygonscan
- Write as proxy
- Connect to web3 (с первого кошелька от мнемоники если не переопределен deployer в hardhat.config.ts)
- `grantRole(role: 0xa9ce9b5120c53e0d8b4fe6e0814a47efbead9ebc4d29ec54571f37f0b61ecf0f, account: <ввести адрес контракта>)`
Выдать в Energy, MetaForceSpace и HoldMetaForceSpace (8 токенов от 1 до 8 ур.) BURNER_ROLE роль для MetaPayment:
- Перейти на страницу токена в polygonscan
- Write contract
- Connect to web3 (с первого кошелька от мнемоники если не переопределен deployer в hardhat.config.ts)
- `grantRole(role: 0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848, account: <ввести адрес metaPayment>)`
Распределить эмиссию и настроить токены:
- Перейти на страницу Core в polygonscan
- Write as proxy
- Connect to web3 (с любого кошелька)
- `setupTokensInMetapayment`
Заапрувить токены MFS и Stablecoin от metaPool к Core:
- Перейти на страницу токена в polygonscan
- Write contract
- Connect to web3 (с кошелька metaPool)
- `approve(spender: <ввести адрес core>, amount: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)`
При необходимости сменить WorkflowStage (появится возможность активировать и продлять пакеты, покупать mfs, создавать заявки на покупку mfs):
- Перейти на страницу Core в polygonscan
- Write as proxy
- Connect to web3 (с первого кошелька от мнемоники если не переопределен deployer в hardhat.config.ts)
- `nextWorkflowStage`