useSignRaw
Sign arbitrary bytes with the selected account
useSignRaw signs arbitrary bytes with the currently selected account. Call
sign(data) with a Uint8Array; it resolves with the signature bytes. Use
it for off-chain proofs (signed messages, authentication challenges,
ownership checks), anything that is not a transaction.
It signs with whatever account is currently selected, so it follows
useAccounts and select automatically. With
no connected account, or if the user rejects the signing prompt, the call
rejects and the failure also lands in error. Unlike
useConnect and
useLogin, the argument here is required:
sign always takes the bytes to sign.
Usage
import { useSignRaw, useSelectedAccount } from "@use-truapi/react";
function SignMessage() {
const account = useSelectedAccount();
const { sign, isPending, error } = useSignRaw();
async function onSign() {
const message = new TextEncoder().encode("I own this account");
const signature = await sign(message);
console.log("signature:", signature);
}
return (
<>
<button type="button" onClick={onSign} disabled={!account || isPending}>
{isPending ? "Waiting for signature…" : "Sign message"}
</button>
{error && <p role="alert">{error.message}</p>}
</>
);
}<script setup lang="ts">
import { useSignRaw, useSelectedAccount } from "@use-truapi/vue";
const account = useSelectedAccount();
const { sign, isPending, error } = useSignRaw();
async function onSign() {
const message = new TextEncoder().encode("I own this account");
const signature = await sign(message);
console.log("signature:", signature);
}
</script>
<template>
<button type="button" :disabled="!account || isPending" @click="onSign">
{{ isPending ? "Waiting for signature…" : "Sign message" }}
</button>
<p v-if="error" role="alert">{{ error.message }}</p>
</template>See also
useSignerexposes the underlyingPolkadotSignerfor rawpolkadot-apiuse.useTxsigns and submits actual transactions.
API reference
React
function useSignRaw(options?): NamedMutation<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>> & object;Sign arbitrary bytes with the selected account: sign(data).
Parameters
| Parameter | Type |
|---|---|
options? | { mutation?: MutationOptions<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>; } |
options.mutation? | MutationOptions<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>> |
Returns
NamedMutation<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>> & object
Vue
function useSignRaw(options?): NamedMutation<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>> & object;Sign arbitrary bytes with the selected account: sign(data).
Parameters
| Parameter | Type |
|---|---|
options? | { mutation?: MutationOptions<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>; } |
options.mutation? | MutationOptions<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>> |
Returns
NamedMutation<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>> & object