[Из песочницы] Новый проект братьев Дуровых: Telegram Open Network
Приближается момент полномасштабного запуска самого ожидаемого криптопроекта, который действительно может изменить мир. К началу ноября сеть TON будет запущена и все смогут в полной мере оценить её достоинства и начать использовать по назначению: разработчики — создавать полезные и прибыльные приложения, пользователи — использовать функционал полезных приложений, с лёгкостью оплачивая его, при необходимости.
Уже запущена тестовая сеть и на официальном сайте есть два интересных документа, проливающих свет на то, как будет функционировать этот проект. Это описание TON, 132 страницы (ссылки на страницы в тексте указаны в круглых скобках, (45)) и описание блокчейна, 120 страниц (ссылки на страницы указаны в квадратных скобках, [55]). Виртуальная машина и язык программирования смарт-контрактов в этой статье рассматриваться не будут, кому нужно — разберёт сам, а кто не разберёт — тому не нужно.
Я для вас прочитал и попытался выделить моменты, интересующие простого обывателя (меня), оставив в стороне очень важные, но малопонятные выкладки, формулы и доказательства, все они изложены в первоисточниках выше. Надеюсь, что моё краткое изложение пригодится тем, у кого не нашлось времени или желания самолично изучить эти интереснейшие документы.
Итак, что такое Telegram Open Network (TON)?
Telegram Open Network (TON) — это быстрый, безопасный и очень классный сетевой проект на основе блокчейна, который сделает хорошо всем и сразу. Этакий огромный, распределенный по тысячам серверов «суперкомпьютер», вернее «суперсервер», на базе которого могут быть запущены тонны полезных приложений. Добавьте к этому собственный токен GRAM, поддержку микротранзакций, постоянный (в теории) рост курса, ну и сотни миллионов существующих пользователей Telegram, которые автоматически получат доступ ко всем сервисам на платформе TON, чтобы осознать всю мощь замысла Дуровых.
Первое, что нужно понять, TON — это не блокчейн. Это собственная версия интернета, с блокчейном и микротранзакциями. Если проект будет успешным, то со временем, так же, как вы пользуетесь браузером для доступа к сети Internet, где есть различные сайты и сервисы, точно так же вы будете использовать какой-нибудь TON-browser для доступа к новой сети (что-то похожее существует уже сейчас в виде Tor-project или i2p, на что есть прямые отсылки в тексте.
TON представляет собой совокупность следующих компонентов: (4)
- Сеть TON P2P Network даёт возможность доступа к блокчейну, системе хранения и позволяет общаться между собой сервисам внутри сети.
- «Поисковая система» TON DHT, которая поможет найти файлы в TON Storage, подходящий адрес в TON Proxy, нужное приложение в TON Services и много чего ещё.
- Служба коротких имён TON DNS, чтобы можно было использовать человекочитаемые строки, вместо громоздких адресов-хешей.
- Распределенная система хранения TON Storage, с доступом P2P по принципу торрентов, для хранения данных блокчейна, а также просто любых файлов пользователей.
- Магазин приложений TON Services, позволяющий пользователям получать доступ с компьютера или смартфона к различным полезным и не очень приложениям в сети TON. Находиться и выполняться эти сервисы могут как непосредственно в блокчейне (onchain), так и вне его (offchain).
- Сервис для микроплатежей TON Payments, позволяющий авторам приложений легко и эффективно получать оплату с пользователей за услуги, а также осуществлять платежи напрямую между пользователями TON без оплаты комиссий сети (аналог lightning network).
- Вся экономика строится вокруг токена GRAM, нативного токена (id = 0) базовой сети TON.
- Самое главное, многоцелевая блокчейн платформа TON Blockchain с неограниченной пропускной способностью, смарт-контрактами, настраиваемыми сайдчейнами и многим-многим другим, достойным отдельной статьи.
Архитектура проекта позволяет осуществлять достаточно простую интеграцию с приложениями сторонних производителей, например мессенджерами или социальными сетями. Примером такой интеграции, в скором будущем, послужит мессенджер Telegram, на сайте которого уже появилось лицензионное соглашение на использование кошелька.
Рассмотрим основные моменты каждого компонента немного подробнее:
TON Network: протокол реализован
Наподобие уже реализованного для Telegram протокола MTProto это просто обёртка над стандартными TCP/UDP, абстракция, дающая каждому узлу внутри сети собственный адрес и задающая стандарты сообщений между ними (детали разнообразных подписок на сообщения, решение потенциальных проблем отслеживания трафика и так далее). На этом протоколе уже работает тестнет, правда спецификаций пока нет, но они и не нужны никому, кроме low-level разработчиков. Что-то похожее уже реализовано в проекте I2P. (81)
Отдельно описывается дополнительный слой TON Proxy, позволяющий осуществлять анонимный доступ к сети TON. Подобное внимание к деталям в области анонимности ещё на стадии whitepaper, мне кажется, показывает, в каком направлении создатели планируют развивать проект, в сторону сотрудничества с регуляторами или же в сторону децентрализации и отказа от ответственности за всё, происходящее в сети. (84)
TON DHT: протокол реализован
Полный аналог DHT в торрентах, только поиск осуществляется не просто по хешам файлов, а по хешам сетевых сущностей, будь то ноды, смарт-контракты или те же файлы. (86)
TON DNS: идёт конкурс
Этот простой, но очень важный сервис решает проблему человекопонятных адресов сервисов и контрагентов, прямо сейчас идёт конкурс на разработку этого смарт-контракта, поэтому детали реализации неизвестны, но, несомненно, человекочитаемые адреса в сети TON будут. (106)
TON Storage: в планах
Проверенная временем концепция торрентов, когда одному маленькому хешу может соответствовать сколько угодно большой файл, реализовывается здесь. Действительно, если у нас есть много данных, которые нужно хранить распределенно, почему бы не использовать торренты? Даже в текущем виде эта технология вполне жизнеспособна: находятся люди, которые готовы предоставить абсолютно бесплатно свои дисковые и сетевые мощности, чтобы вы могли скачать какой-то конкретный файл. Что же будет, если на эту технологию наложить удобную монетизацию через токены GRAM? Здорово будет. (102)
Ещё более здорово, что вводится концепция «облачных сервисов» в пределах сети, когда создаётся рынок, где нуждающиеся в ресурсах (например дисковом месте или процессорном времени или сетевом траффике) смогут купить эти ресурсы у желающих их предоставить по заранее оговоренной плате. С таким подходом, тот же TON Storage станет полностью децентрализованным и неограниченно масштабируемым. Что-то подобное должно было реализовываться в проектах наподобие Golem и Sonm, но в итоге так и осталось на бумаге, посмотрим, что получится тут. (103)
TON Services: в планах
Блокчейн нужен для того, чтобы им пользовались. Головной болью создателей смарт-контрактов и различных приложений всегда было взаимодействие с клиентом. Обычно нужно запустить где-то свой собственный сайтик, попросить пользователя установить browser extension типа Metamask или какую другую дурно пахнущую программулину, а потом уже можно пользоваться. Разумеется ни о каком широком распространении подобных продуктов речи не шло, люди привыкли, что всё должно «просто работать» и ни на что другое не согласны. Тем отраднее видеть, что целый раздел, посвящён созданию и взаимодействию с приложениями. Выделяется два типа, первое — это сервисы, с ними взаимодействуют приложения и другие сервисы и, собственно, приложения, в которых будут тыкать кнопочки живые пользователи. (99)
Вводится понятие стандартных интерфейсов в смарт-контракте, для того, чтобы с ними можно было взаимодействовать из любого стандартного клиента. Можно описать необходимые от пользователя данные, и ему останется просто нажать пару кнопок в формочке, чтобы сформировать и отправить транзакцию в блокчейн и изменить состояние смарт-контракта. Остаётся открытым вопрос, насколько сложные интерфейсы можно будет реализовывать подобным методом, но сам факт, что всё будет делаться непосредственно из Телеграма или другого стандартного клиента TON, безусловно радует. (110)
Прямым текстом нам снова рассказывают, что можно и нужно создавать TON-WWW, новый интернет, с внедрённой системой платежей, однозначной верификацией или же полной анонимностью, как вам угодно, ну и отсутствием какой-либо цензуры, в силу децентрализации платформы. Об этом интернете мы все и мечтали. (112)
TON Payments: идёт конкурс
TON Payments представляет из себя сеть виртуальных банков, где каждый пользователь устанавливает отношения хотя бы с одним контрагентом. Эти отношения фиксируются смарт-контрактом, который замораживает суммы взносов, как гарантию честности сторон. После этого можно переводить деньги кому угодно, важно лишь чтобы существовала цепочка, связывающая двух агентов. Например, отправление денег от Васи к Пете на самом деле выглядит как цепочка Вася → Банк 1 → Банк 2 → Банк 3 → Петя, ну или Вася → Банк 1 → Петя, если оба являются клиентами одного «Банка» (то есть подписали смарт-контракты на обслуживание и внесли средства). Это нужно для того, чтобы не спамить сеть частыми микротранзакциями, а записывать туда только обновлённые балансы, кто кому сколько должен. Например, в начале сотрудничества Вася и Банк 1 создают свой контракт. Вася кладёт на него 100 монет, которые собирается тратить, Банк кладёт в контракт 10 монет, которые, возможно, будут возвращены Васе (например в виде процентов или кешбека). Затем Вася начинает отправлять запросы на платежи, а банк по своим каналам через TON Payments эти платежи проводит другим банкам, а они — конечным контрагентам. Все эти сотни транзакций записываются оффчейн. Затем, в какой-то момент деньги у Васи заканчиваются деньги, смарт-контракт получает сообщение об обновлении баланса, что теперь у Васи осталось 20 монет, а у банка 90, затем, например, банк выводит 80 монет, а Вася добавляет ещё 100, для последующих трат. В блокчейн записываются только изменения балансов, что теперь у Васи 120 монет, а у банка 10 и всё начинается по новой. Или же Васе приходит крупный перевод, тогда банк увеличивает свою долю в смарт-контракте на нужную величину, чтобы перевести эти деньги Васе. Платежи по такому принципу будут практически бесплатными, при этом никто не мешает напрямую переводить токены через блокчейн, если это крупная или важная сделка, заплатив соответствующую комиссию сети. (120)
токен GRAM: ожидает релиза
Денежная единица сети, в GRAMах идёт оплата за транзакции, за место, за данные, за возможность стать валидатором и много всего прочего. Всего начальная циркуляция пять миллиардов монет, из них на двух раундах закрытой распродажи продано, суммарно, порядка 2.7 миллиардов (плюс-минус, оценки неофициальные из различных источников). Первый раунд продаж была примерно по 0.3$, вторая — по 1$ с хвостиком. У грамов интересная система распространения. Первые монеты были проданы непосредственно узкому кругу инвесторов, всего было собрано 1.7 миллиарда долларов США. Дальше оставшиеся за небольшой долей разработчиков и операционных расходов монеты будут продаваться из TON Reserve по формуле, зависящей от количества токенов в обращении. По ссылке можно посмотреть, что при обращении в 2.7 миллиардов токенов, цена продажи будет порядка 1.5 долларов, однако будет экспоненциально расти и уже через миллиард проданных токенов цена продажи вырастет до четырёх долларов. Это примерно та цена, которая сейчас держится на рынках деривативов, которые, однако, не могут похвастаться большими объёмами, в силе сомнительной природы большинства организаторов. Итак, цена токена определена двумя параметрами: с одной стороны это свободный рынок, на котором есть первоначальные инвесторы, некоторые из которых пожелают зафиксировать прибыль, с другой стороны — это TON Reserve, цена в котором может только увеличиваться. Правда, и уменьшиться она тоже может, это произойдёт, если рыночная цена станет меньше половины «официальной», в таком случае TON Foundation, юрлицо осуществлявшее первичную продажу и владеющее TON Reserve, оставляет за собой право начать выкупать токены с рынка за счёт средств, полученных ранее от инвесторов. Тогда количество токенов в обращении упадёт, а вместе с ним — и официальная цена. Спекуляции о динамике цены грама и вообще об экономике TON — вещь достойная отдельной статьи, которую я в скором времени напишу, если вам будет интересно. Пока что же важно понять, что курс GRAM будет «мягко» регулироваться, за счёт наличия большого игрока на рынке, это защитит монету от резкого падения, но точно так же не даст цене резко вырасти. (128)
TON Blockchain: идёт тестирование
Даже если бы не было всей вышеперечисленной инфраструктуры, если бы не было конкурсов с призовым фондом в сотни тысяч долларов на создание этой самой инфраструктуры, а также площадки с сотнями миллионов пользователей, которые автоматически получат доступ к новому блокчейну, то всё равно он был бы крайне интересным с технической точки зрения. Он буквально вобрал весь опыт криптоиндустрии, накопленный за последние пять лет и планирует реализовать большое количество технологичных новинок, которые ранее были только на бумаге.
Я настоятельно рекомендую прочитать 10 страниц в оригинале вайтпейпера, чтобы лучше понимать, какие бывают блокчейны. Если читать не хотите/не можете — хотя бы посмотрите видео с обзором. (62)
Дальше просто некоторые технические моменты, с указанием страницы в описании блокчейна, чтобы можно было изучить первоисточники. Подписан Николаем Дуровым от 20 августа 2019 года, свеженький.
- Все данные, описываются с помощью клеток (cells). Каждая клетка представляет из себя 1023 бита данных и до четырёх ссылок на другие клетки. Эти блоки данных и ссылки между ними, увязываются в мешок (bag), с использованием DAG (directed acyclic graphs) для упорядочивания связей между ними и предупреждения циклических ссылок. Каждый блок в блокчейне, да и само текущее его состояние — это просто совокупность упорядоченных кусочков данных с четко заданными связями между ними. Более того, для каждой клетки высчитывается SHA256 хеш, однозначно определяющий содержимое этой клетки. Эти хеши позволяют, в том числе, ссылаться на какие-то данные вне текущего блока, что открывает много возможностей для создателей смарт-контрактов. [4]
- Вводится понятие Infinite Sharding Paradigm, которое подразумевает, что каждая учётная запись находится в собственном виртуальном блокчейне, создающим клетки, описывающие каждую операцию на этом аккаунте. После этого эти клетки увязываются в мешок и записываются в блок. Теоретически можно было бы это делать отдельно для каждого аккаунта, но на практике используются shardchains (шарды), каждая из которых обслуживает конкретный набор аккаунтов (в зависимости от их идентификаторов). При этом, важно, функция, определяющая, какие именно аккаунты какому шарду может меняться для разных блоков. Это значит, что при увеличении нагрузки аккаунты будут расползаться на большее количество шардов, а при уменьшении — на меньшее, что в итоге даёт неограниченные возможности горизонтального масштабирования, ожидается, что сеть не будет подвисать никогда (или крайне редко). [7]
- При этом каждый блок, находящийся в шарде, тоже представляет собой маленький блокчейн, и при необходимости может быть изменён, тогда измененные данные будут сохранены в новом блоке, привязанном к старому, а все блоки, связанные со старым будут изменены соответственно. Это очень эффективный потенциальный способ решения проблем, которые могут возникнуть, не прибегая к принудительному разделению сети (hardfork). (6)
- Аккаунты в блокчейне TON (то, что обычно называется «кошельком» или «адресом») состоят из кода (или ссылки на код) смартконтракта, хранилища данных для него, описания команд контракта (для сервисов) или данных о владельце (для человеков), записей о балансе токенов и статистике использования места в сети и его оплате. То есть каждый аккаунт — это всегда смарт-контракт! Даже простые «кошельки» — это примитивные смарт-контракты с функцией отправки средств. Интересно, что во всех «просто кошельках» можно и нужно использовать один и тот же стандартный код контракта, реализующего функционал приёма/отправки средств. [11]
- Masterchain (главная сеть) содержит в себе информацию о всех shardchains, вместе с данными о последних блоках в них. После того, как блок был учтён в главной сети он становится «надёжным» и на него можно ссылаться. Помимо этого, в главной сети хранится код смартконтракта для выбора валидаторов (серверов, определяющих, включать ли новый блок в блокчейн или нет) и изменения параметров работы сети (цены газа, необходимого для проведения транзакций, списка и учёта количества выпущенных токенов, включая GRAM и прочих важных вещей, типа процедуры выбора новых валидаторов). Одним словом, в главной сети хранятся текущие «правила игры», на основании которых сеть работает. Чтобы поменять эти правила, нужно согласие не менее 2/3 валидаторов. [12]
- Далее, есть некоторое количество Workchain (назовём просто «сеть»), в каждой из которых свои правила работы, разные форматы адресов, разные виртуальные машины для выполнения смартконтрактов, разные токены и так далее. Однако, все эти блокчейны имеют возможность общаться между собой, так как обязаны использовать заданный формат для передачи сообщений. Нечто подобное (разные блокчейны, способные общаться между собой) мы уже видели в EOS. Сеть разбивается на 1 или больше шардов, для того чтобы более эффективно обслуживать все аккаунты в ней. Количество шардов и принцип распределения аккаунтов между ними динамически изменяются, что позволяет решать проблемы повышенной нагрузки просто увеличением количества компьютеров, обрабатывающих запросы. Создать новую сеть может кто угодно, готовый заплатить достаточно высокую комиссию главной сети и способный убедить 2/3 валидаторов сообщить об их готовности работать с новой сетью (обновить программное обеспечение, на способное поддерживать её). (5)
- Существует сеть №0, базовая сеть TON. В ней есть токен GRAM и реализована виртуальная машина Telegram Virtual Machine с поддержкой языка Fift для написания смартконтрактов. (9)
- Новые блоки генерируются приблизительно каждые пять секунд. Грубо говоря, это время, которое нужно подождать, чтобы ваш платёж или запрос к смарт-контракту был обработан и выполнен. Ожидать снижения этого интервала ниже 3–4 секунд не стоит по техническим причинам, связанным с BFT консенсусом, используемым в сети. (9)
- Смартконтракт имеет доступ на запись к своему коду. То есть в любой смарт-контракт можно встроить явную возможность его редактирования в будущем. Если такой возможности нет — значит ничего поменять уже нельзя. Но возможность создавать изменяемые смартконтракты есть. [30]
- Обратите внимание, что поскольку каждый смарт-контракт занимает какое-то место для своих данных, это место надо время от времени оплачивать. Когда деньги на контракте заканчиваются, он становится «замороженным», то есть неактивным, чтобы его отморозить, нужно прислать ему денег на оплату газа. Аккаунты могут быть заморожены в течение нескольких недель, когда сумма долга вырастет до критического значения, определенного в настройках сети, контракт уничтожается, а все балансы переходят валидаторам. [70]
- Данные и даже код смартконтракта могу храниться вне блокчейна. В блокчейне же хранится только хеш этих данных, позволяющий проверить валидность присланного кода/данных. Привязка данных к хешу позволяет использовать «библиотеки», то есть какие-то стандартные реализации контрактов (например кошелёк), которые, наверное, будут качественными и будут везде использоваться, чтобы не изобретать велосипед. [31]
- Много внимания уделено передаче данных между шардами, чтобы сообщения не терялись и не подделывались, судя по всему вопрос хорошо проработан теоретически и масштабирование сети глючить не должно. [42]
- Внутренний формат хранения сумм GRAM в аккаунте полагается на то, что общее заявленное количество грамов (5 миллиардов) будет расти очень медленно, то есть гиперинфляции за счёт доп-выпуска быть не может тупо по техническим соображениям. Там же указана возможность создания собственных токенов. [55]
- Цена газа не указывается пользователем, в отличие от Ethereum, вместо этого она устанавливается в качестве единого параметра для всей сети (воркчейна). Таким образом могут быть сети, где сообщения стоят дорого (различного рода ledgers, книги учёта важных транзакций), а могут стоить мало (например микроплатежи), с помощью этого параметра можно достаточно эффективно бороться со спамом. [58]
Как видите, вводится много интересных структур и понятий и самое главное — это не просто декларация о намерениях, уже сейчас идёт тестирование сети, уже сейчас люди стараются писать смарт-контракты на конкурс, уже сейчас начинается движуха, участвовать в которой будет очень интересно!