November 25, 2020

Криптовалюта GRAM на блокчейне Telegram Open Network (TON)

Криптовалюта GRAM на блокчейне Telegram Open Network (TON)

Сергій Прилуцький, відомий блокчейн-експерт, керівник відділу досліджень компанії MixBytes і проекту SmartZ під час проведення Telegram Eventing поділився докладною інформацією про проект Павла Дурова TON.

Дані були отримані після вивчення закритої інформації про поточний стан розробки TON і будуть цікаві не тільки вузьким фахівцям, а й широкому колу потенційних інвесторів.

загальнодоступна інформація

Фінансування на розробку проекту TON булозібрано в ході проведення двох раундів закритого ICO. Завдяки цьому вдалося зібрати $ 1.7 млрд інвестицій, мінімальний розмір частки становив $ 20 млн, участь в ICO взяли близько 100 інвесторів, серед яких був і Роман Абрамович.

Криптовалюта GRAM на блокчейне Telegram Open Network (TON)

</ P>

Весь обсяг внутрішньої криптовалюта проекту буде випущений відразу і складе 5 млрд коинов GRAM. Після запуску проекту токени ICO у інвесторів будуть обмінені на коін в співвідношенні 1 до 1.

Технічні особливості блокчейна TON

У мережі TON консенсус забезпечується спеціальнимивузлами-валідаторами, які отримують комісію за свої послуги. Щось подібне реалізовано в протоколі Ripple. Достовірність транзакції підтверджується по BFT-алгоритму (завдання візантійських генералів).

Криптовалюта GRAM на блокчейне Telegram Open Network (TON)

</ P>

Мікроплатежі не відображаються відразу в блокчейне,видно тільки їх хеш. Щоб забезпечити валідність мікротранзакцій кожен валідатор повинен мати на рахунку деяку заставну суму в Коін GRAM, яка надається номінаторами.

Валідатор не може провести більше транзакцій,ніж він здатний забезпечити заставними монетами. У разі проведення помилкового платежу валідатор і номінатор з цієї суми переводять коін на рахунки інших валідаторів для покриття їх витрат на забезпечення проведення транзакції.

Кожен вузол мережі відповідає за свою частинублокчейна, яка ділиться на невеликі шматочки - Шарден (shardes). При істотному збільшенні навантаження на мережу, частина Шардена може бути передана сусіднім вузлам мережі.

Цю ідею розробники TON назвали «Infinite Sharding». Подібним чином блокчейна дозволяє не тільки легко розділяти Шарден, але і автоматично відновлювати пошкоджені ділянки.

Інформація, отримана в ході дослідження екосистеми TON

Сергієм Прилуцьким було проведено глибокедослідження проекту TON, під час якого спливли цікаві особливості нового проекту. Нижче ми пропонуємо ознайомитися з детальною інформацією про структуру й особливості блокчейн-платформи Telegram Open Network (TON).

Ідея Infinite Sharding

Головна концепція платформи TON - це повідомлення. Користувач може відправити його ззовні блокчейна на адресу будь-якого облікового запису системи. Подібна процедура викликає створення повідомлення іншим акаунтів мережі. Причому стан окремого аккаунта можна уявити собі у вигляді власного блокчейна (accountchain). Він за своєю суттю є сховищем вхідних і вихідних повідомлень.

Безліч акаунтів-Шарден (shardes) об'єднуютьсяв Shardchain, блокчейн який обслуговується вузлом-валідатором. Внутрішній склад такого шардчейна може змінюватися динамічно, в залежності від навантаження на конкретний вузол мережі.

Безліч шардчейнов об'єднуються в воркчейн(Workchain), ще одну блокчейн-структуру, за рахунок однакового префікса в своєму адресі. У свою чергу всі воркчейни утворюють один мастерчейн (Masterchain), який і є загальним блокчейном для мережі TON. Зупинимося детальніше на цих структурах.

Masterchain

Мастерчейн являє собою основну ланцюжок,яка встановлює правила для всіх ланцюжків блокчейнов нижчого рівня. Її роль - контроль глобального стану всієї Telegram Open Network і управління нею.

Особливість мастерчейна в тому, що в ній немаєрозгалуження і злиття окремих частин, тобто в цьому вона нагадує класичний блокчейн. Кожен блок мастерчейна містить хеш-кодування останніх шард-блоків, організованих в бінарне дерево, і зберігає стан системних смарт-контрактів, а також їх код. Контроль за PoS, дані про валідаторах, учасників мережі - все це зберігається в мастерчейне. Однак точної інформації з цього приводу знайти не вдалося, а та, що є - ненадійна і не остаточна.

