Blockchain dla Nie-TechnikówNew Economy

Widząc Wielki Obraz



Ten krok zapewnia nie tylko duży obraz, w którym znajduje się blockchain, ale także podkreśla jego położenie w ramach dużego obrazu. Aby pozwolić ci zobaczyć duży obraz, ten krok wprowadza pojęcie architektury oprogramowania i wyjaśnia jego związek z koncepcją oddzielenia systemu na warstwy i aspekty. Aby pomóc ci rozpoznać lokalizację blockchaina w ramach dużego obrazu, ten krok podkreśla związek między strukturą blockchain a architekturą oprogramowania. Na koniec, ten krok wskazuje na podstawowy cel blockchaina w jednym zdaniu. Docenianie tego celu jest kamieniem węgielnym w zrozumieniu blockchain i zrozumieniu przebiegu kolejnych kroków.

Metafora

Czy kiedykolwiek kupiłeś samochód? Większość z nas ma. Nawet jeśli nigdy nie kupiłeś samochodu, prawdopodobnie wiesz, że samochody są wyposażone w różne typy silników (np. diesel, benzynę lub silnik elektryczny). Jest to przykład procesu modularyzacji, który jest wynikiem zastosowania koncepcji warstwowania do samochodów. Posiadanie wyboru między różnymi silnikami przy zakupie samochodu może spowodować niesamowite różnice w pojeździe. Dwa samochody, które wyglądają identycznie z zewnątrz, różnią się znacznie w zależności od mocy silników, a co za tym idzie, mają bardzo różne osiągi. Dodatkowo, wybór silnika będzie miał wpływ na inne cechy samochodu, takie jak jego cena, koszty operacyjne, rodzaj zużywanego paliwa, układ wydechowy i wymiary hamulców. Mając to na uwadze, zrozumienie roli blockchain w wielkim obrazie będzie znacznie łatwiejsze.

System płatności

Zastosujemy koncepcję warstw do systemu płatności. Poniżej pokazujemy niektóre z potrzeb użytkownika, a także niektóre niefunkcjonalne aspekty warstwy aplikacji i implementacji.

Warstwa : Aplikacja

Aspekty funkcjonalne : Wpłać pieniądze, wypłać pieniądze, przelewaj pieniądze, monitoruj saldo konta
Aspekty niefunkcjonalne : Graficzny interfejs użytkownika wygląda pięknie, Łatwy w użyciu, Przesyłanie pieniędzy odbywa się szybko, System ma wielu uczestników

Warstwa : Implementacja

Aspekty funkcjonalne : ?
Aspekty niefunkcjonalne : Dostępne 24 godziny na dobę, odporne na oszustwa, utrzymanie integralności, zapewnienie prywatności użytkownika Czy zauważyłeś znak zapytania w części, w którym normalnie mógłbyś zobaczyć informacje o technologii używanej do działania systemu? Ta przestrzeń została celowo pominięta. To miejsce, w którym decydujesz, który "silnik" powinien być używane do uruchomienia twojego systemu. Wkrótce dowiesz się nieco więcej o ekwiwalencie silnika w systemach oprogramowania.

Dwa rodzaje architektury oprogramowania

Istnieje wiele sposobów na wdrożenie systemów oprogramowania. Jednak jedna z podstawowych decyzji przy wdrażaniu systemu dotyczy jego architektury, sposobu, w jaki komponenty są zorganizowane i powiązane ze sobą. Dwa główne podejścia architektoniczne do systemów oprogramowania są scentralizowane i rozproszone. W scentralizowanych systemach oprogramowania komponenty są rozmieszczone i połączone z jednym centralnym komponentem. Natomiast komponenty systemów rozproszonych tworzą sieć połączonych komponentów bez centralnego elementu koordynacji lub kontroli. Rysunek przedstawia dwie przeciwne architektury. Okręgi na rysunku reprezentują elementy systemu, zwane również węzłami, a linie reprezentują połączenia między nimi. W tym momencie nie jest ważne, aby znać szczegóły tego, co te komponenty robią i jakie informacje są wymieniane między węzłami. Ważnym punktem jest istnienie tych dwóch różnych sposobów organizacji systemów oprogramowania. Po lewej stronie rysunku przedstawiona jest architektura rozproszona, w której komponenty są ze sobą połączone bez centralnego elementu. Ważne jest, aby żaden z komponentów nie był bezpośrednio połączone ze wszystkimi pozostałymi komponentami. Jednak wszystkie komponenty są połączone ze sobą przynajmniej pośrednio. Prawa strona rysunku ilustruje a scentralizowana architektura, w której każdy komponent jest połączony z jednym centralnym składnik. Komponenty nie są bezpośrednio ze sobą połączone. one ma tylko jedno bezpośrednie połączenie z komponentem centralnym.



