ELI5: Co to jest IBC?

Dec 22 2022
Narodziny Bitcoina doprowadziły do ​​kambryjskiej eksplozji łańcuchów bloków z różnymi decyzjami projektowymi i przypadkami użycia. Chociaż te rozproszone księgi służą różnym celom, istniały (i nadal istnieją do pewnego stopnia) jako silosy o ograniczonej znaczącej interakcji.

Narodziny Bitcoina doprowadziły do ​​kambryjskiej eksplozji łańcuchów bloków z różnymi decyzjami projektowymi i przypadkami użycia. Chociaż te rozproszone księgi służą różnym celom, istniały (i nadal istnieją do pewnego stopnia) jako silosy o ograniczonej znaczącej interakcji.

Podobnie jak Internet, który umożliwia różnym typom komputerów w różnych częściach świata komunikowanie się ze sobą, podobna technologia, która działa jak tkanka łączna między łańcuchami bloków, jest niezbędna do prawdziwego naliczania wartości. Protokół Inter-Blockchain Communication (IBC) ma służyć temu celowi.

IBC to uniwersalny protokół interoperacyjności, który umożliwia komunikację między dwoma różnymi łańcuchami bloków. IBC gwarantuje niezawodną , ​​uporządkowaną i uwierzytelnioną komunikację.

Być może jedną z najważniejszych właściwości IBC jest minimalizacja zaufania. W łańcuchach bloków właściwość minimalizacji zaufania jest nieodłącznie związana z bezpieczeństwem. Żaden system rozproszony nie jest całkowicie „niezaufany”. Kwestia bezpieczeństwa sprowadza się zatem do tego, komu lub czemu ufa się iw jaki sposób to zaufanie może zostać naruszone, czyli co trzeba zrobić, aby zaufany podmiot został skorumpowany?

W tym sensie, w przeciwieństwie do większości rozwiązań pomostowych, IBC nie korzysta z usług zaufanych stron trzecich. Oznacza to, że jeśli ufasz dwóm określonym łańcuchom w zakresie korzystania z zapewnianych przez nie funkcji (i domyślnie ich mechanizmów konsensusu), to nie jest wymagane dodatkowe założenie zaufania podczas używania IBC do interakcji między tymi łańcuchami.

IBC to także coś więcej niż most ułatwiający transfer tokenów. Jest to protokół przekazywania komunikatów ogólnego przeznaczenia . Oznacza to, że przez IBC można przesyłać dowolne dane .

Jak działa IBC?

Aby zrozumieć, jak działa IBC, ważne jest oddzielenie dwóch różnych warstw IBC — 1) warstwy transportowej i 2) warstwy aplikacji.

Przedstawienie wysokiego poziomu przepływu pakietów IBC między dwoma łańcuchami bloków

Warstwa transportowa

Wiadomości przesyłane przez IBC są przesyłane w ramach pakietów danych . Warstwa transportowa jest odpowiedzialna za transport , uwierzytelnianie i porządkowanie tych pakietów danych.

Warstwa transportowa nie precyzuje, jakie powinny być dane w pakietach ani jak powinny być interpretowane przez łańcuch odbiorczy. Z punktu widzenia warstwy transportowej informacje zawarte w pakietach danych to tylko losowe bajty.

Kluczowymi składnikami warstwy transportowej są lekkie klienty, przekaźniki, połączenia i kanały.

Lekki klient to lekka reprezentacja łańcucha bloków. W przeciwieństwie do pełnego węzła , klienci light nie przechowują całej historii wszystkich wiadomości zawartych w łańcuchu bloków. Nie realizują też transakcji. Klienci typu light są raczej stworzeni do łączenia się z pełnym węzłem i weryfikowania nagłówków bloków (podsumowanie danych zawartych w bloku). Dzięki temu klienci typu light mogą być wydajni pod względem przechowywania i obliczeń.

