Prove ownership of a wallet to a centralised backend. For eg - https://www.tensor.trade/rewards
Ref - https://github.com/anza-xyz/wallet-adapter/blob/3761cd8cc867da39da7c0b070bbf8779402cff36/packages/starter/example/src/components/SignMessage.tsx#L9
@noble/curves
npm install @noble/curves
SignMessage
componentimport { ed25519 } from '@noble/curves/ed25519';
import { useWallet } from '@solana/wallet-adapter-react';
import bs58 from 'bs58';
import React from 'react';
export function SignMessage() {
const { publicKey, signMessage } = useWallet();
async function onClick() {
if (!publicKey) throw new Error('Wallet not connected!');
if (!signMessage) throw new Error('Wallet does not support message signing!');
const message = document.getElementById("message").value;
const encodedMessage = new TextEncoder().encode(message);
const signature = await signMessage(encodedMessage);
if (!ed25519.verify(signature, encodedMessage, publicKey.toBytes())) throw new Error('Message signature invalid!');
alert('success', `Message signature: ${bs58.encode(signature)}`);
};
return (
<div>
<input id="message" type="text" placeholder="Message" />
<button onClick={onClick}>
Sign Message
</button>
</div>
);
};