TON технический обзор

TON технический обзор

@ton_overview_ru

Технический обзор TON и инфраструктуры вокруг него.

243подписчиков
🇷🇺

Похожие каналы

Все →

Последние посты

TON технический обзор — пост в ТГ канале

We announce that working wallets for Windows, MacOS, Linux, Web, Android are available on the site toncoin.org/wallets.iOS wallet and Google Chrome extension are pending store approval.All wallets are open source. Thanks to neodix, the most convenient autobuild system works https://github.com/newton-blockchain/wallet-desktop/actions.The global network config is located at the link https://newton-blockchain.github.io/global.config.json.

25 мар. 2021 г.656В Telegram

Стараниями igroman и немного tolyayanot во втором тестнете появился более-менее децентрализованный слешинг: наказание валидаторов за непроизводство блоков. Вотчеры за корректной работы встроены в mytonctrl: теперь уже универсальную утилиту для поддержки валидации. Жалобы на работу подаются в период заморозки монет на 32к секунд после окончания валидации, при этом mytonctrl следит и за тем, что жалобы удовлетворяют настройкам оператора валидации и за тем, чтобы не наказывать одного валидатора дважды за один период. Дефолтные настройки на первое время предполагают очень лояльные штрафы около 100 монет сети (существенно меньше чем средняя награда за период валидации, т.е. пока неработающие валидаторы даже будут получать деньги за стейкинг), чтобы люди успели обновиться и проверить работу своих валидаторов, но со временем штрафы сильно возрастут. За обновлениями можно следить в @tonblockchain

22 февр. 2021 г.1 430В Telegram

Группа энтузиастов Newton (в которую вхожу и я) участвовавшая в поддержке testnet2 давно уже решила мигрировать от ресурсов поддерживаемых оригинальной командой, поскольку в силу внешних обстоятельств, телеграм не может участовать в разработке. Впрочем, сегодня на этом пути был осуществлен важный шаг: код Тона https://github.com/newton-blockchain/ton поддерживаемый newton (и подавляющим большинством валидаторов в сети) разошелся с кодом оригинального тона. А именно, произошли изменения на уровне catchain: в validatorSession конфигах активировали версионирование и с блока 9407194 мы перешли с версии 0, на версию 1. На практике это означает, что для того чтобы участвовать в валидации testnet2, необходимо использовать код из репозитория newton'а, в противном случае ваш валидатор не сможет рассчитать корректный id группы валидации и участвовать в создании блоков. Для невалидирующих нод и прочего софта никаких различий на текущий момент нет: мы специально производим поэтапный переход, чтобы все успели обновиться. Однако, уже сейчас мы рекомендуем использовать новый конфига https://newton-blockchain.github.io/ton-global-lite-client.config.json . В частности, в конфиге указан новый лайтсервер (телеграмовский в последнее время периодически сбоит), кроме того именно в этом конфиге будут появляться актуальные параметры/публичные лайтсервера/информация о новых воркчейнах.Обратите внимание, что для облегчения перехода на консенсус с новыми параметрами мы снизили максфактор и остановили тестирование слешинга. Однако, в ближайшее время мы существенно ослабим требования по максфактору для более широкого участия в валидации, а чуть позже включим слешинг (штрафы за некорректную работу валидаторов), есди вы к этому моменту не обновитесь до последней версии ноды вы рискуете потерять часть стейка.

4 февр. 2021 г.1 320В Telegram

Господа, а есть ли у вас архивные ноды с данными второго тестнета? В идеале с первого блока, но интересно все что с историей полгода+. Напишите мне в личку пожалуйста @rulon

14 янв. 2021 г.1 250В Telegram

Телеграмовский Тестнет2 скорее жив, чем мертв. После декабрьских проблем с валидацией произошел хардфорк. Лайтклиент из последнего коммита работает с новым конфигом налету, а вот для работы tonlib'а его надо пропатчить вставив новый конфиг сюда https://github.com/ton-blockchain/ton/blob/dab7ee3f9794db5a6d32c895dbc2564f681d9126/tonlib/tonlib/TonlibClient.cpp#L1919

2 янв. 2021 г.1 450В Telegram

В недавнем (очень уж не хочется применять слово "последний") обновлении репозитория ТОН довольно много изменений. Большинство из них связаны с обновлением Fift и добавлением storage. Последний похоже является торрентами поверх adnl + контроль целостности данных используется тот же, что и в TON blockchain - меркли над bag of cells. Фич с автоматической оплатой граммами за скачанные файлы или за хранение данных я не увидел.Появилась вторая версия rldp2, судя по названиям файлов с bbr - контролем за перегрузками передачи данных по сети, балансированием и контролем целостности разных потоков по узким каналам (а как мы знаем для ноды TON любой канал узкий :)).Соответственно, слабо изменился ton_api.tl: добавились новые методы для rdlp2 и storage. Отрефакторили работу с кошельками в tonlib api (могут понадобиться изменения, если вы использовали wallet.* методы), выпилили методы работы с тестгивером.Вопреки названию не видны следы TON Payments. Возможно не доехали какие-то файлы, а возможно имеются в виду предварительные payment-channel контракты которые были закомичены месяц назад.

