adam440 (OP)
Jr. Member
Offline
Activity: 44
Merit: 1
|
|
January 15, 2017, 05:06:51 PM |
|
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
|
|
|
|
|
|
|
|
|
There are several different types of Bitcoin clients. The most secure are full nodes like Bitcoin Core, but full nodes are more resource-heavy, and they must do a lengthy initial syncing process. As a result, lightweight clients with somewhat less security are commonly used.
|
|
|
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
|
|
achow101
Moderator
Legendary
Offline
Activity: 3388
Merit: 6631
Just writing some code
|
|
January 15, 2017, 05:13:31 PM |
|
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
Activity: 44
Merit: 1
|
|
January 15, 2017, 05:41:28 PM |
|
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
Offline
Activity: 3388
Merit: 6631
Just writing some code
|
|
January 15, 2017, 06:14:23 PM |
|
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.pdfThere 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
Activity: 44
Merit: 1
|
|
January 15, 2017, 06:25:38 PM |
|
Thanks for fast response . I'll try my best to understand it.
|
|
|
|
|
freemanjackal
|
|
January 29, 2017, 07:13:04 PM |
|
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
Activity: 1117
Merit: 1016
ASMR El Salvador
|
|
January 30, 2017, 02:34:03 AM |
|
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
|
|
January 31, 2017, 04:45:38 AM |
|
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.
|
|
|
|
|