Skip to main content

DApp Connections

Moi Wallet lets you connect to decentralised applications (DApps) and approve transaction requests. The connection method differs between the mobile app and the Chrome extension.

For DApp developers

DApp developers can refer to the DApp docs on GitHub to understand how to connect to Moi Wallet mobile via WalletConnect.

WalletConnect

The mobile app uses WalletConnect — an open protocol that lets DApps request a connection to your wallet without sharing your private keys.

How it works

  1. In a DApp (in a mobile browser or another app), click Connect Wallet and select WalletConnect
  2. A QR code is displayed on the DApp screen
  3. In Moi Wallet mobile, tap the WalletConnect icon (scanner) in the top bar
  4. Scan the QR code — a connection request appears showing the DApp's name, URL, and requested permissions
  5. Review the permissions and tap Approve
  6. The DApp is connected and can request transaction signing through your wallet

WalletConnect also supports deep links — DApps can open Moi Wallet directly instead of showing a QR code.

Mobile WalletConnect connection approval screen
Mobile — connect to a DApp via WalletConnect

Sign message

When a connected DApp requests a message signature, Moi Wallet displays a sign message approval screen showing the DApp name and the message to be signed.

  1. The DApp sends a sign-message request over the WalletConnect session
  2. Moi Wallet opens the approval screen
  3. Review the message and tap Approve or Reject
Mobile WalletConnect sign message approval screen
Mobile — sign message approval via WalletConnect

Sign interactions

When a DApp requests an interaction signature, Moi Wallet shows a sign interaction approval screen with the interaction details.

  1. The DApp sends a moi.signInteraction request over the WalletConnect session
  2. Moi Wallet opens the approval screen with operation details
  3. Review the interaction and tap Sign or Reject

What happens when you sign an interaction: Moi Wallet uses your private key to produce a cryptographic signature for the interaction. The signed interaction is returned to the DApp over WalletConnect — the wallet does not broadcast it to the network. The DApp is responsible for submitting the signed interaction to the MOI network when ready.

Mobile WalletConnect sign interaction approval screen
Mobile — sign interaction approval via WalletConnect

Send interactions

When a DApp requests a send-interaction, Moi Wallet shows a send interaction approval screen. The request arrives as moi.sendInteractions over WalletConnect.

  1. The DApp sends a send-interaction request over the WalletConnect session
  2. Moi Wallet opens the approval screen with operation details
  3. Review the interaction and tap Send or Reject

What happens when you send an interaction: Moi Wallet signs the interaction with your private key and submits it directly to the MOI network on your behalf. The ix_args field holds the encoded interaction object and the signature field holds your signature — together they allow the network to validate and execute the interaction. Once confirmed, the transaction hash is returned to the DApp. In simple terms, send interaction is a way for you to securely transmit and validate interactions on the blockchain in one step.

See also moi.SendInteractions in the MOI JSON-RPC reference.

Session management

WalletConnect sessions persist until you manually disconnect or the DApp disconnects. You can have multiple active DApp sessions at the same time. Sessions are tied to the currently selected network — switch networks if the DApp expects a different environment.

View active sessions

  1. Open App Drawer → DApp Connections
  2. View the list of active WalletConnect sessions — each entry shows the connected DApp name and connection status
Mobile DApp Connections screen listing active WalletConnect sessions
Mobile — list of active WalletConnect sessions

Disconnect a session

  1. Open App Drawer → DApp Connections
  2. Select the connection you want to remove
  3. Tap Disconnect
Mobile disconnect WalletConnect session confirmation
Mobile — disconnect a WalletConnect session

Sign vs send interactions

Sign interactionSend interaction
PurposeProduce a signature the DApp can submit laterSign and submit to the network immediately
Network broadcastNo — wallet returns signed data onlyYes — wallet broadcasts on your behalf
Mobile methodmoi.signInteractionmoi.sendInteractions
Extension methodwallet.SignInteractionwallet.SendInteraction
Returned to DAppSigned interaction payloadTransaction hash

Security best practices

Only connect to DApps you trust

Before approving any connection request, verify the DApp URL matches the official site. Phishing sites mimic legitimate DApps to trick you into approving malicious transactions.

Review permissions carefully

Read what each DApp is requesting before tapping Approve. A connection request should only ask for permissions relevant to the DApp's function.

Use the correct network

DApp connections and transactions are network-specific. Confirm you are on the correct network (mainnet vs testnet) before connecting. See Managing Networks.