Kryptowaluty powstały w oparciu o ideę, że ludzie nie powinni być zmuszeni do ślepego zaufania centralnemu podmiotowi. Zamiast tego sieci mogą wykorzystywać przejrzyste zasady, kryptografię i rozproszony konsensus, aby umożliwić uczestnikom niezależne sprawdzanie tego, co się dzieje. Oprogramowanie open source jest naturalnym rozwinięciem tej filozofii.
Gdy kod stojący za blockchainem, portfelem, protokołem lub aplikacją jest publicznie dostępny, programiści mogą go analizować, testować, ulepszać i identyfikować potencjalne problemy. Użytkownicy nie muszą całkowicie polegać na obietnicach dotyczących tego, jak działa dany system.
Open source nie jest jednak automatycznie synonimem bezpieczeństwa, decentralizacji ani wiarygodności. Zrozumienie, co open source rzeczywiście oferuje, a czego nie, jest ważnym elementem oceny projektów krypto.
Co oznacza open source?
Oprogramowanie jest uznawane za open source, gdy jego kod źródłowy jest udostępniany na licencji, która pozwala ludziom go analizować oraz, w zależności od licencji, modyfikować, rozpowszechniać i wykorzystywać jako podstawę do dalszego rozwoju.
Kod źródłowy to czytelny dla człowieka zestaw instrukcji pisanych przez programistów w celu tworzenia oprogramowania. Większość użytkowników zwykle korzysta jedynie z gotowej aplikacji. W przypadku oprogramowania open source można również analizować kod, na którym jest ona oparta.
W świecie krypto rozwój open source jest powszechny w wielu różnych rodzajach technologii, w tym:
- Oprogramowanie węzłów blockchain
- Portfele kryptowalutowe
- Smart kontrakty
- Zdecentralizowane aplikacje
- Zdecentralizowane giełdy
- Biblioteki dla programistów
- Eksploratory blockchain
- Oprogramowanie do miningu i walidacji
- Protokoły warstwy 2
- Narzędzia kryptograficzne
Publicznie dostępny kod umożliwia niezależnym programistom i badaczom sprawdzanie, jak te systemy rzeczywiście działają.
Krypto opiera się na weryfikacji
Jedna z najważniejszych idei w świecie kryptowalut jest często podsumowywana słowami "nie ufaj, weryfikuj".
Tradycyjne systemy finansowe często wymagają od użytkowników zaufania instytucjom, że będą prowadzić dokładne rejestry, egzekwować zasady, zabezpieczać środki i prawidłowo przetwarzać transakcje.
Publiczne blockchainy podchodzą do tego problemu inaczej. Uczestnicy mogą niezależnie weryfikować transakcje i zasady sieci, zamiast całkowicie polegać na jednej organizacji.
Oprogramowanie open source wspiera tę samą zasadę na poziomie oprogramowania.
Jeśli projekt twierdzi na przykład, że jego portfel nie gromadzi kluczy prywatnych, publicznie dostępny kod źródłowy może umożliwić programistom sprawdzenie tego twierdzenia. Jeśli protokół twierdzi, że środki mogą być przenoszone tylko pod określonymi warunkami, badacze mogą przeanalizować odpowiednie smart kontrakty.
Nie oznacza to, że każdy użytkownik musi znać się na programowaniu. Otwartość pozwala natomiast szerszemu ekosystemowi programistów, audytorów, badaczy bezpieczeństwa i posiadających wiedzę techniczną członków społeczności przeprowadzać niezależną weryfikację.
Przejrzystość zwiększa odpowiedzialność
Projekty krypto często zarządzają systemami zawierającymi znaczną wartość finansową. Dlatego przejrzystość jest szczególnie ważna.
Gdy ważne oprogramowanie ma zamknięty kod źródłowy, użytkownicy muszą w dużej mierze ufać organizacji, która nim zarządza. Mogą mieć ograniczone możliwości niezależnego ustalenia, co dokładnie robi dana aplikacja.
Kod open source tworzy dodatkową warstwę odpowiedzialności.
Programiści mogą analizować aktualizacje i identyfikować nieoczekiwane zmiany. Badacze bezpieczeństwa mogą analizować potencjalne luki. Konkurencyjne zespoły mogą podważać twierdzenia techniczne. Członkowie społeczności mogą dyskutować o kontrowersyjnych zmianach przed ich wprowadzeniem lub po nim.
Publiczne repozytoria mogą również pokazać, jak aktywnie rozwijany jest dany projekt.
Użytkownicy mogą zobaczyć między innymi:
- Ostatnie zmiany w kodzie
- Dyskusje dotyczące rozwoju
- Zgłoszenia błędów
- Proponowane ulepszenia
- Historie wydań
- Współtwórcy
- Dokumentacja
- Nierozwiązane problemy techniczne
Może to dostarczyć znacznie więcej informacji niż same materiały marketingowe.
Open source pomaga badaczom bezpieczeństwa znajdować problemy
Oprogramowanie krypto może być atrakcyjnym celem dla atakujących, ponieważ luki w zabezpieczeniach mogą zapewnić bezpośredni dostęp do wartościowych aktywów cyfrowych.
Publiczne udostępnienie kodu może początkowo wydawać się niebezpieczne. Jeśli każdy może zobaczyć kod, atakujący również mogą go analizować.
To prawda, ale osoby dbające o bezpieczeństwo również mogą go analizować.
Projekty open source mogą korzystać z tego, że duża liczba programistów, audytorów i niezależnych badaczy bezpieczeństwa analizuje ten sam kod. Luki mogą być wykrywane, zgłaszane, omawiane i naprawiane.
Niektóre projekty prowadzą również programy bug bounty, które nagradzają badaczy za odpowiedzialne zgłaszanie luk w zabezpieczeniach.
Stwarza to możliwość powstania szerokiej społeczności zajmującej się bezpieczeństwem ważnej infrastruktury, zamiast ograniczania jej kontroli wyłącznie do pracowników jednej firmy.
Publiczna kontrola pomaga jednak tylko wtedy, gdy rzeczywiście ma miejsce. Nie należy zakładać, że mało znane repozytorium z niewielką liczbą programistów i bez niezależnych audytów jest bezpieczne tylko dlatego, że jego kod źródłowy jest dostępny.
Open source nie oznacza braku błędów
Powszechnym błędnym przekonaniem jest to, że oprogramowanie open source musi być bezpieczne, ponieważ każdy może je sprawdzić.
Każdy może je sprawdzić. Nie oznacza to jednak, że ktokolwiek to zrobił.
Duże bazy kodu mogą zawierać setki tysięcy, a nawet miliony linii kodu. Luki mogą wynikać z subtelnych interakcji między różnymi komponentami i pozostawać niezauważone przez lata.
Nawet dokładnie sprawdzone oprogramowanie może zawierać poważne błędy.
Open source należy więc traktować jako możliwość weryfikacji, a nie jako dowód bezpieczeństwa.
Podczas oceny projektu krypto warto zadać dodatkowe pytania:
- Ilu programistów aktywnie pracuje nad projektem?
- Czy kod przeszedł niezależne audyty bezpieczeństwa?
- Jak szybko usuwane są luki w zabezpieczeniach?
- Czy wydania są reprodukowalne?
- Czy rozwój projektu odbywa się publicznie?
- Czy większe zmiany są otwarcie omawiane?
- Czy projekt ma odpowiedzialny proces zgłaszania luk w zabezpieczeniach?
- Czy ważne komponenty rzeczywiście są open source?
Odpowiedzi mogą powiedzieć znacznie więcej niż sama obecność publicznego repozytorium.
Rozwój społeczności może zwiększyć odporność projektów
Projekty open source mogą umożliwiać współtwórcom z całego świata udział w rozwoju.
Programista niekoniecznie potrzebuje zgody firmy, aby analizować kod, proponować ulepszenia, tworzyć narzędzia lub eksperymentować z alternatywnymi implementacjami.
Może to prowadzić do powstawania społeczności skupionych wokół protokołów, a nie pojedynczych firm.
Z czasem współtwórcy mogą opracować:
- Alternatywne portfele
- Nowe interfejsy
- Narzędzia dla programistów
- Integracje
- Materiały edukacyjne
- Ulepszenia bezpieczeństwa
- Alternatywne implementacje węzłów
- Eksperymentalne funkcje
Pierwotny zespół programistów nie musi więc zawsze odpowiadać za każdą innowację powstającą wokół sieci.
Zdrowy ekosystem niezależnych współtwórców może również zmniejszyć zależność od jednej organizacji.
Forkowanie jest ważną formą niezależności
Jedną ze szczególnie ważnych cech oprogramowania open source jest możliwość sforkowania projektu, jeśli pozwala na to jego licencja.
Fork oprogramowania tworzy oddzielną wersję istniejącej bazy kodu, którą można następnie rozwijać niezależnie.
W świecie krypto ma to istotne znaczenie.
Jeśli programiści nie zgadzają się z kierunkiem rozwoju projektu, mogą wykorzystać istniejący kod i obrać inne podejście. Jeśli firma porzuci przydatne oprogramowanie, programiści ze społeczności mogą być w stanie nadal je utrzymywać. Jeśli użytkownikom nie podobają się określone zmiany, czasami mogą powstać alternatywne implementacje.
Forkowanie nie gwarantuje, że alternatywny projekt odniesie sukces. Utrzymywanie złożonego oprogramowania blockchain wymaga programistów, infrastruktury, użytkowników, finansowania i koordynacji.
Mimo to możliwość utworzenia forka ogranicza całkowitą kontrolę, jaką jedna organizacja deweloperska może sprawować nad publicznie licencjonowanym kodem.
Open source wspiera interoperacyjność i innowacje
Ekosystemy krypto rzadko istnieją jako odizolowane aplikacje.
Portfele łączą się z blockchainami. Giełdy współdziałają ze smart kontraktami. Eksploratory analizują dane sieciowe. Programiści tworzą aplikacje przy użyciu bibliotek i API. Urządzenia sprzętowe komunikują się z oprogramowaniem portfeli.
Komponenty open source mogą ułatwiać zrozumienie i tworzenie takich integracji.
Zamiast zaczynać całkowicie od zera, programiści mogą budować na istniejących bibliotekach, protokołach i implementacjach.
Odegrało to ważną rolę w szybkim tempie eksperymentów obserwowanych w całej branży kryptowalut.
Jeden projekt może wprowadzić nowy pomysł, inny może go zaadaptować, a trzeci ulepszyć. Udane koncepcje mogą rozprzestrzeniać się między ekosystemami, podczas gdy nieudane eksperymenty dostarczają cennych lekcji przyszłym programistom.
Możliwość rozwijania wcześniejszej pracy jest jedną z największych zalet rozwoju open source.
Open source i decentralizacja to nie to samo
Chociaż te dwa pojęcia są ze sobą ściśle powiązane, projekt open source niekoniecznie jest zdecentralizowany.
Firma może opublikować cały swój kod, a jednocześnie nadal kontrolować:
- Serwery projektu
- Klucze administracyjne
- Wydania oprogramowania
- Decyzje dotyczące zarządzania
- Aktualizacje protokołu
- Konta użytkowników
- Infrastrukturę
- Finansowanie
Podobnie kod blockchaina może być publiczny, podczas gdy niewielka liczba podmiotów dominuje w walidacji sieci lub zarządzaniu nią.
Open source opisuje sposób udostępniania i licencjonowania kodu oprogramowania. Decentralizacja opisuje sposób, w jaki rozłożone są kontrola, uprawnienia, infrastruktura i proces podejmowania decyzji.
To rozróżnienie ma znaczenie podczas oceny projektów krypto.
Publiczne repozytorium jest przydatnym dowodem przejrzystości, ale nie powinno być automatycznie traktowane jako dowód na to, że projekt jest zdecentralizowany.
Nie wszystko w projekcie open source musi być otwarte
Kolejną ważną kwestią jest zakres opublikowanego kodu.
Aplikacja krypto może reklamować się jako open source, publikując jednocześnie tylko niektóre komponenty.
Na przykład interfejs portfela może być publiczny, podczas gdy ważna infrastruktura backendowa pozostaje własnościowa. Zdecentralizowana aplikacja może publikować swoje smart kontrakty, ale w dużym stopniu polegać na scentralizowanych serwerach. Portfel sprzętowy może oferować oprogramowanie pomocnicze open source, jednocześnie zachowując zamknięte części swojego firmware.
Żadne z tych rozwiązań nie sprawia automatycznie, że projekt jest dobry lub zły.
Ważne jest zrozumienie, które komponenty są otwarte, a które nadal wymagają zaufania.
Użytkownicy oceniający projekt powinni więc spojrzeć poza określenie "open source" i dokładnie ustalić, co zostało opublikowane.
Reprodukowalne buildy wzmacniają weryfikację
Z aplikacjami open source wiąże się jeszcze jeden mniej oczywisty problem.
Nawet jeśli kod źródłowy jest publiczny, skąd użytkownik może wiedzieć, że pobrana przez niego aplikacja została rzeczywiście utworzona z tego kodu?
Właśnie tutaj mogą pomóc reprodukowalne buildy.
Reprodukowalny build pozwala niezależnym programistom skompilować ten sam kod źródłowy i uzyskać identyczny wynik. Może to stanowić mocniejszy dowód na to, że rozpowszechniana aplikacja odpowiada opublikowanemu kodowi źródłowemu.
Bez tej możliwości użytkownicy mogą analizować publiczne repozytorium, ale nadal muszą ufać temu, kto rozpowszechnia skompilowaną aplikację.
Reprodukowalne buildy są więc ważnym mechanizmem przejrzystości, szczególnie w przypadku oprogramowania wymagającego wysokiego poziomu bezpieczeństwa, takiego jak portfele kryptowalutowe.
Otwarty rozwój pomaga zachować wiedzę
Rozwój open source może również pomagać w zachowaniu wiedzy technicznej.
Jeśli firma krypto tworząca własnościowe oprogramowanie zniknie, jej prywatny kod może zniknąć razem z nią. Użytkownicy i programiści mogą nie być w stanie dalej utrzymywać oprogramowania ani odzyskać ważnej infrastruktury.
Publicznie dostępny kod jest znacznie trudniejszy do wyeliminowania.
Kopie mogą znajdować się na komputerach programistów, w repozytoriach, archiwach i forkach. Nawet jeśli pierwotna organizacja zakończy działalność, inni programiści mogą nadal analizować lub rozwijać projekt.
Może to sprawić, że infrastruktura open source będzie bardziej odporna na upadek poszczególnych organizacji.
Nie gwarantuje to dalszego rozwoju, ale daje społecznościom możliwość kontynuowania projektu bez jego pierwotnych twórców.
Open source nadal wymaga zaufania
W świecie krypto otwartość jest czasem przedstawiana jako sposób na całkowite wyeliminowanie potrzeby zaufania. W praktyce zaufanie zazwyczaj zmienia swoją formę, zamiast całkowicie znikać.
Większość użytkowników nigdy osobiście nie sprawdzi kodu źródłowego portfela ani nie przeanalizuje implementacji kryptograficznych.
Zamiast tego mogą polegać na szerszej sieci specjalistów:
- Programiści
- Niezależni audytorzy
- Badacze bezpieczeństwa
- Opiekunowie pakietów
- Producenci sprzętu
- Współtwórcy ze społeczności
Zaletą open source jest to, że osoby te nie muszą należeć do organizacji, która stworzyła oprogramowanie.
Niezależne osoby mogą wzajemnie sprawdzać swoją pracę.
Daje to możliwość rozproszonej weryfikacji, zamiast zmuszać wszystkich do zaufania jednemu centralnemu podmiotowi.
Jak ocenić projekt krypto open source
Nie musisz być programistą, aby dowiedzieć się czegoś na podstawie aktywności projektu open source.
Zacznij od znalezienia oficjalnego repozytorium kodu projektu i sprawdzenia, czy rozwój wydaje się aktywny. Zobacz, kiedy wprowadzono istotne aktualizacje i czy w rozwój projektu zaangażowanych jest wielu programistów.
Czytaj dyskusje dotyczące większych zmian. Sprawdzaj otwarte i zamknięte zgłoszenia. Zobacz, czy programiści odpowiadają na zgłoszenia błędów i czy problemy związane z bezpieczeństwem są rozwiązywane w odpowiedzialny sposób.
W przypadku aplikacji, które przechowują lub kontrolują środki, sprawdź, czy przeprowadzono renomowane niezależne audyty. Audyt nie jest gwarancją bezpieczeństwa, ale stanowi dodatkowy dowód na to, że system został sprawdzony przez specjalistów.
Sprawdź również, czy analizowany kod rzeczywiście obejmuje ważne części produktu.
Dobrze przygotowane publiczne repozytorium ma stosunkowo niewielkie znaczenie, jeśli komponenty odpowiedzialne za przechowywanie środków, podpisywanie transakcji, zarządzanie lub inne krytyczne operacje pozostają ukryte.
Dlaczego open source pasuje do filozofii krypto
Kryptowaluty stworzyły możliwość istnienia sieci finansowych, których zasady można niezależnie weryfikować, zamiast definiować je całkowicie za zamkniętymi drzwiami instytucji.
Oprogramowanie open source stosuje podobną zasadę w procesie rozwoju.
Zamiast mówić:
"Zaufaj nam, oprogramowanie działa właśnie w ten sposób."
Projekt może udostępnić kod i pozwolić innym na jego samodzielne sprawdzenie.
Nie eliminuje to wszystkich zagrożeń. Nie gwarantuje dobrych programistów, bezpiecznego kodu, uczciwego zarządzania, decentralizacji ani sukcesu projektu.
Zapewnia natomiast możliwość niezależnej weryfikacji.
W branży zbudowanej wokół idei, że użytkownicy powinni mieć możliwość weryfikowania zamiast po prostu ufać, taka możliwość ma ogromne znaczenie.
Podsumowanie
Open source jest jednym z fundamentów, które pomogły kryptowalutom rozwinąć się z niewielkich eksperymentów technicznych w globalne sieci utrzymywane przez programistów, badaczy, firmy i społeczności na całym świecie.
Publicznie dostępny kod pozwala analizować, kwestionować, ulepszać, ponownie wykorzystywać i audytować oprogramowanie, a czasami również kontynuować jego rozwój niezależnie od pierwotnych twórców.
Określenia "open source" nigdy nie należy jednak traktować jako certyfikatu bezpieczeństwa.
Ważne jest nie tylko to, czy kod jest publiczny, ale również to, czy jest aktywnie sprawdzany, czy rozwój odbywa się w przejrzysty sposób, czy udostępniono krytyczne komponenty oraz czy użytkownicy mogą zweryfikować oprogramowanie, z którego rzeczywiście korzystają.
Krypto ostatecznie polega na ograniczaniu niepotrzebnego zaufania.
Open source nie eliminuje zaufania, ale daje społecznościom coś znacznie cenniejszego niż obietnica: możliwość samodzielnego sprawdzenia.
Pick your reaction
Dodaj swój komentarz