# Signing a Message

When a web application has established a connection to the ME wallet, it can prompt users to sign a message. This is commonplace amongst many dApps, as it gives application owners the ability to verify ownership of the wallet. Signing a message does not require any transaction fees.

[Sats Connect](https://docs.xverse.app/sats-connect-v1/methods/signmessage) provides an easy way to request message signing. Let's take a look at the code below.

```javascript
import { BitcoinNetworkType, signMessage } from 'sats-connect';

// in a real app, you'll use the ME 'payment' address returned after a connection
const nativeSegwitAddress = 'bc1qcdmvsc8qqk8sr2st3mttu6fsmfrjzh5xrf4dch'

async function signWalletMessage() {
  try {
    await signMessage({
      payload: {
        network: {
          type: BitcoinNetworkType.Mainnet,
        },
        address: nativeSegwitAddress,
        message: 'Hello World. Welcome to the Magic Eden wallet!',
      },
      onFinish: (response) => {
        alert(`Successfully signed message: ${response}`);
      },
      onCancel: () => {
        alert('Request canceled');
      },
    });
  } catch (err) {
    console.error(err);
  }
}
```

A successful prompt to sign a message will look something like this:

<br>

<figure><img src="https://files.readme.io/f75adb0-Screenshot_2024-02-08_at_12.08.41_AM.png" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
**Message Format**

The ME wallet currently follows the spec design in [BIP 322](https://bips.xyz/322) for message signature types for all addresses. We are looking into adding more explicit support for legacy/ECDSA signing, as we are aware this may be needed for certain circumstances.
{% endhint %}
