• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zrozumienie kodu Bitcoina. Czy ma to sens i da się to zrobić?

VPS Starter Arubacloud
0 głosów
553 wizyt
pytanie zadane 18 czerwca 2018 w C i C++ przez VeNeSky Początkujący (350 p.)
edycja 18 czerwca 2018 przez VeNeSky
Z góry przepraszam jeśli dałem do złej kategorii ale sami rozumiecie ,że ciężko do jakiejś dopasować :P

Z racji ,że jakiś czas temu zainteresowałem kryptowalutami to postanowiłem lepiej je zrozumieć. Dobrym pomysłem żeby to osiągnąć wydało mi się zrozumienie jak działa Bitcoin. Ale nie takie typu: "To zdecentralizowana waluta ,która jest oparta na technologii blockchain i zdobywa się ją poprzez kopanie". Tylko zrozumienie szczegółowe. Ściągnąłem na dysk z Githuba Bitcoin (core?) 0.16.0 i za cel wyznaczyłem sobie zrozumienie każdej linijki kodu jaka tam jest. Jako typowy no-life na ten cel mam prawie całe wakacje więc chyba zdążę :P

Mój warsztat: Ogólne pojęcie jak działają krypotowaluty i cały ten krypto świat, mniej więcej opanowany tutorial z kanału Pasja Informatyki z C++, podstawowa znajomość angielskiego, silna potrzeba osiągnięcia celu.

Oczywiście zdaję sobie sprawę ,że jest to trudne zadanie. Tylko jak bardzo? Wiem ,że moja znajomość C++ nie wystarczy ale i tego (chyba) mogę się nauczyć. Na średni angielski mam taki sposób ,że po prostu każde słowo ,którego nie rozumiem sprawdzam w internecie (średnio co piąte).

Tak więc proszę o poradę osoby ,które znają się na temacie. 1.Czy ma to sens? 2.Da się to zrobić z moimi umiejętnościami w takim czasie? Jak ktoś chce dorzucić jeszcze jakieś porady od siebie to nie pogardzę :D

EDIT: BTW zastanawiam się czy w ogóle pytam się na odpowiednim forum xD Jak ktoś zna lepiej pasujące do tematu to może polecić.
komentarz 18 czerwca 2018 przez MsMaciek123 Pasjonat (24,760 p.)
To chyba do "offtopic" powinno pójść

2 odpowiedzi

+1 głos
odpowiedź 18 czerwca 2018 przez RafalS VIP (122,820 p.)
wybrane 18 czerwca 2018 przez VeNeSky
 
Najlepsza

mniej więcej opanowany tutorial z kanału Pasja Informatyki z C++

Jeśli to Twoje jedyne doświadczenie z programowaniem to w mojej opinii będzie Ci dosyć ciężko. Gdybyś znał jakiś inny podobny język to powiedziałbym Ci, że to bardzo dobry pomysł. Czemu? Jeśli znasz ogólne pojęcia i problemy programistyczne to wiesz co wpisywać w google jak nie wiesz jak coś działa w danym języku. A jeśli nie wiesz nawet czego szukać to będzie Ci ciężko. Dajmy na to natkniesz się na funkcję lambda czyli coś co wygląda tak:

std::sort(tab,tab+5, [] (const Klasa& lhs, const Klasa& rhs){ return lhs.whatever < rhs.whatever;});

i co wpiesz w google, żeby się nauczyć jak to działa? Można spróbować "puste kwadratowe nawiasy C++". Prawdopodobnie gdzieś się dobijesz do nazwy kluczowej funkcja lambda i potem już pójdzie lepiej. Ale nie zawsze uda Ci się sformułować pytanie na tyle, żeby znaleźć tą kluczową nazwę elementu składni (byłoby też łatwiej gdybyś lepiej znał angielski :P).

Drugi argument na minus to fakt, że jest to bardzo skomplikowany system. Użyłem takiej wtyczki do chrome, żeby sprawdzić ile jest łącznie linii kodu i uwaga - 530166. Tak, pół miliona. Kto dołączył kiedyś w pracy do wielgachnego projektu ten wie, że często nawet ze 100% znajomością składni języka ciężko jest połapać się w skomplikowanym systemie. A w pracy chociaż jest możliwość zadania pytania komuś z większym doświadczeniem w projekcie. Ty nie będziesz miał takiego kogoś. Nawet jeśli przebrniesz przez składnie danego fragmentu to w wielu przypadkach taką inżynierią odwrotną będzie Ci ciężko dojść do przyczyny zastosowania takiego rozwiązania. Język to nie sama składnia. Są wzorce, konwencje, dobre praktyki, rozwiązania specyficzne dla danej dziedziny itp itd.