28 мая 2020 г.1 480В Telegram

Я и @rulon торжественно представляем js библиотеку TonWeb https://github.com/toncenter/tonwebTonWeb написан на чистом js и имеет схожий интерфейс с эфирной Web3.Кое-что из реализованого функционала:* Работа с контрактами кошельков как с обычными js-объектами, включая деплой, отправку сообщений, estimate fee и вызов гет-метов.* Получение аккаунтов, балансов и списка транзакций.* Утилиты для работы с адресами разных форматов и грамами.* Низкоуровневая сериализация boc, cell, bitstring и сообщений к контракту.Щедрой душой назначена открытая лицензия GPL-v3На tonweb и tonweb-mnemonic уже работает gram-wallet.org

10 мар. 2020 г.1 290В Telegram

Разобрался как запускать приватный ТОН-тестнет (большое спасибо @akhme и @hortonelectric), запаковал в докер:https://github.com/EmelyanenkoK/ton-private-networkdocker pull kaemel/ton-private-netВалидация запускается примерно через 2 минуты после запуска контейнера.Если указать соответствующие флаги, сеть из одной ноды поднимается сразу с лайтсервером, можно деплоить контракты, в том числе и играться с системными: конфигом, электором и минтером.На текущий момент работает только с мастерчейном на борту.

19 февр. 2020 г.961В Telegram

На днях обнаружил в коде ноды довольно интересный баг (его уже поправили). TVM может эффективно работать и создавать объекты с высокими уровнями вложенности (это вполне себе штатное поведение). Однако, сериализация таких объектов в текстовый вид может занять "бесконечно" много места.Вот, например, код который генерирует кортежи с высоким уровнем вложенности (примерно 180 газа за уровень):(tuple) wrap2tuples (tuple x, tuple y) asm "PAIR";(tuple) empty_tuple () asm "PUSHNULL";(tuple) tuple_bomb(int level) { int current_level = 0; var bomb = empty_tuple(); do { current_level += 1; bomb = wrap2tuples(bomb, bomb); } until (current_level > level ); return bomb;}Соответственно, если мы сгенерируем кортеж с уровнем вложенности например 100 и сможем заставить ноду передать его по сети или записать на диск в сериализованном виде - нода упадет. Отмечу, что в несериализованном представлении этот кортеж требует хранения только 101 объекта, так как хотя листьев у такого кортежа 2**100, все эти листья одинаковые.Одна из ситуаций когда этот баг мог положить ноду это runmethodx, специальный метод лайтсервера, который позволяет запускать исполнение гетметода на лайтсервере и передавать на клиент только результат с пруфами (это полезно, когда память у контракта слишком большая, чтобы передавать ее всю на клиент и исполнять гет-методы локально). Если сгенерить контракт, гетметод которого возвращает кортеж с высоким уровнем вложенности, то лайтсервер упадет в попытке выделить память под хранение результата гетметода. В тесте этого бага мне помогли ребята из Everstake.one, они занимаются стейкингом и у них довольно круто настроена система мониторинга поведения ноды.Другой способ использования этого бага связан с тем что по дефолту debug опкоды в ноде были не отключены и debug писался прямо в stder при любом уровне verbosity. Когда я это обнаружил, @Skydev тут же предложил спамить логи дебагом https://github.com/ton-blockchain/ton/issues/246 . Способ неплохой и со временем тоже

10 февр. 2020 г.1 080В Telegram

В последнем коммите 77842f9b добавили прокси-сервер работающий поверх транспортного уровня сети нод ТОН.Добавили новые опкоды, которые позволяют рекурсивно посчитать размер ячейки. Изменили комиссию за чтение ячеек: повторное чтение будет стоить 25 газа, а не 100. Завезли версионирование кошельков. Нашего коллегу @Skydev можно поздравить: его manual-DNS контракт победивший на конкурсе смартконтрактов добавили в коллекцию смартконтрактов.Слегка поменяли tonlib API, теперь можно будет запрашивать состояние контрактов на момент определенного блока + добавили работу с кошельками разных версий.

6 февр. 2020 г.883В Telegram

