31 października 2023 r. sieć TON (dawniej Telegram Open Network) ustanowiła nowy rekord świata, osiągając zdumiewający szczyt 104 715 transakcji na sekundę w pierwszym teście publicznego występu na żywo, realizując łącznie 107 652 545 transakcji w 25 minut. Zweryfikowana i potwierdzona przez Certik, ta wydajność sprawia, że ​​TON jest najszybszym i najbardziej skalowalnym blockchainem na świecie, przewyższającym prędkość przetwarzania wszystkich blockchainów L1 i dobrze znanych scentralizowanych sieci płatniczych, takich jak PayPal, Visa i Mastercard.

TON to bez wątpienia projekt przyciągający wzrok. W tym artykule dokonamy dogłębnej analizy białej księgi TON, ujawniając jej unikalne cechy techniczne i innowacje oraz wyjaśniając, dlaczego TON może stać się najszybszym blockchainem na świecie.

Problem z ekspansją

Skalowalność zawsze była ogromnym problemem w trakcie rozwoju technologii blockchain. Plan rozbudowy blockchainu polega głównie na poprawie przepustowości systemu i obniżeniu kosztów transakcyjnych, tak aby sieć blockchain mogła obsłużyć więcej transakcji i lepiej dostosować się do zastosowań o dużej skali. Chociaż różne sieci publiczne w dalszym ciągu wypróbowują nowe projekty konsensusu i architektury, obecne wyniki są nadal niezadowalające i stały się wąskim gardłem dla blockchain w przejściu do zastosowań na dużą skalę, co utrudnia realizację naszej wizji TG zakładającej miliard użytkowników. Obecne rozwiązania głównego nurtu ekspansji można podzielić na następujące kategorie:

Sharding: Podziel sieć na wiele mniejszych części, każdy fragment może przetwarzać transakcje i inteligentne kontrakty równolegle, znacznie zwiększając w ten sposób przepustowość sieci. Jednak sharding wiąże się z potencjalnymi problemami związanymi z bezpieczeństwem, ponieważ każdy fragment może być mniej bezpieczny niż cała sieć. Ponadto komunikacja między fragmentami stanowi wyzwanie techniczne. Reprezentatywne przykłady: dawny protokół Ethereum 2.0 i NEAR Nightshade.

Sidechains: Sidechain to łańcuch bloków, który działa niezależnie od łańcucha głównego. Może mieć własny mechanizm konsensusu i parametry bloków. Za pośrednictwem łańcuchów bocznych użytkownicy mogą przenosić zasoby między dwoma łańcuchami, odciążając w ten sposób obciążenie głównego łańcucha. Reprezentatywny przykład: wielokąt

Rozwiązania warstwy 2: budując kolejną warstwę struktury na szczycie głównego łańcucha, L2 może zapewnić krótszy czas potwierdzania transakcji i niższe opłaty transakcyjne. Weźmy na przykład bardziej znany L2, Optimism i Arbitrum: oba są rozwiązaniami rozszerzającymi zaprojektowanymi specjalnie dla Ethereum. Dlatego część architektury Optymizmu i Arbitrum zlokalizowana jest w Warstwie 1. W miarę aktualizacji Ethereum limit transakcji na sekundę (TPS) wzrasta z pierwotnych 2-4 tys. do około 2 tys.

zkSync 2.0: W porównaniu z setkami limitów TPS w zkSync 1.0, zkSync 2.0 zapewnia znaczące ulepszenia. Zespół zkSync twierdzi, że jego wersja 2.0 może osiągnąć górną granicę 100 000 TPS, jednak większość instytucji przewiduje, że jego rzeczywista górna granica może wynosić 1-20 000. Starknet: Po ukończeniu aktualizacji Quantum Leap w czerwcu jego TPS przekracza obecnie 100 TPS.

Solana: Solana wykorzystuje innowacyjny algorytm konsensusu zwany Proof of History (PoH) jako podstawę swojego planu ekspansji. Chociaż Solana twierdzi, że jej TPS może osiągnąć 65 000, w rzeczywistości większość TPS jest wykorzystywana do komunikacji między węzłami. Rzeczywisty wolumen transakcji może być ograniczony jedynie do 6-8 tys. TPS. Co więcej, ze względu na konstrukcję scentralizowanego mechanizmu konsensusu, Solana doświadczyła wielu przestojów w obliczu dużej liczby żądań, na przykład podczas bicia monet NFT. Ponadto Solana nie wdrożyła jeszcze pomyślnie rotacji węzłów centralnych.

