Chainlink – wyrocznia, której możesz zaufać

Przemek/ 29 lipca, 2022

W ciągu ostatnich kilkunastu miesięcy powstało co najmniej kilkanaście rozwiązań, które próbowały zawojować świat zdecentralizowanych wyroczni. Jednym poszło lepiej, innym gorzej, ale nikt do tej pory nie powtórzył sukcesu pierwszego projektu tego typu, którym jest Chainlink. Dlatego dzisiaj opowiem nieco więcej na jego temat. Z tego wpisu dowiesz się, jak działa Chainlink, skąd biorą się dostarczane przez niego dane i dlaczego możemy uznać je za wiarygodne. Przejdziemy również przez trzy najczęściej wykorzystywane rozwiązania, którymi są Chainlink VRF, Chainlink Data Feeds oraz Chainlink Keepers.

Wyrocznie zabezpieczone blockchainem

Temat tzw. blockchain oracles omówiłem szczegółowo tutaj. Wiedza zebrana w poprzedni tekście, przyda Ci się w lekturze tego. . Teraz przejdźmy już do głównego dania i odpowiedzmy na pytanie, czym jest Chainlink.

Najprościej mówiąc, jest to zdecentralizowana sieć, składająca się z wielu wyroczni, które dostarczają do blockchaina dane ze świata zewnętrznego. Co więcej, mogą robić to również w drugą stronę. Wszystko to oparte jest o blockchain, dzięki któremu możliwe było stworzenie mechanizmu odpowiadającemu za rzetelność danych.

Chainlink jest dosyć dojrzałym produktem, jak na standardy blockchainowe, ponieważ jego początki możemy datować na 2017 rok. Rozwiązanie to było prawdopodobnie pierwszym tego typu produktem na rynku. Jak to zazwyczaj bywa, pojawiła się masa kopii, które próbowały powtórzyć ogromny sukces prekursora. Jednak z tego co mi wiadomo, nikomu się to do tej pory nie udało.

Blockchain, na którym opiera się Chainlink, oparty jest o Ethereum. Natomiast w odróżnieniu od niego, jako algorytm konsensusu wykorzystuje on Proof of Stake. Jeżeli interesuje Cię temat tego typu mechanizmów, to szczegółowy opis znajdziesz w tym poście.

Natywnym tokenem dla tego blockchaina jest LINK. W odróżnieniu od wielu rozwiązań, które najpierw tworzą kryptowalutę, a później szukają do niej zastosowania, Chainlink zachował się odwrotnie i wykorzystywał dobry model ekonomiczny, do rozwiązania realnego problemu, czyli dostarczania rzetelnych informacji.

Skąd się biorą dane

