Czym jest Cosmos EVM i jak działa ta technologia w ekosystemie Cosmos?

Czym jest Cosmos EVM i jak działa ta technologia w ekosystemie Cosmos?

Czym jest Cosmos EVM?

Cosmos EVM to oprogramowanie open source, które pozwala deweloperom uczynić łańcuch Cosmos SDK zgodnym z EVM. Nie jest więc własnym blockchainem, nie jest tokenem i nie jest też tym samym co Cosmos Hub ani ATOM.

Mówiąc prościej, Cosmos EVM dodaje środowisko, w którym aplikacje Ethereum mogą działać na samodzielnym łańcuchu Cosmos. Deweloper może dzięki temu zbudować nowy L1 albo rozbudować istniejący łańcuch Cosmos SDK o obsługę technologii Ethereum.

Taki łańcuch sam ustala najważniejsze zasady. Chodzi na przykład o własny zestaw walidatorów, governance, opłaty, aktywne moduły i reguły dostępu. Walidator to uczestnik, który sprawdza nowe bloki i pomaga sieci osiągnąć konsensus.

Cosmos EVM został stworzony dla łańcuchów, które chcą zachować własne decyzje, a jednocześnie korzystać ze znanego świata Ethereum. Repozytorium zawiera na przykład evmd: implementację referencyjną do uruchomienia łańcucha zgodnego z EVM.

Oprogramowanie jest forkiem evmOS i podlega licencji open source Apache-2.0. Ważne jest też to, że Cosmos EVM nadal znajduje się w fazie v0.x. Oznacza to, że przyszłe aktualizacje przed wydaniem wersji v1 mogą jeszcze wprowadzać większe zmiany techniczne.


Najważniejsze informacje

  • Cosmos EVM to oprogramowanie służące do uczynienia łańcucha Cosmos SDK zgodnym z EVM.
  • Nie jest to samodzielny blockchain ani token.
  • Każdy łańcuch sam wybiera między innymi walidatorów, governance, opłaty i reguły dostępu.
  • Dzięki temu aplikacje Ethereum i smart kontrakty Solidity mogą działać na łańcuchu Cosmos.
  • Cosmos EVM jest open source i nadal znajduje się w fazie v0.x.

Jak działa Cosmos EVM?

Cosmos EVM pozwala łańcuchowi obsługiwać zarówno zwykłe transakcje Cosmos, jak i transakcje Ethereum. Sercem tego rozwiązania jest moduł x/vm, który odpowiada za wykonanie EVM, gas, opłaty i zapisywanie zmian.

Jak wygląda to w praktyce? Transakcja Ethereum jest najpierw pakowana jako MsgEthereumTx. Dzięki temu pasuje do sposobu, w jaki Cosmos SDK przetwarza transakcje. Następnie moduł wyciąga transakcję Ethereum z tego opakowania i wykonuje ją w EVM.

Jeśli transakcja się powiedzie, zmiany są zapisywane w Cosmos SDK-store. Jeśli wykonanie się nie uda, tymczasowa zmiana może zostać cofnięta. To ważne, ponieważ nieudana transakcja nie może pozostawić po sobie częściowo wykonanych zmian.

Pod maską Cosmos EVM składa się z trzech głównych elementów:

  • CometBFT: odpowiada za konsensus, czyli za to, jak walidatorzy wspólnie decydują, który nowy blok jest ważny.
  • ABCI: techniczne połączenie między CometBFT a aplikacją działającą na łańcuchu.
  • go-ethereum (geth): dostarcza funkcjonalność EVM, taką jak wykonywanie transakcji Ethereum.

Cosmos EVM obsługuje różne typy transakcji Ethereum, w tym legacy/EIP-155, EIP-2930, EIP-1559 i EIP-7702. Niechronione transakcje legacy są domyślnie wyłączone. Dokładny zestaw dostępnych funkcji może się różnić w zależności od łańcucha Cosmos EVM.

