ALGOFLOW Docs
Wallet and Contracts
Implement MetaMask connect, network checks, and multi-contract interaction from static frontend code.
Last updated: 2026-03-22
Connect Wallet
Use browser-injected provider (window.ethereum) and request account access on user action.
Always validate chainId before contract calls to avoid sending transactions on wrong network.
Examplejavascript
import { BrowserProvider } from "ethers";
export async function connectWallet() {
if (!window.ethereum) {
throw new Error("MetaMask is not installed");
}
const provider = new BrowserProvider(window.ethereum);
await provider.send("eth_requestAccounts", []);
const signer = await provider.getSigner();
const network = await provider.getNetwork();
return {
address: await signer.getAddress(),
chainId: Number(network.chainId),
provider,
signer,
};
}Multiple Contracts by Chain
- •Keep ABI files versioned in source control.
- •Resolve addresses dynamically from active chainId.
- •Show clear UI errors for unsupported networks.
Examplejavascript
export const CONTRACTS = {
11155111: {
token: "0xTokenAddressOnSepolia",
app: "0xAppAddressOnSepolia"
},
137: {
token: "0xTokenAddressOnPolygon",
app: "0xAppAddressOnPolygon"
}
};Transaction UX
- •Show pending state immediately after wallet confirmation.
- •Display transaction hash and explorer URL.
- •Handle reject/cancel and RPC errors separately.
- •Confirm mined transaction before optimistic UI finalization.