Bitcoin Forum
November 05, 2024, 03:29:01 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Understanding BTC Core  (Read 1601 times)
adam440 (OP)
Jr. Member
*
Offline Offline

Activity: 44
Merit: 1


View Profile
January 15, 2017, 05:06:51 PM
Merited by ABCbits (1)
 #1

Hello,
I have started learning and studying bitcoin core, but I almost immediately notice the steep learning curve. My main resource is BTC Developer guide[1]. I have experience in programming, but I'm a newbie in security area. Where do I get some resources to understand BTC Core well enough to actually be able to occasionally contribute to it? I know I also need to learn C++, but that shouldn't be a big problem as I have experience in Java and C# and some time ago I was somewhat experimenting with C++ (but I stopped learning at chapter about pointers).

Thanks.

[1] - https://bitcoin.org/en/developer-guide
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3542
Merit: 6885


Just writing some code


View Profile WWW
January 15, 2017, 05:13:31 PM
 #2

First you should take a look at the actual github repo itself: https://github.com/bitcoin/bitcoin. There is some documentation in there that is specific to Bitcoin Core and some things on how it works. There is also doxygen documentation available at https://dev.visucore.com/bitcoin/doxygen/. Next you can look at the issues page and see what kinds of issues there are and what looks like it would be easy for you to work on and help out with. Most issues are tagged appropriately for easy sorting.

Really you just need to read through the codebase. It is fairly complex but things are well documented and commented and the names are fairly straightforward that it is easy to find specific things that you are looking for.

It would also be a good idea to join the IRC channel #bitcoin-core-dev on Freenode as a lot of discussion happens there about development for Bitcoin Core.

adam440 (OP)
Jr. Member
*
Offline Offline

Activity: 44
Merit: 1


View Profile
January 15, 2017, 05:41:28 PM
 #3

First you should take a look at the actual github repo itself: https://github.com/bitcoin/bitcoin. There is some documentation in there that is specific to Bitcoin Core and some things on how it works. There is also doxygen documentation available at https://dev.visucore.com/bitcoin/doxygen/. Next you can look at the issues page and see what kinds of issues there are and what looks like it would be easy for you to work on and help out with. Most issues are tagged appropriately for easy sorting.

Really you just need to read through the codebase. It is fairly complex but things are well documented and commented and the names are fairly straightforward that it is easy to find specific things that you are looking for.

It would also be a good idea to join the IRC channel #bitcoin-core-dev on Freenode as a lot of discussion happens there about development for Bitcoin Core.

At first, huge thanks for the doxygen docs. However fundamental problem for me here is the security. Is there any good source where I can study cryptographic hash functions and digital signatures in-depth, while avoiding nasty math? I mean something like this [1] document about elliptic curve algorithm.

[1] - http://www.secg.org/sec2-v2.pdf
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3542
Merit: 6885


Just writing some code


View Profile WWW
January 15, 2017, 06:14:23 PM
 #4

At first, huge thanks for the doxygen docs. However fundamental problem for me here is the security. Is there any good source where I can study cryptographic hash functions and digital signatures in-depth, while avoiding nasty math? I mean something like this [1] document about elliptic curve algorithm.

[1] - http://www.secg.org/sec2-v2.pdf
There is documentation on each of the cryptographic algorithms used by Bitcoin in general as they are all standards published by other people. The hashes used are SHA256 and RIPEMD160. The digital signatures algorithm is ECDSA. There are plenty of places that explain how all of these work in general, outside of Bitcoin. Wikipedia is a pretty good place to start, especially with their references.

As for how these all work together in Bitcoin, the developer documentation on Bitcoin.org is one of the best places for this kind of documentation.

Unfortunately there is not a lot of documentation specifically about Bitcoin Core. You really have to read the code and learn about it yourself.

adam440 (OP)
Jr. Member
*
Offline Offline

Activity: 44
Merit: 1


View Profile
January 15, 2017, 06:25:38 PM
 #5

Thanks for fast response  Smiley. I'll try my best to understand it.
Coding Enthusiast
Legendary
*
Offline Offline

Activity: 1042
Merit: 2799


Bitcoin and C♯ Enthusiast


View Profile WWW
January 19, 2017, 04:48:10 PM
 #6

Good resource to have in your back-log Wink

Programming The Blockchain in C♯

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.19.1)Ann-git
Denovo(0.7.0)Ann-git
Bitcoin.Net(0.26.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.12.0)Ann-git
freemanjackal
Sr. Member
****
Offline Offline

Activity: 378
Merit: 250


View Profile
January 29, 2017, 07:13:04 PM
 #7

it is hard to find doc about crytpgraphy without the undergoing math, despite all the doc you can find and study about it, without understimate your skills in java and c#, you should spend time studying c++, cause the learning curve is large, and you quit it studying c++ in most important part of the language, that will take you more time than cryptographic stuff, at least in my opinion
remotemass
Legendary
*
Offline Offline

Activity: 1122
Merit: 1017


ASMR El Salvador


View Profile WWW
January 30, 2017, 02:34:03 AM
 #8

Check out the ebook: A Dissection of Bitcoin by Paul Huang.
It is worth every penny, IMO.

{ Imagine a sequence of bits generated from the first decimal place of the square roots of whole integers that are irrational numbers. If the decimal falls between 0 and 5, it's considered bit 0, and if it falls between 5 and 10, it's considered bit 1. This sequence from a simple integer count of contiguous irrationals and their logical decimal expansion of the first decimal place is called the 'main irrational stream.' Our goal is to design a physical and optical computing system system that can detect when this stream starts matching a specific pattern of a given size of bits. bitcointalk.org/index.php?topic=166760.0 } Satoshi did use a friend class in C++ and put a comment on the code saying: "This is why people hate C++".
strasboug
Sr. Member
****
Offline Offline

Activity: 504
Merit: 250



View Profile
January 31, 2017, 04:45:38 AM
 #9

A good way to learn it is to fork it to an altcoin, and launch the network yourself. You will learn a lot of things this way, from security, to different parameters, to genesis block/ports etc etc.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!