Projektanci blockchainu TON wywodzą się z założyciela i głównego zespołu Telegramu. Jako jedna z najpopularniejszych platform społecznościowych na świecie, Telegram ma prawie 900 milionów aktywnych użytkowników miesięcznie. Zapewniając wysoki poziom bezpieczeństwa i prywatności, zapewnia także stabilną i płynną obsługę dziesiątek miliardów wiadomości oprogramowanie każdego dnia. Koncepcja web3 stała się stosunkowo dobrze znana, ale faktyczni użytkownicy kryptowalut nadal stanowią mniejszość, a większość ludzi w celu uzyskania dostępu do tokenów korzysta ze scentralizowanych giełd. Metamask, najpopularniejszy na świecie zdecentralizowany portfel kryptowalut, ma obecnie zaledwie 30 milionów aktywnych użytkowników miesięcznie. Koncepcja projektowa TON od początku opierała się na obsłudze miliardów użytkowników, a nie tylko kilku maniaków web3.

paradygmat nieskończonego fragmentowania

Sharding to koncepcja wywodząca się z projektowania baz danych. Odnosi się do podziału dużego logicznego zbioru danych, a następnie rozesłania go do wielu baz danych, które nie są ze sobą współdzielone. Te bazy danych mogą być dystrybuowane na wielu serwerach. Mówiąc najprościej, sharding zapewnia możliwość skalowania w poziomie, umożliwiając dzielenie danych na niezależne części, które można przetwarzać równolegle.

TON nie jest pierwszym projektem, który wprowadza technologię shardingu do blockchaina. Na przykład Ethereum 2.0 ogłosił kiedyś stałą liczbę 64 shardów, ale potem zrezygnował, ponieważ było to zbyt trudne, podczas gdy protokół Night Shadow firmy NEAR planuje osiągnąć tam 100 shardingów w przyszłym roku obecnie są 4 odłamki.

W odróżnieniu od tradycyjnych metod shardingu, TON przyjmuje strategię nieskończonego shardingu.

Jednak podejście TON jest uważane za zaawansowane nie dlatego, że ma więcej fragmentów, ale z powodu dwóch unikalnych cech:

  • Liczba shardów nie jest stała: TON obsługuje rosnącą liczbę shardów w zależności od potrzeb biznesowych, aż do maksymalnie 2^60 łańcuchów roboczych, co stanowi prawie nieograniczoną liczbę.

  • Liczba fragmentów jest elastyczna: TON może automatycznie dzielić fragmenty, gdy obciążenie systemu jest duże i łączyć je, gdy obciążenie spada. Jest to bardzo skuteczna strategia radzenia sobie z potrzebami dynamicznego skalowania.

Obecnie TON składa się z dwóch łańcuchów roboczych, głównego łańcucha (Masterchain) do synchronizacji i zarządzania oraz łańcucha roboczego (Workchain) dla inteligentnych kontraktów. Pod łańcuchem roboczym znajduje się łańcuch fragmentów i dolny łańcuch kont wirtualnych (łańcuch kont)

Łańcuch roboczy można podzielić na N fragmentów (od 1 do 256 fragmentów). Każdy fragment ma swój własny zestaw walidatorów. Zespół łańcucha roboczego jest odpowiedzialny za wykonywanie transakcji we własnym fragmencie. Jednocześnie stale pobiera bloki ze wszystkich pozostałych fragmentów swojego działającego łańcucha. Ogólnie rzecz ujmując, blockchain to seria bloków rejestrujących zmiany jego stanu. W przypadku łańcuchów bloków POS walidatorzy najpierw uzgadniają, w jaki sposób chcą zmienić stan łańcucha bloków, kompilując blok zawierający listę zmian. Następnie głosuje się za blokiem i jeśli zbierze wystarczającą liczbę głosów, zastosują go do stanu blockchain i przejdą do następnego bloku.

