Dlaczego smart contracty blockchain nie potrafią odczytywać plików, baz danych i właściwie niczego spoza samego blockchaina?
Smart contracty blockchain technicznie ograniczone są do odczytu danych tylko z samego blockchaina. Czy nie wydaje się to dziwne i ograniczone? Z czego to wynika?
Typowe oprogramowanie realizując zaprogramowaną logikę biznesową, powszechnie wykorzystuje bazy danych, przetwarza pliki, i wymienia dane z innymi programami (np. serwisami webowymi). Smart contracty, programy przetwarzane w blockchainie tego nie potrafią. Wynika to z architektury środowiska, w jakim są przetwarzane. Smart contract, jako program komputerowy, jest przetwarzany przez węzły blockchaina. Transakcja blockchain (np. w Ethereum), która wykonuje smart contract, zostanie przetworzona przez wszystkie węzły sieci blockchain (czyli tysiące “komputerów”). Każdy z tych węzłów, wykona program, jakim jest smart contract, uzyskując wynik jego przetworzenia – dane, które zostaną zapisane w blockchainie. Podstawową regułą działania blockchaina jest to, że wszystkie węzły w sieci przetwarzają te same dane i muszą uzyskać ten sam wynik. Co z tego wynika?
Blockchain to hermetyczne środowisko, zamknięty system. Dostęp do danych spoza blockchaina, w praktyce byłby niezmiernie trudny do zrealizowania. Odczyt plików, czy nawet bazy danych jest w teorii w blockchainie możliwy, w założeniu, że każdy węzeł dysponuje kopią wszystkich plików i całej bazy danych – pliki i bazy danych stałyby się właściwie niezależną częścią każdego węzła sieci. Niestety złożoność przetwarzania takiego “globalnego komputera” byłaby zbyt duża, by mogło to funkcjonować – problemy wydajnościowe, synchronizacyjne, ograniczenia przepustowości i wiele innych. W dodatku utrzymanie niezmienności “danych” niezapisanych w blokach to też ogromy narzut technologiczny, a cecha ta jest podstawą blockchaina.
Odczyt danych przez smart contracty np. z zewnętrznych serwisów dehermetyzuje blockchain. Nawet jeśli chcielibyśmy odczytać dane z jakiegoś serwisu webowego, na potrzeby przetwarzania smart contarctu, aby następnie te dane zapisać w bloku – blockchain nie jest w stanie zagwarantować dostępności zewnętrznych serwisów, a także ich poprawnego i ciągłego działania, co docelowo doprowadziłoby do niesprawnego działania całej sieci blockchain . W momencie niedostępności serwisu, węzły nie mogłyby przetworzyć transakcji i zweryfikować bloku.
Koncepcja globalnego, zdecentralizowanego komputera, który ma ciągle, poprawnie działać, zapewniając bezpieczeństwo danych i przetwarzania logiki biznesowej, to niestety trudna, ewoluująca koncepcja, z wieloma kompromisami. Dostęp do danych z zewnątrz ogranicza blockchain, ale są projekty starające się rozwiązać ten problem np. Chainlink.