Dwa niezależne łańcuchy bloków A i B współpracujące za pośrednictwem IBC mają lekkich klientów łańcucha kontrahentów. Oznacza to, że A ma lekkiego klienta na swoim łańcuchu bloków, który działa jako lekka reprezentacja łańcucha bloków B. Kiedy A chce przekazać pewną wiadomość „X” z B , wysyła nagłówek bloku, w którym ta wiadomość istnieje, wraz z dowodem zaangażowania tej wiadomości do B . Dowód zaangażowania służy do weryfikacji obecności lub braku określonej wiadomości na A . Używając nagłówka bloku i dowodu, B weryfikuje to kryptograficznieA rzeczywiście wykonał X . To właśnie wykorzystanie lekkich klientów w IBC umożliwia łańcuchom bloków wymianę wiadomości między sobą bez potrzeby korzystania z zaufanej strony trzeciej.

Ale A i B nie wysyłają bezpośrednio tych wiadomości/pakietów danych między sobą. Zamiast tego, gdy A chce wysłać wiadomość do B , zatwierdza lub przechowuje skrót pakietu danych zawierającego wiadomość w swojej maszynie stanów . Przekaźniki , które są procesami poza łańcuchem, stale obserwują takie wiadomości. Kiedy widzą, że A zatwierdził komunikat przeznaczony dla B w swojej maszynie stanowej, po prostu podnoszą ten komunikat i przekazują go do B . Pamiętaj, że przekaźniki są bez uprawnień i dlatego mogą być uruchamiane przez każdego.

Połączenia są odpowiedzialne za łączenie lekkich klientów w dwóch różnych łańcuchach. A kanały to kanały do ​​przesyłania pakietów między modułami w tych różnych łańcuchach. Dlatego, podczas gdy połączenia są specyficzne dla łańcucha, kanały są specyficzne dla modułu. Każdy koniec kanału ma unikalny identyfikator kanału (i identyfikator portu), który jest używany do dokładnego kierowania pakietów między dwoma modułami.

Warstwa aplikacji

Warstwa aplikacji jest tym, z czym użytkownicy końcowi wchodzą w interakcję. Składa się z różnych aplikacji, które wykorzystują warstwę transportową do budowania na wierzchu. Warstwa transportowa nie określa sposobu interpretacji pakietów danych. Rolę tę pełni warstwa aplikacji.

IBC obsługuje różnorodne aplikacje, takie jak transfery zamiennych/niezamiennych tokenów, międzyłańcuchowe kanały wyroczni, konta międzyłańcuchowe, zapytania międzyłańcuchowe, oprogramowanie pośredniczące opłat (w celu zachęcenia przekaźników) itp.

Na przykład aplikacja na poziomie IBC do przesyłania tokenów — określana jako Interchain Standard 20 (ICS 20) — określa, w jaki sposób pakiety danych powinny mieć strukturę i jak mają być interpretowane przez łańcuchy odbiorcze. W przypadku wymiany tokenów pakiety danych zawierają informacje dotyczące nadawcy, odbiorcy, kwoty i nominału (denom IBC). Pole denom śledzi ścieżkę, którą przeszedł określony token, aby dotrzeć do określonego łańcucha. Logika dotycząca sposobu postępowania z pakietami jest również określona przez ICS 20.

Prostą analogią, która może być pomocna w zrozumieniu IBC, jest system dostarczania poczty. Kiedy wysyłasz list do kogoś, wysyłasz go za pośrednictwem usługi pocztowej, która odbiera od ciebie kopertę zawierającą list i umieszcza ją w skrzynce pocztowej odbiorcy. Następnie odbiorca otwiera wspomnianą kopertę i czyta Twój list. Warstwa transportowa IBC może być traktowana jako usługa pocztowa. Poczta nie mówi, jaka powinna być treść listu ani jak odbiorca powinien zinterpretować Twoją wiadomość.

Nie wiedzą też, jaka jest zawartość koperty. Wykonuje tylko czynność polegającą na zebraniu koperty z punktu A i wysłaniu jej do punktu B. Sama koperta może być traktowana jako pakiety IBC wysyłane z jednego łańcucha do drugiego. A na tej kopercie podałbyś adres odbiorcy. Jest to podobne do tego, jak pakiety IBC zawierają informacje o tym, kto wysłał pakiet (określony przez identyfikator kanału) i do kogo jest przeznaczony (określony przez identyfikator kanału kontrahenta). Ostatecznie to odbiorca (aplikacja) odpowiada za otwarcie koperty (pakietu danych) i zinterpretowanie treści listu.