Управління мастерчейном засноване на системних смарт-контрактах, які містять такі глобальні параметри:

  • Загальна кількість і інші характеристики коін GRAM.
  • Список вузлів-валідаторів, параметри їх частки, адреса контракту за яким відбувається щомісячний вибір нових валідаторів.
  • Параметри TVM (TON Virtual Machine), його версія, мінімальна і максимальна ціна gas - по аналогії з Ethereum.
  • Смарт-контракти додаткових токенов і їх стан.

Важливо, що всі зміни глобальних параметрів TON приймаються консенсусів більше 2/3 всіх валідаторів згідно BFT-алгоритму.

Workchain

Воркчейн - це умовний блокчейн, який об'єднує шардчейни однакового типу. Його ідентифікатор є префіксом для id-номера Шардена, він необхідний для точної маршрутизації повідомлень.

У TON передбачено достатньо місця длябезлічі воркчейнов (2 ^ 32 що відповідає приблизно 4,3 млрд воркчейнов), причому в кожному з них можна організувати свою логіку повідомлень. Наприклад, один воркчейн може обслуговувати контракти Ethereum, а інший реалізовувати анонімні UTXO (невитрачені монети), як це зроблено в ZCash.

Shardchain

Шардчейн є основною робочою одиницею вмережі TON. Шардчейн - це окрема ланцюжок блоків, яка відправляє і приймає повідомлення від інших Шардена, тобто це блокчейн, обслуговуючий свій набір акаунтів.

Кожен валідатор містить у собі повний списоксвоїх Шарден і тільки частина блоків від сусідніх. Валідатор виробляє нові блоки в своєму шардчейне, відправляючи і приймаючи повідомлення від інших Шардена. На цьому рівні вже можливо поділ і злиття ланцюжків блоків шардчейна. Схематично це виглядає як DAG (спрямований ациклічний граф), де кожен блок має кількох батьків, якими є останні блоки об'єдналися шардчейнов.

Shard-блоки

Кожен шард-блок повинен містити в собі якийсь обов'язковий набір даних, т.зв. неподільну частину. Вона містить в собі:

  • Хеш попереднього блоку і, можливо, хеші батьків в разі злиття шардчейнов.
  • Підписи валідаторів для вже акцептованих блоків.
  • Номер останнього відомого мастерчейн-блоку.
  • Хеші початкового і кінцевого стану Шарда для цього блоку.
  • Черга вихідних повідомлень у форматі списку повідомлень, спрямованих в інші Шардена.

Accountchain

Аккаунтчейн - це початковий рівень блокчейна TON. Кожен ідентифікатор облікового запису є 256-бітний ключ + ідентифікатор воркчейна. Наприклад, адреса смарт-контракту буде виглядати так:

1: 81525a3672b55678d4139b993b542c5c9735ac41b653d963a42855c9834b6921a4.

А адресу аккаунта користувача так:

Ef + BVndfdQ45nUdlsfsmv68KBHGSgBJsfsv58dG2SE4oPMgs4.

Сам аккаунт отримує і приймає повідомлення (природно це не повідомлення з Telegram). Вони можуть містити в собі токени GRAM, бути викликами смарт-контрактів, представляти будь-які інші дані і т.д.

Всі повідомлення обробляються тільки тоді, коливони доставлені в потрібний шард. При цьому можуть вільно переміщатися через проміжні Шардена. Також повідомлення можуть надходити ззовні блокчейна TON, тобто бути «повідомленнями з нізвідки».

Account

Всі облікові записи є смарт-контракт, можливо навіть з порожнім кодом. Кожен аккаунт платить комісію за зберігання даних, тобто його баланс з часом зменшується.

Аккаунт містить в собі інформацію про баланстокенов GRAM, код контракту або його хеш, час знаходження в мережі, починаючи з появи кореневої осередки, статистику використання сховища даних (наприклад, за часом останньої оплати зберігання), формальний опис інтерфейсу.

Низькорівневе зберігання, осередки

Зберігання всіх даних в блокчейне TON відбувається вструктурах, які називаються комірки. Це основна одиниця для вимірювання розмірів всіх елементів мережі: повідомлень, коду контрактів, найрізноманітніших даних.

Кожна клітинка містить 1023 біта інформації і до4-х посилань на сусідні осередки. Буває 256 різних типів осередків, які відрізняються способом реалізації і кількістю посилань на інші осередки. Всі вони об'єднані в дерево з кількістю зв'язків для кожного елемента від 0 до 4. Осередки використовуються для уніфікованого зберігання і детермінованого оперування в сховище блокчейна.

