Найти в Дзене

Гибкое развертывание из Testnet сети в Mainnet

Оглавление

В этом уроке мы настроим наш скрипт, чтобы он был гибким между тестовой сетью и основной сетью. Затем мы также научимся развертывать наш контракт в основной сети.

Это будет включать в себя новую переменную среды  
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:

-2

Далее нам нужно настроить переменные 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"
}:`
);

Теперь мы добавим переменную среды там, где она должна быть: перед запуском сценария, а не скриптом компиляции.

-3

Давайте запустим это снова. Теперь он развернут в тестовой сети по умолчанию. Если мы хотим развернуть в основной сети, мы можем использовать команду

yarn deploy:mainnet

Журналы, которые мы улучшили, теперь показывают нам, следует ли тестировать сеть или основную сеть, которую мы развертываем.

Развертывание в основной сети

Теперь я собираюсь развернуть его в основной сети через Tonhub, чтобы мы могли увидеть его в Explorer. Мне нужно отсканировать QR-код и подтвердить транзакцию развертывания на Tonhub на реальные деньги. После этого мы можем найти нашу транзакцию с помощью Tonscan.

Мы также скорректировали сценарий теста в цепочке для работы с тестовой сетью или основной сетью таким же образом. До сих пор вы прошли весь жизненный цикл разработки контракта. Поздравляем!

Заключение

Мы создали только пользовательскую настройку; вам не нужно использовать ее таким образом. Мы прошли каждый шаг - компиляция, тестирование, развертывание - чтобы вы лучше понимали, как это работает. Вы найдете все больше и больше инструментов, которые выведут вас на более высокий уровень абстракции. Это хорошо: даже лучшие разработчики, которые знают все детали, любят уйти от ручных операций на низком уровне. Большую часть времени вы, вероятно, будете использовать Blueprint.

В следующей главе мы напишем больше логики FunC, еще несколько тестов и изменим наш сценарий, чтобы он был полностью таким же, как в Blueprint. Мы начнем часто использовать Blueprint под капотом.

То, что вы узнали до сих пор, будет очень полезно для вас в следующих главах. Но не стесняйтесь просто использовать Blueprint и просто создавать пустые проекты со всеми необходимыми файлами. Теперь вы знаете, как их использовать, вы понимаете процесс и требования для составления и развертывания собственных контрактов.

Спасибо, что присоединились ко мне в этой главе! Я с нетерпением жду встречи с вами в следующем. Я очень рад, что у вас так много мотивации, что вы зашли так далеко в программировании. До скорой встречи!

LikBez Crypto 2.0