{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-user-guide/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img","admonition"]},"redocly_category":"User Guide","type":"markdown"},"seo":{"title":"Prove Solana Address Ownership"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"prove-solana-address-ownership","__idx":0},"children":["Prove Solana Address Ownership"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A protocol, auditor, or OTC counterparty may ask you to prove that you control a Solana address. You can do this without moving funds by signing a message and having the counterparty verify its signature."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Message signing is off-chain: it does not create a Solana transaction or incur a network fee. A valid signature confirms that the message was signed using the key associated with the address."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide uses Fordefi to sign the message and Solscan’s Verified Signature tool to verify it. You can publish the result on Solscan and share a URL, or send the verification details directly to the verifier."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-start","__idx":1},"children":["Before you start"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create an API User with the Trader role, an access token, and request signing. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.fordefi.com/developers/getting-started/create-an-api-user"},"children":["Learn more"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set up and run an API Signer, or ensure your existing API Signer is running. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.fordefi.com/developers/getting-started/set-up-an-api-signer/api-signer-docker"},"children":["Learn more"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Choose the Solana vault address you need to prove ownership of."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Agree on the message with the verifier. Include the purpose of the request and, ideally, a unique reference or date so the proof is tied to this request."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sign-the-message-with-fordefi","__idx":2},"children":["Sign the message with Fordefi"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/FordefiHQ/api-examples/blob/main/python/message-signing/solana/sign_personal_message.py"},"children":["Solana personal-message signing example"]},", replace the example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MESSAGE"]}," value with the exact message you agreed on. Configure the example for the Solana vault you want to prove ownership of, then run it."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once signing is complete, copy these three values from the terminal output:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signed message"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signer wallet"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signature (base58)"]}]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/scr-20260930-jsbe.50b532fe1972f7da3f166c1483c90690b6d1ff50a5e0915c700c6392fc135a68.c743302c.png","alt":"Fordefi script output showing the signed message, signer wallet, and base58 signature","framed":false,"withLightbox":true,"width":"","height":""},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signature (base58)"]}," value for Solscan. It is an off-chain message signature, not a Solana transaction hash."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verify-the-signature-on-solscan","__idx":3},"children":["Verify the signature on Solscan"]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open Solscan’s ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://solscan.io/verifiedsignatures"},"children":["Verified Signature tool"]}," and select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify Signature"]},"."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/image.2c1d1d7f3e02e9672949eef43761fc0f8bb46062c88b907b3d96950c68a83db9.c743302c.png","alt":"Solscan Verified Signature tool","framed":false,"withLightbox":true,"width":"","height":""},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter the values from the Fordefi script:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Solscan field"},"children":["Solscan field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fordefi script output"},"children":["Fordefi script output"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Address"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signer wallet"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Message"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signed message"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signature Hash"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signature (base58)"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Copy the message exactly, including capitalization, spaces, and line breaks."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify"]},". Solscan should confirm that the signature is valid for the address and message."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/image-copy.a092349c74e30b3e642b2f523901f521e4985a24b4662d822fac5cda8f095225.c743302c.png","alt":"Successful signature verification on Solscan","framed":false,"withLightbox":true,"width":"","height":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"share-the-proof","__idx":4},"children":["Share the proof"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"option-a-publish-and-share-a-url","__idx":5},"children":["Option A: Publish and share a URL"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select Solscan’s ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Publish"]}," option after verifying the signature, then share the resulting public URL with the verifier."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Publishing makes the message publicly visible on Solscan. Do not publish a message containing personal or sensitive information."]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/image-copy-2.7e4022fd2c7e390e71c59b8da714a8b83f02b6df587166ebdcd84b309b836b1c.c743302c.png","alt":"Published signature on Solscan","framed":false,"withLightbox":true,"width":"","height":""},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"option-b-share-the-details-privately","__idx":6},"children":["Option B: Share the details privately"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you do not want to publish the message, send the verifier these three values directly:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signer wallet"]}," address"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The exact ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signed message"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signature (base58)"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The verifier can enter them into Solscan’s ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify Signature"]}," form to confirm that the address signed the message."]}]},"headings":[{"value":"Prove Solana Address Ownership","id":"prove-solana-address-ownership","depth":1},{"value":"Before you start","id":"before-you-start","depth":2},{"value":"Sign the message with Fordefi","id":"sign-the-message-with-fordefi","depth":2},{"value":"Verify the signature on Solscan","id":"verify-the-signature-on-solscan","depth":2},{"value":"Share the proof","id":"share-the-proof","depth":2},{"value":"Option A: Publish and share a URL","id":"option-a-publish-and-share-a-url","depth":3},{"value":"Option B: Share the details privately","id":"option-b-share-the-details-privately","depth":3}],"frontmatter":{"seo":{"title":"Prove Solana Address Ownership"}},"lastModified":"2026-09-30T08:59:14.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/user-guide/vaults/proving-solana-address-ownership","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}