Using Ethers.js to hear Metamask events
In recent years, Ethereum ecosystem has experienced significant growth in adoption, which has led to an increase in interest in the extension of Metamask, a popular browser to interact with Ethereum blockchain. During cooperation with Metamask, developers can use ETHERS.JS to get real-time updates on the drawer and chain changes.
Understanding Metamask events
Metamask provides many events that allow users to contact their account and the Ethereum network. Here is a brief overview of the most commonly used events:
* Changing accounts
: Triggers, when an account is updated, allow you to update your local condition.
* ChainChanged : Triggers, when the user varies between different chains (for example, from mainnet to Testnet).
* Blocknumber : Triggers If a new block is mined on Ethereum.
Listen to Metamask events with Ethers.js
To listen to these events, you must use the “Window.ethereum” object and create an event attack. Here’s an example of how to do this:
`Javascript
Import * as ethers from "ethers";
// Set the service provider and your wallet
Const service provider = new Ethers.poviders.web3provider (window.ethereum);
Const account = service provider.getsigner ();
// Determine the events to be listened to
Const events = [
{Name: 'AccountSChanged', Recall: (Account) => {{
console.log (Account updated: $ {Account.address});
}},
{Name: 'ChainChanged', Return: (Newchainid) => {{
console.log (Switch to $ {Newchainid});
}}
];
// listen to events
service provider (‘accountlanged’, (account) => Events.find ((e) => e.name === ‘Account boots’). Return (account));
service provider (‘chainchanged’, (newchainid) => Events.find ((e) => e.name === ‘chain group’). Recall (Newchainide));
`
Example Usage Case:
Here’s an example of how to use Ethers.js to listen to Metamask events in a web application:
`Javascript
Import * as ethers from "ethers";
// Set the service provider and your wallet
Const service provider = new Ethers.poviders.web3provider (window.ethereum);
Const account = service provider.getsigner ();
// Determine the events to be listened to
Const events = [
{Name: 'AccountSChanged', Recall: (Account) => {{
console.log (Account updated: $ {Account.address});
}},
{Name: 'ChainChanged', Return: (Newchainid) => {{
console.log (Switch to $ {Newchainid});
}}
];
// listen to events
service provider (‘accountlanged’, (account) => Events.find ((e) => e.name === ‘Account boots’). Return (account));
service provider (‘chainchanged’, (newchainid) => Events.find ((e) => e.name === ‘chain group’). Recall (Newchainide));
// If an account or chain is updated, refresh the local condition
Function updatelocalstate () {
Const Newaccount = Account;
if (newaccount) {
console.log (Local state update: $ {newaccount.address}
);
}
}
// Returns to handle event updates
Provider.on (‘AccountSChanged’, (Account) => {{{
Updatelocalstate ();
});
Provider.on (‘ChainChanged’, (Newchainid) => {{{
Updatelocalstate ();
});
`
The best exercises
When you use EThers.js to listen to Metamask events, do not forget the following best exercises:
- Use the service provider and wallet “Window.ethereum”.
- Determine events that match the metamask events you want to listen to (for example,
AccountSchanged",
chain channel).
- Create event students with recall features that update the local condition accordingly.
- Add the event students to both the
AccountSChanged" and
ChainChanged` to ensure that updates from all affected chains.
In keeping with these guidelines, you can effectively use Ethers.js to get real-time updates for changes in the account and chain when working with Metamask.