Do czego można wykorzystać IBC?

Oprócz wymienialnych transferów tokenów, dwie inne aplikacje na poziomie IBC obejmują konta międzyłańcuchowe i bezpieczeństwo międzyłańcuchowe .

Konta międzyłańcuchowe ułatwiają interakcję między łańcuchami, pozostając na jednym interfejsie. W rzeczywistości oznacza to, że wszelkie działania, takie jak transfery, obstawianie lub głosowanie nad propozycjami zarządzania, które można wykonać na B (nazywane „łańcuchem hosta”), mogą być wykonywane z A (nazywanego „łańcuchem kontrolerów”). Konta międzyłańcuchowe znacznie zwiększają możliwość tworzenia treści w ramach sieci międzyłańcuchowej, poprawiając wrażenia użytkownika.

Interchain Security to współdzielona wersja bezpieczeństwa Cosmos Ecosystem. Umożliwia blockchainowi dzierżawę zabezpieczeń z innego łańcucha w sposób całkowicie opcjonalny. Jest to szczególnie przydatne w przypadku nowych sieci, które mogą skorzystać z zabezpieczeń oferowanych przez już istniejącą sieć, taką jak Cosmos Hub. Interchain Security eliminuje potrzebę uruchamiania przez łańcuchy własnego zestawu walidatorów.

Zakres zastosowań, które można wykonać przy użyciu IBC jako rdzenia prymitywnego, stale rośnie. Międzyłańcuchowe transfery NFT i zapytania międzyłańcuchowe (gdzie jeden łańcuch może odczytywać stan z innego łańcucha) są obecnie opracowywane i wkrótce będą gotowe do produkcji.

Jaki problem rozwiązuje IBC?

W jednym zdaniu IBC rozwiązuje problem blockchainów istniejących jako silosy z ograniczoną interakcją. Interoperacyjność między łańcuchami bloków jest niezbędna do maksymalnego naliczania wartości.

Każdy łańcuch blokowy obsługuje jeden lub więcej wyspecjalizowanych przypadków użycia. Jeśli tych przypadków użycia nie można wykorzystać w wielu łańcuchach bloków, poważnie utrudnia to ich użyteczność. Przełom, jaki zapewnił Internet, polega na tym, że informacje mogą z łatwością przepływać między różnymi częściami świata. Podobnie użyteczność różnych łańcuchów bloków musi być swobodnie dostępna na wielu platformach.

Na przykład użytkownicy mogą chcieć używać monet stabilnych z jednego łańcucha bloków, aby generować zyski poprzez pulę płynności (LP) na zdecentralizowanej giełdzie (DEX), która istnieje na innym łańcuchu bloków. Lub mogą chcieć wykorzystać właściwości zachowania prywatności, które zapewnia inny łańcuch bloków. Aby zrealizować te przypadki użycia i nie tylko, wymagana jest interoperacyjność między łańcuchami.

IBC nie tylko rozwiązuje problem interoperacyjności, ale robi to w sposób minimalizujący zaufanie, bezpieczny, rozszerzalny i ogólnego przeznaczenia.

Jak jako programista aplikacji mogę korzystać z IBC?

Modułowy charakter Cosmos SDK zapobiega konieczności zajmowania się przez deweloperów niektórymi warstwami abstrakcji, takimi jak lekkie klienty, połączenia, weryfikacja dowodowa itp. Dla deweloperów najbardziej odpowiednimi wymaganiami i funkcjami, z którymi należy się zapoznać, są kanały i porty . Więcej szczegółowych informacji na temat IBC można znaleźć w naszym portalu dla programistów .

Jeśli budujesz łańcuch bloków przy użyciu zestawu Cosmos SDK, kroki niezbędne do włączenia IBC dla modułu SDK są szczegółowo opisane tutaj . Możesz również zgłosić się do Interchain Builders Program, inicjatywy ICF, aby uzyskać wsparcie w budowaniu w Cosmos.

O autorze: ten post został napisany przez Adi Ravi Raj , analityka protokołów IBC w firmie Interchain GmbH.