Dodatkowo ważnym elementem są precompiles. To stałe adresy, pod którymi smart kontrakt może wywołać funkcję natywną. Zamiast zwykłego kodu bajtowego EVM taka precompile wykonuje bezpośrednio kod Go. Dzięki temu kontrakt Solidity może na przykład korzystać z funkcji modułów Cosmos SDK, jeśli łańcuch włączył taką możliwość.

Przykład: smart kontrakt może za pomocą precompile wykonać natywną operację na tokenie albo rozpocząć transfer IBC. Kontrakt nie musi wtedy samodzielnie odtwarzać całej tej funkcjonalności Cosmos.

Jaką rolę pełni Ethereum Virtual Machine w Cosmos EVM?

Ethereum Virtual Machine, czyli EVM, jest w Cosmos EVM środowiskiem, które wykonuje kod bajtowy Ethereum i smart kontrakty Solidity. EVM można traktować jako warstwę zgodności między aplikacjami Ethereum a infrastrukturą Cosmos pod spodem.

Dzięki temu deweloperzy mogą nadal korzystać z wielu znanych workflow Ethereum. Chodzi na przykład o MetaMask, Hardhat, Foundry, Remix, ethers.js i viem. Kontrakty Solidity działające na Ethereum można w zasadzie wdrożyć na łańcuchu Cosmos EVM bez zmian w kodzie kontraktu.

Cosmos EVM zapewnia do tego między innymi zgodne z Ethereum JSON-RPC, typy transakcji, adresy i funkcje kont. JSON-RPC to po prostu standardowy sposób, w jaki portfel lub aplikacja wysyła techniczne żądania do blockchaina. Twój portfel kryptowalutowy może więc komunikować się z odpowiednim łańcuchem Cosmos EVM w dobrze znany sposób.

Jeden klucz bazowy może mieć dwa widoki adresu: heksadecymalny adres Ethereum i adres Bech32 Cosmos. Heksadecymalny to znany format adresu zaczynający się od 0x. Bech32 to czytelny format Cosmos z prefiksem danego łańcucha. Są to dwie formy tego samego klucza bazowego.

Łańcuch Cosmos EVM używa też dwóch rodzajów chain ID: Cosmos chain ID oraz osobnego numerycznego EVM chain ID. Pomagają one oprogramowaniu rozpoznać właściwe środowisko i reguły transakcji.

Zgodność jest szeroka, ale nie jest dosłownie identyczna z Ethereum. Cosmos EVM obsługuje opcode'y EVM, EIP i interfejsy ERC aż do hard forka Prague. Transakcje blob z EIP-4844 oraz PREVRANDAO z EIP-4399 nie są obsługiwane.

Jak Cosmos EVM wspiera interoperacyjność?

Cosmos EVM może wspierać interoperacyjność poprzez włączenie IBC do łańcucha. IBC to protokół, który pozwala niezależnym blockchainom wysyłać do siebie dane, wiadomości i tokeny.

Nie oznacza to jednak, że każdy łańcuch Cosmos EVM jest automatycznie połączony z każdym innym blockchainem. Do komunikacji potrzebne są między innymi obsługa IBC, połączenie, kanały, relayers i zgodna druga strona. Cosmos EVM nie tworzy też sam z siebie bezpośredniego połączenia z Ethereum mainnet.

Za pomocą precompiles kontrakty EVM mogą dodatkowo korzystać z funkcji innych modułów Cosmos SDK. Chodzi na przykład o staking, dystrybucję, governance, funkcje bankowe i transfery IBC. To, jakie możliwości są dostępne, zależy od tego, co twórca danego łańcucha dodał i włączył.

Jak działa komunikacja z innymi blockchainami Cosmos?

Komunikacja z innymi blockchainami Cosmos odbywa się za pomocą pakietów IBC. Packet to po prostu pakiet danych, który ma zostać przesłany z jednego blockchaina do drugiego.

