Aplikacje blockchain vs dApps¶
Ponieważ aplikacje blockchain (ang. blockchain applications) są również w pewnym sensie aplikacjami zdecentralizowanymi, można się zastanawiać, jaka jest różnica między aplikacjami blockchain a dApps, lub czy w ogóle istnieje jakaś różnica.1
W skrócie, główna różnica między dApps a aplikacjami blockchain polega na tym, że aplikacje blockchain działają każda na swoim własnym blockchain/sidechain, podczas gdy dApps współdzielą sieć blockchain z innymi dApps.
dApps są z reguły konstruowane jako smart kontrakty, np. na blockchainie Ethereum. Tworzenie aplikacji blockchain jest zupełnie inne, ponieważ jest dużo bardziej podobne do budowania zwykłej aplikacji internetowej.
Większość funkcjonalności smart kontraktów może być zaimplementowana w aplikacjach blockchain znacznie łatwiej i w bardziej prosty sposób.
Jest jednak jedna ważna różnica w stosunku do dApps, jeśli chodzi o zastosowanie nowej logiki On-chain w aplikacji:
- Nowe inteligentne kontrakty mogą być bezpośrednio stosowane na uruchomionym blockchainie.
- Dodawanie nowej logiki on-chain do aplikacji blockchain zawsze wymaga hard fork w sieci. Dlatego też aplikacje blockchain są mniej elastyczne niż dApps, jeśli chodzi o wgrywanie nowej logiki na działający łańcuch.
Jeżeli wewnątrz aplikacji blockchain pożądane są elastyczne właściwości smart contractów, to oczywiście możliwe jest również opracowanie aplikacji blockchain, która wspiera smart contracts. Do aplikacji można na przykład dodać nowy moduł, który akceptuje inteligentne kontrakty. W ten sposób można połączyć to, co najlepsze z obu światów.
Dodatkowo, smart kontrakty mogą ponownie wykorzystać już istniejący blockchain, co oszczędza czas przy uruchamianiu aplikacji, ponieważ nie trzeba zajmować się tworzeniem niezależnej sieci blockchain, znajdowaniem delegatów itp.
Aplikacje blockchain przeciwnie, opierają się na własnym blockchainie, a więc muszą również dbać o utrzymanie własnej sieci. W przeciwieństwie do nich, aplikacje blockchain opierają się na własnym blockchainie, a zatem muszą również dbać o utrzymanie własnej sieci. Na początku spowoduje to, że uruchomienie aplikacji będzie nieco bardziej skomplikowane, ale posiadanie niezależnej sieci wiąże się z licznymi korzyściami, które zostaną omówione w kolejnych punktach.
Dokumentacja Lisk określa aplikacje zbudowane przy użyciu Lisk SDK jako "blockchain applications", a nie "dApps", aby wyjaśnić różnicę, że aplikacje nie dzielą wspólnego blockchaina, ale zamiast tego każda z nich działa na swoim własnym łańcuchu. W rezultacie aplikacje blockchain mają następujące zalety:
-
Niższe opłaty transakcyjne, ponieważ duży ruch jednej aplikacji blockchain nie ma wpływu na inne aplikacje blockchain.
-
Blockchain dla aplikacji może być zaprojektowany z optymalną charakterystyką dla konkretnego przypadku użycia (na przykład poprzez dostosowanie czasu bloku lub liczby delegatów, a nawet zmianę całego algorytmu konsensusu).
-
Znacznie bardziej skalowalny blockchain, ponieważ obsługuje tylko dane z jednej aplikacji blockchainowej. Dlatego też jego rozmiar rośnie znacznie wolniej i nie cierpi tak bardzo z powodu potencjalnych wąskich gardeł w sieci, które mogą się zdarzyć w okresach dużego obciążenia wielu różnych dApps.
-
Interoperacyjność: Zarejestruj aplikację blockchain jako sidechain, aby połączyć ją z Lisk Mainchain (już wkrótce). Zapewni to bezproblemową interoperacyjność z Lisk Mainchain i wszystkimi podłączonymi sidechainami.
Dlaczego interoperacyjność?
Skalowalność:
- jeden blockchain: ograniczona zdolność przetwarzania (transakcje na sekundę)
- interoperacyjne blockchainy: pozwalają na skalowanie mocy obliczeniowej wraz z liczbą połączonych łańcuchów
Elastyczność:
-
jeden blockchain:
- dobrze nadaje się tylko do ograniczonego zestawu przypadków użycia (np. płatności, przechowywanie, inteligentne kontrakty, ...)
-
Interoperacyjne blockchainy:
- pokrywają szeroki zakres przypadków użycia
- możliwość dostosowania i optymalizacji łańcuchów do konkretnych przypadków użycia (np. konsensus, czas bloku)
- niezależne zarządzanie ułatwiające aktualizację protokołu