Przepustowość wątku blokowego jest bardzo ograniczona, ponieważ walidatorzy muszą sprawdzić wszystkie transakcje w bloku przed wyrażeniem zgody na jego akceptację. Zatem w TON jest wiele wątków, można je po prostu nazwać minimikro-blockchainami. Istnieją obok siebie i każdy ma swój własny zestaw walidatorów.

łańcuch główny

Główny łańcuch jest głównym wątkiem blokowym w TON. Służy do synchronizacji wszystkich pozostałych bloków i ponownego obliczenia zestawu walidatorów. Kiedy wszystkie wątki uzgodnią nowy blok, podpisują go i rejestrują w głównym łańcuchu. Walidatorzy łańcucha głównego nie weryfikują jednak ważności bloku, sprawdzają jedynie, czy został on podpisany przez odpowiedni walidator. Tak wiele wątków może współistnieć równolegle. Kontrakty z różnych wątków komunikują się ze sobą poprzez wysyłanie wiadomości.

łańcuch pracy

Łańcuch pracy to niezależna przestrzeń adresowa, która może działać zgodnie ze swoimi regułami. Na przykład mogą mieć różne maszyny wirtualne lub wydłużać czas publikowania bloków z wysokimi limitami gazu. Co najważniejsze, łańcuchy robocze muszą mieć ten sam format kolejki komunikatów, aby mogły wymieniać komunikaty. Oznacza to również, że wszystkie łańcuchy robocze muszą mieć w przybliżeniu takie same gwarancje bezpieczeństwa. Ponieważ mogą wymieniać wiadomości, wiadomości te zawierają tokeny sieciowe. Aktywne są teraz dwa łańcuchy robocze: łańcuch główny i pierwszy łańcuch roboczy przetwarzania. Łańcuch roboczy jest określony przez prefiks adresu: -1:ax...1s2 - adres konta w łańcuchu głównym. -1 to przedrostek głównego łańcucha.

0:zx...123 - Adres konta w pierwszym łańcuchu zleceń. 0 - jest przedrostkiem pierwszego łańcucha zadań przetwarzania.

łańcuch odłamków

Wątki przetwarzające, czyli łańcuchy fragmentów, to niezależne wątki blokowe w łańcuchu roboczym przetwarzania. Domyślnie łańcuch roboczy 0 ma tylko jeden wątek i jeden łańcuch. Walidatorzy tego wątku akceptują wiadomości zewnętrzne i przetwarzają wiadomości wewnętrzne wysłane przez nich samych lub z innych łańcuchów pracowników. Jeśli zaistnieje sytuacja, w której wątek zostanie przeciążony podczas ostatnich N bloków, wątek zostanie podzielony: jeden wątek zostanie podzielony na dwa, przy czym transakcje będą przebiegać równolegle.

Konta o adresach zaczynających się od 0:00.. - 0:88.. znajdują się teraz w wątku 1, a konta 0:88.. - 0:FF.. znajdują się w wątku 2. Ponieważ wszystkie inteligentne kontrakty komunikują się ze sobą asynchronicznie, nie ma żadnych usterek, a przepustowość jest trzykrotnie większa. Kiedy obciążenie spada, wątki są po pewnym czasie ponownie łączone. Jeśli obciążenie będzie nadal rosło, dwa wątki będą mogły zostać ponownie rozdzielone i tak dalej. Główny łańcuszek ma tylko jedną nić.

Blok w TON to coś więcej niż tylko lista transakcji, które należy wykonać, aby zaimplementować zmianę stanu. Zamiast tego blok to:

Wykonaj listę komunikatów transakcji, usuwając je z kolejki przychodzącej. Nowe wiadomości trafiają do kolejki wychodzącej po przetworzeniu wiadomości, a następnie przetwarzanie wiadomości powoduje zmianę stanu inteligentnego kontraktu. Oznacza to, że aby walidator fragmentu X mógł utrzymać bieżący stan fragmentu Y, nie musi wykonywać wszystkich transakcji w bloku fragmentu Y. Po prostu pobiera blok i podsumowuje zmiany, które zaszły. Występuje w kolejce komunikatów i stanie inteligentnego kontraktu.