Zalety systemów rozproszonych

Głównymi zaletami systemu rozproszonego na pojedynczych komputerach są:

- Większa moc obliczeniowa
- Redukcja kosztów
- Większa niezawodność
- Zdolność do naturalnego wzrostu

Większa moc obliczeniowa

Moc obliczeniowa rozproszonego systemu jest wynikiem połączenia mocy obliczeniowej wszystkich podłączonych komputerów. W związku z tym systemy rozproszone mają zwykle większą moc obliczeniową niż każdy komputer. Sprawdza się to nawet przy porównywaniu rozproszonych systemów składających się z komputerów o stosunkowo małej mocy obliczeniowej z odizolowanymi superkomputerami.

Redukcja kosztów
v Cena głównych komputerów, pamięci, miejsca na dysku i sprzętu sieciowego spadła dramatycznie w ciągu ostatnich 20 lat. Ponieważ systemy rozproszone składają się z wielu komputerów, początkowe koszty rozproszonych systemów są wyższe niż początkowe koszty poszczególnych komputerów. Koszty tworzenia, utrzymywania i obsługi superkomputera są jednak znacznie wyższe niż koszty tworzenia, utrzymywania i obsługi rozproszonego systemu. Jest to szczególnie ważne, ponieważ zastępowanie pojedynczych komputerów w systemie rozproszonym może odbywać się bez znaczącego wpływu całego systemu.

Większa niezawodność

Zwiększona niezawodność rozproszonego systemu opiera się na fakcie, że całość sieć komputerów może kontynuować działanie nawet w przypadku awarii pojedynczych komputerów. System rozproszony nie ma jednego punktu awarii. Jeśli jeden element zawodzi, pozostałe elementy mogą przejąć kontrolę. Stąd pojedynczy super komputer ma zazwyczaj niższą niezawodność niż system rozproszony.

Zdolność do naturalnego rozwoju

Moc obliczeniowa rozproszonego systemu jest wynikiem zagregowanej mocy obliczeniowej jego składników. Można zwiększyć moc obliczeniową całego systemu poprzez podłączenie dodatkowych komputerów do systemu. W wyniku tego moc obliczeniowa całego systemu może być zwiększana przyrostowo w skali szczątkowej. To wspiera sposób, w jaki wzrasta zapotrzebowanie na moc obliczeniową w wielu organizacjach. Stopniowy wzrost rozproszonych systemów kontrastuje ze wzrostem mocy obliczeniowej pojedynczych komputerów. Poszczególne komputery zapewniają identyczną moc, dopóki nie zostaną zastąpione przez mocniejszy komputer. Powoduje to nieciągły wzrost mocy obliczeniowej, który rzadko jest doceniany przez konsumentów usług komputerowych

Wady systemów rozproszonych w porównaniu do pojedynczych komputerów to:

- Koszty ogólne koordynacji
- Koszty ogólne komunikacji
- Zależność od sieci
- Większa złożoność programu
- Problemy z bezpieczeństwem

Koszty ogólne koordynacji

Systemy rozproszone nie mają jednostek centralnych koordynujących swoich członków. Stąd koordynacja musi być wykonywana przez samych członków systemu. Koordynacja pracy między współpracownikami w systemie rozproszonym jest wyzwaniem i kosztuje wysiłek oraz moc obliczeniową, której nie można wydać na prawdziwe zadanie komputerowe, stąd też pojęcie koordynacji narzutu.