Łańcuch źródłowy najpierw zapisuje, że taki packet istnieje. Następnie relayer odbiera wiadomość i dostarcza ją, wraz z dowodem kryptograficznym, do drugiego blockchaina. Relayer transportuje więc dane, ale nie przechowuje centralnie Twoich tokenów.

Blockchain odbierający używa light clienta IBC do sprawdzenia tego dowodu. Light client przechowuje zwięzłe informacje o stanie konsensusu drugiego blockchaina. Dzięki temu może sprawdzić, czy wysłane informacje rzeczywiście znajdują się na łańcuchu źródłowym.

Dwa blockchainy po utworzeniu połączenia IBC otrzymują każdy własne powiązanie z light clientem drugiej strony. Aplikacje używają następnie portów i kanałów do wysyłania packetów. Połączenie portID i channelID wskazuje, dokąd packet ma trafić.

Kanały mogą być ordered albo unordered. W przypadku ordered packet musi dotrzeć w tej samej kolejności. W przypadku unordered kolejność odbioru może być inna.

W przypadku łańcucha Cosmos EVM kontrakty Solidity mogą inicjować transfery tokenów za pomocą precompile ICS-20. ICS-20 to standard w ramach IBC służący do przesyłania fungible tokenów, czyli tokenów wymiennych tego samego rodzaju. Otrzymane aktywa IBC mogą też być dostępne dla kontraktów EVM jako dynamiczne precompiles ERC-20 za pośrednictwem modułu ERC-20.

Jaką rolę pełni IBC w Cosmos EVM?

IBC to warstwa protokołu, dzięki której łańcuch Cosmos EVM może wymieniać wiadomości i tokeny z innymi blockchainami zgodnymi z IBC. Dla deweloperów Solidity ważnym narzędziem jest tutaj precompile ICS-20.

Kontrakt może dzięki niej rozpocząć transfer cross-chain i podać między innymi port źródłowy, kanał, denominację tokena, kwotę, odbiorcę oraz timeout. Timeout to ostateczny czas lub wysokość bloku, w której packet musi zostać przetworzony.

Precompile ICS-20 ma stały adres: 0x0000000000000000000000000000000000000802. Ten adres działa tylko wtedy, gdy dany łańcuch włączył tę precompile.

Cosmos EVM dodaje też callbacki dla transferów ICS-20. Callback to funkcja, która może zostać wywołana automatycznie, gdy nastąpi określony etap:

  • Na łańcuchu docelowym może działać onRecvPacket, gdy tylko packet zostanie odebrany.
  • Na łańcuchu źródłowym onAcknowledgePacket może reagować na potwierdzenie.
  • Na łańcuchu źródłowym onTimeoutPacket może reagować, jeśli transfer nie zostanie zakończony na czas.

Dzięki temu smart kontrakt może po otrzymaniu tokenów wykonać dodatkową logikę, na przykład swap na DEX albo dodanie płynności. Transfer tokenów i callback są wykonywane razem w ramach przetwarzania tego packetu. Zatem albo oba się powiodą, albo oba się nie powiodą.

Istnieje jednak praktyczne ograniczenie: w przypadku transferu IBC odbiorca musi obecnie używać adresu Bech32. Heksadecymalny adres 0x jako odbiorca nie jest jeszcze w tym celu obsługiwany. Adres nadawcy jest jednak automatycznie konwertowany z formatu heksadecymalnego na Bech32.

Callbacki czynią aplikacje cross-chain bardziej zaawansowanymi, ale też bardziej złożonymi. Deweloperzy muszą dobrze obsługiwać timeouty, potwierdzenia, dane memo, limity gas i obsługę błędów.

Do czego można używać Cosmos EVM?

Cosmos EVM jest używany przede wszystkim do budowy lub rozbudowy łańcucha Cosmos SDK, na którym mogą działać istniejące smart kontrakty Solidity i narzędzia Ethereum. Jest to przydatne dla zespołów, które chcą połączyć zgodność z Ethereum z elastycznością własnego L1.