Zasadnicza zmiana świata blockchain nie może obejść się bez kosztów. Aby skorzystać z tego radykalnego podejścia, twórcy inteligentnych kontraktów TON muszą inaczej projektować swoje kontrakty. Podstawową jednostką atomową blockchainu TON jest inteligentny kontrakt. Inteligentne kontrakty mają adresy, kody i jednostki danych (stan trwały). Takie jednostki nazywane są jednostkami atomowymi, ponieważ inteligentny kontrakt zawsze ma atomowo zsynchronizowany dostęp do całego swojego trwałego stanu.

Routing sieciowy Hypercube

TON stworzył unikalny inteligentny mechanizm routingu, aby zapewnić, że transakcje pomiędzy dowolnymi dwoma łańcuchami bloków mogą być zawsze szybko przetwarzane. Niezależnie od wielkości systemu, czas wymagany do przesłania informacji między łańcuchami bloków TON rośnie logarytmicznie wraz z liczbą łańcuchów sposobów wzrasta, więc nawet skalowanie do milionów łańcuchów pozwala im komunikować się z największą możliwą szybkością.

W łańcuchu bloków TON Instant Hypercube Routing i Slow Routing to dwa mechanizmy routingu używane do obsługi transakcji między łańcuchami.

Instant Hypercube Routing: Pomysł zaproponowany przez TON w celu przyspieszenia routingu komunikatów, umożliwiając realizację transakcji między łańcuchami w bardzo krótkim czasie. W tradycyjnym procesie powolnego routingu kostki wiadomość jest kierowana przez łańcuch fragmentów wzdłuż sieci hipersześcianu do docelowego łańcucha fragmentów. Jednakże podczas procesu przesyłania wiadomości weryfikator (walidator), do którego należy docelowy łańcuch fragmentów wiadomości, może zdecydować o przetworzeniu wiadomości z wyprzedzeniem i dodaniu jej do bloku, a następnie dostarczyć dowód Merkel (pokwitowanie) i wysłać potwierdzenie odbioru, aby zniszczyć przesyłane wiadomości. Umożliwia realizację transakcji międzyłańcuchowych w niezwykle krótkim czasie. Usługa Express Routing umożliwia efektywną interakcję między łańcuchami poprzez budowanie struktury routingu w postaci wielowymiarowej kostki (hipersześcianu). W tej strukturze każdy łańcuch jest odwzorowywany na wierzchołku sześcianu, a odległość między łańcuchami wyrażana jest jako liczba przeskoków między wierzchołkami. Dzięki tej metodzie transakcje można szybko kierować najkrótszą ścieżką, umożliwiając wydajne interakcje między łańcuchami. Szybki routing może zakończyć transakcje między łańcuchami w ciągu kilku sekund, bez czekania na potwierdzenia blokowe.

Powolny routing: Powolny routing to stosunkowo tradycyjna metoda przetwarzania transakcji między łańcuchami, która jest wdrażana poprzez stopniowe przenoszenie transakcji z łańcucha źródłowego do łańcucha docelowego. W tym podejściu transakcje są najpierw pakowane w blok w łańcuchu źródłowym, a następnie przesyłane do łańcucha docelowego za pośrednictwem przekaźnika. Walidator łańcucha docelowego weryfikuje ważność transakcji, a następnie pakuje ją do bloku w łańcuchu docelowym. Zaletą powolnego routingu w porównaniu z szybkim routingiem jest to, że zapewnia większe bezpieczeństwo i decentralizację, ponieważ transakcje między łańcuchami muszą przejść pełny proces potwierdzenia bloku. Podobnie jak w przypadku sieci TCP/IP, wysyłanie do miejsca docelowego za pośrednictwem docelowego adresu IP może zapewnić niezawodną propagację wiadomości w łańcuchu docelowym w odpowiedniej kolejności. W przypadku sieci hipersześcianów z łańcuchem odłamków o rozmiarze N, pośrednie łańcuchy odłamków, które muszą przejść przez przeskok, = log16(N)-1. Dlatego do obsługi milionów łańcuchów fragmentów potrzebne są tylko 4 węzły routingu (pośrednie łańcuchy fragmentów).

Dlaczego to jest tak zaprojektowane?

