Автор оригинала: FreeCodeCamp Community Member.
Игорь Яловой
Обновлять
На 2 ноября Metamask и другие браузеры DAPP перестанут разоблачать учетные записи пользователей по умолчанию. Это сделает некоторый код из этой статьи, чтобы сломаться. Я опубликую обновленную версию с Web3 1.0 и новым интерфейсом Metamask.
Метамаск Это фактический стандарт для Dapps в Интернете. Он вводит экземпляр Web3 в окно, что делает его доступным для кода JavaScript.
Мы собираемся использовать версию Web3 0.20, а не Web3 1.0. Код для Web3 1.0 будет другим.
У каждого DAPP имеет свою миссию, но как они взаимодействуют с метамаском, похоже. В этой статье мы осмотрим десять наиболее распространенных методов для обработки взаимодействий Web3/Metamask.
# 1 Обнаружение метамаска и экземпляра Web3
По словам Документы Вот лучший способ сделать это.
Что здесь происходит? Во-первых, мы проверяем, вводили ли WEB3. Если он вводится, мы создаем новый экземпляр с использованием введенного поставщика. Это почему? Потому что мы хотим использовать нашу версию библиотеки, а не тот, который вводится Metamask.
Если Web3 нет, мы пытаемся подключиться к поставщику localhost, как Ганаш Отказ
# 2. Проверьте, заблокирован ли метамаска
Метамаск может быть установлен, но заблокирован. Чтобы взаимодействовать с учетной записью пользователя и отправлять транзакцию, пользователь должен разблокировать метамаск.
# 3 Проверьте текущую сеть
Существует много тестовых сетей за пределами основной сети. Обычно ваш контракт развернут в определенную сеть. Вы хотите быть уверены, что пользователь запускает метамаск в той же сети.
# 4 Получить текущий счет
Пользователь может иметь несколько учетных записей на метамаске, но они ожидают, что DAPP взаимодействует с текущим.
Вы всегда должны захватить учетную запись из экземпляра Web3. Не храните и не используйте его, потому что пользователь может изменить свой аккаунт в любое время.
# 5 Получить баланс на текущем счете
Здесь мы используем функцию getaccount
из # 4 и позвоните GetBalance
Отказ Легкий.
# 6 Обнаружение того, что текущий счет изменился
Пользователь может изменить свой аккаунт в любое время. Вы Dapp должны быть готовы к этому и реагировать правильно.
# 7 Обнаружение ли метамаска заблокирована/разблокирована
Похож на # 6. Пользователь может заблокировать/разблокировать в любое время. Ваш DAPP должен обрабатывать это правильно.
# 8 Ручка отменить/подтвердить
Как только пользователь взаимодействует с вашим DAPP, вы должны отправить транзакцию с помощью API Web3. Пользователь может нажать кнопку Отмена или подтверждения на всплывающем окне Metamask. Это может привести к несоответствию UI, если не обрабатывается правильно.
Для того, чтобы вернуться мгновенно с транзакцией хэш, позвоните Contract.methodname.sendtransaction
Отказ
# 9 Получить квитанцию транзакции
После того, как ваша транзакция Dapp будет доминирована, получение транзакции становится доступной. Тем не менее, нет события/уведомления, поэтому мы должны реализовать механизм опроса.
# 10. Слушайте события Web3
Собирающиеся события великолепны. Они позволяют переключаться с уродливого опроса до того, как только нажимной механизм, предполагая, что ваш контракт реализует все необходимые события. Вы можете полностью избежать опроса и просто реагировать на события. Обратный вызов события Возвращает Много данных, но мы в основном заинтересованы в args
Отказ
Резюме
Независимо от того, что ваш DAPP о том, что он все еще должен выполнять общие задачи, такие как обнаружение Web3, получение состояния учетной записи и баланс, распознавая текущую сеть и обращение с транзакциями и событиями. Мы пошли за то, как это можно сделать, используя десять фрагментов кода.
Снимание
Многие примеры здесь используют методы, которые могут бросить ошибку из-за состояния метамаска или некоторых переменных, не определенных в момент вызова. Вы должны обернуть их в попробуйте/поймать
в производственной среде. Async/await использовался здесь для простоты. Это можно заменить с обещанием тогда/поймать.
Социальное
Хочу больше?
Как создать и развернуть свой собственный токен EOS Мы собираемся выяснить, что такое токен EOS и как вы можете создавать и развернуть его самостоятельно. Hackernoon.com Сколько стоит запускать DAPP в 2018 году Вы думаете, что ваш AWS или цифровой законопроект океана за ваш сайт убивает вас? Hackernoon.com Разница между этими жетонами Ethereum и EOS Ethateum имеет токен ERC-20, а EOS имеет EOSIO. Они служат той же цели, но они такие же? Medium.com.
Первоначально опубликовано ylv.io 15 октября 2018 года.