# Proof of Reserve - Sign Messages

{% hint style="success" %}
This section is for Operators only.
{% endhint %}

## Overview

Signing messages serves a crucial purpose in the web3 ecosystem. It allows users to confirm their identity, authenticate transactions, and on smart-contract enables networks such as EVMs, interact with smart contracts without the need to share their private keys.

Ledger Enteprise supports the signature of messages in

* the EIP-191 and EIP-712 formats on **EVM networks** ;
* the EIP-191 format on **all other networks** .

Whenever signing a message, Operators will be able to review their content on the **Trusted Display** of their Personal Security Devices.

The signature of messages with Ledger Enterprise accounts opens up multiple opportunities in the web3 ecosystem.

{% hint style="info" %}
Note that signing a Message is a fully off-chain operation that does not let you send funds. However, it is crucial that the format of these signed messages cannot be interpreted as Transactions (and risk losing funds). Therefore, Ledger Enterprise formats all messages in an EIP-191 fashion so that they cannot be broadcasted as Transactions on a network.
{% endhint %}

## Instructions

#### Pre-requisites

* In order to initiate or approve a Message Signature request on an account, you need to be an authorized Operator on that account, i.e. be part of the **Message Signature rule** of that account.
* If this is not the case, please contact your Administrator, so that they can add you to the Message Signing rule .

#### Step 1: Create the Message Signature request

1. Sign in yo your workspace, and click on the **New transaction** button in your sidebar. Select **Sign message**.

<figure><img src="/files/7D8XThJJ3LcxSir5FLUu" alt=""><figcaption></figcaption></figure>

2. Select the **account** that you wish to use to sign your message, and input the desired message in the dedicated space.
3. ( *Optional* ) Click on **Next** and add a Title and Comments to easily identify and report your Message Signature requests during your reporting workflows.
4. Review the summary of the Message Signature request. Click **Review on PSD** to examine the message on the **Trusted Display of your Personal Security Device** . Tap the arrows to expand the different sections of the message.
5. The message signature request is created and will undergo the message signature governance checks which admins have defined for the account.
   1. If the message signature governance rule requires further operator approvals, see Step 2
   2. If the message signature governance rule does not require further operator approvals, see Step 3

{% hint style="info" %}
You should only trust the message displayed on your PSD. Ensure that the message is accurate and corresponds to your intention before approving its signature. Reject the message signature and contact the Ledger Enterprise support if you notice discrepancies.
{% endhint %}

#### Step 2: Review and approve a Message Signature request

When a Message Signature request requires your approval, it will appear in the **Request** panel.

1. Click on the Message Signature request to examine its content.
2. Click **Review on PSD** to check the message on the Trusted Display of your Personal Security Device.

#### Step 3: Sign the Message

Once the Message Signature requests has passed all the required governance checks, it will be signed by the Hardware Security Module. The signed message is then available in your **Operations** table, in the **Message** tab.

#### Step 4: Reporting - Monitor and audit the Message Signature request

You can monitor and audit your entire history of messages signed.

Ledger Enterprise records the message that was signed, its signature hash, as well as the message singing governance rule's audit logs.

{% hint style="info" %}
To encode and sign the message while preventing it from being interpreted as a Transaction across networks, Ledger Enterprise leverages a specific format (see below).

> **Message encoding format**: `keccak256("\0x00<currency_name> Signed Message:\n" + len(message) + message)`. For instance, a BTC signed message would be encoded following: `keccak256("\0x00Bitcoin Signed Message:\n" + len(message) + message)`.
> {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.enterprise.ledger.com/help-center/core/compliance-capabilities/proof-of-reserve-sign-messages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
