Jak odczytywać w kontrakcie dane spoza blockchain i jak działają wyrocznie (Oracle)?
Smart contracty blockchain ograniczone są do odczytu danych wyłącznie z blockchain, czyli tych zapisanych w bloku. Jak dostarczyć do kontraktu dane spoza blockchain?
Wyrocznie (Oracle), to powszechnie znany termin określający mechanizm odczytu przez kontrakt danych spoza blockchain. Jak to działa? Ten mechanizm, a raczej wzorzec projektowy, NIE MA możliwości przekroczenia ograniczeń blockchaina. Oznacza to, że wyrocznie nie potrafią odczytywać bezpośrednio plików, baz danych, czy zewnętrznych serwisów (API). Wzorzec wyroczni umożliwia jednak “dostarczenie” danych z zewnątrz do blockchaina. W jaki sposób?
Zewnętrzne dane do smart contractu (spoza blockchain) mogą być dostarczone tylko, jako parametry (argumenty) jego wywołania. Wyrocznie to oprogramowanie działające poza blockchain, które nasłuchuje na “zapytania” przez smart contracty do danych z zewnątrz, a następnie dostarcza te dane do smart contractu, poprzez wywołanie odpowiedniej funkcji kontraktu, która zapisze te dane do blockchaina. Smart contract ma na przykład możliwość zaprogramowanego zapytania off-chain (wyroczni) o dane z pewnego API (np. ceny BTC/PLN). Oprogramowanie wyroczni realizuje zapytanie poza blockchain, a następnie zwraca rezultat do kontraktu, wywołując z rezultatem odpowiednią jego funkcję. W ten sposób kontrakt “otrzyma” dane z zewnątrz, realizacja będzie automatyczna, jednak sam mechanizm nie różni się od manualnego wywołania funkcji kontraktu, która zapisuje dane do blockchaina, przez co kontrakt może je na własne potrzeby odczytać.
Wokół tematu wyroczni wyrosło wiele mitów, jednak sam techniczny aspekt dostarczania danych do blockchain jest prosty i nie przekracza bazowych barier technologicznych (np. Ethereum). Warto to wiedzieć projektując rozwiązania web3, ponieważ ma to swoje ograniczenia. Skoro wiadomo, jak dostarczyć dane do blockchain, to warto zapytać, w jaki sposób dostarczyć dane “poprawne”, prawdziwe, i w sposób zdecentralizowany, zgodne z założeniami realizacji rozwiązań web3? To szeroki, trudny, ale interesujący temat. Omówię go w kolejnych wpisach.