В этом уроке мы настроим наш скрипт, чтобы он был гибким между тестовой сетью и основной сетью. Затем мы также научимся развертывать наш контракт в основной сети.
Это будет включать в себя новую переменную среды testnet. Мы установим это в нашем скрипте, чтобы он знал, какую сеть он должен использовать. В соответствии с этой новой переменной мы также скорректируем наш код.
Добавление переменной среды
Во-первых, давайте обновим раздел сценария. Мы начнем с добавления основной сети в сценарий:
"deploy:mainnet": "yarn compile && ts-node ./scripts/deploy.ts"
Тем не менее, мы хотим testnet Как переменная среды по умолчанию. Таким образом, мы сделаем переменную testnet истинной:
"deploy": "TESTNET=true yarn compile && ts-node ./scripts/deploy.ts"
Теперь, чтобы использовать основную сеть для развертывания, вам придется явно объявить об этом. Давайте также добавим основную сеть для тестирования:
"onchaintest:mainnet": "ts-node ./scripts/onchaintest.ts"
Вот как выглядит весь раздел scripts:
Далее нам нужно настроить переменные dotenv:
import dotenv from "dotenv"
dotenv.config();
Для этого нам нужно установить эту библиотеку:
yarn add dotenv
Давайте найдем, где нам нужно изменить код, где мы зависим от тестовой сети. Очевидно, что это поддомен в deploy.ts:
let link =
`https://tonhub.com/transfer/` +
address.toString({
testOnly: true,
})
Обновите его, так что если он установлен как истинный, мы поставим тест здесь. В противном случае мы просто поставим пустую строку:
let link =
`https://tonhub.com/transfer/` +
address.toString({
testOnly: process.env.TESTNET ? true : false,
})
Это для развертывания. И для onchaintest.ts мы сделаем то же самое. Во-первых, настройте dotenv так же, как описано выше.
Затем мы добавляем выбор правильной сети. Если process.env использует testnet, мы также будем использовать testnet; в противном случае мы будем использовать mainnet:
const endpoint = await getHttV4Endpoint({
network: process.env.TESTNET ? "testnet": "mainnet",
});
Кроме того, нам нужно искать другие экологические зависимости в нашем проекте и изменять их таким же образом, чтобы связь была правильной.
Изменение журналаs
Мы можем обновить наши консольные журналы при развертывании, чтобы фактически сказать, в какой сети будет развернут проект. Если process.env является testnet, мы скажем testnet, в противном случае мы скажем mainnet:
console. log (
`The address of the contract is following: $address. toString()}*
);
console. log (
Please scan the QR code below to deploy the contract to ${
process.env.TESTET ? "tesnet" : "mainnet"
}:`
);
Теперь мы добавим переменную среды там, где она должна быть: перед запуском сценария, а не скриптом компиляции.
Давайте запустим это снова. Теперь он развернут в тестовой сети по умолчанию. Если мы хотим развернуть в основной сети, мы можем использовать команду
yarn deploy:mainnet
Журналы, которые мы улучшили, теперь показывают нам, следует ли тестировать сеть или основную сеть, которую мы развертываем.
Развертывание в основной сети
Теперь я собираюсь развернуть его в основной сети через Tonhub, чтобы мы могли увидеть его в Explorer. Мне нужно отсканировать QR-код и подтвердить транзакцию развертывания на Tonhub на реальные деньги. После этого мы можем найти нашу транзакцию с помощью Tonscan.
Мы также скорректировали сценарий теста в цепочке для работы с тестовой сетью или основной сетью таким же образом. До сих пор вы прошли весь жизненный цикл разработки контракта. Поздравляем!
Заключение
Мы создали только пользовательскую настройку; вам не нужно использовать ее таким образом. Мы прошли каждый шаг - компиляция, тестирование, развертывание - чтобы вы лучше понимали, как это работает. Вы найдете все больше и больше инструментов, которые выведут вас на более высокий уровень абстракции. Это хорошо: даже лучшие разработчики, которые знают все детали, любят уйти от ручных операций на низком уровне. Большую часть времени вы, вероятно, будете использовать Blueprint.
В следующей главе мы напишем больше логики FunC, еще несколько тестов и изменим наш сценарий, чтобы он был полностью таким же, как в Blueprint. Мы начнем часто использовать Blueprint под капотом.
То, что вы узнали до сих пор, будет очень полезно для вас в следующих главах. Но не стесняйтесь просто использовать Blueprint и просто создавать пустые проекты со всеми необходимыми файлами. Теперь вы знаете, как их использовать, вы понимаете процесс и требования для составления и развертывания собственных контрактов.
Спасибо, что присоединились ко мне в этой главе! Я с нетерпением жду встречи с вами в следующем. Я очень рад, что у вас так много мотивации, что вы зашли так далеко в программировании. До скорой встречи!