Внутрішні алгоритми TON

Зі структурою блокчейна TON і його основними елементами ми вже познайомилися. Тепер черга за принципами їх роботи і їх основними поняттями.

логічне час

Як ми дізналися раніше, структура даних в TONє DAG, як, в принципі, і у 90% інших криптовалюта, включаючи біткоіни. Для фіксації факту доставки повідомлення або події в блокчейне використовується монотонний лічильник при операціях з ними, причому кожне таке повідомлення містить своє власне час.

Через відсутність центральних серверівсинхронізації часу, використання абсолютного часу всередині мережі може приводити до різних помилок. Саме тому в системах повідомлень вирішили зупинитися на логічному часу.

Повідомлення

Що являє собою повідомлення? Це абсолютно будь-яка операція між Шардена. Будь шард-блок повинен мати вхідне повідомлення з вихідного повідомлення від іншого існуючого і валидного шард-блоку. Для підтвердження істинності повідомлення дозволяється зберігання лише декількох блоків з ланцюжка відправника, обов'язково зберігання її неподільної частини.

Також заборонено обробляти вхідне повідомлення,поки не отримано доказ доставки раніших вихідних повідомлень хоча б від наступного Шарда. Подібний підхід змушує валідаторів ставити в пріоритет спочатку відправку повідомлень і лише потім їх прийом.

Instant Hypercube Routing

Як тепер зрозуміло, кожен шард, по суті, це черга з вхідних і вихідних повідомлень. Для пошуку потрібного облікового запису і найкоротшого шляху до нього використовується прискорений варіант алгоритму «гіперкуба».

Це призводить до того, що якщо в призначенні вказаносвій шард, то транзакція передається потрібного аккаунту, а породжені їй нові повідомлення розміщуються в черзі вихідних повідомлень. У тому випадку, коли адресатом служить чужій шард, то, по детерміністичним правилами маршрутизації, повідомлення перекладається у вхідні повідомлення наступного Шарда.

Включення черги повідомлень в блоки - це новерішення в технології блокчейн. Завдяки такому підходу, стан повідомлення можна відразу ж відстежити в блокчейне. Глобально ж, весь масив повідомлень, що відправляються між Шардена являє собою складний багатовимірний спрямований ациклічний граф (DAG). Однак, в даний момент остаточної ясності з приводу роботи гарантій доставки повідомлень адресату в такому DAG немає.

Смарт-контракти

У TON створення смарт-контракту або аккаунта є один і той же. У разі відправки токенов GRAM на неіснуючу адресу, він створюється як порожній контракт з балансом, відмінним від 0.

Як говорилося раніше, всі облікові записи, щосьякий зберігає в блокчейне, платить комісію за зберігання. Тому при створенні смарт-контракту має бути забезпечено йому баланс в GRAM на оплату місця в сховищі, або навіть спочатку забезпечити баланс, а потім вже розміщувати код смарт-контракту.

Криптовалюта GRAM на блокчейне Telegram Open Network (TON)

</ P>

Є також готові бібліотеки смарт-контрактів в мастерчейне. Кожен контракт має такі властивості:

  • Контракт може створювати новий контракт.
  • Можна розмістити хеш від коду смарт-контракту і тільки потім продемонструвати його.
  • Код смарт-контракту може бути змінений, але це повинно бути передбачено в коді початкового смарт-контракту.
  • Можна в блокчейне не зберігати код смарт-контракту, але тоді аккаунту будуть доступні лише вхідні повідомлення. Код і дані будуть зберігатися поза блокчейна.
  • Код і стан «вмираючого» смарт-контракту(Баланс якого близький до 0) замінюється на хеш його коду. За допомогою хешу смарт-контракт ще можна відновити за умови поповнення балансу, в іншому випадку через кілька місяців піде і хеш.

В цілому можна зробити висновок, що поведінка і властивості акаунтів в TON схожі одночасно на Bitcoin і Ethereum.

TVM (TON Virtual Machine)

Віртуальна машина TON являє собою новурозробку в області роботи смарт-контрактів. Вона є детермінованою і стековой. Тому легко масштабується і відмінно справляється з упаковкою даних в осередку. На TVM зручно вести підрахунок витрат GRAM за виконання смарт-контрактів і дуже просто відновлювати смарт-контракти.

Модель обмежень в TVM побудована на gas, а еліптична криптографія реалізована на захищеній кривої ed25519.

