I would like to write a very simple program in bitcoin. I thought a simple C program that accepts the mined blocks would be appropriate. So I assume, the program would open a socket connection to some fixed relay node and start accepting the blocks. Could someone show how it could be done. Thank you.

[Edit:] I have since discovered what is probably best suited for the purpose. There is a minimal bitcoin networking stack implemented in python by Dr Christian Decker of ETH Zurich. It was used to gather results for some highly cited research papers on the bitcoin network but at the same time it is extremely readable too.

4 Answers 4


The easiest way if you come from web development and or you want to put a system in production is to use the most stable and updated implementation/API of Bitcoin Core

note: after downloading it it's best practice to check the md5/sha of the file you downloaded on bitcoin.org to be sure your installer is genuine

1) Install Bitcoin Core

2) Use it's CLI or JSON rpc APIs: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

there's no step 3!

This in the case your target is to run an app connected to most of the updated nodes, have the latest code with security fixes to at least sign and broadcast transactions, and obviously, query the blockchain!



You should looks at the existing C implementations (SPV node, incomplete):

  • Thank you for that information. Something even better would be just 40-50 lines of code doing some basic thing, like accepting blocks or smthn like that. Commented Sep 12, 2015 at 9:57
  • 1
    Accepting blocks means validating them, which is a huge amount of work and must be bit-for-bit identical with Bitcoin Core. It's not possible with a small codebase, or at least not for now until libbitcoinconcensus is stable.
    – Claris
    Commented Sep 12, 2015 at 10:23

Whilst not C, libbitcoin is written in C++ and is a full implementation. It should let you do everything.

If you're not limited to C, bitpay has a very straightforward p2p library here: https://github.com/bitpay/bitcore-p2p

I do not accept the answer of using the RPC, since you have to use a whole other 30mb application just to get your data, and it's not a great start for a scalable application or learning the inner workings of the network.


Depends on the area. In any case i suggest you to only use test network to avoid losing funds.

If you are interested about the crypto stuff, study how to turn random number into wallet address, or how signatures are made.


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.