Встречайте веб-версию TON кошелька gram-wallet.org 🎉Мы с Янотом @tolyayanot разработали полностью совместимую с официальным кошельком браузерную версию кошелька. Вся криптография, разумеется, на клиенте (приватные ключи не покидают ваше устройстов), ключи хранятся в памяти браузера зашифрованные паролем который вводится при отправке. Версия специально оптимизирована под мобильные устройства, ее удобно открывать прямо из телеграма. Приятным бонусом является то, что в отличие от официальных кошельков весит она слегка поменьше 100мб 😈 .Встречайте веб-версию TON кошелька gram-wallet.org 🎉Мы с Янотом @tolyayanot разработали полностью совместимую с официальным кошельком браузерную версию кошелька. Вся криптография, разумеется, на клиенте (приватные ключи не покидают ваше устройстов), ключи хранятся в памяти браузера зашифрованные паролем который вводится при отправке. Версия специально оптимизирована под мобильные устройства, ее удобно открывать прямо из телеграма. Приятным бонусом является то, что в отличие от официальных кошельков весит она слегка поменьше 100мб 😈 .

21 янв. 2020 г.1 370В Telegram

Облачный конструктор баннеров viewst (viewst.com), при моем участии, выкатил pyTON: питон-обвязку для tonlibjson. https://github.com/viewst/pyTONДоступны функции просмотра аккаунтов, транзакций, отправки сообщений в блокчейн и запуск get-методов контрактов.В модуль встроен вебсервер и теперь развернуть свой локальный аналог ton.sh и toncenter.com можно двумя командами:pip3 install pyTON && python3 -m pyTON(требуется питон 3.7+)pyTON во многом основан на ton_client от formony (мы больше ушли в сторону "взаимодействия с блокчейном", а они в поддержку локальных функций лайтклиента).Хотя API вебсервера сделано максимально похожим на ton.sh для простоты миграции, возможности pyTON шире. Так, количество запрашиваемых транзакций не ограничено десятью и есть возможность "запросить все транзакции после известной". Поддерживается отправка как boc, так и несериализованных ячеек в object-формате. Наконец, при соответствующем флаге, есть API для получения результатов getMethod'ов контрактов (мы не рекомендуем включать эту опцию для публично доступных API, так как специально сконструированный get-метод может положить лайтклиент при исполнении).Таким образом, pyTON позволяет полноценно настроить взаимодействие любого приложения с TON.

28 дек. 2019 г.1 160В Telegram

@akhme обратил внимание, что в недавних обновлениях добавили новых опкодов по работе с ГСЧ и библиотеками:RAND, RANDU256, ADDRAND, SETRAND, SETLIBCODE, CHANGELIB

14 дек. 2019 г.697В Telegram

Один из самых вдохновляющих юзкейсов ТОНа, как мне казалось, была возможность написать токен на экстернал сообщениях. Как это должно было работать? Есть юзеры со своими балансами и есть газпровайдеры, это люди которые готовы платить комиссии за перевод в граммах в обмен на комиссию в токенах. Юзеры посылают экстернал сообщение transfer, выбирают газправайдера с наилучшей ценой и платят комиссию именно ему. Таким образом у юзера совершенно не болит голова о том, что для того чтобы отправить свои "супертокены" ему нужно сначала пополнить счет в граммах и следить, чтобы баланс был больше какого-то предела. Он даже может не знать, что токен работает на ТОН. Есть публичный ключ? На него можно прислать токены (без какой-либо предварительной подготовки). На счете соответсвующем ключу есть достаточно токенов? Их сразу можно отправить не парясь с покупкой грамов.Это киллерфича, которая вкупе с огромной пользовательской базой позволила бы мгновенно перевести на ТОН баллы лояльности брендов, мили авиакомпаний, токенизировать внутриигровые ресурсы итп.Увы и ах, похоже что низкий gas-credit и рост стоимости работы со словарями по мере роста самого словаря убивает эту идею.В этом репозитории https://github.com/EmelyanenkoK/TON_tokens результат пары недель размышлений и нескольких дней работы над подобным токеном. Вчера и сегодня я занимался оптимизацией (спасибо @akifoq за помощь в этом деле), но сногсшибательных результатов не достиг (хотя и пожертвовал стройностью кода).Да, при пустой таблице балансов все проверки влезают до accept_message'а в предел 10к газ-кредита, но при уже при тысяче юзеров первая же попытка найти баланс отправителя в словаре вылезает за границу. Следует отметить, что стоимость поиска в словаре растет логарифмически с ростом размера словаря, так что проблему в принципе можно поправить. Так можно, например, повысить газ-кредита до 50к (уже позволяет работать со 100к юзерами) или сделать существенный (например 20х) дисконт на неизменяющее чтение из словарей.

10 нояб. 2019 г.1 360В Telegram

Появились исходники под приложения-кошельки по android, ios и desctop (Windows, Linux, Mac). Десктопные можно скачать здесь https://wallet.ton.org .Кроме того, добавили 3тью версию кода кошелька, работает как первые два, но позволяет иметь деплоить много кошельков-контрактов (с разными адресам) с одним и тем же публичным ключом. Я бы впрочем добавил метод get_subwallet_id, но в принципе, можно и без него обойтись.В config-code.fc появились огрызки от будущего кода внесения предложений (но код еще видимо не закончен).

1 нояб. 2019 г.1 110В Telegram