Что на самом деле происходит, когда вы нажимаете кнопку в dApp? 👇
Допустим, вы пользуетесь децентрализованным приложением и нажимаете «Отправить токен».
Кажется, что это простое действие. Но под капотом происходит несколько вещей.
1√ Фронтенд подготавливает запрос
Ваше dApp использует свой интерфейс и код интеграции со смарт-контрактом, чтобы подготовить нужное действие.
2√ Кошелёк запрашивает подтверждение
Если транзакция меняет состояние блокчейна, кошелёк позволяет вам проверить запрос и подписать его. Никогда не подписывайте то, чего не понимаете.
3️⃣ Транзакция отправляется в сеть
Подписанная транзакция передаётся в сеть блокчейна через RPC-провайдера.
4️⃣ Выполняется смарт-контракт
Сеть обрабатывает транзакцию в соответствии с кодом контракта. Если транзакция проходит успешно, состояние контракта может измениться.
5√ Приложение проверяет результат
Ваше dApp может отслеживать статус транзакции и показывать результат после получения соответствующего подтверждения. Для важных действий следует проверять квитанцию транзакции и ожидаемые события, а не доверять сообщению об успехе во фронтенде.
Вот один нюанс, который новички часто упускают:
Чтение данных блокчейна — это не то же самое, что их изменение.
- «balanceOf()» обычно позволяет прочитать баланс токенов с помощью вызова только для чтения, не оплачивая комиссию за транзакцию.
- «transfer()» меняет состояние блокчейна и обычно требует подписанной транзакции и сетевой комиссии.
Точный процесс зависит от блокчейна, кошелька и контракта, которыми вы пользуетесь.
Разработчикам понимание этого процесса помогает создавать более удобные интерфейсы, правильно обрабатывать ошибки и нагляднее показывать пользователям статус транзакции.
Я изучаю эти темы с точки зрения full-stack-разработки и разработки в Web3 и делюсь тем, что узнаю, по ходу дела.
Вопрос к коллегам-разработчикам: что разобрать следующим — интеграцию с кошельком, RPC-провайдеров или квитанции транзакций?
#Web3Dev #SmartContracts #BinanceSquare