Koszty ogólne komunikacji

Koordynacja wymaga komunikacji. Dlatego komputery tworzące system rozproszony muszą się ze sobą komunikować. Wymaga to istnienia protokołu komunikacyjnego oraz wysyłania, odbierania i przetwarzania wiadomości, co z kolei kosztuje wysiłek i moc obliczeniową, których nie można wydać na prawdziwe zadanie obliczeniowe, stąd też termin narzut komunikacji.

Zależności od sieci

Każdy rodzaj komunikacji wymaga medium. Nośnik odpowiada za przekazywanie informacji między podmiotami komunikującymi się ze sobą. Komputery w systemach rozproszonych komunikują się za pomocą komunikatów przesyłanych przez sieć. Sieci mają swoje własne wyzwania i przeciwności, które z kolei wpływają na komunikację i koordynację między komputerami tworzącymi system rozproszony. Jednak bez żadnej sieci nie będzie systemu rozproszonego, komunikacji, a zatem nie będzie koordynacji między węzłami, a zatem zależność od sieci.

Większa złożoność programu

Rozwiązanie problemu obliczeniowego polega na pisaniu programów i oprogramowania. Ze względu na wspomniane wcześniej wady każde oprogramowanie w systemie rozproszonym musi rozwiązać dodatkowe problemy, takie jak koordynacja, komunikacja i wykorzystanie sieci. Zwiększa to złożoność oprogramowania.

Problemy z bezpieczeństwem

Komunikacja przez sieć oznacza wysyłanie i współdzielenie danych, które są kluczowe dla prawdziwego zadania komputerowego. Jednak przesyłanie informacji przez sieć wiąże się z obawami o bezpieczeństwo, ponieważ niewiarygodne podmioty mogą niewłaściwie korzystać z sieci w celu uzyskania dostępu do informacji i ich wykorzystania. Dlatego każdy system rozproszony musi uwzględniać obawy dotyczące bezpieczeństwa. Im mniej ograniczony dostęp do sieci, przez którą rozproszone węzły

Rozproszone systemy peer-to-peer

Sieci typu peer-to-peer są szczególnym rodzajem systemów rozproszonych. Składają się z pojedynczych komputerów (zwanych również węzłami), dzięki którym ich zasoby obliczeniowe (np. moc obliczeniowa, pojemność pamięci, przepustowość danych lub sieci) są bezpośrednio dostępne dla wszystkich pozostałych członków sieci bez centralnego punktu koordynacji. Węzły w sieci są równe pod względem ich praw i ról w systemie. Co więcej, wszyscy oni są zarówno dostawcami, jak i konsumentami zasobów. Systemy peer-to-peer mają interesujące aplikacje, takie jak udostępnianie plików, dystrybucja treści i ochrona prywatności. Większość z tych aplikacji wykorzystuje prosty, ale potężny pomysł: przekształcenie komputerów użytkowników w węzły, które składają się na cały rozproszony system. W rezultacie im więcej użytkowników lub klientów korzysta z oprogramowania, tym większy i mocniejszy staje się system. Ta idea, jej konsekwencje i wyzwania są omówione w następujących krokach.

Mieszanie systemów scentralizowanych i rozproszonych