Trzecia sprawa jest taka, że nawet osoby, które przy tym kodzie pracują nie ogarniają go całego. Ktoś pracuje nad jedną częścią inny nad inną. Ktoś poprawia jakiś mały bug w obrębie jednej funkcji. I te osoby mogą wcale nie wiedzieć jak działa cały system. Osób, które ogarniają cały system może być bardzo mało, a nawet mogą nie istnieć :D. Generalnie to zadanie projektantów i architektów, ale oni sami nie operują na kodzie tylko na diagramach UML. I programiści dostają wytyczne co każda funkcja ma robić - czemu tak się robi? Bo projektowanie i ogarnianie całego systemu jest bardzo trudne.

Według mnie czytanie czyjegoś kodu jest bardzo spoko, ale nic nie uczy tak dobrze jak własne eksperymenty. Nie znam się na temacie, ale skoro znasz podstawy C++ to spróbowałbym bardziej napisać swoją mini upośledzoną kryptowalute i potem ją ulepszać. Spróbować jeszcze innego podejścia. I dopiero wtedy zmierzyć się z kodem bitcoina. Choć i tak wydaje mi się to być mega trudnym zadaniem.

komentarz 18 czerwca 2018 przez VeNeSky Początkujący (350 p.)
Bardzo pomocny jest twój komentarz :D
Pół miliona... mój najdłuższy kod miał chyba ze 200. 2500x więcej. Szczerze mówiąc myślałem ,że niesamowitość Bitcoina polega raczej na samym pomyśle niż na skali (tzn. taka długość kodu) Co oni tam w ogóle zapisali w tych 500tys. linijek? Spodziewałem się raczej paru tysięcy linijek idealnie przemyślanych.

Teraz ściągnąłem wersję 0.2.0 Na moje nie fachowe oko jest tam jakby mniej kodu. Co sądzisz o tym żeby analogicznie jak w poście opisałem przeanalizować kod tej wersji?  https://github.com/bitcoin/bitcoin/releases/tag/v0.2.0
komentarz 18 czerwca 2018 przez RafalS VIP (122,820 p.)
Nie wiem co mam Ci odoowiedziec. Nie przeczytam tego kodu, zeby Ci powiedziec czy to ma sens :D. Dodam jedynie, ze jeśli jest to jakaś bardzo wstępna wersja to dochodzą bledy w kodzie ktore bedziesz analizował, prpgramisci nie sa nieomylni :p.

Sam pomysl na bitcoina byl byl genialny, implementacka przewaznie jest zmudna i malo blyskotliwa.
komentarz 18 czerwca 2018 przez VeNeSky Początkujący (350 p.)

Ok  , mimo wszystko dzięki za pomoc! Jeżeli w poście nie pojawią się inne rady i spostrzeżenia to chyba przystąpię po prostu do analizy starszej wersji.

Dodam jedynie, ze jeśli jest to jakaś bardzo wstępna wersja to dochodzą bledy w kodzie ktore bedziesz analizował, prpgramisci nie sa nieomylni :p.

Właśnie sam się nad tym zastanawiałem w końcu to Bitcoin. Jeżeli w kodzie byłyby jakieś większe błędy to przecież cały system by się rozleciał.

Możesz dać namiary na tą wtyczkę ,którą sprawdziłeś ilość kodu? Użyłbym jej na starszej wersji.

+1 głos
odpowiedź 18 czerwca 2018 przez plucins Stary wyjadacz (11,110 p.)
a podpowiedz jeszcze jaki jest cel tego ćwiczenia.
komentarz 18 czerwca 2018 przez VeNeSky Początkujący (350 p.)
1.Lepsze zrozumienie kryptowalut ogólnie.
2.Mam takie swoje małe marzenie żeby !MOŻE! kiedyś dołączyć do jakiegoś zespołu tworzącego kryptowaluty - ta wiedza może się tu chyba przydać.
3.Jako swoje małe hobby chciałbym handlować kryptowalutami więc wiedza techniczna dt. kryptowalut może mi się przydać żeby ocenić potencjał jakiejś waluty,zastosowane technologie i te sprawy.
4.Ciekawość! - pomysł Bitcoina to jest coś niesamowitego i chcę zrozumieć jak to działa.
5.Bitcoin jest chyba napisany głównie w C++ ,więc przy okazji nauczę się lepiej tego języka.
6.Ten punkt jest dla mnie mało istotny ale też podszkolę swój angielski.

Podobne pytania

0 głosów
0 odpowiedzi 122 wizyt
pytanie zadane 10 lipca 2018 w PHP przez revizor451 Obywatel (1,930 p.)
0 głosów
1 odpowiedź 197 wizyt
pytanie zadane 15 stycznia 2021 w Inne języki przez zyzna Nowicjusz (150 p.)
0 głosów
1 odpowiedź 130 wizyt

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...