Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getpara.com/llms.txt

Use this file to discover all available pages before exploring further.

Sign arbitrary bytes to prove ownership of a Stellar address without submitting a transaction. This is useful for authentication and off-chain verification.

Setup Stellar Libraries First

Sign Bytes

Use the ParaStellarSigner class API to sign arbitrary bytes directly:
import { useParaStellarSigner } from "@getpara/react-native-wallet/stellar";
import { Networks } from "@stellar/stellar-sdk";
import { View, Text, Button } from "react-native";

function SignMessage() {
  const { stellarSigner, isLoading } = useParaStellarSigner({
    networkPassphrase: Networks.PUBLIC,
  });

  const signMessage = async () => {
    if (!stellarSigner) return;

    const message = "Hello, Stellar!";
    const messageBytes = Buffer.from(new TextEncoder().encode(message));

    const signature = await stellarSigner.signBytes(messageBytes);

    console.log("Message:", message);
    console.log("Signature:", signature.toString("hex"));
    console.log("Signer:", stellarSigner.address);
  };

  if (isLoading) return <Text>Loading...</Text>;

  return <Button title="Sign Message" onPress={signMessage} />;
}
Stellar does not have a standardized message signing format like EIP-191 on Ethereum. The signBytes method signs raw bytes using Ed25519. Both parties must agree on how to encode and hash the message before signing.

Next Steps

Verify Signatures

Send Tokens

Execute Transactions