
Как разработчик, вы можете улучшить работу своих децентрализованных приложений (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, вы можете обеспечить бесперебойную работу с вашими пользователями и улучшить их общий опыт работы с вашим приложением.
Надеюсь, эта статья была полезна. Помните, что мир – это ваша кодовая устрица.