Scentralizowane i rozproszone systemy są antypodami architektonicznymi. Antypody techniczne zawsze inspirowały inżynierów do tworzenia systemów hybrydowych, które odziedziczą siłę swoich rodziców. Scentralizowane i rozproszone systemy nie stanowią tu wyjątku. Istnieją dwa archetypowe sposoby łączenia tych antypodów i należy je zrozumieć, ponieważ staną się ważne, gdy dowiedzą się o aplikacjach blockchain w rzeczywistym świecie. Są centralne w systemie rozproszonym i systemie rozproszonym w środku. Grafika po lewej stronie rysunku ilustruje architekturę, która ustanawia główny komponent w systemie rozproszonym. Na pierwszy rzut oka komponenty wydają się tworzyć system rozproszony. Jednak wszystkie koła są połączone z większym okręgiem znajdującym się pośrodku. W związku z tym wydaje się, że taki system jest dystrybuowany na powierzchownym widoku, ale w rzeczywistości jest to scentralizowany system. Wykres po prawej stronie rysunku 2-2 ilustruje podejście odwrotne. Taki system wydaje się być scentralizowanym systemem na pierwszy rzut oka, ponieważ wszystkie kręgi na peryferiach mają tylko jedno bezpośrednie połączenie z dużym centralnym komponentem. Jednak komponent centralny zawiera wewnątrz rozproszony system. Składniki na peryferiach mogą nie być nawet świadome rozproszonego systemu, który żyje w komponencie centralnym. To, co te dwa podejścia mają wspólnego, to fakt, że trudno jest określić ich prawdziwą naturę. Czy są rozproszone czy scentralizowane? Może nie być konieczne podawanie unikatowych nazw tych architektur. Należy jednak zwrócić uwagę na ich podwójny charakter. Jest to szczególnie ważne, ponieważ może nie być łatwo dostrzec centralność lub rozproszony charakter w nich. Do tego punktu powrócę później, kiedy omówię sposób komercjalizacji blockchain.



Cel Blockchaina

Projektując system oprogramowania, można wybrać, który styl architektoniczny zostanie użyty, podobnie do wyboru silnika do samochodu. Decyzja architektoniczna może zostać podjęta niezależnie od funkcjonalnych aspektów warstwy aplikacji. W rezultacie można tworzyć zarówno rozproszone, jak i scentralizowane systemy z identyczną funkcjonalnością w warstwie aplikacji. Architektura jest tylko środkiem do osiągnięcia celu, jeśli chodzi o wdrożenie systemu. Dlatego też system płatności, jak zaproponowano w tabeli powyżej, może zostać wdrożony jako rozproszony lub scentralizowany system. Każda z dwóch koncepcji architektonicznych ma swoje zalety i wady oraz własny, specyficzny sposób robienia rzeczy. Wybór konkretnej architektury ma wpływ na to, jak osiągnąć funkcjonalne i niefunkcjonalne aspekty systemu. W szczególności obie koncepcje architektoniczne mają bardzo różne podejścia, aby zapewnić integralność. I to jest punkt, w którym blockchain wchodzi w obraz. Blockchain jest narzędziem zapewniającym integralność rozproszonych systemów oprogramowania. Dlatego może być postrzegane jako narzędzie do osiągnięcia niefunkcjonalnego aspektu warstwy implementacji.

Uwaga

Celem blockchain jest osiągnięcie i utrzymanie integralności w systemach rozproszonych.

Perspektywy

Osiągnięcie integralności w systemie rozproszonym jest bardzo techniczne i może wydawać się nieco nudne. Jednak pytanie, które sprawia, że ??to osiągnięcie jest ekscytujące dla wielu osób, zależy od tego, co zrobi system rozproszony i jaki rodzaj scentralizowanego systemu zastępuje. Następny krok wyjaśnia, w jaki sposób system peer-to-peer zmienił nasz świat i dlaczego blockchain jako narzędzie do osiągnięcia integralności w rozproszonych systemach oprogramowania może również zmienić świat. •  Architektura systemu oprogramowania określa, w jaki sposób jego komponenty są zorganizowane i powiązane ze sobą.
•  Scentralizowane i rozproszone architektury oprogramowania można traktować jako antypody.
•  System rozproszony składa się z szeregu niezależnych komputerów, które współpracują ze sobą za pomocą medium komunikacyjnego w celu osiągnięcia określonego celu bez posiadania scentralizowanego elementu kontroli lub koordynacji.
•  Zasadniczo można stwierdzić, że gdy tylko system ma pojedynczy komponent, który mógłby doprowadzić do awarii całego systemu, nie jest on dystrybuowany, niezależnie od złożoności jego architektury.
•  Blockchain jest częścią warstwy implementacji rozproszonego systemu oprogramowania.
•  Celem blockchain jest zapewnienie określonego niefunkcjonalnego aspektu rozproszonego systemu oprogramowania, który polega na: osiągnięciu i utrzymaniu jego integralności.