Dystrybucja wymaga węzłów weryfikacji. Jeśli system jest bardzo duży i ma dziesiątki tysięcy węzłów, obciążenie będzie zbyt duże i nie będzie można go rozbudowywać. Po podzieleniu na fragmenty każdy fragment ma zestaw, fragment 0, fragment 1... i należy zapewnić komunikację między fragmentami. Komunikacja może odbywać się pomiędzy fragmentami. Oznacza to, że pomiędzy fragmentami musi istnieć mechanizm routingu. Połączenia tworzą trasę pomijaną przez niektóre węzły pośrednie. Za każdym razem, gdy informacja przechodzi daną trasą, jest to równoznaczne ze zwiększeniem czasu transmisji o jeden czas bloku.

Wraz ze wzrostem całkowitej liczby łańcuchów shard będzie to wymagało dużej mocy obliczeniowej i przepustowości sieci, ograniczając w ten sposób skalowalność systemu. Dlatego nie jest możliwe bezpośrednie przekazywanie komunikatów z jednego fragmentu do wszystkich innych fragmentów. Zamiast tego każdy fragment jest „połączony” tylko z fragmentami, które różnią się jedną cyfrą szesnastkową ich identyfikatora fragmentu (w, s). W ten sposób wszystkie łańcuchy fragmentów tworzą wykres „hipersześcianu”, a komunikaty są przekazywane wzdłuż krawędzi tego hipersześcianu.

Jeżeli wiadomość zostanie wysłana do innego fragmentu niż bieżący, szesnastkowa liczba identyfikatora bieżącego fragmentu (wybrana deterministycznie) zostanie zastąpiona odpowiednim numerem fragmentu docelowego, a powstały identyfikator będzie służył jako przybliżony cel, stając się Odbiorca przekazywanej wiadomości.

Główną zaletą routingu hipersześcianu jest warunek ważności bloku. Walidatorzy tworzący bloki łańcucha fragmentów muszą zbierać i przetwarzać komunikaty w kolejkach wyjściowych „sąsiednich” łańcuchów fragmentów, w przeciwnym razie stracą swój udział. W ten sposób można oczekiwać, że każda wiadomość prędzej czy później dotrze do miejsca docelowego; nie zaginie ona w transporcie ani nie zostanie zduplikowana.

Routing Hypercube wprowadza dodatkowe opóźnienia i koszty, ponieważ komunikaty muszą być przekazywane przez kilka pośrednich łańcuchów fragmentów. Jednakże liczba tych pośrednich łańcuchów odłamków rośnie bardzo powoli, w odniesieniu do logarytmu całkowitej liczby łańcuchów odłamków N, log N.

Komunikacja asynchroniczna

Inteligentne kontrakty w TON wdrażają komunikację asynchroniczną. Inteligentne kontrakty w TON można porównać do mikrousług internetowych. Każda mikrousługa ma tylko atomowy synchroniczny dostęp do swoich danych lokalnych. Komunikacja między dwoma mikrousługami polega na wysyłaniu komunikatów asynchronicznych przez sieć.

W architekturze systemu większe systemy często wymagają tworzenia mikrousług. To rozproszone podejście wymaga pewnych kompromisów, ale może przynieść korzyści użytkownikom. Nowoczesne zarządzanie systemami opiera się na sekwencerach takich jak Kubernetes, które pobierają zestaw skonteneryzowanych mikrousług i automatycznie uruchamiają nowe instancje na żądanie (autoskalowanie) oraz efektywnie dzielą je między maszynami.

Używając analogii do Kubernetesa (wielkoskalowego systemu zarządzania klastrami), dokładnie tak robi TON. W miarę wzrostu obciążenia konkretnego łańcucha odłamków zostaje on podzielony na dwie części. Ponieważ inteligentne kontrakty mają charakter atomowy, nigdy nie można ich podzielić na pół. Oznacza to, że niektóre inteligentne kontrakty, które kiedyś znajdowały się w tym samym łańcuchu fragmentów, mogą pewnego dnia znaleźć się w innym łańcuchu fragmentów.

Maszyna wirtualna TON (TVM) stosuje koncepcję rozproszonych mikrousług w ogólnej architekturze Ethereum EVM.