Rysunek 2. Zawieszka
(źródło: https://wheredoesitcomefrom.co.uk/c34dd8w/)

Podstawowym zadaniem każdej wyroczni jest udostępnianie informacji, na których mogą bazować rozwiązania oparte o smart kontrakty. Dane można pozyskiwać na różne sposoby: odczytywać je z urządzeń mierniczych, agregować z portali internetowych lub zbierać je bezpośrednio od ekspertów. Ale kto się tym zajmuje? W przypadku Chainlinka są to operatorzy węzłów (ang. nodes operators). Przekładając to na język ludzki, operator to ktoś, kto chce zostać źródłem danych i będzie odpowiadał na nasze zapytania. Tylko jaką mamy pewność, że taka osoba dostarczy prawdziwych informacji? Odpowiedź jest prosta i brzmi: chęć zysku i strach przed utratą pieniędzy.

Aby zostać operatorem, trzeba najpierw zablokować w sieci pewną sumę środków. Jeżeli ktokolwiek udowodni, że przekazane dane były niezgodne z rzeczywistością, wtedy operator utraci swoje pieniądze. Jest to mechanizm, który ma zniechęcać do oszustwa. Co w takim razie zachęca do podjęcia takiego ryzyka? Możliwość zarobienia kolejnych pieniędzy. Jeżeli ktokolwiek chciałby uzyskać dane, dajmy na to na temat obecnego kursu EUR/PLN, to, aby dostać taką informację, będzie musiał uiścić operatorowi opłatę w formie tokena LINK.

Teraz czas na nieco technikaliów. Aby poinformować operatorów o chęci pozyskania danych, zainteresowany musi utworzyć tzw. Requesting Contract. Stworzy on w ten sposób zdarzenie, które zostanie zarejestrowane przez sieć Chainlinka. Spowoduje to powstanie tzw. Chainlink Service Level Agreement Contract, który pozwoli na uzyskanie dostępu do danych spoza blockchaina, a następnie zostaną utworzone trzy powiązane kontrakty: Reputation Contract, Order-Matching Contract, Aggregating Contract.

Pierwszy z nich odpowiada za decyzję, które węzły dostarczą nam wiarygodnych i dokładnych danych oraz usuwanie nierzetelnych węzłów. Żeby zbyt tego nie komplikować, wystarczy powiedzieć, że dzięki niemu dostaniemy rzetelne informacje.

Order-Matching Contract ma za zadanie wysłać nasze zapytanie do zaufanych operatorów. Na podstawie zebranych odpowiedzi decyduje on o ilości i typie węzłów, które zostaną uwzględnione w dalszym procesie. Warto byłoby dodać, że w międzyczasie Chainlink konwertuje zadane pytanie na inny język programowania, który zostanie ostatecznie wykorzystany do pozyskania informacji z Internetu.

Aggregating Contract odpowiada za walidację zebranych danych i przedstawienie ostatecznej odpowiedzi. Powiedzmy, że interesuje Cię obecna temperatura w Atenach. Trzydziestu operatorów poinformowało, że obecnie jest tam 30 stopni, natomiast pięciu dało znać, że jest jedynie 22 stopnie. W takim wypadku te pięć odpowiedzi mogłyby zostać usunięte i nieuwzględnione. Proces ten mógłby być powtórzony wielokrotnie dla różnych źródeł danych, aby ostatecznie wyciągnąć z nich średnią. Oczywiście odpowiedzi na niektóre pytania nie mogą być uśrednione, ale w wielu przypadkach taki proces w zupełności wystarczy.

Z grubsza cały mechanizm można podsumować następująco: osoba, która chce uzyskać pewną informację ze świata zewnętrznego, płaci Chainlinkowi za znalezienie zaufanych operatorów (Reputation Contract), którzy dostarczą dane. Następnie zadaje pytanie (Order-Matching Contract), aby na końcu otrzymać rzetelną odpowiedź, zagregowaną na podstawie wielu różnych źródeł danych. (Aggregating Contract).

W tym miejscu możesz przejrzeć przykładowe informacje, które jesteś w stanie pobrać dzięki Chainlinkowi.

Teraz wiesz już, czym jest Chainlink i jak wewnętrznie działa, więc możemy przyjrzeć się kilku rozwiązaniom, które przydadzą Ci się w codziennym tworzeniu smart kontraktów.

Chainlink Data Feeds – dane na wyciągnięcie ręki

Rysunek 3. Data Feeds
(źródło: https://chain.link/data-feeds)

Wiele aplikacji wymaga dostępu do tych samych informacji. Różnego rodzaju giełdy, czy instytucje finansowe, pomimo stworzenia oddzielnego oprogramowania, opierają się na identycznych danych, jakimi są np. ceny poszczególnych aktywów. W zdecentralizowanym świecie, rozwiązaniem, które dostarcza od ręki tego typu rzeczy, jest Chainlink Data Feeds. W skrócie, mechanizm ten pozwala nam w prosty sposób pozyskać niektóre informacje. Co ważniejsze, możemy je mieć całkowicie za darmo. Tylko jak to możliwe, skoro wcześniej powiedziałem, że za takie zapytania trzeba płacić?

Tak naprawdę nic się nie ma za darmo, tylko my bezpośrednio za to nie płacimy. Operatorzy są wynagradzani przez firmy, które widzą zysk w tych samych informacjach. Ponieważ istnieje wiele takich podmiotów, są one w stanie opłacić operatorów stosunkowo małym nakładem. Inaczej wyglądałaby sytuacja, gdyby każda osoba chciała pozyskać całkowicie inne dane, ale jeśli interesuje nas np. cena etheru wyrażona w dolarach, to czy jesteśmy firmą A, czy B, zawsze chcielibyśmy otrzymać ten sam wynik. Dzięki temu tacy zwykli zjadacze chleba jak my mogą mieć coś za darmo :).

Każdy data feed składa się z trzech komponentów: consumer, proxy contract oraz aggregator contract. Pierwszy z nich interesuje nas najbardziej, bo to my musimy go utworzyć, aby pozyskać dane. Możemy to zrobić zarówno z wnętrza samego blockchaina (on-chain), jak i spoza niego (off-chain). Wystarczy, że skorzystamy z interfejsu o nazwie “AggregatorV3Interface”.

Proxy to smart kontrakt, który odnosi się do agregatorów dla konkretnych danych. Różne proxy mogą różnić się od siebie informacjami, które uzyskują.

Aggregator to kontrakt, w którym cyklicznie zapisywane są dane pochodzące od wyroczni. Dzięki temu, że wszystkie informacje przechowywane są ostatecznie na blockchainie, w jednej transakcji jesteśmy w stanie je pozyskać oraz wykonać zależne od nich operacje. Gdyby nie było to możliwe, mogłoby to spowodować komplikacje. Nie wchodząc zbyt głęboko w szczegóły, dwie transakcje mogą znaleźć się w innych blokach. Na dodatek bloki te mogą być od siebie znacznie oddalone. Tu chodzi o czas, który upłynął pomiędzy pierwszą i drugą transakcją może być bardzo długi. Oznacza to przykładowo, że cena ETH/USD mogłaby się znacznie zmienić, zanim doszłoby do drugiej transakcji. Zatem użytkownik, który skorzystałby z naszego rozwiązania, mógłby otrzymać ostatecznie całkowicie inny wynik niż ten, który zakładał w momencie użycia funkcjonalności.

Jeżeli chciałbyś dowiedzieć się więcej na temat Chainlink Data Feed, to polecam zapoznać się z dokumentacją. Oprócz technicznych detali, znajdziesz w niej m.in. adresy kontraktów proxy, które możesz wykorzystać w swojej aplikacji. 

Chainlink Keepers – zautomatyzuj swoje smart kontrakty

Rysunek 4. Chainlink Keepers
(źródło: https://chain.link/keepers)

Bardzo często można usłyszeć, że przy pomocy smart kontraktów, jesteśmy w stanie zautomatyzować wiele procesów. Jednak automatyzacja ta nie jest tym, z czym większości kojarzy się to słowo. To prawda, że kod zawarty w smart kontraktach wykona się zawsze, kiedy zostaną spełnione zapisane w nim warunki. Niestety nic nie stanie się samo i ktoś będzie musiał zapoczątkować cały łańcuch zdarzeń.

W najprostszym przypadku może to być dowolna osoba, która wywoła funkcję smart kontraktu. Możemy też stworzyć aplikację, która będzie miała dostęp do klucza prywatnego jakiegoś portfela i ona będzie odpowiadała za rozpoczęcie działania. Niestety oba te przypadki wiążą się z centralizacją i niosą za sobą pewne konsekwencje. Pojedyncza osoba może po prostu zapomnieć wywołać funkcję. Aplikacja może korzystać z nierzetelnych danych, od których zależeć będzie moment interakcji ze smart kontraktem. Jesteśmy w stanie znaleźć masę podobnych przypadków, kiedy coś może pójść nie tak. W tym miejscu wchodzi do gry kolejne zdecentralizowane rozwiązanie

Chainlink Keepers to mechanizm, który pozwala w pełni zautomatyzować działanie smart kontraktów. Dodatkowo robi to wszystko w pełni zdecentralizowany sposób, co zapewnia wysoką wiarygodność działania. Nie będę w tym miejscu zagłębiał się w architekturę całego rozwiązania, ale powiem tylko o dwóch mechanizmach, które możesz wykorzystać w swoich aplikacjach.

Pierwszy z nich to użycie tzw. Time-base Trigger. Jest to mechanizm, który umożliwia automatyczne wywoływanie funkcji naszych kontraktów, na podstawie warunku dotyczącego czasu. Rozwiązanie to wymaga jedynie kilku kliknięć na stronie oraz środków w tokenie LINK. Co ważne Twój kontrakt nie musi spełniać żadnych specyficznych wymagań. Dobrym przykładem dla zastosowania tego mechanizmu, byłaby sytuacja, w której użytkownik zakłada pewnego rodzaju lokatę na blockchainie, a następnie co miesiąc środki automatycznie trafiają na jego konto.

Drugi mechanizm to Custom Logic Trigger. Jak sama nazwa wskazuje, ten wyzwalacz przyda się w momencie, gdy warunek wywołania kontraktu zależy od naszych indywidualnych potrzeb. W tym wypadku kontrakt musi być  “Keepers-compatible”, czyli zaimplementowany zgodnie z wymaganiami przedstawionymi przez Chainlinka. Jeżeli już to zrobimy, to możemy go zarejestrować na wcześniej podanej stronie, zasilić konto LINKami i gotowe.

Przypadków zastosowania dla Chainlink Keepers jest naprawdę wiele. Jeżeli chciałbyś zapoznać się z kilkoma realnymi przykładami użycia tej technologii, to znajdziesz je na tej stronie.

Chainlink VRF – losowość na blockchainie

Rysunek 5. Chainlink VRF
(źródło: https://chain.link/vrf)

Ostatnim mechanizmem, który chciałbym przybliżyć, jest ten związany z generowaniem losowych liczb. Dlaczego nie powinniśmy generować losowości w samych smart kontraktach, wyjaśniłem w poprzednim wpisie, teraz jedynie przypomnę, że jest to niebezpieczne, ponieważ ktoś może stosunkowo łatwo odgadnąć liczbę, na długo przed tym, zanim ją wykorzystamy. Chyba nie trzeba tłumaczyć, dlaczego mógłby być to duży problem.

Chainlink VRF, czyli Verifiable Random Function, pozwala na utworzenie losowej liczby poza blockchainem, a następnie na jej skonsumowanie już w jego obrębie. Dodatkowo dostarcza kryptograficzny dowód, który potwierdza sposób, w jaki losowość została utworzona. Publikowany i weryfikowany jest na blockchainie, jeszcze zanim liczba zostanie dostarczona do aplikacji. Daje nam to pewność, że losowość jest prawdziwa i odporna na manipulacje. W naszym przypadku możemy uznać, że dzieje się to użyciem kryptograficznej “magii”, ale jeśli ktoś chciałbym się zagłębić w detale, to znajdzie je w dokumentacji.

Dostarczenie liczby wiąże się z utworzeniem zapytania, które będzie musiało być obsłużone poza blockchainem, na którym znajduje się nasz smart kontrakt. Dlatego wymaga uiszczenia opłaty w formie tokena LINK. W zależności od sieci wysokość prowizji może się różnić.

W tym roku została wydana wersja druga, która daje deweloperom większą elastyczność i kontrolę nad losowością, jednak wciąż można korzystać z tej pierwotnej.

Chainlink VRF, to rozwiązanie, którego użyjemy już kolejnym razem, gdy będziemy usprawniać loterię z tego wpisu. Do zobaczenia:)

Share this Post
Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments