The process of encoding a public key is very clear and explained here https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

I am looking for the other way around: how to get the public key from an address?

When you send bitcoins to someone you usually use the "readable form" (encoded) of the address (e.g. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa). However the blockchain stores the unencoded form (e.g. 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f)

How is it possible to recover the unencoded form of the address?

Example: If you want to send bitcoins to 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa the node has to find out that you refer to the public key 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f

  • Hashing is a one way mathematical function. There is no way you can reverse engineer it. Hashing is also quantum resistant. So it's impossible to get public key from a public address. – Ugam Kamat May 5 '19 at 21:10
  • You are right I will edit and reformulate my question: When you send bitcoin to someone you use the "readable form" of the public key. However the blockchain stores it in the other form. How does it link the readable form of the address to the public key then? – Kevin P May 6 '19 at 6:49
  • No, the node does not have to find the public key. When you send some bitcoins to an address, the bitcoins are encumbered by you providing a valid public key and a signature from your private key to spend it. The unspent outputs are only stored in the hash form. – Ugam Kamat May 6 '19 at 7:23

Browse other questions tagged or ask your own question.