Каждый разработчик блокчейна должен знать эти случаи использования Web3 и Metamask

1656519490 kazhdyj razrabotchik blokchejna dolzhen znat eti sluchai ispolzovaniya web3 i

Игорь Яловый

0*JVmq6javfae3gzTA

Обновление

2 ноября MetaMask и другие браузеры dapp прекратят показ учетных записей пользователей по умолчанию. Это заставит некоторый код из этой бумаги сломать. Я опубликую обновленную версию с Web3 1.0 и новым интерфейсом MetaMask.

Metamask является де-факто стандартом для dApps в Интернете. Он вводит экземпляр Web3 в объект окна, что делает его доступным для кода JavaScript.

Мы собираемся использовать Web3 версию 0.20, а не Web3 1.0. Код для Web3 1.0 будет другим.

Каждый dApp имеет свою миссию, но способ их взаимодействия с Metamask схож. В этой статье мы рассмотрим десять наиболее распространенных методов обработки взаимодействий Web3/Metamask.

№1. Выявить Metamask и создать экземпляр Web3

Согласно документам, вот самый лучший способ сделать это.

Что здесь происходит? Сначала мы проверяем, был ли введен Web3. Если он введен, мы создаем новый экземпляр с помощью введенного поставщика. Почему так? Потому что мы хотим использовать нашу библиотечную версию, а не ту, которую ввел Metamask.

Если Web3 отсутствует, мы пытаемся подключиться к поставщику локального хоста, например, ganache.

№2. Проверьте, заблокирован ли Metamask

Metamask можно установить, но заблокировать. Чтобы взаимодействовать с учетной записью пользователя и отправлять транзакции, пользователь должен разблокировать Metamask.

№3. Проверьте текущую сеть

Существует много тестовых сетей вне основной сети. Обычно ваш контракт разворачивается в определенной сети. Вы хотите быть уверены, что пользователь запускает Metamask в той же сети.

№4. Получить текущий счет

Пользователь может иметь несколько аккаунтов в Metamask, но они ожидают, что dApp взаимодействует с текущим.

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

№5. Получить остаток на текущем счете

Здесь мы используем функцию getAccount с №4 и звоните getBalance. Легко.

№6. Выявить, что текущий счет изменился

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

№ 7. Определите, заблокирован / разблокирован ли Metamask

Подобно №6. Пользователь может заблокировать/разблокировать в любое время. Ваш dApp должен обрабатывать это правильно.

№ 8. Отменить/подтвердить

После того, как пользователь взаимодействует с вашим dApp, вы должны отправить транзакцию с помощью Web3 API. Пользователь может нажать кнопку отмены или подтверждения во всплывающем окне Metamask. Это может привести к несоответствию пользовательского интерфейса, если его не обрабатывать должным образом.

Чтобы мгновенно вернуться с транзакцией хэша, позвоните contract.methodName.sendTransaction.

№ 9. Получите квитанцию ​​о транзакции

Как только ваша транзакция dApp добыта, становится доступной квитанция транзакции. Но нет события/сообщения, поэтому мы должны ввести механизм опроса.

№ 10. Слушайте события Web3

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

Резюме

Независимо от вашего dApp, он все равно должен выполнять обычные задачи, такие как обнаружение Web3, получение состояния и баланса аккаунта, распознавание текущей сети и обработки транзакций и событий. Мы рассмотрели, как можно это сделать, используя десять фрагментов кода.

PS

Во многих примерах здесь используются методы, которые могут вызвать ошибку из-за состояния Metamask или некоторых переменных, которые не определены в момент вызова. Вы должны завернуть их try/catch в производственной среде
Async/await использовался здесь для простоты. Его можно заменить на Promise then/catch.

Социальный

Хочу больше?

Как создать и развернуть собственный маркер EOS
Мы собираемся выяснить, что такое токен EOS и как его можно создать и развернуть самостоятельно.hackernoon.comСколько стоит запуск DApp в 2018 году
Вы думаете, что ваш счет AWS или Digital Ocean за ваш веб-сайт убивает вас?hackernoon.comРазница между токенами Ethereum и EOS
Ethereum имеет токен ERC-20, а EOS – EOSIO.Token. Они служат одной цели, но одинаковы ли они?medium.com

Первоначально опубликовано на ylv.io 15 октября 2018 года.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *