Начните работу с TON
Давайте создадим с нуля ваше первое приложение на блокчейне TON. Вы сможете оценить предлагаемые блокчейном TON скорость, надежность, а также ознакомиться с основными концепциями асинхронного мышления.
Если вы только делаете первые шаги в программировании, это руководство станет для вас отличной отправной точкой.
Данный обучающий курс включает в себя 5 модулей, а его прохождение займет примерно 45 минут.
🛳 Чему вы научитесь
Из этого руководства вы поймете, на сколько просто совершать транзакции в блокчейне с помощью JavaScript. Конечно вы можете научиться это делать и без руководства, но с ним будет гораздо легче, эффективнее и понятнее.
- Вы создадите свой собственный кошелек TON с помощью Tonkeeper
- Воспользуетесь краном Testnet для пополнения своего тестового кошелька
- Разберётесь в ключевых концепциях смарт-контрактов TON (адреса, ячейки)
- Научитесь взаимодействовать с TON с помощью TypeScript SDK и API-провайдера
- Скомпилируете свою первую транзакцию с помощью консольного приложения NFT Miner
И, главное – вы добудете NFT-достижение "Ракета"!!!
Ровно так же как и первые майнеры на TON, вы будете взаимодействовать со смарт-контрактом Proof-of-Work и по завершению получите секретное вознаграждение для вашего кошелька TON. Полный вперед!
Наша цель на сегодня – добыть NFT! Это достижение останется с вами навсегда.
В последствии, вы сможете добыть это NFT достижение даже в основной сети, mainnet. Это стоит всего 0,05 TON!.
Видеоурок
Для более подробного изучения материала, ознакомьтесь с очень полезным видеоуроком от Владимира Алефмана.
Майнинг на блокчейне TON
Сейчас мы разберем принципы майнинга на блокчейне TON. Этот материал позволит вам понять не только важность этого процесса, а также то, почему майнинг биткоинов помог совершить революцию в индустрии.
Хотя структура смарт-контрактов PoW Giver, определявшая начальный процесс майнинга и заложившая основу для TON, была завершена на старте, последний TON был добыт в июне 2022 года, завершим тем самым механизм распределения токенов через Proof-of-Work (PoW). Тем не менее, с нашим недавним переходом на Proof-of-Stake (PoS) эпоха стекинга в TON только начинается.
Теперь же давайте перейдем к первым шагам на пути к тому, чтобы стать разработчиком на TON, а также научиться добывать NFT. Ниже приведен пример того, что мы планируем создать в рамках курса.
Создание подобного майнера при сфокусированной работе займет около получаса.
🦄 Начало работы
Для начала работы, вам понадобятся следующие компоненты:
- Кошелек: Вам понадобится некостодиальный кошелек для хранения NFT в режиме тестовой сети.
- Репозиторий: Мы будем использовать готовый шаблон, созданный специально для вас.
- Среда разработки: Разработчикам нужно будет выбрать в какой среде они будут майнить – локальной или облачной.
Загрузка и создание кошелька
Для начала вам понадобится некостодиальный кошелек, который позволит вам получать и хранить ваши TON. В данном руководстве мы используем Tonkeeper. Вам необходимо будет включить режим Testnet в кошельке, для того чтобы иметь возможность получать тестовые Toncoin. Эти токены будут использованы позже для отправки финальной транзакции майнинга в смарт-контракт.
При использовании некастодиального кошелька, пользователь является владельцем кошелька, а также хранит приватный ключ самостоятельно.
Чтобы загрузить и создать кошелек TON, выполните следующие простые шаги:
- Установите приложение Tonkeeper на свой смартфон. Его можно скачать здесь.
- Далее вам необходимо включить тестовый режим в Tonkeeper.
Отлично! Теперь перейдем к разработке.
Настройка проекта
Чтобы упростить процесс и избежать рутинных низкоуровневых задач, мы будем использовать шаблонный проект.
Обратите внимание, что для дальнейшей работы вам потребуется войти в свою учётную запись GitHub.
Пожалуйста, используйте шаблон ton-onboarding-challenge для создания вашего проекта. Для этого нажмите кнопку "Use this template" и выберите вкладку "Create a new repository", как показано ниже:


После выполнения этого шага, вы получите доступ к высокопроизводительному репозиторию, который станет основой вашего майнера. Поздравляем! ✨
Среды разработки
Следующий шаг – выбрать среду разработки, которая лучше всего соответствует вашим потребностям, уровню опыта и навыкам. Как видите, этот процесс можно выполнить как в облачной, так и в локальной среде. Разработка в "облаке" часто считается более простой и легкой для начала работы. Ниже мы рассмотрим шаги, необходимые для обоих подходов.
Убедитесь, что вы открыли репозиторий в своем профиле GitHub, созданный на основе шаблона в предыдущем шаге.


Локальные и облачные среды разработки
-
Если вы не знакомы с JavaScript, работа в IDE может оказаться для вас сложной задачей, особенно если компьютер и инструменты не настроены для этого.
-
Но если вы знакомы с NodeJS и Git и умеете работать с
npm
, то использовать локальную среду разработки может быть удобнее.
Облачные пространства
Если вы решили работать в облачной среде, то начать можно в пару кликов: сначала выберите вкладку Code, а затем нажмите кнопку Create codespace on master в репозитории GitHub, как показано ниже:


Затем GitHub создаст специальное облачное рабочее пространство, дающее вам доступ к VSCode Online IDE (интегрированная онлайн-среда разработки Visual Studio Code).
После получения доступа (обычно codespace запускается примерно за 30 секунд), у вас будет все необходимое для работы без установки Git, Node.js или других инструментов.
Локальные среды разработки
Для настройки локальной среды разработки вам потребуется доступ к трем основным инструментам:
- Git. Необходимый инструмент для работы с репозиториями. Скачать можно здесь.
- NodeJS. Среда выполнения JavaScript и TypeScript, обычно используемая для разработки приложений на TON. Скачать можно [здесь] (https://nodejs.org/en/download/).
- JavaScript IDE. Обычно используются для разработки в локальной среде. Например - Visual Studio Code (VSCode).
Чтобы приступить к работе клонируйте ваш шаблонный репозиторий с GitHub и откройте нужный репозиторий в вашей интегрированной среде разработки (IDE).
Выполнение скриптов
В этом руководстве мы будем запускать скрипты на TypeScript. Все команды, такие как запуск скриптов или установка модулей, выполняются через командную строку в рабочей области терминала IDE. Обычно она находится в нижней части интерфейса.
Например, если в облачном Codespaces еще не открыто рабочее пространство терминала, его можно открыть следующим образом:


Вводите команды в этом окне и нажимайте Enter, чтобы выполнить их:


Терминал также можно использовать как отдельное приложение. Выберите подходящую версию в зависимости от вашей IDE и операционной системы.
Отлично! Теперь вы готовы глубже погрузиться в секреты блокчейна TON. 👀
🎯 Подключение к TON
Итак, что потребуется для подключения к блокчейну TON?
- Адрес смарт-контракта — как точка назначения. Мы будем добывать NFT из proof-of-work смарт-контракта, поэтому нам нужен его адрес, чтобы узнать текущую сложность майнинга.
- API-провайдер, чтобы отправлять запросы в блокчейн TON. Существует несколько типов API для разных задач. Мы будем использовать тестовую версию API toncenter.com.
- JavaScript SDK (Software Development Kit или SDK — набор инструментов для разработки) — нужен, чтобы обработать адрес смарт-контракта и подготовить его для API-запроса. Подробнее про адреса TON и их обработку, можно прочитать здесь. Для выполнения этого процесса мы будем использовать
@ton/ton
.
В следующем разделе мы разберем, как отправлять первые запросы в блокчейн TON через API TONCenter и @ton/ton
для получения данных от смарт-контракта PoW.
Адреса смарт-контрактов
Чтобы майнер работал правильно, нужно добавить два разных типа адресов смарт-контрактов:
- Адрес кошелька. Он необходим, для получения вознаграждения за майнинг. В данном случае нужно использовать режим Tonkeeper Testnet.
- Адрес коллекции. Необходим для корректного майнинга NFT смарт-контрактом. Для выполнения процесса, скопируйте адрес коллекции NFT под названием "TON onboarding challenge" с сайта Getgems.
Теперь давайте откроем файл ./scripts/mine.ts
в вашем майнере и создадим функцию mine()
, в которой определим основные константы следующим образом:
import {Address} from '@ton/ton';
const walletAddress = Address.parse('YOUR_WALLET_ADDRESS');
const collectionAddress = Address.parse('COLLECTION_ADDRESS');
async function mine () {
}
mine();
Использование функции async mine()
В процессе создания TON NFT майнера мы будем отправлять несколько запросов к публичному API, чтобы получать ответы и передавать их в нужные части кода. Использование функции async/await значительно упростит написание кода.
Парсинг адресов
На TON адреса смарт-контрактов имеют разные форматы и используют множество типов флагов. В данном случае мы будем использовать удобный для пользователя формат адреса. Если вы хотите узнать больше о типах адресов смарт-контрактов, изучите даный раздел в нашей документации.
Чтобы майнер работал корректно, нужно добавить два разных типа адресов смарт-контрактов, таких как:
Метод Address.parse()
, расположенный в @ton/ton
SDK, позволяет разработчику создать объект адреса для упрощенного преобразования адресов из одного формата в другой.
Подключение к API-провайдеру
На этом этапе мы подключимся к TON через API-провайдера TONCenter (размещенного на toncenter.com), используя специальные команды в скрипте.
Самый простой способ - это указать тестовый эндпоинт https://testnet.toncenter.com/api/v2/jsonRPC
.


Нужно добавить client
и endpoint
в скрипт ./scripts/mine.ts
, используя TonClient и тестовый эндпоинт Toncenter https://testnet.toncenter.com/api/v2/jsonRPC
:
import {Address, TonClient} from "@ton/ton"
// ... previous code
// specify endpoint for Testnet
const endpoint = "https://testnet.toncenter.com/api/v2/jsonRPC"
// initialize ton library
const client = new TonClient({ endpoint });
Лучше всего использовать провайдера RPC-узлов или запустить собственный экземпляр ton-http-api. Подробнее читайте на странице TonCenter API.
Получение данных майнинга из блокчейна TON
Следующий шаг — получить конкретные данные о майнинге из блокчейна TON.
Откройте файл README, который поможет пройти TON-онбординг-челлендж. Актуальные данные о майнинге TON можно получить, запустив метод get_mining_data
.
В результате мы должны получить массив с такими полями:
(
int pow_complexity,
int last_success,
int seed,
int target_delta,
int min_cpl,
int max_cpl
)
Запуск Get-методов смарт-контрактов на TON
С помощью @ton/ton
можно выполнить функцию client.runMethod(SMART_CONTRACT_ADDRESS, METHOD)
.
После запуска этой команды в консоли появится следующий вывод:
// ... previous code
const miningData = await client.runMethod(collectionAddress, 'get_mining_data');
console.log(miningData.stack);
Помимо этого, для запуска скрипта необходимо ввести следующую команду в терминале:
npm run start:script
Чтобы избежать непредвиденных проблем, убедитесь, что вы выполнили все предыдущие шаги, включая ввод адресов контрактов.
Отлично! Если все вышеуказанные шаги выполнены правильно, API подключится успешно, а в консоли отобразятся нужные данные. Правильный вывод будет выглядеть так:
TupleReader {
items: [
{
type: 'int',
value: 7237005577332262213973186563042994240829374041602535252466099000494570602496n
},
{ type: 'int', value: 1730818693n },
{ type: 'int', value: 281644526620911853868912633959724884177n },
{ type: 'int', value: 30n },
{ type: 'int', value: 171n },
{ type: 'int', value: 252n }
]
}
Приведенный выше содержит данные о выполнении процесса в виде набора числовых (int) значений. Теперь наша задача — преобразовать их в более удобный для использования формат.
Нам нужно преобразовать шестнадцатеричный вывод во что-то более удобное.
- Чтобы лучше разобраться, как работает виртуальная машина TON (TVM - TON Virtual Machine) и как TON обрабатывает транзакции, изучите раздел "Обзор TVM".
- Если вам интересно узнать больше о комиссиях за транзакции и расходе газа на TON, загляните в этот раздел нашей документации.
- И, наконец, чтобы разобраться в точных значениях газа, необходимых для выполнения инструкций TVM, обратитесь к этому разделу документации.
А теперь давайте вернемся к руководству!
Числовые данные майнинга в удобном формате
В предыдущем разделе мы рассмотрели числовые (int) значения, необходимые для получения данных о майнинге. Перед дальнейшей обработкой, эти данные нужно перевести в более удобный и понятный формат.
Как видно из приведенного вывода, числа могут быть очень большими. Для работы с такими выводами мы будем использовать bigint
— способ реализации больших чисел в JavaScript. BigInt
позволяет обрабатывать числа, превышающие максимальное целочисленное значение number
. Давайте разберем пример, чтобы лучше понять, какие данные о майнинге нужны для этого процесса:
// ... previous code
const { stack } = miningData;
const complexity = stack.readBigNumber();
const lastSuccess = stack.readBigNumber();
const seed = stack.readBigNumber();
const targetDelta = stack.readBigNumber();
const minCpl = stack.readBigNumber();
const maxCpl = stack.readBigNumber();
console.log({ complexity, lastSuccess, seed, targetDelta, minCpl, maxCpl });
Как показано выше, разные компоненты miningData используют стековые числа для различных параметров, о которых мы поговорим дальше. Чтобы получить нужное значение, мы воспользовались функцией stack.readBigNumber()
которая считывает bigint
из стека.
После завершения этого процесса мы можем вывести значения в консоль. Попробуйте запустить скрипт снова, выполнив команду:
npm run start:script
Вот пример вывода:
{
complexity: 7237005577332262213973186563042994240829374041602535252466099000494570602496n,
lastSuccess: 1730818693n,
seed: 281644526620911853868912633959724884177n,
targetDelta: 30n,
minCpl: 171n,
maxCpl: 252n
}
Давайте разберем команду Mining Data, которая используется для обработки различных параметров данных при программировании данных майнинга в блокчейне TON. К ним относятся:
complexity
- наиболее важный параметр для майнеров. Он определяет сложность Proof-of-Work для значений. Хеш считается найденным, если его значение меньше сложности.lastSuccess
- это временная метка unix timestamp, фиксирующая время и дату последней майнинговой транзакции в TON. При каждом изменении last_success, майнер нужно запускать заново, так как вместе с этим изменяется и seed.seed
обозначает уникальное значение, генерируемое смарт-контрактом для вычисления целевого хеша. Чтобы лучше понять этот процесс и узнать больше о том, как и почему изменяется seed, ознакомьтесь с папкой файлов проекта, используя ключевое слово ctx_seed (Ctrl+F с ключевым словом "ctx_seed").targetDelta
,minCpl
иmaxCpl
не будут использоваться в данном руководстве. Однако вы всегда можете узнать больше о том, как они используются в смарт-контрактах для расчета сложности proof-of-work, в исходных файлах коллекции вашего проекта.
Мы разобрались с различными параметрами и теперь можем использовать значения complexity
, lastSuccess
, seed
, в нашем NFT майнере. Давайте перейдем к следующему разделу.
🛠 Подготовка NFT майнера
Всё получилось? Отлично! Идем дальше.
Мы уже подключились к TON и получили необходимые данные майнинга из блокчейна для создания NFT-майнера. Теперь давайте разберемся со следующими шагами.
В этой главе вы подготовите сообщение для майнинга и вычислите его хеш. После этого вы найдете хеш, который будет меньше (<
) сложности, полученной нами из смарт-контракта.
Вот что такое майнер! Просто, не правда ли?
Подготовка сообщений для майнинга
Сначала мы должны подготовить сообщение для майнинга. Важно убедиться, что параметры указаны правильно. Это гарантирует корректность процесса и целостность данных.
К счастью, файл README содержит необходимые инструкции, которые помогут нам в этом. В нем представлена таблица с нужными полями и типами ячеек (раздел "Layout of Proof of Work Cell"). Она поможет правильно настроить процесс.
Ячейки — это структуры хранения данных в TON, выполняющие множество задач, в том числе повышение масштабируемости сети и ускорение транзакций смарт-контрактов. Мы не будем сейчас вдаваться в детали, но если вам интересно разобраться в устройстве ячеек и принципах их работы, загляните в этот раздел нашей документации.
К счастью, все структуры данных, используемые в этом руководстве, уже написаны на TypeScript. Вы можете использовать объект MineMessageParams
из NftGiver.data.ts, чтобы создать транзакцию с помощью Queries:
import { unixNow } from '../lib/utils';
import { MineMessageParams, Queries } from '../wrappers/NftGiver';
// ... previous code
const mineParams: MineMessageParams = {
expire: unixNow() + 300, // 5 min is enough to make a transaction
mintTo: walletAddress, // your wallet
data1: 0n, // temp variable to increment in the miner
seed // unique seed from get_mining_data
};
let msg = Queries.mine(mineParams); // transaction builder
Давайте разберемся, где находятся op и data2 из этой таблицы:
- В таблице числовое значение data1 должно совпадать со значением data2. Чтобы не заполнять значение data2, конструктор транзакций выполняет низкоуровневый процесс (см. исходный код Queries.mine()).
- Поскольку классификация
op
всегда постоянна, она уже реализована в конструкторе транзакций Queries и в OpCodes. Вы можете найти код op, посмотрев исходный код методаmine()
.
Вы можете ознакомиться с исходным кодом (../wrappers/NftGiver.ts
) — это интересно, но не обязательно.
Создание TON NFT майнеров
Теперь, когда мы подготовили сообщения для нашего майнера TON, давайте разберемся с процессом создания самого майнера. Начнем с этой строки кода:
let msg = Queries.mine(mineParams);
На предыдущем шаге мы скомпилировали значение msg
. Идея майнинга заключается в том, чтобы найти хеш msg.hash()
, который будет меньше complexity
полученного из последнего get_mining_data(). Мы можем увеличивать data1
столько раз, сколько нам нужно.
Чистый майнер будет продолжать работать бесконечно, пока msg.hash()
будет больше complexity
(хеш сообщения больше сложности майнинга PoW).
Вот пример выполнения кода, относящегося к BigInt
на TypeScript:
let msg = Queries.mine(mineParams);
const bufferToBigint = (buffer: Buffer) => BigInt('0x' + buffer.toString('hex'));
while (bufferToBigint(msg.hash()) > complexity) {
mineParams.expire = unixNow() + 300;
mineParams.data1 += 1n;
msg = Queries.mine(mineParams);
}
console.log('Yoo-hoo, you found something!');
Мы преобразуем хеш из msg.hash()
в bigint
с помощью функции bufferToBigint()
. Это необходимо для сравнения хеша с complexity
.
Теперь, после выполнения всех вышеописанных шагов, наш майнер будет работать правильно. Но визуально он будет иметь непривлекательный вид (попробуйте npm run start:script
). Давайте это исправим.
Улучшение внешнего вида TON майнера ✨
Теперь нам нужно сделать так, чтобы майнер выглядел привлекательно! Как это сделать?
Просто следуйте дальнейшим инструкциям.
Давайте добавим следующие команды:
let msg = Queries.mine(mineParams); // transaction builder
let progress = 0;
const bufferToBigint = (buffer: Buffer) => BigInt('0x' + buffer.toString('hex'));
while (bufferToBigint(msg.hash()) > complexity) {
console.clear()
console.log(`Mining started: please, wait for 30-60 seconds to mine your NFT!`)
console.log()
console.log(`⛏ Mined ${progress} hashes! Last: `, bufferToBigint(msg.hash()))
mineParams.expire = unixNow() + 300;
mineParams.data1 += 1n;
msg = Queries.mine(mineParams);
}
console.log()
console.log('💎 Mission completed: msg_hash less than pow_complexity found!');
console.log()
console.log('msg_hash: ', bufferToBigint(msg.hash()))
console.log('pow_complexity: ', complexity)
console.log('msg_hash < pow_complexity: ', bufferToBigint(msg.hash()) < complexity);
return msg;
Здорово получается! Давайте выполним следующую команду:
npm run start:script


Круто, не правда ли? 😏
После успешного выполнения этих команд у нас получится визуально привлекательный NFT майнер. В следующем разделе мы разберемся, как подключить кошелек и создать платежный канал для приема и отправки транзакций в блокчейне TON.
🎨 Подготовка транзакции
Далее разберем, как сформировать сообщение и отправить его в блокчейн через ваш кошелек Tonkeeper. Эти шаги помогут вам завершить процесс майнинга NFT на TON.
Пополнение баланса кошелька через кран тестовых токенов
Чтобы продолжить, нам нужно получить несколько тестовых токенов TON. Это можно сделать через кран Testnet по этой ссылке.
Использование возможностей Blueprint для транзакций
Чтобы процесс майнинга NFT прошел корректно, а пользователь мог безопасно хранить свои NFT, мы будем использовать Blueprint. Этот инструмент позволит нам одновременно взаимодействовать с блокчейном TON и кошельком Tonkeeper.
Для этого мы создадим и отправим транзакцию с помощью стандартной функции run()
:
import { toNano } from '@ton/ton';
import { NetworkProvider } from '@ton/blueprint';
async function mine() {
// code from previous steps
}
export async function run(provider: NetworkProvider) {
// Do not forget to return `msg` from `mine()` function
const msg = await mine();
await provider.sender().send({
to: collectionAddress,
value: toNano(0.05),
body: msg
});
}
Давайте запустим вышеуказанный скрипт для отправки транзакции:
npm start
Обратите внимание, что мы используем npm start
вместо npm run start:script
. Это нужно для работы с blueprint (в основе используется команда blueprint run
).
Далее, чтобы подключить ваш кошелек Tonkeeper, ответьте на вопросы, как показано ниже:
? Which network do you want to use?
> testnet
? Which wallet are you using?
> TON Connect compatible mobile wallet (example: Tonkeeper)
? Choose your wallet (Use arrow keys)
> Tonkeeper
Отсканируйте QR-код в терминале с помощью Tonkeeper, чтобы установить соединение (пока без отправки транзакции). После подключения подтвердите транзакцию в Tonkeeper.
Чувствуете, как прокачиваются ваши навыки? Еще немного — и вы станете настоящим разработчиком TON.
⛏ Майнинг NFT с помощью кошелька
Существует два основных способа майнинга NFT на TON:
Простой способ: майнинг NFT в тестовой сети
Ниже приведены шаги, которые помогут вам совершить первую тестовую транзакцию для майнинга NFT:
- Активируйте режим Testnet в вашем кошельке Tonkeeper
- Введите адрес вашего кошелька testnet из Tonkeeper в переменную
walletAddress
в файле./scripts/mine.ts
- Введите адрес коллекции NFT из Testnet в переменную
collectionAddress
в./scripts/mine.ts
Майнинг NFT "Ракета" в тестовой сети
Для успешного майнинга NFT "Ракета" в тестовой сети, выполните следующие шаги:
- Откройте кошелек Tonkeeper на вашем телефоне (в нем должны быть несколько недавно полученных токенов TON из тестовой сети).
- Выберите режим сканирования в кошельке, чтобы отсканировать QR-код.
- Запустите ваш майнер для получения корректного хеша (этот процесс занимает от 30 до 60 секунд).
- Следуйте инструкциям в диалоговом окне Blueprint.
- Отсканируйте сгенерированный QR-код из майнера.
- Подтвердите транзакцию в вашем кошельке Tonkeeper.
Другие разработчики тоже могут пытаться добыть свой NFT. Если кто-то успеет раньше вас, вам придется повторить процесс. Возможно, понадобится несколько попыток, чтобы у вас все получилось.
Вскоре после начала этого процесса вы успешно добудете свой первый NFT на TON. Он появится в вашем кошельке Tonkeeper.
Теперь вы настоящий разработчик на TON! Вы сделали это. 🛳
Продвинутый способ: майнинг NFT в основной сети
Если вы хотите добыть NFT в основной сети TON, следуйте этим инструкциям:
- Активируйте режим mainnet в вашем Tonkeeper (на счету должно быть не менее 0,1 TON).
- Введите адрес кошелька mainnet из Tonkeeper в переменную
walletAddress
в файле./scripts/mine.ts
- Введите адрес коллекции NFT из Mainnet в переменную
collectionAddress
в файле./scripts/mine.ts
- Замените endpoint на Mainnet:
// specify endpoint for Mainnet
const endpoint = "https://toncenter.com/api/v2/jsonRPC"
Майнинг NFT ракеты в основной сети
Для успешного майнинга NFT ракеты в основной сети (аналогично как в тестовой сети) необходимо выполнить следующие шаги:
- Откройте кошелек Tonkeeper на вашем телефоне (помните, на счету должны быть токены TON).
- Выберите режим сканирования в кошельке, чтобы отсканировать QR-код.
- Запустите ваш майнер для получения корректного хеша (этот процесс занимает от 30 до 60 секунд).
- Следуйте инструкциям в диалоговом окне Blueprint.
- Отсканируйте сгенерированный QR-код из майнера.
- Подтвердите транзакцию в вашем кошельке Tonkeeper.
Другие разработчики тоже могут пытаться добыть свой NFT. Если кто-то успеет раньше вас, вам придется повторить процесс. Возможно, понадобится несколько попыток, чтобы у вас все получилось.
Совсем немного и вы добудете свой NFT, став разработчиком на блокчейне TON. Готово! Проверьте свой NFT в Tonkeeper.
Добро пожаловать на борт, Разработчик на TON! Вы сделали это. 🛳
🧙 Что дальше?
Сначала отдохните! Вы проделали большую работу! Теперь вы разработчик TON. Но это только начало долгого пути.
См. также
Вы завершили онбординг-челлендж TON и успешно добыли NFT. Теперь советуем изучить материалы ниже — они подробно рассказывают о разных частях экосистемы TON:
- Что такое блокчейн? Что такое смарт-контракт? Что такое газ?
- TON Hello World: пошаговое руководство по написанию вашего первого смарт-контракта
- Разработка смарт-контрактов: введение
- [YouTube] Ton Dev Study - FunC & Blueprint
- Как работать со смарт-контрактами для кошельков
- FunC Journey: Часть 1
- Бот для продажи пельменей
- Минт вашего первого Жетона
- Пошаговый выпуск коллекции NFT
- Как запустить TON Site
Вы - один из первых исследователей здесь. Если заметите ошибки или почувствуете, что зашли в тупик, пожалуйста, напишите ваш комментарий сюда @SwiftAdviser. Я исправлю это как можно скорее! :)