The Cryptography of P2P Transfer Systems

One of the things I find  fascinating  about current P2P transfer systems, like Bitcoin for instance, it's the technology behind the actual transfer, not only it's  fairly simple and available technology but it's also interesting how some basic cryptographic schemes can be applied to real world value transfer problems.
In this article I will be focusing on the basic overview of how asymmetric cryptography is used.


I. Intro

So imagine you send some funds (0.0245 BTC ) to a certain address bc1qyfk0r7vs6ahwwxpy62pfvd2u90fc9k84lywe4x  via any of the crypto wallets currently available.
In 10 to 30 minutes the owner of recipient address above will see the funds get confirmed and credited in the recipient's wallet, but how did it happen ?

First, The most  intuitive way we might think about this transaction is more like all transactions we have always known with the common accounting system that banks and most other money handling businesses tend to generally use.

But BTC doesn't use the common account system, the process of sending  in Bitcoin system is in large part a product of applied public key cryptography under the hood.

II. How Does It Work ?

Remember in the introduction part, I shared a BTC address ( bc1qyfk0r7vs6ahwwxpy62pfvd2u90fc9k84lywe4x), in this particular case, it's the receiving  address of our hypothetical transaction.

In reality, that address  has a 1 to 1 mapping with a public key in an asymmetric key cryptography setup

Asymmetric cryptography is a cryptographic system where keys are generated in pairs. A public one that can shared and a private one that should be kept private, in fact that's why it's even called again public key cryptography.

In this particular type of cryptographic setup, a public key is used to prove that a certain piece of data was signed by the owner of a corresponding private key, that implies that it can also be used to encrypt information with a public key and only the owner of the corresponding private key can be able to decrypt the message.

So I can distribute my public keys to people out there, not only they can check the authenticity of  a particular stream of data  coming from  me, but they can also use the public keys  shared to encrypt some bits of informations that can only be decrypted by me ( The  owner of the corresponding private key).

Image explaining public key cryptography. (Image courtesy @rapidsslonline )


Asymmetric cryptography is a fairly vast domain ,  but I'm hoping the few  paragraphs above gave a good overview of this particular type of cryptographic system.

Now that we have some ideas on asymmetric cryptography, let's get back to our initial address bc1qyfk0r7vs6ahwwxpy62pfvd2u90fc9k84lywe4x .

  • That address  corresponds to a certain public key, in this case the public key is 037bc5e8ef364e79e8342bfcfbf77e3dce01d0f164b23961d8af2fed17e35a6768.
    That implies that every time funds are sent to the address above, they are actually being cryptographically locked to with that public key.
  • The reason those funds are cryptographically locked with that public key, is because, the owner of the public address also owns its corresponding private key and only them ( owner of the private key ) should be able to spend the funds that have been locked for that address --> public key.

III. The Analogy

Lock box

The most straightforward analogy I tend to use when explaining this cryptographic scheme is mostly to think about a lock box like the one in the image above.

  • Imagine you have a number of padlocks and their corresponding keys 🗝
  • The padlock on the box in the image above can be considered like your public key, so you can distribute as many padlocks as you want to the potential senders. 🔒
  • When the sender wants to transfer something to you, they will have to put it in a box and use the padlock you distributed to them for sealing the box.
  • At the end of the day, only owner  of the keys that correspond to the padlock that was used, can be able unlock those funds.

IV. Conclusion

This was a quite short article, I really hope you had a good time reading it and hopefully understood the concepts.

In case you are really interested into the concepts I touched on in this article, you can use some of the few materials I'm sharing here and many more easily available online :

Ciao 👋