Twórca może sam zdecydować, jak będzie wyglądał taki łańcuch. Na przykład, którzy walidatorzy biorą udział, jak działa governance, jakie obowiązują opłaty, kto może wdrażać kontrakty i które moduły Cosmos SDK są dostępne.

Możliwe zastosowania obejmują między innymi:

  • Budowanie aplikacji EVM: istniejące smart kontrakty Solidity mogą działać na łańcuchu.
  • Korzystanie z natywnych funkcji Cosmos: smart kontrakty mogą przez precompiles wywoływać staking, delegowanie, governance i natywne interakcje z tokenami.
  • Wykonywanie przepływów tokenów IBC: kontrakty mogą wysyłać tokeny do innego blockchaina zgodnego z IBC.
  • Automatyzację logiki cross-chain: callbacki mogą reagować na odbiór, potwierdzenie lub timeout transferu.
  • Zapewnienie dostępu podobnego do ERC-20: natywne tokeny Cosmos i przychodzące aktywa IBC mogą być używane przez kontrakty EVM za pośrednictwem modułu ERC-20.
  • Ograniczanie dostępu: łańcuch może ustawić permissioned EVM, w którym tylko określone adresy mogą wdrażać kontrakty lub wywoływać je.

Te możliwości nie są automatycznie dostępne wszędzie. To, czy aplikacja może na przykład korzystać z IBC, stakingu lub governance z poziomu smart kontraktu, zależy od modułów i precompiles aktywnych na danym łańcuchu.

Czym Cosmos EVM różni się od innych sieci EVM?

Cosmos EVM różni się od innych sieci EVM tym, że nie jest osobną siecią, lecz stosem oprogramowania dla samodzielnych łańcuchów Cosmos SDK. Nie porównuje się go więc jeden do jednego z Ethereum, konkretnym EVM L1 ani Layer 2.

Zgodność z Ethereum jest jednak ważnym elementem. Deweloperzy mogą korzystać z narzędzi Ethereum, JSON-RPC i smart kontraktów Solidity. Jednocześnie infrastruktura pod spodem działa inaczej: łańcuch Cosmos EVM używa konsensusu CometBFT i własnego zestawu walidatorów.

W przypadku CometBFT finalność może nastąpić po jednym zatwierdzonym bloku, zwykle w około 1 do 2 sekund. Finalność oznacza po prostu, że po takim potwierdzeniu blok nie powinien już zostać cofnięty. Wymaga to zatwierdzenia bloku przez co najmniej dwie trzecie stake.

Cosmos EVM został zaprojektowany jako suwerenne L1. Taki łańcuch sam zarządza więc zestawem walidatorów, governance i ekonomią opłat. Różni się to od rollupów, które w części swojego projektu i bezpieczeństwa opierają się na warstwie settlement.

Również ekonomia opłat może różnić się od Ethereum. Cosmos EVM używa EIP-1559, ale base fee trafia do walidatorów i delegatorów zamiast być spalana. Łańcuch może też wyłączyć base fee albo ustawić minimalną cenę gas.

Dodatkowo Cosmos EVM wprowadza możliwości, których nie znajdziesz standardowo w każdej sieci EVM: dostęp do modułów Cosmos SDK przez precompiles oraz interoperacyjność opartą na IBC. Nawet między dwoma łańcuchami Cosmos EVM mogą jednak występować duże różnice. Każdy łańcuch może dodawać własne precompiles i decydować, które funkcje są aktywne.

Nie wszystkie elementy specyficzne dla Ethereum lub rollupów są dostępne. Na przykład transakcje blob z EIP-4844 i PREVRANDAO z EIP-4399 nie są obsługiwane.

Jakie są zalety i ograniczenia Cosmos EVM?

Cosmos EVM łączy znane narzędzia Ethereum z elastycznością samodzielnego łańcucha Cosmos SDK. Daje to interesujące korzyści, ale trzeba też dobrze przyjrzeć się konkretnej sieci, na której budujesz lub z której korzystasz.