Decentralizacja państwa

Jest to najbardziej złożony i wymagający mechanizm shardingu w dziedzinie shardingu. Cała baza danych jest oddzielona i umieszczona na różnych fragmentach. Każdy fragment przechowuje wszystkie dane w swoim własnym fragmencie, a nie w stanie całego łańcucha bloków.

W technologii TON blockchain sharding wszystkie usługi są wdrażane w formie inteligentnych kontraktów, a dane o statusie inteligentnych kontraktów są zapisywane wyłącznie w odpowiedniej sieci shardingu w celu osiągnięcia shardingu stanu.

Co więcej, w TON kontrakty wdrażają unikalną w branży ścieżkę wdrożenia. Każdy użytkownik może zarządzać statusem tokena w swojej własnej umowie, realnie osiągając decentralizację ze statusu blockchain. Szczegółowo badam zasady tego projektu na podstawie przypadków.

Najpierw musisz zrozumieć umowę portfela i umowę portfela Jetton. Umowa portfela to inteligentna umowa specyficzna dla użytkownika, używana do zarządzania tokenami użytkowników w łańcuchu bloków TON. Umowa dotycząca portfela Jetton (ros. klejnot) to specjalna umowa dotycząca portfela, używana specjalnie do zarządzania przepustkami Jetton użytkowników. Tokenów tych można używać do płacenia opłat sieciowych i wykonywania inteligentnych kontraktów. Każdy użytkownik ma własną umowę dotyczącą portfela i umowę dotyczącą portfela Jetton. Umowy te działają jak cyfrowe portfele użytkowników do przechowywania tokenów i zarządzania nimi. Jednocześnie umowy te mogą również wchodzić w interakcje z umowami innych użytkowników, aby osiągnąć zdecentralizowany transfer aktywów i transakcje.

W tej chwili zakłada się, że użytkownik A i użytkownik B mają własne umowy dotyczące Portfela. Użytkownik A chce przekazać pewną ilość tokenów Użytkownikowi B. W takim przypadku umowa Portfela użytkownika A będzie wchodzić w interakcję z umową Portfela Użytkownika B w celu realizacji transferu tokenów. Cały proces nie musi opierać się na scentralizowanej umowie, ale jest realizowany poprzez dwie zdecentralizowane umowy.

Użytkownicy blockchainu TON mają własne umowy dotyczące zarządzania statusem swoich aktywów, co oznacza, że ​​nie ma jednej scentralizowanej umowy, która ponosiłaby ryzyko zarządzania wszystkimi aktywami. Poprawia to decentralizację systemu i zmniejsza ryzyko wystąpienia pojedynczych punktów awarii. Stanem zasobów wszystkich użytkowników zarządza umowa na wyłączność, a osoby atakujące nie mogą wpłynąć na cały system, atakując pojedynczą scentralizowaną umowę. Transakcje dotyczące aktywów między użytkownikami mogą być również automatycznie realizowane za pośrednictwem inteligentnych kontraktów, co pozwala uniknąć ryzyka działań ludzkich. Możesz także dostosować swoją własną umowę dotyczącą portfela i umowę dotyczącą portfela Jetton zgodnie ze swoimi potrzebami, aby uzyskać więcej funkcji i scenariuszy zastosowań. Zapewnia to użytkownikom większą elastyczność i autonomię. Każdy zarządza stanem majątku w swoich własnych kontraktach, poprawia się skalowalność systemu. Wraz ze wzrostem liczby użytkowników liczba umów będzie odpowiednio rosła, ale nie spowoduje to nadmiernego obciążenia całego systemu, ponieważ każda umowa działa niezależnie.

Powyżej znajduje się moja analiza skalowalności blockchainu TON i koncepcja architektury technicznej zawarta w białej księdze. Chciałbym podziękować dr Awesome Doge za redakcję pierwszej wersji roboczej. Dziękuję rosyjskim i ukraińskim zespołom programistów za ich nieustanne wysiłki, a na koniec dziękuję panu Nikołajowi Durovowi, założycielowi Telegramu, za jego wspaniałe projekty sprzed wielu lat, a wszystko to na chwałę ludzkiego umysłu.