# personal\_sign

Signs an [EIP-191](https://eips.ethereum.org/EIPS/eip-191) personal message.

## Request

```ts
type Request = {
  method: 'personal_sign',
  params: [
    /** Message to sign. */
    message: string,
    /** Address of the signer. */
    address: `0x${string}`,
  ],
}
```

## Response

Signature.

```ts
type Response = `0x${string}`
```

## Example

:::warning

To make these instructions concrete, we have created a sample global wallet called **Rapidfire ID**. To interact with it, you can find its SDK in the NPM package directory: [@rapidfire/id](https://www.npmjs.com/package/@rapidfire/id).

You can check out the GitHub [repository for Rapidfire Wallet](https://github.com/openfort-xyz/ecosystem-sample) to learn how to create your own wallet.

:::

<Demo.Container name="personal_sign">
  <Step.Connect stepNumber={1} />

  <Step.PersonalSign stepNumber={2} />
</Demo.Container>

```ts
import RapidfireID from '@rapidfire/id'

const rapidfire = new RapidfireID()
const provider = rapidfire.getEthereumProvider()

const [account] = await provider.request({
  method: 'eth_accounts',
})

const hash = await provider.request({ // [!code focus]
  method: 'personal_sign', // [!code focus]
  params: [ // [!code focus]
    '0x68656c6c6f20776f726c64', // "hello world" in hex [!code focus]
    account, // [!code focus]
  ], // [!code focus]
})// [!code focus]
```
