Skip to main content

Nethereum.Unity.Metamask

NuGet: Nethereum.Unity.Metamask | Source: src/Nethereum.Unity.Metamask/

Nethereum.Unity.Metamask

MetaMask integration for Unity WebGL builds. Provides JavaScript interop to connect MetaMask in the browser, sign transactions, and send RPC requests through MetaMask's provider — all within Unity's coroutine execution model.

Key Components

ClassPurpose
MetamaskWebglHostProviderUnity IEthereumHostProvider implementation that delegates to MetaMask via JS interop
MetamaskWebglInteropLow-level JavaScript interop calls to window.ethereum
MetamaskWebglCoroutineRequestRpcClientUnity coroutine-based RPC client routing requests through MetaMask
MetamaskTransactionCoroutineUnityRequestCoroutine wrapper for sending transactions via MetaMask
MetamaskRpcRequestMessageRPC request message model
MetamaskWebglCoroutineRequestRpcClientFactoryFactory for creating coroutine RPC clients with custom timeouts
MetamaskWebglTaskRequestInteropTask-based async interop — used internally by MetamaskWebglHostProvider

Usage

// In a MonoBehaviour — use singleton pattern
var metamaskProvider = MetamaskWebglHostProvider.CreateOrGetCurrentInstance();
await metamaskProvider.EnableProviderAsync();
var web3 = await metamaskProvider.GetWeb3Async();

// Send a transaction — wallet handles signing
var receipt = await web3.Eth.GetEtherTransferService()
.TransferEtherAndWaitForReceiptAsync(toAddress, 0.1m);

Relationship to Other Packages