I am looking for a simple or standard way (government bureaucrat-proof) to share knowledge of a bitcoin address in a legal contract without revealing the address itself. Having to reveal the address later for verification is not a problem.

I was thinking to either share a SHA256 hash of the address or share the address itself without 4 or 5 characters.

The former way could be too complicated and the latter too insecure (an attacker could scan the blockchain to find the missing characters). If these were the only two options however, I would settle for the simpler one.

Is there another way to do it?

1 Answer 1


What you're looking for is called a commitment scheme: a way to commit to some value while keeping it secret, with the ability to reveal it later.

Sharing a SHA256 hash of the address is a way of committing to it, but for an address that has been used in a transaction (of which there are currently less than 50 million) the recipient can easily brute-force it by checking them all. What you really want is to concatenate the address with a sufficiently long random string that you also keep secret and reveal later. That way the commitment can still be verified but no longer brute-forced.

Disclaimer: I am not a lawyer nor a cryptographer. Consult with professionals from both fields before you try to use cryptography in actual legal contracts.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.