I am a senior Python developer.

Recently I came across to the need of fully understanding how bitcoin works on it's core. The Internet is full of explanations and tutorials for regular folks and even dummies. You can get familiarized with it pretty well if all you care is basic understanding, so that you could start using it.

But I am in a different business here... I want to know exactly what data is being sent to the net on every event of bitcoin currency? How it's being sent? How it's being received? What exact calculations and code is being executed on miners? What code is executed on wallet owners... etc?

Can somebody come up with a decent programmer oriented step by step explanation/tutorial on this?

  • There is still not a formal/complete spec of the protocol :(
    – MattDavey
    Commented May 24, 2016 at 16:10
  • @MattDavey because there cannot be one. What if one was written, and then the network deviated from it? Depending on a social consensus in this way is something that Bitcoin seeks to avoid. The code itself is the real-time spec, trying to enumerate every implicit consensus rule is likely not possible.
    – chytrik
    Commented Feb 21, 2020 at 23:11
  • Isn't your argument self contradictory? You say there cannot be a spec, then you say the code is the spec. If the spec can be expressed in code, it can be expressed in documentation as well.
    – MattDavey
    Commented Feb 27, 2020 at 15:18

3 Answers 3


The book Mastering Bitcoin would be a good solid start (although it might not answer all your questions). It is also available for free.

  • 1
    What a relief! Yes this is exactly what I was looking for! Thank you!
    – Simanas
    Commented May 24, 2016 at 8:50

The Developer Documentation may also be of use.


You should also check out the free Princeton Bitcoin textbook: Bitcoin and Cryptocurrency Technologies.

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.