Zalety:

  • Znane środowisko EVM: można używać smart kontraktów Solidity i wielu narzędzi Ethereum.
  • Szybka finalność: łańcuchy CometBFT mogą oferować szybkie czasy bloków i finalność po zatwierdzonym bloku.
  • Dostęp do funkcji Cosmos: precompiles mogą pozwalać smart kontraktom współpracować ze stakingiem, governance, natywnymi aktywami bankowymi i transferami IBC.
  • Duża swoboda konfiguracji: twórcy wybierają moduły, aktywne precompiles, parametry opłat i polityki dostępu.
  • Możliwości cross-chain: IBC i callbacki umożliwiają bardziej złożone przepływy tokenów między zgodnymi blockchainami.

Ograniczenia:

  • Brak jednolitego doświadczenia: zestawy walidatorów, endpointy RPC, kanały IBC, dostępne tokeny, precompiles i parametry różnią się w zależności od łańcucha.
  • Nie każda funkcja EVM jest dostępna: transakcje blob z EIP-4844 i PREVRANDAO z EIP-4399 nie są obsługiwane.
  • Ograniczenie adresu IBC: transfery ICS-20 obecnie wymagają adresu odbiorcy Bech32, a nie adresu heksadecymalnego.
  • Dodatkowa technika przy innych decimalach: token gazowy z 18 decimalami to najprostsza i zalecana droga. Istniejący łańcuch z inną liczbą decimali wymaga x/precisebank, co komplikuje integrację.
  • Oprogramowanie nadal się rozwija: wydania v0.x mogą przed wersją v1 zawierać breaking changes.

Ważne jest też to, że audyt ani zgodność z EVM nie są automatyczną gwarancją bezpieczeństwa każdej implementacji. Konkretna konfiguracja, smart kontrakty, kanały IBC i integracje cross-chain mogą mieć własne ryzyka.

Podsumowanie

Cosmos EVM to elastyczna warstwa budowlana dla deweloperów, którzy chcą połączyć własny łańcuch Cosmos SDK ze znanym środowiskiem Ethereum. Nie jest to więc osobny blockchain ani token, lecz oprogramowanie, dzięki któremu smart kontrakty Solidity, narzędzia Ethereum i JSON-RPC mogą działać na samodzielnym łańcuchu Cosmos.

Największa siła tego rozwiązania tkwi w połączeniu: zgodność z EVM z jednej strony oraz moduły Cosmos SDK, własny zestaw walidatorów i IBC z drugiej. Dzięki temu smart kontrakty mogą na przykład korzystać z natywnych funkcji tokenów lub transferów cross-chain.

Jednocześnie Cosmos EVM nie jest wszędzie dokładnie taki sam. Funkcje, opłaty, połączenia IBC, precompiles i ustawienia techniczne różnią się w zależności od łańcucha. Dlatego użytkownicy i deweloperzy powinni zawsze patrzeć na konkretną implementację, a nie tylko na etykietę Cosmos EVM.

O Finst

Finst to wiodąca platforma kryptowalutowa w Holandii, oferująca bardzo niskie opłaty transakcyjne, bezpieczeństwo klasy instytucjonalnej oraz szeroki zakres usług crypto, takich jak trading, przechowywanie aktywów, staking oraz wpłaty i wypłaty fiat. Finst, założona przez byłych kluczowych członków zespołu DEGIRO, jest autoryzowana jako dostawca usług w zakresie kryptoaktywów na mocy MiCAR przez Holenderski Urząd ds. Rynków Finansowych (AFM) i obsługuje klientów detalicznych oraz instytucjonalnych w 30 krajach europejskich.

Platforma krypto dla wszystkich inwestorów

Niezależnie od tego, czy aktywnie handlujesz, czy inwestujesz długoterminowo, Finst pomaga Ci rozwijać portfel krypto z pewnością i spokojem.

Zarejestruj się