Как добавить специальную сеть к метамаске с помощью JavaScript

Как разработчик, вы можете улучшить работу своих децентрализованных приложений (DApps), позволив пользователям легко добавлять вашу сеть к своему кошельку Metamask только одним щелчком мыши.

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

В этой статье я покажу вам, как использовать JavaScript для программного добавления специальных сетей в Metamask. Давайте начнем!

Первое, что вам нужно сделать, это проверить, установлен ли плагин Metamask в браузере пользователя. К счастью, Metamask облегчает это, вводя an ethereum объект на веб-сайты, где он установлен.

Чтобы проверить наличие Metamask, вы можете просто попытаться получить доступ к ethereum объект. Вы можете сделать это с помощью следующего кода:

if (typeof window.ethereum !== 'undefined') {  
 console.log("Metamask is installed")
} else {
  console.log("Metamask is not installed")
}

Чтобы программно добавить специальную сеть в Metamask, вы можете воспользоваться request метод ethereum объект, передавая его в wallet_addEthereumChain собственность.

Например, следующий код демонстрирует, как добавить сеть Matic (полигон) в метамаску:

window.ethereum.request({
  method: "wallet_addEthereumChain",
  params: [{
    chainId: "0x89",
    rpcUrls: ["
    chainName: "Matic Mainnet",
    nativeCurrency: {
      name: "MATIC",
      symbol: "MATIC",
      decimals: 18
    },
    blockExplorerUrls: ["
  }]
});

The window.ethereum.request() метод принимает объект в качестве аргумента со свойствами метода и params. Для свойства метода должно быть установлено значение wallet_addEthereumChainа свойство params должно быть массивом, содержащим объект со следующими свойствами:

  • chainId: Идентификатор цепи специальной сети, которая является шестнадцатеричной строкой с префиксом 0x.
  • rpcUrls: массив URL-адресов RPC для специальной сети.
  • chainName: имя специальной сети
  • nativeCurrency: объект со свойствами name, symbol и decimals, представляющий имя, символ и количество знаков родной валюты настраиваемой сети.
  • blockExplorerUrls: массив URL-адресов проводника блоков для специальной сети.

Этот код отправит запрос Metamask, чтобы добавить сеть Polygon (Matic) к кошельку пользователя. Если запрос на добавление сети выполнен успешно, window.ethereum.request() вернется null. Если не удалось, он вернет ошибку.

Демо

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

async function addMaticNetwork() {
  try {
    const result = await window.ethereum.request({
      method: "wallet_addEthereumChain",
      params: [{
        chainId: "0x89",
        rpcUrls: ["
        chainName: "Matic Mainnet",
        nativeCurrency: {
          name: "MATIC",
          symbol: "MATIC",
          decimals: 18
        },
        blockExplorerUrls: ["
      }]
    });
  } catch (error){
    console.log(error)
  }

The addMaticNetwork функция при вызове вызовет запрос на добавление сети matic. Эта функция использует синтаксис async/await для асинхронной обработки запроса и включает в себя блок try/catch для обработки любых ошибок, которые могут возникнуть.

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

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

Подведению

В этой статье вы узнали, как программно добавлять собственные сети в MetaMask с помощью JavaScript.

Реализуя эти шаги в вашем приложении DApp, вы можете обеспечить бесперебойную работу с вашими пользователями и улучшить их общий опыт работы с вашим приложением.

Надеюсь, эта статья была полезна. Помните, что мир – это ваша кодовая устрица.

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

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