Skip to main content
In this example, we are going to sign a message for Bitcoin.
  • React
  • JavaScript
  import { isBitcoinWallet } from '@dynamic-labs/bitcoin';

  // the wallet object is the wallet you want to send from
  // you can access the available wallets via the `useUserWallets` hook
  // or get the primaryWallet via the `useDynamicContext` hook
  const SignMessageButton = ({ wallet }) => {
    const onSignMessage = async () => {
      if (!isBitcoinWallet(wallet)) {
        return;
      }

      const signature = await wallet.signMessage('example');

      console.log('signature', signature);
    };

    return <button onClick={onSignMessage}>Sign message</button>;
  };
You can also sign a message with a specific address type (payment or ordinal) or protocol (ecdsa or bip322-simple), as shown below:
  • React
  • JavaScript
  import { isBitcoinWallet } from '@dynamic-labs/bitcoin';

  const SignMessageButton = ({ wallet }) => {
    const onSignMessage = async () => {
      if (!isBitcoinWallet(wallet)) {
        return;
      }

      // The `addressType` can be 'payment' or 'ordinals'
      // The `protocol` can be 'ecdsa' or 'bip322-simple'
      const signature = await wallet.signMessage('example', { addressType: 'ADDRESS_TYPE', protocol: 'PROTOCOL' });

      console.log('signature', signature);
    };

    return <button onClick={onSignMessage}>Sign message</button>;
  };
Notes:
  • Some wallets don’t allow you to specify the address type or protocol. In this case, we’ll just default to the address type and protocol that the wallet supports.
  • If you don’t specify an address type, we’ll default to the address type that the wallet supports or ordinals address.
  • If you don’t specify a protocol, we’ll use the default protocol for the wallet.