Мова смарт-контрактів

У TON використовується низькорівневий і вкрайдетерміністичного мову Fift, прототипом якого послужив мову FORTH (ймовірно, тому і вибрали ім'я Fift). Він являє собою конкатенативного, стековий мову для мікроконтролерів. На жаль, для написання смарт-контрактів з властивостями детермінізму і максимальної економічності придумали всього два варіанти: EVM (Ethereum Virtual Machine) і WASM (WebAssembly).

Fift строго типізований, в ньому існує півтора десятка типів, в тому числі і складних (Tuple, List, Odject).

Вся ідея цієї мови побудована навколо«Слів»-оператора: присутня безліч різних слів для маніпуляції зі стеком, функцій, логічних блоків, змінних - все це піддається центральної концепції «слова»-оператора.

Наприклад, так виглядає код з виведення двох чисел Фібоначчі великих 1000:

{1 0 rot {-rot over + swap rot 2dup> =} until drop}: fib-gtr

1000 fib-gtr

тут:

  • dop (xx x), Створює дублікат значення вершини стека. Якщо стек порожній, то генерує помилку виключення.
  • drop (x), Видаляє значення вершини стека.
  • swap (xyyx), Міняє місцями два найближчих до вершини стека значення.
  • rot (xyzyzx), Провертає три значення, найближчих до вершини стека.
  • -rot (xyzzxy), провертає три значення, найближчих до вершини стека, в зворотному напрямку. Еквівалент rot rot.
  • over (xyxyx), Створює копію другого значення в стеку і поміщає в вершину стека.
  • tuck (xyyxy), Еквівалент swap over.
  • nip (xyy), Видаляє другий від вершини значення в стеку. Еквівалент swap drop.
  • 2dup (xy-xyxy), Еквівалент over over.

Слід зауважити, що багато розробників в шоці від такого синтаксису і перед вивченням документації по Fift, рекомендується вивчити таку по FORTH.

З якої ж причини розробники вибрали вяк мова для смарт-контрактів саме Fift? Можливо, тому що в такому вигляді він відмінно підходить для формальної верифікації і більш стійкий до помилок, вимагаючи від розробників додатків, повного розуміння послідовності виконання будь-яких операцій.

Загальні враження від TON

В цілому побудова екосистеми TON викликає приємне враження. Серед достоїнств слід відзначити:

  • Нову, економічну реалізацію зберігання даних. Це свідчить про серйозне підході до проблеми розміру блокчейна.
  • Примітивну систему повідомлень, подібну використовуваної в GO.
  • Обробка ланцюжка повідомлень, пул пам'яті на блокчейне, майже вся інформація про транзакції береться з блокчейна, а не з зовнішніх джерел.
  • Воркчейн для хардфорков або радикальних змінв консенсусі, криптографії, віртуальній машині для смарт-контрактів. Це дозволяє теоретично прикрутити до TON блокчейни біткоіни, ефіріума або ЕОС як новий воркчейн.

Управління TON за допомогою смарт-контрактів - відмінно зарекомендував себе метод. Наприклад в Ethereum, EOS, Polkadot і ін.

З точки зору розробника, нода TON - це кілька блокчейнов: мастерчейн, воркчейн, шардчейн.

Інтерфейси смарт-контрактів зберігаються поряд зі смарт-контрактами, що дуже зручно для dApp, тому що забезпечує найпростіше взаємодія з ними.

Всі ресурси блокчейна чесно оплачуються, аж до оренди сховища даних. Немає ніяких знижок для великих власників GRAM або валідаторів.

Єдине, що хотілося б змінити - це наявність більш зрозумілого механізму реалізації формального докази доставки повідомлень. Особливо з огляду на різноманіття варіантів топології мережі.

висновок

WhitePaper проекту створює враження про те, щорозробники взяли кращі робочі патерни з безлічі сучасних проектів, і по кожному з них зробили щось своє. Тут є частини, що працюють як UTXO біткоіни (повідомлення, акаунти), є як EVM (смарт-контракти, управління), є нові індивідуальні розробки (Шарден, маршрутизація), а є адаптація старих рішень під свій проект (мова смарт-контрактів, осередки сховища).

Загалом можна сказати, що TON викликаєзакономірний інтерес у величезного числа розробників і користувачів. На жаль, поки що, окрім TVM прикладів коду смарт-контрактів і тестової Ноди, яка з великою ймовірністю хоча б частково є емуляцією, більше нічого немає. Повноцінного запуску TON залишається лише з нетерпінням чекати.

</ P>