2 April 2022
РБ
00:07
Роман Барбье
In reply to this message
яб хотел сразу 5 лярдов выйграть и шоб мои все монетки были
Hz
00:08
H z
In reply to this message
Просто 300к монет прерогатива богатых - или сильно потеть и вникать в маркетинг и тому прочее...
M
00:12
Mikhail
In reply to this message
Учишься на программиста, зарабатываешь за год
00:13
Deleted Account
In reply to this message
Можешь показать?
RG
00:13
Ruslan Gabdullin
RG
Ruslan Gabdullin 01.04.2022 23:04:43
Привет! Вдруг пригодится: https://github.com/kdimentionaltree/tApi/blob/main/tApi/tonlib/client.py
Это чуть-чуть отрефаченный ton-http-api, его можно загружать прямо из питона.
Минусы:
- работает только с одним ЛС
- класс из multiclient забагованный и у него низкая в сравнении с toncenter.com производительность
RG
00:13
Ruslan Gabdullin
Пример использования в sandbox.ipynb
00:25
Deleted Account
Блин мне как раз нужно для большого кол-ва кошельков :(
RG
00:51
Ruslan Gabdullin
А ограничение в 1 ЛС мешает?
00:53
Вообще, пример мультиклиента есть в ноутбуке. Только он плохо работает)
ИК
00:56
Игорь Коняхин
In reply to this message
Я не совсем понял зачем нужно организовывать конкурс, если можно просто перечислить мне 300к монет без дополнительных организационных издержек и заодно сэкономить 600к на других участниках 👍

UQB9cuBgZoRv-NaFXzxpwqA8rRh5pkWp-ENfpOa98FOaZoJS 😉
С
00:58
Степан
In reply to this message
Интересный конкурс на 60 мультов))
ИК
00:59
Игорь Коняхин
Так вроде бы курс (приблизительно) 1 TON = $2
00:59
60 мультов не выходит
00:59
(но меня в принципе и 60 мультов устроит 😉)
С
01:06
Степан
In reply to this message
В рублях считаю по 200)
ИК
01:07
Игорь Коняхин
Я про рубли даже как-то не вспомнил)
01:08
In reply to this message
Поднимаю вопросы про restricted-wallet-code:

Разбираюсь в стандартных контрактах
Сейчас читал restricted-wallet-code.fc
(https://github.com/newton-blockchain/ton/blob/master/crypto/smartcont/restricted-wallet-code.fc)

Много непонятных моментов

1) Во-первых, в чём вообще замысел этого контракта?
2.1) config_param(-13) - насколько я понял из описания параметров, валидаторы, общим голосованием могут записать в отрицательные параметры вообще что угодно. Я верно понимаю?
2.2) Описания в TL-B схемах -13 параметра, соответственно, нет. Что вообще там планируется?
3)
ifnot (msg_seqno) {
accept_message();
Типа самое первое сообщение принять даже до проверки подписи? Почему?
4)
var elector = config_param(1).begin_parse().preload_uint(256);
Я пока ещё не успел разобраться в механизмом валидаторов, но, насколько я понял, тут получается адрес смарт-контракта электора, и деньги, если restricted, можно переводить только на него. Я верно понимаю? Но зачем?
01:16
Относительно toncli,
разве папка build не должна быть тоже в .gitignore?
Насколько я вижу, она чисто генерируется из исходников
ИК
01:49
Игорь Коняхин
Asm-FIFT - это всего-лишь "программа-компилятор FIFT'а в байт код"?
И, если я правильно понимаю, вся-вся-вся компиляция находится в этом файле:
https://github.com/newton-blockchain/ton/blob/master/crypto/fift/lib/Asm.fif
Так?
01:56
Нет, всё-таки я запутан:
https://github.com/DKeysil/awesome-ton-smart-contracts
FunC is used to write the logic of contracts, it is compiled to fift-asm code, which can then be translated to bytecode for TVM. The functionality of Fift is very wide. To begin with, fift-asm is an Asm.fif program that allows you to translate asm-like(fift-asm) code into byte code for TVM

Т.е. есть:
+ FunC (это понятно)
+ Fift (это понятно, кажется)
+ fift-asm (???????)
+ Asm.fif (это ведь программа-компилятор?)
+ asm-like (== fift-asm - ???)
ИК
02:27
Игорь Коняхин
В TON есть что-нибудь типа C#/JavaScript'овского "await"?
Т.е. можно ли превратить асинхронную операцию в синхронную?

Насколько я понимаю, send_raw_message - всегда асинхронная. А что если мы хотим подождать пока сообщение обработается и затем, например, отослать ещё одно?

Нет возможности сделать что-нибудь типа:
await send_raw_message(msg, 3);
send_raw_message(msg, 3);

?
V
02:27
Vitaly
In reply to this message
нет
02:27
хардкорная акторная модель на мессагах
02:28
даже типизированных хендлеров нет, чего уж говорить об асинках
02:28
(даже структов нет, прости господи, что я о хендлерах расстраиваюсь)
ИК
02:30
Игорь Коняхин
Когда-нибудь такая низкоуровневость приведёт к уязвимостям
V
02:31
Vitaly
In reply to this message
я думаю с распространением появится какой-то язык выше
02:31
возможно тот же solidity адаптируют, кто знает
ИК
02:31
Игорь Коняхин
In reply to this message
А как тогда такие по сути синхронные штуки делать?
Обмениваться query_id и op туда-сюда?
V
02:31
Vitaly
потому что сейчас это конечно полная ебола
02:31
In reply to this message
вспоминать как это делалось до await в обычном коде, через query_id и операции
ИК
02:32
Игорь Коняхин
До await в обычном коде всё делалось через callback'и :)
V
02:32
Vitaly
In reply to this message
а коллбек кто вызывал?
02:33
пральна, хендлер ответной мессаги, который вызывал коллбек по id в мессаге
02:33
вот тут это всё вручную, потому что у нас вход это on_any_fucking_message (untyped_bag_of_data_message in_msg)
ИК
02:33
Игорь Коняхин
In reply to this message
Ха-ха-ха
+
02:35
Кстати, кто знает с точки зрения внутренней работы: как гарантируется асинхронная обработка сообщений в TON?
V
02:36
Vitaly
сообщения с гарантированной доставкой
ИК
02:36
Игорь Коняхин
Т.е. если обработка синхронная, то либо вся цепочка обработана целиком, либо она неправильная, а как при асинхронной обработке гарантировать, что исходящие сообщения будут по факту обработаны и что злые валидаторы не положат на них болт?
V
02:37
Vitaly
ну, сообщения кладутся в исходящую очередь шардчейна, потом роутятся к цели, исполняются когда-то, забить на них хуй нельзя, потому что у тебя вся система через них работает
02:37
если злые валидаторы забьют хуй, то они лишатся бабла
02:38
тут это описано
V
02:38
Vitaly
VS
Victor Shpaga 16.03.2022 21:28:24
TON WhitePaper (Русская версия).pdf
Not included, change data exporting settings to download.
1015.4 KB
Чтиво перед сном
V
02:38
Vitaly
(хотя конечно доктор Дуров пишет сложнее чем стоило бы имхо)
ИК
02:39
Игорь Коняхин
Типа: транзакция валидна, только если сгенерённые сообщения попали в шард-чейн, а обработка сообщений из шард-чейна, я так предполагаю, осуществляется именно в порядке поступления, и таким образом нельзя выкинуть неугодное сообщение
Верно в общих чертах?
V
02:40
Vitaly
ну, not exactly
02:40
я так понял, тут схема очень похожа на устройство RTS игр - lockstep determinism
02:40
когда ты генеришь сообщение оно оказывается частью состояния шардчейна
02:41
воркчейн каждые 5 секунд фиксирует хеш, который фиксирует состояния шардчейнов, после чего можно считать, что сообщение закоммичено
02:41
если его пропустить, то у тебя разойдётся всё
02:41
но это супер грубо, я сам не до конца всё это понимаю далеко
ИК
02:42
Игорь Коняхин
In reply to this message
В общих чертах для первого понимая сойдёт
По мере освоения буду углубляться
Спасибо)
02:44
In reply to this message
Если без шуток, то часть документации было бы неплохо переписать в таком стиле, потому что это очень ёмко, чётко и выразительно даёт понять суть функции
ИК
03:46
Игорь Коняхин
"return ()" и "throw(0)" - это одно и то же?
03:51
Вижу в стандартных контрактах разборы адреса на workchain'ы
Можно совсем вкратце инфу по ним?
Можно ведь с любого переводить ТОНы на любой?
ИК
04:08
Игорь Коняхин
В FunC есть Maybe/Either типы?
Я видел TL-B описание, как их сериализовать, шифруя первым битом нужную опцию, но как с ними работать в FunC? Вручную, используя две переменных вместо одной?
04:43
Deleted Account
In reply to this message
А есть все 4 документа на русском?
ИК
05:15
Игорь Коняхин
In reply to this message
Разобрался с цепочками, благодарю
A
06:05
Andrei
In reply to this message
Алгебраических типов в FunC нет, к сожалению. Думаю, надо добавить, да и в пейпере обещали, но не знаю, есть ли у TF в планах

Maybe тип обычно эмулируют как обычный тип с возможностью иметь null значение (см. null() и null?()), но тайпчекер не делает различий.

Either да, только как две переменные.
06:08
Вообще алгебраические типы предполагалось в виде туплов представлять. Например, parse_addr возвращает именно в таком формате адрес.

Но вручную что-то такое пытаться делать неудобно.
06:11
In reply to this message
Второе это скорее как exit(0), а первое просто выход из функции
06:14
In reply to this message
Сейчас есть только два воркчейна: бейсчейн (0) и мастерчейн (-1). Они примерно одинаковые, во втором значительно выше комиссии. Тоны можно туда-сюда гонять свободно.

Потенциально в будущем могут появиться другие воркчейны. Там может, например, другая VM использоваться.
07:08
Deleted Account
In reply to this message
А где-то список есть?) или что-то вроде того?
A
07:09
Andrei
In reply to this message
В config params есть
NN
07:14
No No
Где можно протестировать ответы
NN
09:22
No No
Что означают эти цифры
P
09:23
Pepeg
Значение и длина в битах
AP
09:26
Andrew Python
In reply to this message
0x10 - записываемое число
6 - длина в битах (uint6)
NN
09:26
No No
Спасибо
AK
11:45
Azat Khabirov
Всем привет!

Подскажите пожалуйста, а что такое HEX адрес и зачем он нужен?

А так же на счёт Bounceable и non-Bounceable адресов, я понял что на второй можно отправлять монеты на не инициализированный кошелёк, но вот зачем конкретно эти адреса могут использоваться я нигде не могу найти информации

Спасибо:)
AP
14:13
Andrey Pfau
c
cryshado 02.04.2022 14:11:44
Video file
Not included, change data exporting settings to download.
00:08, 2.5 MB
P
14:23
Pepeg
Где-то можно найти инфу о том, почему в inline функциях return внутри if стейтмента выкидывает меня из функции внешней?
c
14:24
cryshado
In reply to this message
Потому что инлайн функция, на то и инлайн - она вставляется в участок кода, а не вызывается как функция. Используй для небольших, или функций которе используются один раз
P
14:25
Pepeg
Это я понимаю, но не понимаю почему внутри if-a оно выкидывает меня из внешней, а вне if-a из текущей

Из else бранча тоже возвращает из текущей функции
c
14:27
cryshado
In reply to this message
Баг возможно. Используй throw(код), чтобы завершить выполнение контракта, и с ретурнами и elseif и с ретурнами в if/else по аккуратнее.

Можешь посмотреть фифт асм выхлоп и понять, что там случилось у тебя
14:30
Ты можешь ретурнить после if конструкции, а не в ней
14:30
Просто запиши в переменную
P
14:30
Pepeg
Ага, так и решил делать, но все равно интересно как так выходит)
c
14:31
cryshado
Скинь кусок фифт асма где оно и скрин функции
P
14:32
Pepeg
Это из 4-го таска, просто inline добавил
14:34
  load_data PROC:<{
//
c4 PUSH // _1
CTOS // ds
DUP // ds ds
SBITS // ds bits
DUP // ds bits bits
0 EQINT // ds bits _6
IFJMP:<{ // ds bits
2DROP //
PUSHNULL // _7
PUSHNULL // _7 _8
}> // ds bits
s0 DUMP // ds _10
DROP // ds
LDDICT // _11 ds
LDDICT // _11 _18 _17
DROP // _11 _13
}>

оно же?
AP
14:35
Andrew Python
In reply to this message
как же у меня горит от этой функции в 4-ом задании)
РБ
14:36
Роман Барбье
Как узнать адрес владельца смарт контракта + какие ещё статические данные есть у смарт контракта
c
14:36
cryshado
In reply to this message
Зачем там дамп
14:36
Дамп это функция для дебага
P
14:36
Pepeg
а, я проверял куда оно заходит, забыл убрать просто
c
14:38
cryshado
In reply to this message
А если в if и в else заходит в обоих случаях главную функцию завершает?
P
14:39
Pepeg
In reply to this message
Только в if
14:40
cell data = begin_cell().end_cell();
с такими данными при старте теста
c
14:43
cryshado
In reply to this message
Может там когда она инлайнится эту пуш нулл че то ломают
14:43
🧐
IP
15:02
Ilya Pishchulin
Хай, кто-то сталкивался с тем, что toncli не может добраться до папки с бинариками?

Кажется, перепробовал уже всё, убирал папку из хомяка, меняел ей прав через chmod, но так и не получилось добраться до истины
15:03
Ребут я уже пробовал 😅
15:05
Screenshot 2022-04-02 at 15.05.12.png
Not included, change data exporting settings to download.
31.4 KB
Ну да, ему сразу нужно всё
P
15:09
Pepeg
In reply to this message
мне чмод папки помог
chmod -R 755 path
IP
15:09
Ilya Pishchulin
Я ж говорю, уже ставил 🙂 Даже 777 пробовал
P
15:12
Priani4ek
А давно в вашей макоси /users с большой буквы называется? Не в этом ли трабл-то?
IP
15:12
Ilya Pishchulin
Из коробки 🤔
15:14
По всяким скриншотам из инета -- это норма
P
15:15
Priani4ek
А вообще, покажи ls -latr /Users/i.pishchylin - кто там user:group стоит?
IP
15:16
Ilya Pishchulin
drwxrwxrwx@ 22 i.pishchylin staff 704 Mar 30 22:50 ton-macos-binaries
V
15:19
Vladimir
Ребят, есть кто взялся бы обучить основам (хотя бы что куда и как устроено) программированию под TON?
15:20
Есть много идей которые хотелось бы реализовать, но нужно понять как составлять смартконтракты для NFT
15:22
Опыта в программирование вообще нет. Готов присоединится может какой-то команде, для понимания основы, за определенную плату.
c
15:27
cryshado
In reply to this message
Если у тебя знаний нет в программирование, то вряд ли тебя возьмет какая то команда на работу за оплату, даже вряд ли бесплатно(потому что на обучение нужно время), только если ты сам платить хочешь 😀

Но вообще в этом нет смысла, и начни с основ программирования и computer science. В сети куча бысплатных материалов, книг и т д. Только не нужно идти на какие то курсы от ДичьБраинс и относить им 50к в наноминуту, за воду которую они льют
15:27
У тона высокий порог входа, надо для начала, что-то уметь не в тоне, хотя бы на минимальном уровне(а лучше не на минимальном)
IP
15:28
Ilya Pishchulin
In reply to this message
И потом когда у тебя будет опыт работы, то будешь сталкиваться с такой фигней 😆
V
15:28
Vladimir
In reply to this message
Да, я имел ввиду я готов заплатить
c
15:29
cryshado
In reply to this message
ну просто тебе будет очень сложно начать понимать, что-то в тоне без основ computer science и программирования(чем более до низкого уровня ты углубился, тем лучше)
15:29
Не в обиду, просто советую, как мягче пройти весь путь и полезнее. В разработке в тоне, помимо языков самого тона, всегда используются и другие языки программирования
V
15:31
Vladimir
In reply to this message
Да, конечно я понимаю, по этому и написал. Может кто посоветует. Понять бы какие основы и какой язык взять для начала, что бы перейти потом в ТОН
AP
15:31
Andrey Pfau
Для обучения точно не подойдут языки с динамической типизацией - это ошибка большинства
c
15:32
cryshado
In reply to this message
согласен
CP
15:32
Catchain Protocol
In reply to this message
+
15:32
ваще база - языки это инструмент. нужно понимать глубинно процессы которые происходят а с помощью
языков уже их выражать
c
15:34
cryshado
In reply to this message
Поставь себе линукс(новичкам можно советовать Ubuntu, мало кто юзать потом ее будет как десктоп систему, но она помогает легче войти и все понять), можешь потыкать С/C++(ты вряд ли будешь их юзать в проде возможно, но они помогут понять многие фундаментальные вещи). Попробуй познакомиться и с другими языками, выбери, что тебе по душе.

Изучи базово как работают операционаки, сети(всякие там TCP/IP и т. д), немного криптографии (алгоритмы, как что делать и как что работает под капотом)
VL
15:34
Vladimir Lebedev
In reply to this message
+
P
15:34
Priani4ek
In reply to this message
На сами бинарии тоже есть +x же?
c
15:34
cryshado
In reply to this message
Вот хорошая книжка по сетевому программированию для новичков в переводе на рус https://beej.us/guide/bgnet/translations/bgnet_A4_rus.pdf (немного попозже после основ, тебе пригодиться)
D
15:34
Dmitry
In reply to this message
Ну тогда надо с вайтпеппер начинать человеку?
IP
15:34
Ilya Pishchulin
In reply to this message
Так он до папки не может добраться, на сами бинари дефолтные стоят
P
15:35
Priani4ek
Хз. Может маковский ACL чудит
IP
15:35
Ilya Pishchulin
15:35
Ну у них максималочка стоит
om
15:35
oxxxy miron
всем привет я что-то не понял а что нужно делать в первой задаче?подскажите пожалуйста
AP
15:36
Andrey Pfau
In reply to this message
Можно кстати WSL на винде поставить для начала это отличный выбор: https://docs.microsoft.com/ru-ru/windows/wsl/install
c
15:36
cryshado
In reply to this message
ну если больно сразу так то можно, но реальную систему тож надо потыкать
VL
15:36
Vladimir Lebedev
In reply to this message
вайтпейпер тона — это когда ты уже знаешь несколько языков программирования, понимаешь как работают всякие штуки, знаешь алгоритмы, хорошо разбираешься в формальных математических абстракциях + в алгебре и теории типов
IP
15:36
Ilya Pishchulin
Походу легче на виртуалку с Ubuntu поставить toncli, чем на мак)
VL
15:36
Vladimir Lebedev
In reply to this message
и то с опухшей головой будешь сидеть читать
V
15:37
Vladimir
Спасибо ребят, огромное за советы. Приятно видеть отзывчивых людей!
c
15:37
cryshado
In reply to this message
и когда ты дед инсайд 1000 - 7 преисполнился в своем познании, и для тебя нормально смотреть на кучу формул и переводить их в код 😀
15:37
In reply to this message
👍
V
15:38
Vladimir
все сохранил, буду смотреть и изучать! Будут изменение напишу)
VD
16:24
Victor Dm.
Почему у меня первая транзакция всегда пустая? Когда делаю отправку на другой кошелек, самая первая транзакция не удачно, seqno 0, баланс есть, деплой делаю?
c
16:28
cryshado
In reply to this message
Как ты делаешь транзакцию? Кстати у дефолтного кошелька после деплоя seqno 1
16:28
Deleted Account
Есть ли человек который за деньги напишет часть кода нужную для меня?

Парсер блоков тона, отправку средств и создание кошельков
VD
16:40
Victor Dm.
In reply to this message
Как обычно, я попробую поставить один вместо нуля
AR
17:05
Alexander Ruliov
Привет. Вопрос по второй задачке, могут ли приходить сообщения с addr_var и может ли быть такой owner адрес?

Насколько я понимаю сейчас существует только мастерчейн и ещё один и пока не бывает воркчейнов которые описываются больше чем 8 битами.

Но тесты походу всё могут)
17:11
In reply to this message
Вижу что в данных будет адрес. То что он будет всегда из первого воркчейна не уточнено, как и то, откуда приходить сообщения будут.

Просто в реальности сейчас они не могут приходить из какого-нибудь 256 чейна с длиной адреса в 511 бит, но если в тестах есть такие кейсы, то можно закрешиться на том, что в одну ячейку всё не влезет. А если поддерживать этот кейс, то явно газа больше уйдёт и можно проиграть тем, кто забьёт на такой кейс, если таких адресов в тестах всё-таки нет))
AP
17:13
Andrew Python
In reply to this message
Вероятнее всего в первом контесте не так много заморочек
P
17:14
Placeholder
In reply to this message
вы вручную адрес десериализуете, что ли? Метод же есть. В uint, если что, и стандартный не влезет. Возможно, я не понял проблемы..
AR
17:15
Alexander Ruliov
In reply to this message
Не, смотрите, мне приходит сообщение с длиной адреса в 500 бит. В данных тоже лежит 500-битовый адрес. И тут нужен if, чтобы body в отдельную клетку положить в таком случае. Но если таких адресов не бывает, то if не нужен. Ну и на практике их нет, но в теории ведь могут быть.
P
17:16
Placeholder
In reply to this message
А, теперь понял. Надеюсь, таких тестов не будет)
AR
17:17
Alexander Ruliov
Я тоже)
VD
17:51
Victor Dm.
In reply to this message
все равно пустая транзакция самая первая
17:52
await wallet.methods.transfer({
secretKey: keyPair.secretKey,
toAddress,
amount: TonWeb.utils.toNano(value),
seqno: seqno || 1,
payload: 'cosmos',
sendMode: 3,
});
17:52
Кстати после делаю все равно seqno null
СВ
17:57
Сергей В
Вопросик про конкурс, а как узнать столько recv_internal потратит тонов на "computational and message forwarding fees" ?
SF
18:26
Slava Fomin
In reply to this message
Если кошелёк не задеплоен, то нужно обязательно передавать seqno: 0.
18:28
Ну и на счёте должны быть средства, конечно. Часть из них пойдёт в том числе на оплату комиссии за деплой, хранение и т. п.
VD
18:29
Victor Dm.
У меня есть средства я попопления 0.05, это хватает но самая первая транзакция все равно пустая
18:29
То что seqno 0, я уже писал что все настроил
SF
18:30
Slava Fomin
А какая версия кошелька?
VD
18:31
Victor Dm.
4 версия
18:31
v4R2
SF
18:32
Slava Fomin
А Вам нужна поддержка плагинов?
c
18:32
cryshado
In reply to this message
Задеплойте в ручную кошелек(через фифт), а потом юзайте в тонвебе
18:33
И юзайте v3 версию, v4 кусок перегруженного бесполезного контракта
SF
18:34
Slava Fomin
Если функционал v4 явно не нужен, то лучше использовать v3R2.
18:35
Ну и я советую логировать все вызовы API, чтобы убедиться, что туда передаются правильные данные.
c
18:35
cryshado
In reply to this message
Он нигде не нужен. Это явно снижает безопасность, если юзер задеплоит хрен пойми какой сторонний плагин
SF
18:36
Slava Fomin
Также, при переводе нужно смотреть задеплоен ли кошелек получателя и правильно выставлять bounce-флаг.
VD
18:37
Victor Dm.
Ясно, блогадарю
AP
18:45
Andrey Pfau
In reply to this message
tondev для тестнете, а tonhub для мейннета
M
19:52
Max
мы можем отловить send_raw_message в toncli run_tests?
AP
19:54
Andrew Python
In reply to this message
оно должно быть в cell actions по идее
SF
19:54
Slava Fomin
In reply to this message
Получилось? )
M
19:56
Max
In reply to this message
точно
EM
19:56
Egor Moiseenko
In reply to this message
Тоже интересно, в доках не могу найти
JF
20:05
John Fyodor
In reply to this message
«У меня нет знаний в программировании» - просто поставь себе Линукс 🤣🤣🤣
20:05
Мне кажется обучение закончится в момент попытки установки
AP
20:08
Andrew Python
In reply to this message
Чистый арч пускай ставит😅
JF
20:09
John Fyodor
Пусть попробует пропатчить kde под freebsd
SF
20:13
Slava Fomin
In reply to this message
А это точно чат по аниме? 🤔
OB
20:14
Oleg Baranov
подскажите плиз с помощью чего можно отправить сообщение в recv_internal?
AP
20:15
Andrew Python
In reply to this message
recv_internal принимает сообщения от других контрактов (или можно юзать тесты в toncli)
OB
20:16
Oleg Baranov
In reply to this message
спасибо, попробую тестами
c
20:17
cryshado
In reply to this message
Можно использовать тесты в фифте*
JF
20:17
John Fyodor
In reply to this message
Nani
AR
23:19
Alexander Ruliov
В тестах можно как-то вывести содержимое ячейки/слайса куда-нибудь?
AT
23:22
Andrey Tvorozhkov
In reply to this message
В с5 падает
23:22
In reply to this message
Задампайте стек и десереализуйте
23:22
Или задампайте слайс, там будет хекс
M
23:36
Max
можно ли узнать размер смарт контракта, если кода много (например при использовании inline)? и узнать на сколько cell будет разбит код?
AT
23:39
Andrey Tvorozhkov
In reply to this message
После билда контракта можно взять boc и рекурсивно напечатать, потом посчитать количество клеток и количество бит
M
23:40
Max
In reply to this message
спасибо
AR
23:55
Alexander Ruliov
In reply to this message
Сделал для теста:


() hexdump() impure asm "42 PUSHINT DROP HEXDUMP";


Никуда не написало. Нужно ещё что-то дёрнуть?
A
23:57
Andrei
Там бо́льшая часть дебаг-примитивов не реализована
23:57
Они просто игнорятся
AT
23:59
Andrey Tvorozhkov
In reply to this message
Стек сдампить точно можно, я делаль)
23:59
Хексдамп не чекал
A
23:59
Andrei
In reply to this message
Да, это DUMPSTK видимо
23:59
Насколько я помню, работает только он и DUMP
3 April 2022
AT
00:01
Andrey Tvorozhkov
Можно доделать, я оч сильно прошарил за плюсы в посление дни)
00:01
Этож только для дебага нужно, так что мб даже можно замерджить
00:02
Меня смущает что 512 (дебага флаг ранвм) не работает как задумано)
AR
00:03
Alexander Ruliov
In reply to this message
DUMP тоже странный:


() playground() impure asm "42 PUSHINT s1 POP s1 DUMP";


... выводит не 42, а ерунду какую-то. Или может я не понимаю чего-то.
NM
00:08
Nikita Misharin
Ребят прошу прощения за возможно очевидный вопрос, я для теста второго задания хочу в сторедж адрес оунера записать. Я правильно понимаю, что для адреса пойдут любые 256 бита?
A
00:11
Andrei
In reply to this message
Так а зачем POP делать? И почему s1, а не s0?
00:11
Попробуйте "42 PUSHINT s0 DUMP"
AR
00:14
Alexander Ruliov
In reply to this message
Аааа, спасибо, я думал s-регистры это отдельные регистры, а не стек, кек)
P
00:36
Placeholder
In reply to this message
Нет. Посмотри TL-B адреса.
AR
00:42
Alexander Ruliov
> It is acceptable to ignore requests which are valid for more than 1 minute as well as not accept more than 10 requests per minute.

Что это значит? Типа если я вижу, что valid_until на минуту больше, чем now(), то могу не принимать сообщение? А про 10 запросов в минуту какой смысл?

UPD: кажись догнал, без лимита один из тех кто имеет ключ может без согласия другого сжечь весь баланс комиссиями, заспамив за минуту мильярд запросов) нельзя такие штуки внешними командами делать)
AR
02:30
Alexander Ruliov
Хы:


b = b.store_dict(null());
b = b.store_dict(null());

Gas used: [1103]




builder store2_null_dict(builder b) impure asm "PUSHNULL DUP s0 s2 XCHG STDICT STDICT";

b = b.store2_null_dict();

Gas used: [1085]


Мне нравится эта игрушка)
T
02:59
Tolya
In reply to this message
Animation
Not included, change data exporting settings to download.
161.5 KB
NM
03:26
Nikita Misharin
In reply to this message
Спасибо 🙌
С
09:04
Суетолог
Добрый день, хз куда общаться , я по поводу wallet bot , купил биток , перевел в бот , обменял на тон , и далее бот просто мне заблочил все операции.. может кто помочь ?
09:05
🛑 Эта операция запрещена. Свяжитесь с нашей службой поддержки @wallet_supportbot
Вот такое сообщение
К
09:08
Кремний 🏴‍☠️
а если написать в @wallet_supportbot?)
С
09:08
Суетолог
Писал , говорят ждать, без объяснения причин🤷‍♂
09:08
Сколько ждать хз
09:12
Уже сутки жду
IA
09:50
Ivan Artemov
Попробовал toncli на macOs M1 запустить по инструкции и ошибки валятся

Кто-то осилил запустить?
P
09:53
Pi
In reply to this message
На винде все мучаюсь ни как не устанавлю
G
09:55
Graber
Сделайте как я, скачайте виртуальную машину Ubuntu и не мучайтесь
AP
09:58
Andrey Pfau
In reply to this message
Поставьте wsl, там все нормально собирается
10:01
Deleted Account
Не понимаю, https://github.com/neodiX42/MyLocalTon - Installation and usage - как скачать файл из actions? Там нечего скачивать...
G
10:17
Graber
In reply to this message
Тоже вариант. Но я его не поставил, т.к android-эмуляторы ругаются
10:18
In reply to this message
10:48
Deleted Account
In reply to this message
нет, там не jar файл
NM
10:51
Nikita Misharin
In reply to this message
1. Качаешь в артефактах zip
2. Внутри jar
10:53
Deleted Account
In reply to this message
в том то и дело, не могу понять как скачать из артефактов ))) вот же ссыль? https://github.com/neodiX42/MyLocalTon/actions/runs/2076160498 и как скачать артефакт то?
AP
11:49
Andrew Python
In reply to this message
слово acceptable означает, что это делать не обязательно?
просто если не обязательно, то можно газ на этом сэкономить
IA
12:06
Ivan Artemov
In reply to this message
Что это такое? Можно ссылку что бы поизучать?
AP
12:07
Andrey Pfau
In reply to this message
ну камон....
ИМ
12:07
Илья Михеев
In reply to this message
+
IA
12:07
Ivan Artemov
In reply to this message
А ну мне не катит я на маке
AP
12:08
Andrey Pfau
M1?
IA
12:08
Ivan Artemov
In reply to this message
Ага
IA
12:11
Ivan Artemov
In reply to this message
Пробовал, ошибки валятся
Не понятно что делать с ними
AP
12:12
Andrey Pfau
извините, мы люди смертные, не ванги к сожалению
ИМ
12:12
Илья Михеев
ну возможно стоит обьяснить какие ошибки?
IA
12:40
Ivan Artemov
In reply to this message
писал раньше просто
д°
12:41
да ня °°°°° | ~
А возможно ли чисто теоретически в будущем назначать адрес A для оплаты комиссий за все действия, совершенные адресом B? (В том числе за хранение)

Можно ли будет устроить такую схему с помощью плагина для V4 кошелька?
c
12:42
cryshado
In reply to this message
Можно, но через костыли и криво. Чтобы сделать нормально надо обновлять сам блокчейн
д°
12:51
да ня °°°°° | ~
In reply to this message
Спасибо, а каковы надежды на такие апдейты? Куда прошения слать? Это ж маст хэв фича в нашей парадигме с отдельными смартами под каждую сущность
c
12:52
cryshado
In reply to this message
Ты хочешь как в солане бакеты?
Н
12:53
Никита
Добрый день. Есть ли какой-нибудь механизм проверки получения перевода от конкретного пользователя?
Например я генерирую ссылку, отдаю ее пользователю, он переходит по ней в тонкипер, оплачивает, а я на своей стороне каким-то образом это проверяю?
c
12:53
cryshado
In reply to this message
Ну это скорее как минимум нужно переписать всю инфраструктуру, которая сейчас есть(начиная с c++ ноды). Потому что код ноды сейчас очень тяжело поддерживаемый. И перейти на новую версию ноды.

Это может и будет, но явно не скоро
AR
12:58
Alexander Ruliov
In reply to this message
А зачем? За внутренние сообщения платит тот кто отправил, а за теми что отправляет контракт и внешними похоже можно следить и просто с другого контракта отправлять такого же размера компенсации.
13:00
О, я не в курсе, кстати, а можно внутреннее сообщение отправлять с нулём грам? Если принимающая сторона вызовет accept_message() для такого, то уплатит комиссию она? Или этот метод только для внешних сообщений?
AP
13:01
Andrew Python
In reply to this message
forward fee платит отправляющая сторона, даже если в сообщении 0 грам
c
13:03
cryshado
In reply to this message
Например, чтобы переложить оплату стореж фи в ERC подобных контрактах на юзера, как это делается в солане
A
13:03
Alex
In reply to this message
Скачали? Прилогиниться нужно гитхаб аккаунтом.
AP
13:03
Andrew Python
In reply to this message
И во внутреннем сообщении нет кредита газа, если пришло сообщение с 0 грам, accept_message вызвать не сможешь
S
13:04
S
Ребята, всем привет. Подскажите, где я могу в explorer глянуть список валидаторов и ихнего стека?
13:04
Deleted Account
In reply to this message
Да, разобрался. Только на винде почему-то серв не поднимается, пустое окно абсолютно, даже адресов нет
AR
13:04
Alexander Ruliov
In reply to this message
Ясно, не взлетел план с проксёй, которая за всё платить будет)
S
13:06
S
In reply to this message
просто смотрю на сайте указано что 600к это средний стек, а какой минимально допустимый? могу ли я создать валидатора с 20к монетами?
A
13:14
Alex
In reply to this message
Пишите в личку, пришлите лог или откройте github issue. Протестированно много раз, должно работать, как вариант, проветьте настройки файрвола.
д°
13:16
да ня °°°°° | ~
In reply to this message
Не шарю за солевой блохчейн. Можно ссылку, почитать про этот концепшн? Как минимум делать удобную систему оплаты всех смартов в какой-нибудь большой дефи игре с одного адреса. Чтобы не получилось, что где-то кончились деньги и все сломалось. Есть ещё идея с юзерфриендли кошельком с отдельным счётом для оплаты комиссий (Чтобы можно было сохранять красивый баланс без кучи цифр в хвосте).
c
13:16
cryshado
A|
Alice | Will never DM first 29.03.2022 21:41:01
13:16
A|
Alice | Will never DM first 29.03.2022 21:41:41
д°
13:17
да ня °°°°° | ~
In reply to this message
Благодарю
c
13:18
cryshado
In reply to this message
Там есть проблемы по серьезнее, чем кошельки удобные. Мы из-за того, что не можем делегировать сторедж фи(включительно, не только из-за этого) лепим в тоне «распределенные» контракты. По контракту на каждое нфт, токен кошельки и т д….
13:20
😭
13:20
In reply to this message
Растрачиваем газ в пустую
AM
13:21
Antonio Marreti
кек
P
13:34
Pi
Установить toncli, запустив pip install toncli
Вот откуда это брать?
13:37
4 пункт, как его выполнить, там нет такого файла
д°
13:39
да ня °°°°° | ~
In reply to this message
Уже хочется устроить zog и поверить в заговор валидаторов....... Честно говоря, не понимаю, почему у нас такие же комиссии, как год назад при многократном росте курса токена
13:40
In reply to this message
Но это же подаётся, как прикол асинхронности таки мол?
AR
13:43
Alexander Ruliov
In reply to this message
Попробуйте pip3.
c
13:45
cryshado
In reply to this message
Асинхронность это круто, но это не про «1 контракт на каждую нфт», «4 контракта на одну пару dex» и т д.

Просто чтобы такого не было, нужно доделать масштабируемые по шардам контракты, сделать возможность делегировать оплату(хотя бы стореджа) как в солане примерно, сделать так чтобы мы могли детерминировать комиссии за работу с хешмапами.

Все это большая, огромная, core dev задача, а переход(хардфорк) будет очень сложным т.к. мы уже в mainnet.

Но все это избавит нас от костылей, описанных вначале сообщения
13:47
И при этом у нас будет та же асинхронность блокчейна 😃 То есть «распределенное программирование» это просто костыль, пока нет нормального решения
13:49
Но перспектив это не отменяет, как мне кажется все впереди, просто не нужно ломать дрова.

Все спешат с разными нфт и т д, а лучше бы углублялись в блокчейн и помогали разрабатывать ядро
CP
13:49
Catchain Protocol
+😔
AP
13:49
Andrew Python
Потом как в эфире, будет TON2.0
CP
13:50
Catchain Protocol
🐈
c
13:50
cryshado
In reply to this message
Да, хардфорк будет сравним по сложности, просто полегче, учитывая что у нас нет такой децентрализации, как в эфире
AR
13:50
Alexander Ruliov
In reply to this message
Просто поменяются правила для нового воркчейна)
c
13:51
cryshado
In reply to this message
Нет, нужно хардфоркать мастерчейн и бейсчейн, для изменений описанных выше
13:51
Мастерчейн подписывает транзакции других воркчейнов
д°
13:52
да ня °°°°° | ~
In reply to this message
Чтобы все побежали гладить кошкоцепочку, нужна очень хорошая структурированная документация на разных языках. А сейчас даже в смарты на тоне очень тяжело вкатываться обычным кодерам
c
13:52
cryshado
In reply to this message
Да какая там документация, там в с++ коде николай уже наверное не все помнит, как работает(что сделано, п что нет и т д). Это макет. Нужно все с нуля переписывать
13:54
Самое сложное, это именно добраться до протокола консенсуса и т д
13:54
Там ни одна документация не спасет
D
13:55
Dima
добрый день, вопрос к прикладным разработчикам. Вы используете официальные либы с гитхаба для взаимодействия с блокчейном или http-api-proxy, вроде toncenter?
B
13:55
Bro
In reply to this message
Альтернатив нет, только они
c
13:56
cryshado
In reply to this message
Альтернативы в дикой активной разработке
13:57
In reply to this message
Тонцентр это костыль, если очень нужно что-то по быстрому склепать - юзайте.

Если есть возможность пое*** мозги юзайте тонлиб на с++

Если есть возможность ждать - ждите, либа с аднл протоколом, которая работает напрямую с блокчейном без посредников, уже на подходе
D
13:58
Dima
In reply to this message
я смотрю тонлиб+java
CP
13:58
Catchain Protocol
In reply to this message
🙂
D
13:58
Dima
это по сути обертка на либой на с++
c
13:58
cryshado
In reply to this message
Юзай, если у тебя все на джаве, норм
B
13:58
Bro
In reply to this message
Большинство на PHP фигачат просто
D
13:58
Dima
In reply to this message
немного конечно шокирует тот простой факт, что это даже не опубликовано нигде)
c
13:58
cryshado
In reply to this message
Под пхп вроде можно биндить с++
D
13:58
Dima
mvn nexus / artifactory и тд
B
13:59
Bro
In reply to this message
Ну вот видишь. Чел тут спросил кто может? Может тегро. Остальные в разработке. А в разработке сколько будет? Пол года? Год? Два? Ну такое.
13:59
In reply to this message
Если шаришь 😂
13:59
Deleted Account
In reply to this message
Юзаю тонлиб на плюсах с обвязкой на ObjC в Swift и моя крыша уже немного течёт. 🥹
D
13:59
Dima
In reply to this message
аднл протокол - это тот самый интернет ton sites?
c
14:01
cryshado
In reply to this message
Не только, это основной сетевой протокол в тоне, вместо HTTP. Работает на уровне над TCP

Подробнее https://t.me/tonstack/6

Тонлиб использует аднл протокол для прямого общения с блокчейном(лайт серверами) без всяких там костыльных тонцентров
14:03
In reply to this message
Мы планировали релизнуть решение удобное для работы по аднл с тоном в этом месяце.

У нас работает большая команда, свободных и независимых разработчиков.

У нас уже готова имплементация adnl на rust, пакет на тайпскрипте для работы с различными типами данных в тоне. Так что все очень скоро будет
14:03
И тогда тонцентр можно будет выкинуть в помойку. tonCENTER, это централизация. Если падает тонцентр, все dApps теряют приставку d автоматически:)
D
14:07
Dima
In reply to this message
типичная ситуация в децентрализованном мире
14:07
представьте, если упадет opensea)
H
14:07
Hqx5
In reply to this message
До каталога?
c
14:07
cryshado
In reply to this message
Ну газ в эфире станет на процентов 20 дешевле, сам эфир тоже скорее всего, транзакции станут быстрее, а люди потеряют стоимость всех своих нфт😃
D
14:07
Dima
In reply to this message
вообще я просто хотел конвертнуть дефолтный джава клиент в реактивное апи и свой апи-сервер написать
c
14:09
cryshado
In reply to this message
Апи сервера подходят ток для приватного использования, а не как тонцентр(публичный жсон рпс). Потому что помимо проблем с децентрализацией, нам еще нужно и доверять эндпоинту жсон рпс(то что он не подменит данные). Также весь трафик расшифровывается на сервере жсон рпс, соотвественно мы теряем в безопасности, анонимности и т д
14:10
In reply to this message
До. Мы углубились в core задачи, они сейчас важнее. И у нас есть в этом плане большие сдвиги, и мы ведем полностью открытую разработку на гитхабе
D
14:11
Dima
In reply to this message
в целом, согласен, но я и хотел пока приватное апи
14:12
идея тонцентра мне нравится тем, что есть openapi спека, по которой к любому языку ты можешь сгенерить клиент
14:12
а значит вопрос интеграции сводится к паре часов вместе с чтением доки
14:12
что касается структуры апи тонцентра, мне кажется уместным было бы graphql использовать
14:13
In reply to this message
ну и соответственно с клиентами к такому апи тоже проблем не будет
д°
14:17
да ня °°°°° | ~
In reply to this message
лайт-клиент на голанге буит?
c
14:17
cryshado
In reply to this message
На расте есть уже базовая версия
д°
14:18
да ня °°°°° | ~
In reply to this message
угу, видел, блин в расты вкатываться еще, уффффф
CP
14:18
Catchain Protocol
In reply to this message
они не очень сложные 😌
c
14:18
cryshado
In reply to this message
Ну для подобных штук выбор не велик, либо плюсы, либо раст. Раст полегче к пониманию, поудобнее и т д
д°
14:19
да ня °°°°° | ~
In reply to this message
а с чем это связанно, кстати? почему и фритон на расте ноду лепил? вроде эфирная и гошная нода была, если мне память не изменяет
c
14:21
cryshado
In reply to this message
На плюсах сложно писать быстрый код, в стоке плюсы намного менее производительны, чем другие языки(еще и сложнее, не удобнее и т д)

На го, и других языках есть гарбедж коллекторы, которые замедляют работу рантайма

Rust содержит все плюсы, того де голанга: удобный пакетный менеджер, читаемый код, и т д. И при этом у раста нет гарбедж колектора, что делает его быстрым в рантайме.
14:22
Ну вообще хорошо когда много разных комьюнити версий нод, это большая децентрализация в какой то степени
д°
14:24
да ня °°°°° | ~
In reply to this message
+
H
14:29
Hqx5
In reply to this message
Ну да ладно, пути к успеху могут быть извилистыми)
D
14:33
Dima
In reply to this message
это SDK какой-то?
14:33
или собственное апи?
c
14:38
cryshado
In reply to this message
Попробуй собрать сообщение руками, cell bulder’ом тонвеба
Н
14:46
Никита
In reply to this message
Знает кто?
F
14:53
F
In reply to this message
Смотреть транзакции по адресу своего кошелька, куда пользователь должен скинуть) Вон выше скинули примеры на js)
Н
14:54
Никита
Спасибо, буду разбираться)
c
14:58
cryshado
In reply to this message
Надо углубиться в тему, того, что там происходит. Попробуй фифтом задеплоить
AT
15:19
Andrey Tvorozhkov
Как в tl записать, что на выходе произвольный dict?
c
15:23
cryshado
In reply to this message
откуда ты в tl взял дикт
15:24
сам хешмапы на тл переписал?
15:24
лютый
15:24
или я не видел таких списков в тл
B
15:36
Bro
In reply to this message
Сенкью
k
16:04
k1ber psix
16:04
16:04
Парни, какова вероятность что этот тип собирает предоплаты в чате на разработку чего-либо и потом ливает? Были у вас тут такие прецеденты?
SF
16:06
Slava Fomin
In reply to this message
Дев. чат не место для подобных обсуждений.
k
16:07
k1ber psix
In reply to this message
Ну как бы челик у вас в чате))
p
16:08
paket
In reply to this message
Ok, and?
k
16:09
k1ber psix
In reply to this message
Энд зе квесчион из, уоз зе сейм кейсиз бефор?
D
16:09
Dima
In reply to this message
если ты кому-то переводишь предоплату - земля пухом
k
16:10
k1ber psix
In reply to this message
Понятно
SF
16:11
Slava Fomin
Нужен оракул-нотариус для верификации сделок :)
k
16:12
k1ber psix
Нужен бот, с оплатой между пользователями на крипте, с гарантом на смартконтракте
I
16:15
Isaac
In reply to this message
И как по твоему смарт контракт должен гарантировать выполнение условий со стороны продавца, которые происходят вне блокчейна?
AR
16:16
Alexander Ruliov
In reply to this message
С посредником можно.
I
16:16
Isaac
In reply to this message
Какой смысл в смарт-контракте, если есть посредник?
AR
16:17
Alexander Ruliov
Договорённости в реальном мире смартконтрактом не опишешь.
16:18
Вопрос, как можно передать данные из второй части теста, которая проверяет результат, в следующую функцию теста, которая говорит, что вызывать будем?
k
16:19
k1ber psix
In reply to this message
Ну выше переписка, я задал вопрос, ниже парни ответили что можно
AR
16:19
Alexander Ruliov
Из первой во вторую я могу на стеке передать значение (например, чтобы сравнить, что данные не изменились после вызова), а вот как результат выполнения взять со стека и передать в следующий тест непонятно.

Позже потыкаю, может в c7 куда-то можно записать, но c4 точно чистится между вызовами :(
AP
16:23
Andrew Python
In reply to this message
cell data = get_prev_c4();
16:23
In reply to this message
магия toncli
AR
16:30
Alexander Ruliov
In reply to this message
Не работает в проверочной функции.
16:32
Точнее не, там где мне надо оно работает, но возвращает пустую ячейку и хз, как в неё записать.
16:34
Кейс такой. Пишу тест для пятого таска. Нужно взять результат pack_data и положить его в data следующего вызова.

Пока решаю это дополнительным методом init_data в контракте, который делает set_data, ну и в тестах норм get_prev_c4 работает.

Но хочется в тесте дёрнуть pack_data, взять его результат и заюзать дальше, чтобы код контракта чистым был.
AP
16:37
Andrew Python
In reply to this message
Ты можешь просто такую же pack_data сделать в тестах?
V
16:38
Vitaly
In reply to this message
За тайпскрипт спасибо
AR
16:40
Alexander Ruliov
In reply to this message
Могу, но влом копировать её каждый раз, как поменяю)
V
16:40
Vitaly
Есть вопрос, а как в TON безопасно что-то вроде распределённой транзакции провести, что будет если при вызове очередного сообщения не хватит тонов и по каким принципам это рассчитывать заранее?
c
16:40
cryshado
In reply to this message
ну ты можешь убить свой кошелек и сделать его frozen
16:41
и потом чтобы восстановить, проде надо деплой сообщение отправить или около того
16:41
ну а вообще смотри, там fwd fee + gas fee
16:41
форвард фи заранее можно посчитать
16:41
газ фи зависит от контракта
V
16:42
Vitaly
In reply to this message
Ну, если говорить абстрактнее, вот есть у меня СК который должен по итогам мессаги сделать несколько действий, включая получение ответов с других СК допустим
16:42
И в какой-то момент цепочка мессаг накрывается
16:43
Получается СК останутся в некотором невалидном состоянии
16:43
Я просто смотрю на TON как на условную базу данных и не очень понимаю как в нём консистентность сохранять антихрупкую
c
16:44
cryshado
In reply to this message
ну да может такое быть, это проблема, ее либо решают: заранее тестируя контракт(чтобы определить gas fee), считают fwd fee и запрещают отправку в другие воркчейны(за это может быть доп плата) и т д. Либо ганяют max gas в размере 1 тон
V
16:44
Vitaly
Звучит хрупко
c
16:44
cryshado
все сложно, когда дело доходит до того, чтобы контракты общались между собой, и все хорошо пока контракты знают с кем они общаются - потому что знают, сколько тонов прикреплять, а если нет, то все плохо
16:44
In reply to this message
да
V
16:45
Vitaly
Есть какие-то теоретические решения этого в будущем?
c
16:45
cryshado
In reply to this message
если можно было бы переложить оплату всех комиссий за цепочку из транзакций на 1 контракт(например кошелек) все было бы удобно и просто
16:45
но это жоские изменения в ноде нужны
V
16:46
Vitaly
Эх
АА
16:53
АГ АГ
😂
c
16:53
cryshado
чево смешного
M
17:05
Max
дизайн tvm и fift очень сильно отдает олимпиадничесвтом :)
D
17:06
Dima
java-client тоже своеобразный
V
17:06
Vitaly
In reply to this message
Как понять что твой начальник мегаломаньяк с PhD - на проекте свой инхаус язык скриптов (с) мудрость с GDC
AP
17:07
Andrey Pfau
In reply to this message
Ну так Николай Дуров в первую очередь математик, а не программист
T
17:07
TON Дев Чат
In reply to this message
Изменения в ноде не сложные, а невозможные: асинхронность в тоне не каприз Николая, а необходимость вытекающая из строгой локальности исполнения (при исполнении транзакции необходим очень маленький контекст, который позволяет распаралеллить вычисления и "развязать" шарды). По этой причине контракт начала цепочки не может платить за всю цепочку за свой счет, т.к. это потребует н-ному контракту в цепочке доступ к состоянию инициатора (который может быть в другом чейне). И тогда плакало все шардирование.
V
17:10
Vitaly
In reply to this message
Ну так, окей, а как в итоге консистентность поддерживать в распределенном окружении, когда мессага или контракт могут от бедности сломаться без реверта без ничего
M
17:12
Max
In reply to this message
я сам олимпиадник, догадываюсь что многие в этом чате тоже. для меня не влом перекладывать биты и играться со стеком

но для популярности и поддерживаемости ton нужно больше слоев абстракции. func пока что это никак не решает, пока это просто адаптер для asm вызовов
JF
17:13
John Fyodor
In reply to this message
Можно с девелоперской ветки попробовать что-то потыкать, но я достаточно часто вношу изменения в апи, иногда там брейкинг ченджес. На данный момент список реализованого в девелоперской ветке:
17:13
V
17:14
Vitaly
In reply to this message
Дело не влом или нет, а в том что для такой замечательной масштабируемой системы не придумали антихрупких механизмом распределённых транзакций и стабильности оплаты газа в цепочки мессаг
17:16
То что там биты перекладывать это конечно нахуевертили, но с появлением людей которые хотят по человечески работать кодеген бы придумали и прочее
AP
17:16
Andrey Pfau
In reply to this message
Это в процессе:
https://github.com/andreypfau/ton-kotlin
V
17:18
Vitaly
In reply to this message
Это имплементация TON на котлине или транспилятор из котлина в фифт/фунцы?
AP
17:18
Andrey Pfau
In reply to this message
Имплементация, сейчас веду работу над adnl клиентом чтобы можно было запросы делать без нативных библиотек
АА
17:19
АГ АГ
👍
V
17:19
Vitaly
Я просто говорил о чём-то именно для удобства разработки СК, человеческий язык со структурами данных, типизацией
AP
17:19
Andrey Pfau
Пришлось даже с нуля написать реализацию curve25519 чтобы была полная кроссплатформенность:
https://github.com/andreypfau/curve25519-kotlin
V
17:20
Vitaly
Потому что сейчас это позорище, всё на безтипных cell и постоянном повторении store_x/load_x
17:21
Даже возможности типизировать протокол для имплементации нет, что вообще нонсенс
17:21
Ну тут опять, не примите за предъявы к разрабам, просто подгорает знатно
д°
17:22
да ня °°°°° | ~
In reply to this message
Пока что тут такой положняк, что если тебе чего-то не хватает, то напиши это сам
AP
17:22
Andrey Pfau
In reply to this message
Согласен
17:23
Когда я пришел в тон все вообще в текстовых редакторах кодили без подсветки синтаксиса и прочего, я взял и написал свой плагин для intellij им даже ton foundation активно пользуются:
https://plugins.jetbrains.com/plugin/18541-ton-development
P
17:24
Priani4ek
In reply to this message
А просто не смотреть на все системы в мире через весьма специфическую призму субд. Сеть тон хорошо подходит для реализации в парадигме messaging patterns или, например, сигнальных сетей с заданной моделью состояния вызова
17:25
В принципе, оркестрация vs хореография в таких сетях смещена в сторону хореографии
V
17:26
Vitaly
In reply to this message
А как насчёт не смотреть на мир через паттерны, а практические задачи решать? У тон акторная модель. У тон нет распределённой транзакции. Как предполагается обеспечивать консистентность операций требующих взаимодействие двух СК
AP
17:26
Andrey Pfau
In reply to this message
+
P
17:29
Priani4ek
In reply to this message
Возвращать статус операции или таймаутится
M
17:30
Max
еще такой прикол:

я получил slice in_addr, который потенциально содержит адрес и теперь я хочу проверить его на валидность:

я пишу parse_addr(in_addr) без каких-либо присвоений tuple, хочу чтобы он кинул ексепшн при парсинге или ничего не сделал.
при компилиции в fift этот вызов просто откидывается, как ненужный.

Для того, чтобы он вызывался в fift, мне нужно взаимодействовать с tuple, которую возвращает parse_addr(), например throw_if( ...., first(tuple) != 123).

можно ли как-нибудь персистнуть вызов при компиляции из func в fift?
V
17:30
Vitaly
In reply to this message
А если деньги на газ закончились?
17:31
А главное, как восстановить состояние?
P
17:32
Priani4ek
Значит отказ узла, откат по цепочке ск до предыдущего состояния (точнее, не переход в него без подтверждения)
V
17:32
Vitaly
Если в СК1 уже изменения произошли, А в СК2 провал
TP
17:32
Tim Pavlov
now()
в func возвращает время в секундах или миллисекундах?
P
17:33
Priani4ek
In reply to this message
А зачем они произошли без подтверждения успеха от ск2?
AP
17:33
Andrey Pfau
In reply to this message
Миллисекунды posix epoch
TP
17:33
Tim Pavlov
In reply to this message
спасибо
д°
17:34
да ня °°°°° | ~
In reply to this message
А костылями то хоть можно, как тут писали?
V
17:37
Vitaly
In reply to this message
Ну вот сейчас откройте ton NFT да посмотрите на смену владения или деплой или ещё что-то такое
17:37
Там на каждом шагу мина если вдруг денег на газ не хватит
17:38
То есть, окей, если мы знаем устройство контракта, то можем залить его деньгами на газ, получив остаток
17:39
И положиться что всё мессаги всегда дойдут до адресатов, к если нет - ну всё, раздупляйте состояние сети как хотите
AK
17:40
Azat Khabirov
Ребят! Возьмите меня кто нибудь к себе джуном за бесплатно. Очень хочу разрабатывать под TON с опытными наставниками. У меня есть более 6 часов свободного времени каждый день

был опыт в течении 6 мес работы джуном по фронтенду 🤌🏿
NM
17:44
Nikita Misharin
In reply to this message
Бро, тут без шансов. Биты перекладывать, самодельный ассемблер читать, дебага нормально нет, тулов нет
AK
17:44
Azat Khabirov
In reply to this message
я могу начать с азов
D
17:45
Daniil
Я так понимаю, тон не даст отправить 2 одинаковых транзакции на один адрес одновременно?
T
17:47
TON Дев Чат
In reply to this message
На самом деле костылями в том сообщении называли паттерн "думай сколько отправлять денег, чтобы их хватило на операцию". Так-то в том же эфире когда вы вызываете метод другого контракта вы тоже указываете кол-во газа для этого вызова. просто в солидити это сейчас под капотом и легче хэндлить какие-либо реверты (можно всю транзакции зафейлить).
17:47
In reply to this message
Одно за другим сообщение конечно даст (в рамках одной транзакции отправка, в рамках разных обработка)
AP
17:48
Andrey Pfau
In reply to this message
Я тебе написал 5 минут назад, но ты заигнорил, жаль
D
17:48
Daniil
In reply to this message
Только что, одновременно 2 одинаковых транзакции отправил, дошла только одна
T
17:59
TON Дев Чат
In reply to this message
Есть гарантии доставки сообщений. Так что ситуация в тоне даже лучше в каком-то смысле, чем в классических акторных фреймворках, где таких гарантий нет. С другой стороны ситуация хуже тем, что обычно актор может сколько угодно процессить сообщение, а тут нужно думать о газе. Один из интересных способов борьбы с этим делать контракты с константым потреблением газа. Например токены хранящиеся не все на одном контракте, а каждый на своем.
В целом, никакой глобальной катастрофы с непредсказуемостью в ТОНе нет, просто при переходе с других систем смартконтрактов приходится активно думать и перестраивать модели в своей голове.
c
18:00
cryshado
In reply to this message
Куку, я не говорил, что нужно выпилить асинхронность
18:01
Мне кажется можно что-то придумать с делегированием комиссий, не нарушая асинхронный подход
18:01
Условно нода может знать за какие действия кто платит
18:02
Ток сделать как-то оптимизированно
AT
18:02
Andrey Tvorozhkov
In reply to this message
Например, тонкли)
18:03
In reply to this message
Мне кажется что это только хорошо и никакого "позорища" тут нет.
V
18:03
Vitaly
In reply to this message
Оно условно константное. Мессаги то по разному обрабатывают. И рапределенность по СК как раз и создаёт проблему, что если транзакция включает в себя операции над несколькими СК, то в случае провала на какой-либо стороне от того что денег на газ не хватило ты получаешь невосстановимое состояние
AT
18:03
Andrey Tvorozhkov
Кстати про клетки - а вы видели tlb?)
18:03
In reply to this message
Если что в плюсах оно все очень даже типное за счет тлб и автоматической сериализации / десериализации
V
18:04
Vitaly
In reply to this message
Как этот тлб будет формально в языке, а не в описании в тексте сбоку - можно о нём говорить
18:04
In reply to this message
Какое мне дело до плюсов, когда надо код СК писать?
AT
18:05
Andrey Tvorozhkov
In reply to this message
Почему "надо"?) Вас никто не заставляет
V
18:05
Vitaly
In reply to this message
Пасибо, программировать тоже
T
18:05
TON Дев Чат
In reply to this message
Ну в любой акторной модели так
AT
18:05
Andrey Tvorozhkov
In reply to this message
Ну я не к тому, что нужно впадать в крайности. А к тому, что в тоне не func единым можно что-то делать
V
18:06
Vitaly
In reply to this message
СК на плюсах писать?
18:06
Так я могу просто БД использовать и свой код, зачем вообще блокчейн?
18:06
Не разводи демагогию
AT
18:07
Andrey Tvorozhkov
In reply to this message
Я бы скорее посмотрел вот в эту папочку и доделал того, чего нехватает
V
18:10
Vitaly
In reply to this message
Заебист. Хочешь сделать приложение вокруг TON иди сначала допиши кусок языка (тем более что мне не язык нужен, а транзакция распределенная) в плюсах, которые Дуров накарябал
AT
18:10
Andrey Tvorozhkov
In reply to this message
Вообще нет.
18:10
Мы подняли beta.disintar.io без каких либо правок в официальный репозиторий
V
18:11
Vitaly
In reply to this message
Это не совсем верно, в другой модели я мог бы откат сделать и словить собственно инфу о фейле по таймауту. А если у меня бабки закончились на газ внезапно, то умрёт последняя операция, А не всё по цепочке
18:11
In reply to this message
Молодцы
18:11
In reply to this message
Ну ты мне именно это предложил
AT
18:12
Andrey Tvorozhkov
Ну я верю что чего-то может нехватать)
18:12
Например нам нехватало тестов и окружения - в результате получился тонкли
18:12
Кажется, тонкли достаточно, чтобы поднять любое +- нормальное приложение в тоне с продакшн реди системой
18:13
Ну еще в ton-k8s можно посмотреть
V
18:13
Vitaly
Ну, понимаешь, речь не о чего-то, а о довольно фундаментальной вещи - фейл распрелеленной операции если её часть не выполнилась в условиях нехватки оплаты газа
AT
18:13
Andrey Tvorozhkov
Если хотите что-то совсем экзотичное - да нужно чуток подправить опенсорс
18:13
Так оно по жизни работает)
V
18:13
Vitaly
In reply to this message
Ну и вообще в любых условиях
18:14
То есть чтобы неконсистетное состояние было невозможно
T
18:14
TON Дев Чат
In reply to this message
мы точно об акторных моделях говорим? какой откат распределенной операции? а если две распределенные операции в процессе? как одну из них откатывать?
Смысл акторности в том, что обработка сообщения атомарна, все остальное нет и с этим надо жить. Это в точности то, что происходит в ТОНе.
V
18:16
Vitaly
Ладно, окей, не видите проблемы и бог с ним
AT
18:21
Andrey Tvorozhkov
In reply to this message
🥸
18:22
Я вообще прикола не понял)
T
18:25
TON Дев Чат
In reply to this message
Речь про то, что если писать контракты неправильно, считая, что каждое сообщение обрабатывается успешно, то когда что-то пойдет не так - все может оказаться плохо. Например контракт А отправил токены, а контракт Б не принял и они навсегда потерялись.
Ну и немного про то, что столь же удобных инструментов обработки неудачных транзакций (да и вообще способов минимизировать отправку неудачных) как в том же эфирном солидити пока нет.
AP
18:27
Andrew Python
А если в случае ошибки словить баунс и пустить отмену по цепочке контрактов?
JF
18:29
John Fyodor
In reply to this message
можно словить ошибку в отмене по цепочке контрактов
18:29
и так по кругу
c
18:29
cryshado
In reply to this message
тон круто 👍
JF
18:30
John Fyodor
да не, на самом деле нормальная история для атомарных опреаций
T
18:31
TON Дев Чат
In reply to this message
Это один из предложенных "стандартных" путей, именно для в гайдлайне предложено использовать layout из op и query_id. В этом подходе есть некоторые подводные камни (с хранением запросов), но в целом схема рабочая.
IP
18:31
Ilya Pishchulin
Хай, немного подниму, может быть кто-то сталкивался?
IP
18:31
Ilya Pishchulin
IP
Ilya Pishchulin 02.04.2022 15:02:48
Хай, кто-то сталкивался с тем, что toncli не может добраться до папки с бинариками?

Кажется, перепробовал уже всё, убирал папку из хомяка, меняел ей прав через chmod, но так и не получилось добраться до истины
18:31
drwxrwxrwx@ 22 i.pishchylin staff 704 Mar 30 22:50 ton-macos-binaries
AT
18:35
Andrey Tvorozhkov
In reply to this message
Нужен полный путь до бинарника
18:35
чтобы на конце был бинарник)
18:35
/func например
IP
18:36
Ilya Pishchulin
Screenshot 2022-04-03 at 18.36.16.png
Not included, change data exporting settings to download.
27.3 KB
Я думал, что по доке он хочет путь до директории со всем этим
18:39
Но я попробовал указать /Users/i.pishchylin/ton-macos-binaries/lite-client, так как func и fift нету в скаченной директории, но ему всё равно не нравится

drwxrwxrwx@ lite-client
18:41
Я похоже понял, пробелема в прекрасной системе верификации файлов которая не дает читать их, так как они пренадлежат "неверефицированному разработчику", а ошибка максимально не понятная
JF
18:44
John Fyodor
In reply to this message
😅
IP
18:51
Ilya Pishchulin
In reply to this message
И отдельно спасибо, без этого бы не допер, что он хочет до каждого бинарника отдельно
AT
18:52
Andrey Tvorozhkov
In reply to this message
🧐
P
19:15
Pi
In reply to this message
такая же тема
IP
19:16
Ilya Pishchulin
In reply to this message
Ну мы вот порешали) Ты разобрался, нужна помощь?
P
19:16
Pi
ппц нужна, не че не выходит уже второй день сижу ипусь
IP
19:17
Ilya Pishchulin
Покажи скриншот, какой бинарь тебе нужно установить
P
19:17
Pi
полный путь все ввожу, пишет что файл не найден, хотя он в папке
OB
19:25
Oleg Baranov
подскажите плиз, а есть ли эксплорер тестнета?
c
19:31
cryshado
In reply to this message
OB
19:32
Oleg Baranov
In reply to this message
спасибо
c
19:35
cryshado
In reply to this message
баганный весь какой то, тогда лучше https://test.tonwhales.com/explorer или для разрабов https://test-explorer.toncoin.org/ и https://testnet.ton.cx/
P
19:35
Pi
есть кто на винде компилятор поставил?
c
19:35
cryshado
In reply to this message
лучше не страдай и поставь линукс
I
19:35
Isaac
In reply to this message
Не сталкивался, что конкретно за баги?
P
19:35
Pi
In reply to this message
а что на винде это жестко?
c
19:36
cryshado
In reply to this message
может не показывать транзакции, как сто странно показывает тразакции, где больше одного out и т д

интерфейс не приятный, такой реакт с багуленами
I
19:36
Isaac
In reply to this message
Тут ошибки часто сыпятся и не открывает адреса
c
19:36
cryshado
In reply to this message
редко, но зато удобнее имхо)
EK
20:17
Eugene Kartavchenko
День добрый. Слышал что есть в планах выпустить публичное апи для TonKeeper-кошельков. Это так? Если да - какие прогнозы?
M
20:47
Max
In reply to this message
.
повторюсь, кто-нибудь может ответить на этот вопрос?

Как при компиляции из func в fift гарантированно оставить команду, если результат команды не используется (команда вызывается, чтобы бросить эксепшн в случае плохого input)
РБ
20:51
Роман Барбье
In reply to this message
попробуй написать свой компилятор
A
20:52
Andrei
In reply to this message
Добавить impure в ее определение
20:53
Или можно к результату применить ~impure_touch
M
20:54
Max
In reply to this message
спасибо!
AR
23:08
Alexander Ruliov
Вопрос общий возник, насколько валидно в случае, если тебе нужно принять конкретное кол-во грамм от кого-то, заводить специально для этого платежа новый контракт? Ну, нужно мне, например, от кого-то получить 50 монет. Я скрипт дёргаю, оно заводит контракт, я даю человеку адрес, он туда перечисляет, если прислал меньше, возвращаю обратно, если норм, то забираю сколько нужно и дальше уже перевожу себе.

Профит в том, что это даёт возможность не говорить человеку "ты вот обязательно в своём переводе вот такой комментарий оставь, или дай нам свой адрес", а просто дать ему адрес куда монеты слать, что в итоге отправит нужное сообщение, что стартанёт какой-то другой контракт, либо на кошелёк перешлёт, или ещё чего.
23:10
Или может есть какие-то первоначальные комиссии и выгоднее таки держать пул адресов, которые лочить за конкретными транзакциями?
c
23:10
cryshado
In reply to this message
твой способ пустая трата газа, способ с коментом лучше. Можешь отклонять в контракте кошелька перевод, если нет комента
AR
23:14
Alexander Ruliov
Чтобы нормально обрабатывать комменты и понимать, валидные ли они, придётся внешним сообщением записывать, что вот такой вот коммент может быть. Возможно на этот словарь газа больше будет уходить, чем на заведение нового контракта.

Ну и как я понимаю, пока на новый адрес монет не переведут, я с ним могу ничего и не делать и ничего не тратить. Ну и сообщения неудобные, как по мне, тем более если мне по нему нужно отправить сообщение в другой контракт с совсем другим сообщением.

Вопрос в том, какие комиссии собираются при инициализации контракта?
c
23:56
cryshado
In reply to this message
Просто проверяй размер комента и его наличие. Если юзер ошибся, уже его проблема - это трудно сделать случайно, особенно по ссылке или qr коду
4 April 2022
I
00:10
Isaac
In reply to this message
Нет, способ с комментом это костыль, любой приличный сервис должен делать депозитные кошельки для пользователей

К тому же комиссии в TON копеечные, аргумент не аргумент
c
00:16
cryshado
In reply to this message
Делая депозитные кошельки вы больше нагружаете сеть, а также вам в итоге нужно будет с них колектить все на свой адрес.

Все блокчейны, которые имеют возможность прикрепить комментарии давно используют их для платежей
I
00:16
Isaac
In reply to this message
1 NFT коллекция = 10 000 адресов

Как-нибудь выдержим и депозитные кошельки
00:17
In reply to this message
Это не проблема для TON вообще
00:17
И тот же Binance даже для эфира с безумными комиссиями использует пополнения без комментариев не просто так, подумайте над этим.
00:18
Если вы думаете что вы умнее тех кто делает Binance спорить не будем
c
00:26
cryshado
In reply to this message
Это тоже плохо, это тоже костыль, никто так не делает, и делать не должен
00:26
In reply to this message
У эфира нет нативных комментариев
00:27
А для блокчейнов, где есть такая возможность они просят комментарий
I
00:27
Isaac
In reply to this message
Почитайте как работают NFT в TON
AR
00:27
Alexander Ruliov
О, можете пояснить за NFT, кстати? В моём понимании кошелёк, у которого есть метод для изменения публичного ключа уже NFT. Или это не так?
AR
00:28
Alexander Ruliov
О, спасибо))
c
00:28
cryshado
In reply to this message
Как хочу так и работают, я разработчик, могу творить 😃
00:29
In reply to this message
Это большая ошибка возносить разработчиков бинанса на самые высокие высоты. Они тоже делают где-то что то не так, а где-то что то так. Это свойственно всем людям, и это нормально. Например окекс принимает пополнение в тон по комментарию, как и бинанс к многим криптовалютам просит MEMO
I
00:30
Isaac
In reply to this message
МЕМО просят там где без него не обойтись никак
00:31
В общем, не уважать опыт крупных игроков = заработать свой на ошибках, дерзайте
00:31
Deleted Account
In reply to this message
А где-то можно ознакомится с вашими работами?
c
00:39
cryshado
In reply to this message
Уважайте тогда блокчейны где не делают 10к контрактов на 10к нфт в коллекции, их опыт
00:40
In reply to this message
I
00:40
Isaac
In reply to this message
Как раз на основе этого опыта TON сделан таким какой он есть.
c
00:40
cryshado
In reply to this message
Это не тон сделан так, разработчики могут делать смарт контракты так, как они хотят
00:40
Никто не заставляет вас делать 10к контрактов на 10к нфт
CP
00:41
Catchain Protocol
In reply to this message
+
AR
00:43
Alexander Ruliov
In reply to this message
Но зато это более оптимально :)
c
00:49
cryshado
In reply to this message
Кто вам такое сказал?
00:49
Вы на деплой 10к контрактов больше газа потратите, это как минимум. Не говоря сколько в нагрузки на блокчейн лишней создаете
CP
00:49
Catchain Protocol
😂😂😂
00:51
у каждого своя правда, но не стоит отрицать - спектр подходов и решений таких проблем огромен и включает в себя разные решения с разными выгодами и плюсами, здесь нет более хорошего или плохого, всегда надо исходить из потребностей
c
00:51
cryshado
In reply to this message
Но суть в том, что никто не ограничивает одним решением или стандартом
CP
00:51
Catchain Protocol
Да
00:52
А куча девелоперов сидят и думают что все что в репе тона это официальщина и это очень круто потому что репа тона же
00:52
Это централизация в явном виде
c
00:54
cryshado
In reply to this message
Гитхаб упадет и все тона нет 😃
CP
00:54
Catchain Protocol
😭😭😭
AR
01:11
Alexander Ruliov
In reply to this message
Если один NFT будет продан дороже доллара, то всё окупится)
c
01:12
cryshado
In reply to this message
Деплой 10к контрактов вам возможно обойдется в 1к или более тон.
AT
01:12
Andrey Tvorozhkov
Чето вы тут опять намудрили и тон вам не правильный. Всех новых людей распугаете.

Кажется, что много критики в которой теряется все прекрасное и хорошее. Не поддерживаю.

Тон крутой и прекрасный. Тут много замечательных и умных людей, а сама технология очень сложная и поэтому привлекательная.

С фаундейшеном общаться можно и получать адекватный фидбек. Технологически никто не запрещает сделать свой 10kNFTinOne контракт, назвать это стандартом и радоваться жизни.

На мой взгляд, сейчас нужно заниматься привлечением новых разрабов (созданием понятных инструментов, документаций) и привлечением новых не русскоговорящих пользователей. На чем @disintar и будет фокусироваться.

Уж точно постоянно говорить о том, что тон плохой не нужно. Во первых это не так, во вторых это отталкивает.

Всем 🤗
CP
01:13
Catchain Protocol
хорошая и адекватная позиция от добряка 😇
c
01:13
cryshado
In reply to this message
Я про то что тон плохой ни слова не сказал
AR
01:13
Alexander Ruliov
In reply to this message
Дык мне не нужно 10к деплоить пока никто за это не заплатит. А как заплатят, с них и возьму монеты за деплой.
c
01:14
cryshado
In reply to this message
Гений, вопрос на**я? Извините за грубость. Тут и с моральной точки зрения смысл нфт коллекции теряется, как в случаи с лези минтингом на opensea, так и проявляется отсутствие логики - зачем платить больше, если можно кратно меньше?
AT
01:15
Andrey Tvorozhkov
In reply to this message
Ну просто ты осуждаешь каждый аспект (от ноды, асинхронного функционала, 10к нфт) и это все у меня лично складывается в такую картину.

Если бы я сейчас залетал в тон и видео такие обсуждения, я бы не сильно был рад.

Почему бы не сфокусироваться на полезном функционале и фишках, чем говорить о том как все плохо?)
AR
01:16
Alexander Ruliov
In reply to this message
Каждый раз когда кто-то будет продавать свой токен он будет платить комиссию за то, что все остальные сидят смирно и никуда ничего не продают. Это не честно.
A
01:17
Andrei
In reply to this message
Сторадж фи вовсе не обязательно снимать с попавшегося юзера при взаимодействии -- можно, например, снять заранее при минтинге на 100 лет вперёд (это будет аналогично эфирной комиссии за создание новых данных)
c
01:18
cryshado
In reply to this message
Я вообще ни слова не сказал, про то что асинхронность это плохо. Я уже говорил, асинхронность не про 10к контрактов, нигде дуров даже о таком не думал.

Ты видел код mytonctrl (сам говорил свое мнение про него) - код ноды не лучше в глазах человека, который знает, что такое хороший код на с++

10к нфт подвергаются рассуждением здравой логики, никто даже думать не хочет, что может быть иначе. Я хочу, чтобы в разработчиках лилась сила критического мышления. Любую реализацию, идею и т д нужно ставить под сомнение, только это поможет сделать проект лучше
AT
01:21
Andrey Tvorozhkov
In reply to this message
Я говорил что код не оч, но то что оно работает у всех это прекрасно.

Рабочее MVP куда лучше нерабочего идеала 🤷🏻‍♂️
AR
01:21
Alexander Ruliov
In reply to this message
Где можно читнуть, как storage fee начисляется? Она константна, я смогу на глаз прикинуть, что "этого количества на 100 лет хватит"? Или там оно зависит от параметров, которые завтра изменятся и мой контракт будет на грани смерти?)
AT
01:23
Andrey Tvorozhkov
In reply to this message
Без кода ноды мы бы здесь все не собрались)

Круто что кто-то занимается его перепиской на более продакшн-круто-реди, но то что это вызывает такую токсичную реакцию о том, что все в этой жизни тоне не так - меня смущает. Но это всего лишь мое мнение)
c
01:23
cryshado
In reply to this message
Если это мвп в глазах людей, то я николай дуров
AT
01:24
Andrey Tvorozhkov
In reply to this message
Задампи через csr и посчитай количество бит и клеток
01:24
Дальше возьми конфиг парам (не помню точно, вроде 23) и помножь
01:24
В тонкли завезу чуть позже
A
01:24
Andrei
In reply to this message
Зависит от параметров, да. Но в тоне даже код электора может меняться, что может и стейкинг сломать, например.
c
01:26
cryshado
In reply to this message
Просто многие не понимают мой посыл возможно, я нигде не говорил что в тоне все плохо(и тем более что тон плохой), я вообще восхищаюсь тем как все работает.

Но мы не должны надевать розовые очки, мы должны продолжить дело, которое было начато.

Извините, что перешел от технической части к такой морали. Офтоп
JF
01:27
John Fyodor
In reply to this message
👍
AR
01:27
Alexander Ruliov
В принципе, на практике это не страшно, да. Если случается крах контракта из-за технических условий (изменений тарифов, etc), ты как владелец неких токенов можешь сказать стейкхолдерам "без паники, сейчас мы передеплоимся на вот этом адресе".
01:27
Хотя это немного не по концепции, но что поделаешь.
AT
01:27
Andrey Tvorozhkov
In reply to this message
Конечно это мвп, большая часть фишек не реализовано. Сейчас все находится на стадии «пред ожидания» того, что случится. Мне кажется это норм. Все ждут x10 / x100 / x1000.
01:28
In reply to this message
Срочно пишем контракт оракулов на set_code :))
c
01:29
cryshado
In reply to this message
Экономически, вроде тон не рассчитан на такую дикую волатильность. Но это мои догадки. Да и тогда точно нужно будет обновлять значения конфига сети, или делать динамичную плату за газ
AJ
01:29
Adam Johnson
Добрый всем. Может кто знает, куда переехал https://ton.org/brand-assets?
AT
01:30
Andrey Tvorozhkov
In reply to this message
Согласен, но тут, на мой взгляд, одевать похоронный костюм тоже не надо)
A
01:30
Andrei
In reply to this message
Вообще изменение параметров преподносится как способ избежать хард-форков, так что на самом деле возможность их менять не означает, что это нормальная ситуация
JF
01:31
John Fyodor
In reply to this message
Да никто не надевает, мы работаем над экосистемой для разработчиков
c
01:31
cryshado
In reply to this message
+
JF
01:33
John Fyodor
In reply to this message
Тон - заебись, порог входа высокий, хотим исправить это
c
01:34
cryshado
In reply to this message
Ну и круто при этом не ломать дрова, не делать костыли(как тот же жсон рпс), а думать о наиболее безопасных, оптимальных решениях. Что собственно и делается
AR
01:35
Alexander Ruliov
In reply to this message
Мне тут в личке с одним человеком идея пришла.

developer fee. Когда деплоишь контракт, его код хэшируется (так чтобы если просто переназвать методы хэш не менялся) и блокчейн запоминает соответствие хэш-адрес. Затем любой, кто использует этот код контракта отчисляет комиссию его разработчику.

В итоге если хорошо будет сделано, прилив разработчиков гарантирован, пока контракты не схлопнутся до минимально оптимальных.
JF
01:35
John Fyodor
In reply to this message
Ну джейсон рпс не костыль, а скорее временная быстрая и удобная мера, пока нет других инструментов, как и описано в доках
c
01:35
cryshado
In reply to this message
Согласен
JF
01:35
John Fyodor
Будет удобный аднл - будут использовать аднл
A
01:36
Andrei
In reply to this message
Что мешает добавить NOP в любое место и получить другой хеш?
AR
01:37
Alexander Ruliov
In reply to this message
А он больше газа ест, это не выгодно :)
c
01:37
cryshado
In reply to this message
Да и не совсем понятна мотивация, мы стараемся уменьшить комиссии же
01:37
Какая то слишком сахарная фича
A
01:38
Andrei
In reply to this message
Если разработчик будет получать комиссии меньше, чем стоит один NOP, то жаль его конечно)
AR
01:38
Alexander Ruliov
In reply to this message
С каждой транзакции.
c
01:39
cryshado
In reply to this message
ИК
01:39
Игорь Коняхин
In reply to this message
Немного поздно, но выскажусь против Линукса. На Windows прекрасно работает бОльшая часть разработки. Если блокчейн хочется не срочно, то я бы начал либо с разработки игр, либо с Web-разработки - две наиболее визуальных, интуитивно интересных области
01:40
In reply to this message
Напоминает систему Патентов/Копирайта
Мне кажется блокчейн про противоположное
AR
01:40
Alexander Ruliov
In reply to this message
А как заработать разработчику смартконтрактов?
c
01:40
cryshado
In reply to this message
Согласен, что иногда есть смысл идти по лестнице с высокого уровня, постепенно опускаясь ниже. Но многие никогда не узнают, что есть что-то более чем условный пересахареный веб сервер
01:41
In reply to this message
А как заработать Линусу Торвальдсу?
ИК
01:41
Игорь Коняхин
In reply to this message
Сделать полезный смарт-контракт, которым будут пользоваться. Но вообще так сложно ответить
AR
01:42
Alexander Ruliov
In reply to this message
Создать сообщество, в которое все хотят нести деньги, чтобы получить свои плюшки побыстрее и не заниматься этим самим.
AP
01:42
Andrey Pfau
Обычно опенсорс разработки поддерживаются за счёт сообщества
c
01:42
cryshado
In reply to this message
Угу
AP
01:42
Andrey Pfau
Создаются всякие фонды некоммерческие и тд
ИК
01:42
Игорь Коняхин
In reply to this message
Спасибо за ответы
Придётся пока что мудрить
AR
01:42
Alexander Ruliov
In reply to this message
Ну да, мне в голову только контракт лотереи приходит.
AP
01:42
Andrey Pfau
Главное сделать классный продукт на который будет спрос а финансирование уже потом подойдёт если оно того стоит
01:43
Так работает и с линуксом на что и живет Линус Торвальд
A
01:43
Andrei
Контракты монетизируются только если они часть какого-то продукта
ИК
01:43
Игорь Коняхин
In reply to this message
Ну честно говоря, у смарт-контрактов реально не так много видимых практических применений:)
А хайпа! ...
A
01:43
Andrei
Можно токены своего проекта выпустить
AP
01:43
Andrey Pfau
In reply to this message
На самом деле применений масса, проблема в том как интегрировать в текущую мировую систему
ИК
01:44
Игорь Коняхин
In reply to this message
Какие кроме азартных игр?
c
01:44
cryshado
In reply to this message
Нет блин Ричард Столман лотерею создает
AP
01:44
Andrey Pfau
Даже взять тот пример с правом собственности на недвижимость, проблема не в самом смарт контракте, а в том как подойти с юридической стороны
A
01:44
Andrei
In reply to this message
Покупать картинки)
ИК
01:44
Игорь Коняхин
In reply to this message
Смарт-контракт может контролировать только то, что находится на блокчейне
c
01:45
cryshado
In reply to this message
Абсолютно не верно
A
01:45
Andrei
In reply to this message
Оракулы существуют
c
01:45
cryshado
In reply to this message
+
AR
01:45
Alexander Ruliov
In reply to this message
Никакого доверия.
A
01:45
Andrei
In reply to this message
Надо децентрализованных делать
AP
01:45
Andrey Pfau
In reply to this message
Ну так узко мыслите, это не смарт контракт за пределы блокчейна выносить надо, а наоборот блокчейн интегрировать в реальный мир
c
01:46
cryshado
In reply to this message
Есть децентрализованные оракулы, которые мотивированы вознаграждением. Они могут быть чуть ли ни как свой мини блокчейн
ИК
01:46
Игорь Коняхин
In reply to this message
Как, например?
AP
01:46
Andrey Pfau
In reply to this message
А его и не должно быть, все должно строиться на парадигме Zero Trust. Это основа блокчейн технологий
c
01:46
cryshado
In reply to this message
Места на парковках нфт. Хлеб в пятёрочке за тоны.
AR
01:46
Alexander Ruliov
In reply to this message
+
AP
01:47
Andrey Pfau
Даже та ценность бумаги о владении квартиры подкреплена только тем, что государство ручается за это и вы доверяете государству
01:47
По сути эта бумажка вообще ничего не значит без государства
ИК
01:49
Игорь Коняхин
In reply to this message
> Хлеб в пятёрочке за тоны.
Ну оплата - это базовый функционал блокчейна, и учитывая, насколько я наслышан, низкие ТОН-комиссии, он имеет шанс стать системой для повседневной оплаты

> Места на парковках нфт
Фиксирование права собственности в реальной жизни, кстати, хороший юзкейс. Но тут встаёт вопрос: не слишком ли "просто" переходит переход собственности в таком случае? Если человек может перевести другому человеку квартиру за 10 секунд - это небезопасно
AP
01:50
Andrey Pfau
In reply to this message
Почему нет?
JF
01:50
John Fyodor
Смотрите в дижджитал мир в первую очередь
ИК
01:50
Игорь Коняхин
In reply to this message
Ну как и NFT без государства ничего значить не будет:)
Если придут дяди с дубинами, и разговоры об NFT не помогут
AP
01:50
Andrey Pfau
Как раз таки что никакой бюрократии кроме кода в смарттконтракте
c
01:50
cryshado
In reply to this message
Децентрализация это про свободу, хочу подарил бездомному квартиру за 10 секунд)
01:51
Ну это тоже спорные юзкейсы
AP
01:51
Andrey Pfau
In reply to this message
Это наоборот плюс, а не минус
c
01:51
cryshado
In reply to this message
В сети тоже много че еще нужно сделать
01:51
In reply to this message
+
JF
01:51
John Fyodor
Пишите сервисы на тоне, популяризируйте проект и валюту
c
01:51
cryshado
In reply to this message
Пишите тон
ИК
01:52
Игорь Коняхин
In reply to this message
Я против бюрократии, но когда речь заходит о мега-крупных сделках (к которым для большинства людей квартира относится), то важно, чтобы не было случайных потерь
JF
01:52
John Fyodor
In reply to this message
Инструменты для работы с блокчкйном*
AP
01:52
Andrey Pfau
Я сегодня вон, скинулся на счёт в кафе и классно без банков и тд
AP
01:52
Andrey Pfau
AP
Andrey Pfau via @CryptoBot 04.04.2022 01:11:41
Чек на 3.5 TON ($6.58) для @DenMaster.

💬 За Шоколадницу 🍫
c
01:52
cryshado
In reply to this message
Случайных потерь можно избежать, особенно в тоне
JF
01:52
John Fyodor
In reply to this message
Смарт контракты исключают человеческий фактор
AP
01:52
Andrey Pfau
In reply to this message
Коррупцию в том числе, она невозможна будет
JF
01:53
John Fyodor
In reply to this message
Да не, это уже утопия
AP
01:53
Andrey Pfau
In reply to this message
Почему утопия если уже сейчас это возможно
ИК
01:53
Игорь Коняхин
In reply to this message
Нет
Пошли к бабушке, попросили нажать на пару кнопок, и нет твоей квартиры:)
c
01:53
cryshado
In reply to this message
Суд над человеком через оракулов 🤩🥳🤝😎😈
JF
01:54
John Fyodor
In reply to this message
Ничто не запрещает мне создать ноунейм кошель
01:54
Так что все продажные чинуши - тоже подтягивайтесь
AP
01:54
Andrey Pfau
In reply to this message
Без рофла но на самом деле тоже прикольно
01:54
In reply to this message
А смысл в них не будет
01:55
Ну типо если будет управление по системе DAO толку то если будет второй нн кошелек
CP
01:55
Catchain Protocol
да ваще все без человеческого фактора очень прикольно. детерминизм - классно
c
01:55
cryshado
In reply to this message
Пов: как разговоры о технической части тона могут легко перейти в теории создания свободной децентрализованной полу анархичной идеологии государства
JF
01:55
John Fyodor
In reply to this message
Ты же понимаешь, что ни одно государство не легализует ни один блокчейн именно по этой причине?)
AP
01:55
Andrey Pfau
Плюс если все такие вещи будут на смартконтрактах
01:55
In reply to this message
К этому все и идёт
CP
01:55
Catchain Protocol
ну че тон-анкап когда там уже ?
V
01:55
Vitaly
In reply to this message
Сделать на своём СК сервис
JF
01:55
John Fyodor
In reply to this message
Это в нашем узком криптомирке
c
01:55
cryshado
In reply to this message
Там наверное ваще не надо будет умирать
AP
01:55
Andrey Pfau
Рано или поздно это будет, ну может не в нашем поколении но внуки уже будут жить по такой системе
JF
01:56
John Fyodor
In reply to this message
Я бы хотел, но боюсь если не разработают перенос сознания в электронные носители - я уже этого не застану)
CP
01:56
Catchain Protocol
государство это его люди в первую очередь. в обществе в последние года очень хорошо растут идеи децентрализации
AP
01:56
Andrey Pfau
In reply to this message
Фраза "цифровая смерть" заиграла новыми красками
JF
01:57
John Fyodor
In reply to this message
Прецеденты конечно на руку, но все равно все идёт очень медленно в глобальных темпах
CP
01:57
Catchain Protocol
In reply to this message
поэтому одобрение со стороны властей это важный фактор но не обязательный
01:57
In reply to this message
Конечно
c
01:57
cryshado
Не умираем, пока не построим децентрализованное государство на тоне
01:57
Поняли все
AP
01:57
Andrey Pfau
In reply to this message
+
JF
01:58
John Fyodor
In reply to this message
Я хочу электронные носители сознания, как в видоизменённом углероде
CP
01:58
Catchain Protocol
🥺🥺🥺
c
01:58
cryshado
In reply to this message
Пока нет теорий даже вроде, как подобное было бы полноценно возможно увы
JF
01:58
John Fyodor
Главное не словить деменцию до изобретения
c
01:59
cryshado
Ахах
01:59
In reply to this message
Начнем мяукать, потому что сами изобретем, на тоне
CP
01:59
Catchain Protocol
суть в том что нужно полностью имитировать мыслительный процесс который существует сейчас у нас а также предусмотреть фичу переобучения как и у нас
JF
01:59
John Fyodor
In reply to this message
Ну есть определенные исследования на тему того, что даже удаляя одно полушарие, нейроны синхронизируются во втором
c
01:59
cryshado
Хм
AP
01:59
Andrey Pfau
Заморозь себя в криокамере до тех пор пока не изобретут возможность тебя реанимировать
CP
02:00
Catchain Protocol
In reply to this message
это даже можно сейчас моделировать и математически описать, но миллиарды и миллиарды нейронов и их состояние сохранить щас нереально
JF
02:00
John Fyodor
Так что в теории, если половину мозга заменить на электронный носитель, часть сознания перетечет туда, потом можно будет удалить вторую часть мясной оболочки
c
02:00
cryshado
In reply to this message
Ну шяс мертвых так морозят, на случай если придумают как оживлять. Стоит допизды дорого
02:00
In reply to this message
Киберпанк тупа
AP
02:00
Andrey Pfau
Сильверхенд в шоке
JF
02:01
John Fyodor
In reply to this message
И это без копирования, потому что по факту с копированием ты перестанешь существовать, это неприятно
c
02:01
cryshado
In reply to this message
Ну да, и ты можешь наверное еще копию свою осознать
02:01
Тож хуево
02:02
Копия уже отдельно развивается
JF
02:02
John Fyodor
Ага, текущий ты помрешь в итоге
c
02:02
cryshado
In reply to this message
Проблема в том, что если половину мозга шяс удалить ты на половину амебой станешь вроде
JF
02:02
John Fyodor
Нужен плавный перенос в электронный носитель
02:02
In reply to this message
Не во всех случаях
CP
02:02
Catchain Protocol
In reply to this message
необязательно, зависит от структуры
AP
02:02
Andrey Pfau
Кстати у нас на сегодняшний встрече в Москве обсуждалось а как идентифицировать человека?

Да банальный вопрос с банальным ответом "по биометрии", но проблема в том что вся биометрия это по сути хеш твоего отпечатка пальца/скан лица и тд и они имеют свойство с временем менятся
CP
02:03
Catchain Protocol
мозга
JF
02:03
John Fyodor
Люди живут с жидким мозгом и ни в чем себе не отказывают
02:03
Нейронные связи очень хитрые
AP
02:03
Andrey Pfau
Или попал например в дтп и у тебя оторвало пол руки/ пол ноги или ещё что-то, а как теперь идентифицировать человека?
c
02:03
cryshado
In reply to this message
Биометрия вообще дичь, и идентификация человека сама по себе нарушает концепции безопасности, конфиденциальности и т д
JF
02:04
John Fyodor
In reply to this message
По сознанию, нейроны не живут в руках и ногах
ИК
02:04
Игорь Коняхин
In reply to this message
+
CP
02:04
Catchain Protocol
In reply to this message
Да у нас в целом огромный потенциал, за жизнь его не удаётся никому заюзать. Количество синапсов просто огроменное, поэтому удаление части мозга не особо сказывается на функционале
AP
02:04
Andrey Pfau
In reply to this message
А как условно человеку например авторизоваться в системе не имея приватный ключ ? Ну например он потерял/забыл или ещё что-то, а там на него записано имущество и тд
JF
02:04
John Fyodor
Есть чел в Европе на государственной должности, у которого мозг из-за заболевания превратился в водичку на 80%, у него айкью около 50, но он отлично себя чувствует
AP
02:05
Andrey Pfau
In reply to this message
Это шутка такая?
c
02:05
cryshado
In reply to this message
Все, никак. Абсолютная безопасность и детерминированность
02:05
In reply to this message
Хм
AP
02:05
Andrey Pfau
In reply to this message
А что тогда с квартирой человека что все?
c
02:06
cryshado
In reply to this message
Ну как потерянный кошелек в блокчейне
AP
02:06
Andrey Pfau
Ну не может он теперь попасть хотя он и является собственником
c
02:06
cryshado
In reply to this message
Больше нет
JF
02:06
John Fyodor
Да можно по мозгу сто пудово строить биометрию
c
02:06
cryshado
Ну уже придумали приватные кличи, которые генерятся на основе например 5 мнемоник и для воссоздания приватника нужно любые 3 из них и т д
JF
02:06
John Fyodor
Дожить бы
c
02:07
cryshado
In reply to this message
Это если пока без киберпанка
JF
02:07
John Fyodor
Будет ipfs для сознания, сто пудово))
c
02:07
cryshado
In reply to this message
Да это вряд ли в этом или следующем веке даже будет, учитывая как развиваются технологии. Только кажется, что быстро, и то если только смотреть на столетия
02:07
In reply to this message
Ыыы
AP
02:08
Andrey Pfau
In reply to this message
Ты в Ton storage допустил много ошибок
JF
02:08
John Fyodor
In reply to this message
Закон Мурра
c
02:08
cryshado
In reply to this message
Не оплатил сторедж фи, умер
JF
02:08
John Fyodor
In reply to this message
Лол, неловко
AP
02:08
Andrey Pfau
In reply to this message
ору
JF
02:08
John Fyodor
Страна заблочила ноды с твоим сознанием - умер
AP
02:09
Andrey Pfau
In reply to this message
Так ноды то децентрализованные...
c
02:09
cryshado
In reply to this message
Надо аднл роутинг допилить, чтобы не могли заблочить так просто
JF
02:09
John Fyodor
In reply to this message
Это если успели скопировать
AP
02:09
Andrey Pfau
In reply to this message
А зачем копировать?
JF
02:09
John Fyodor
In reply to this message
Работаем над будущим 👍
c
02:09
cryshado
In reply to this message
😎 приятное чувство
JF
02:09
John Fyodor
In reply to this message
Так а как ты выгрузишься
AP
02:09
Andrey Pfau
Они д должны равномерно геораспределенно хранится
02:09
Изначально
JF
02:10
John Fyodor
Но вообще это уже будет копия сознания
02:10
Это не круто, нужны стэмы
c
02:10
cryshado
Базовое свойство цифровой информации это копирование, его невозможно пока запретить
AP
02:10
Andrey Pfau
In reply to this message
Это тоже самое что говорить что у меня есть копия блокчейна и все монеты мои, это не так работает
c
02:11
cryshado
In reply to this message
Ну да
JF
02:11
John Fyodor
In reply to this message
Проблема в том, что копия будет валидна, но это будешь уже не ты
02:11
Не ты текущий
AP
02:11
Andrey Pfau
In reply to this message
Она валидна только если у тебя есть приватник
c
02:11
cryshado
Ну сознание не монеты
02:11
Не все так просто думаю
02:12
*через 200 лет кто-то читает историю чата и просто офигивает, от того что ничего подобного даже близко нет и вряд ли скоро будет*
02:12
:(
JF
02:12
John Fyodor
Ну это да, хотя если сознание перекочует в цифровую среду нативно, будет норм, можно будет спавниться в другом месте за доли секунды
c
02:12
cryshado
In reply to this message
Лютл
02:13
Ля а как сознание будет жить, можно будет что-то вроде Майнкрафта сделать
02:13
Ну условно
JF
02:13
John Fyodor
Осталось понять как полушарие перенести в кремний
c
02:13
cryshado
Иначе же кукухой поедешь
02:13
С непривычки
JF
02:13
John Fyodor
In reply to this message
А потом второе
c
02:13
cryshado
Акак
02:13
🤓
JF
02:13
John Fyodor
Николай, подскажите плиз
02:14
Только биты не воруйте
c
02:14
cryshado
In reply to this message
Создаем чат, разрабатываем децентрализованный мир будущего, приглашаем Николая. 10 лет упорного совместного труда и все чик чирик готово
02:14
😊
JF
02:14
John Fyodor
Кайф
c
02:15
cryshado
🥳
AP
02:16
Andrey Pfau
In reply to this message
Майнкрафт это моя жизнь майнкрааааааафт
JF
02:17
John Fyodor
In reply to this message
Главное чтобы мамка не пришла
02:17
И мамку перенесём, всех перенесём
AP
02:17
Andrey Pfau
И не вайпнула сундук с приватниками 😱
JF
02:18
John Fyodor
Просыпаешься херобрином между блоками бедрока
02:18
И живешь вечность
c
02:20
cryshado
Страшно
ИК
02:22
Игорь Коняхин
Не хочется прерывать столь футуристические беседы, но подниму вопрос:

Asm-FIFT - это всего-лишь "программа-компилятор FIFT'а в байт код"?
И, если я правильно понимаю, вся-вся-вся компиляция находится в этом файле:
https://github.com/newton-blockchain/ton/blob/master/crypto/fift/lib/Asm.fif
Так?

Нет, всё-таки я запутан:
https://github.com/DKeysil/awesome-ton-smart-contracts
> FunC is used to write the logic of contracts, it is compiled to fift-asm code, which can then be translated to bytecode for TVM. The functionality of Fift is very wide. To begin with, fift-asm is an Asm.fif program that allows you to translate asm-like(fift-asm) code into byte code for TVM
Т.е. есть:
- FunC (это понятно)
- Fift (это понятно, кажется)
- fift-asm (???????)
- Asm.fif (это ведь программа-компилятор?)
- asm-like (== fift-asm - ???)
c
02:23
cryshado
In reply to this message
Про фифт асм первый вопрос - да
ИК
02:23
Игорь Коняхин
fift-asm == Asm.fif == asm-like ?
c
02:24
cryshado
In reply to this message
Asm.fif это микро программа компилятор, которая переводит слова в байт код
02:24
In reply to this message
Асм лайк это стиль кода
02:24
Ну да
ИК
02:25
Игорь Коняхин
Но первое равенство (fift-asm == Asm.fif) верно?
c
02:25
cryshado
In reply to this message
Первое язык, а второе компилятор языка на языке фифт
02:25
Ну если простыми славами
ИК
02:26
Игорь Коняхин
Fift и fift-asm - одно и то же?
c
02:32
cryshado
In reply to this message
Фифт это язык написанный на с++, а фифт-асм это еще один язык написанный на фифте
ИК
02:32
Игорь Коняхин
А на фига ещё один язык? :)
02:33
Есть side-by-side сравнение fift и fift-asm, чтобы понять различия?
c
02:33
cryshado
In reply to this message
Чтобы в него транслировать FunC или сразу писать на нём контракты(прикольно кстати), так как фифт асм своим Asm.fif транслируется в байт кож для твм
02:34
In reply to this message
Фифт для тестирования контрактов, для составления скриптов(например которые генерят запросы к контрактам) и тому подобное

Фифит асм, на нем можно писать контракты, в него компилируется FunC. Так как сам фифт асм транслируется в байт код для TVM
ИК
02:34
Игорь Коняхин
Ты пишешь на FunC (типа С++)
затем оно переводится на Fift (типа ассемблера)
затем оно переводится в байткод

а зачем fift-asm?
c
02:35
cryshado
In reply to this message
Нет, func переводится в фифт асм
02:35
Просто фифт асм написан на фифте
ИК
02:35
Игорь Коняхин
In reply to this message
😮 О
02:36
Возьмём случайный контракт:
https://github.com/newton-blockchain/ton/blob/master/crypto/smartcont/new-wallet.fif
Это Fift или fift-asm ? :)
c
02:37
cryshado
In reply to this message
Это fift скрипт для создания нового контракта кошелька, в котором есть кусок кода на fift-asm(который с помощью Asm.fif, который инклюдится превращается в байткод)
02:37
Обычно если автогенерят фифт асм из func он в отдельном файле
02:37
И его инклюдят в фифт
02:39
Так понятнее?
AP
02:40
Andrey Pfau
In reply to this message
Неправда на котлине тож написан
ИК
02:41
Игорь Коняхин
In reply to this message
Да, спасибо
02:41
Мда, понаделал, конечно, Дуров делов
02:42
У файлов ещё и расширение одинаковое .fif
c
02:43
cryshado
In reply to this message
Ну можно на чем угодно переписать да
02:44
In reply to this message
Ну по синтаксису понятно, так то фифт асм может быть частью фифт скрипта
02:44
Это как бы микро язык
AP
02:44
Andrey Pfau
Благо я портировал curve25519 алгоритм теперь можно в фифт занести операции с ключами и будет уже полноценный фифт интерпретатор
c
02:44
cryshado
In reply to this message
Никто не мешает использовать какое угодно
ИК
02:45
Игорь Коняхин
In reply to this message
fift-asm - подмножество fift?
AP
02:45
Andrey Pfau
In reply to this message
Фифт АСМ это язык надстройка над фифтом
ИК
02:48
Игорь Коняхин
Кажется, идея новичкам начинать тестировать FunC с помощью fift/fift-asm без toncli всё-таки не очень)
c
02:50
cryshado
In reply to this message
Еще как очень
02:51
Ну да нужно будет потратить пару дней, может неделю, чтобы свободно начать юзать все, но это намного легче, чем изучить С например
02:51
Так что порог входа достаточно адекватен
02:51
Фифт задумывался как легкий простой язык
ИК
02:51
Игорь Коняхин
> может неделю
Только контест заканчивается через 5 дней)
c
02:52
cryshado
In reply to this message
А после контеста все? Тон уже не нужен? 🥺
ИК
02:52
Игорь Коняхин
Там дальше уже будет время вникнуть во всё поглубже:)
AP
02:54
Andrey Pfau
:(
ИК
02:57
Игорь Коняхин
Вопрос по тестам
Я научился делать цепочку тестов/сообщений к одному контракту, но есть ли возможность протестировать цепочку из двух (входящее + исходящее) транзакций:
Т.е. (задание 2/3) нужно протестировать:
а) Обработку транзакции контрактом "А" (это базовая функциональность тестов toncli), который должен отправить сообщение
но помимо этого, нужно
б) В контракте-получателе "B" убедится, что пришло нужное сообщение
02:58
Другими словами, нужно:
- Запустить контракт А
- Проверить результат работы
- Дождаться доставки сообщения (которое сгенерировал контракт А) контракту Б
- Проверить, что доставленное сообщение правильное
c
03:00
cryshado
In reply to this message
Тестируя контракты вы локально запускаете TVM, абстрагируясь от блокчейна. Так что тестировать связь между контрактами, явным способом нельзя.

Но твм генерирует список out actions (описаны в тлб https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb). Они если тестировать из фифта будут в c5. Подойдёт runvmctxact

Получив список исходящих сообщений контракта вы можете проверить их, либо запустить с ними локально твм с другими контрактами например
ИК
03:01
Игорь Коняхин
А нет чего-нибудь типа Ethereum Remix - среды, где блокчейн эмулируется прямо на JavaScript'е и можно мгновенно запускать контракты?
c
03:02
cryshado
In reply to this message
Нет, и вряд ли будет. Никогда не понимал, как что-то удобно можно делать в веб иде
ИК
03:03
Игорь Коняхин
Ну есть большой плюс - оно работает с первой секунды абсолютно у всех без исключения:)
03:03
Хотя toncli тоже без особых проблем завёлся
c
03:04
cryshado
In reply to this message
Фифт тоже без особых проблем работает, учитывая, что он нужен для работы toncli
03:05
In reply to this message
Вот смотри тут runvm https://ton-blockchain.github.io/docs/fiftbase.pdf
ИК
03:05
Игорь Коняхин
In reply to this message
В toncli тоже есть cell actions, который можно анализировать, но для этого его нужно самому вручную парсить, а если я как-то фигово составил отсылаемое сообщение, то я с большой вероятностью также фигово напишу и парсинг его - в результате мои тесты будут проходить, а по факту сообщения в блокчейне работать не будут
c
03:06
cryshado
In reply to this message
Юнит тесты в этом их и смысл, что они должны не фигово быть написаны и гарантировать правильность и структуру данных
03:07
Ну можно иногда ручками еще в тестнет бегать тестить
AP
03:08
Andrey Pfau
А чё мелочиться сразу в мейнет на проде тестировать 🤡
ИК
03:09
Игорь Коняхин
Вообще задание 4, кажется, легче, чем 2/3, так как в них нужно генерировать исходящие сообщения, а это - самый мутный нестроготипизированный момент
AP
03:09
Andrey Pfau
Только не говорите что мейнет бывший testnet2
c
03:09
cryshado
In reply to this message
03:10
In reply to this message
Ты познакомился с тлб уже?
03:10
Там структура этих сообщений описана
03:10
И ниче не мутно
ИК
03:10
Игорь Коняхин
In reply to this message
На 85% понимаю
c
03:10
cryshado
Это как
ИК
03:12
Игорь Коняхин
Суть ясна, но некоторые штуки мутные:
unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1);
c
03:12
cryshado
In reply to this message
Попробуй посмотреть https://github.com/tonstack/ton-docs/tree/main/TL-B

Может чем то поможет
ИК
03:13
Игорь Коняхин
Вообще, какой-то стрёмный синтаксис:
nothing$0 {X:Type} = Maybe X;
just$1 {X:Type} value:X = Maybe X;

должно быть чем-нибудь более простым типа:
Maybe<T> = {
0: nothing,
1: just<T> = { T }
}
c
03:14
cryshado
In reply to this message
Не сложный, просто такой, ближе к формулам
03:14
Его парсить просто относительно
03:14
Тлб это тоже язык, и существуют его «компилятор», например версия дурова, которая компилит его в с++
ИК
03:14
Игорь Коняхин
Просто должно быть писать и читать код
Простота парсинга - дело второстепенное)
03:15
In reply to this message
Прочитаю!
c
03:15
cryshado
In reply to this message
Читаешь слево направо
03:15
In reply to this message
Там даже схема есть как раз, по синтаксису
ИК
03:18
Игорь Коняхин
Самое страшное условие контеста: "The Toncoin value attached to the message should be equal A's value minus fees related to processing"
AP
03:19
Andrey Pfau
In reply to this message
Воспринимай тильды как коллбеки
03:19
Вот наглядно
03:21
In reply to this message
Тип сначала сверяется префикс, если бит 1 - то это unary_success. И парсится дальше поле x. Когда спарсиоось поле x через коллбек устанавливается поле n на тот результат что внрнул Unary
ИК
03:21
Игорь Коняхин
In reply to this message
По формату сообщения есть строгое описание (https://ton.org/docs/#/smart-contracts/messages)
Есть ли очень строгое описание про "fees"?
Единственное, что я про них понимаю, что если сообщение external, то, оплату должен принять (accept_message) сам контракт (просто методом исключения - больше некому).
В случае с internal сообщениями - не ясно, где можно почитать?
AP
03:23
Andrey Pfau
fun Unary(callback (Int)->Void) {
val n = 0
val x = Unary { result ->
n = result
}
callback(n+1)
}
03:23
Типо рекурсивно оно парсит
03:24
И в конце вызов колбека n+1
ИК
03:26
Игорь Коняхин
... обработка ...
AP
03:27
Andrey Pfau
Ну какой твой основной язык?
03:27
Я попробую пример на нем обьяснить
ИК
03:28
Игорь Коняхин
C++/C#/JavaScript/Python, но я Котлин пойму, только что такое Unit?
AP
03:28
Andrey Pfau
Я заменил на void
03:28
Ну функция-колбек которая ничего не возвращает
03:28
Это не совсем котлин, это псевдокод)
03:36
Deleted Account
Запутался напрочь!) Может кто-нибудь не полениться и кратко-детально рассказать весь процесс, как создавать контракты (нфт к примеру) и загружать их в сеть?

К примеру: качаем то-то, устанавливаем то-то. Это для того, а это для того. Кодим на FunC, потом делаем это (что-то 😁) ... здесь проверяем это, там это... ну в таком духе )) буду крайне признателен!

P.S. Пишите как для тупых пожалуйста ))) 😃
ИК
03:41
Игорь Коняхин
In reply to this message
В TL-B основная суть ясна, но просто чтобы мозг привык к такому синтаксису нужно какое-то время. Я ещё почитаю ссылку cryshado на tonstack, но на самом деле формат сообщений ничего особо умного не содержит и его, я, кажется, понимаю, так что это сейчас мне не самый критичный вопрос
AP
03:42
Andrey Pfau
In reply to this message
В сыром виде он достаточно трудно читается, лучше установить плагин ton development на intellij и смотреть там. Там адекватная подсветка синтаксиса + референсы на типы
ИК
04:04
Игорь Коняхин
Так лучше, но я в целом про порядок полей
04:05
Это как читать Haskell код - никакая подсветка не поможет, если не привык:)
04:05
Где можно набрать для тестов разные адреса контрактов?
ИК
04:21
Игорь Коняхин
cell actions в тестах toncli - это исходящее сообщение?
А если их несколько?
А как узнать mode?
04:24
Тут похоже написать тесты сложнее, чем сам контракт
ИК
04:39
Игорь Коняхин
На странице https://ton.org/docs/#/smart-contracts/messages используется функция .store_coins, но такой функции в FunC не существует
04:46
А нет что-ли функции PREload_msg_addr?
TP
04:52
Tim Pavlov
In reply to this message
опечатка, на самом деле store_grams
04:52
In reply to this message
нету такой, по крайней мере пока
ИК
04:53
Игорь Коняхин
In reply to this message
Понял, store_grams вижу в контрактах, но думал, может с store_coins какая-то другая история
04:53
In reply to this message
А есть какая-нибудь такая фишка на FIFT?
TP
04:54
Tim Pavlov
In reply to this message
1. не совсем, это список действий, которые вы произвели (send_raw_message, set_code, etc.)
2. в TL-B указано, они представлены как linked list
3. нужно взять экшен, посмотреть его код(проверить чтобы это был send_raw_message), а потом уже по TL-B этого сообщения можно достать uint8 mode
ИК
04:55
Игорь Коняхин
In reply to this message
Буду смотреть
Спасибо
TP
04:56
Tim Pavlov
In reply to this message
Кажется нет. Полагаю потому что адрес может быть разного типа(Int, Ext или вообще addr_none), но могу ошибаться
ИК
05:04
Игорь Коняхин
In reply to this message
05:10
Где можно набрать для тестов разные адреса контрактов?
TP
05:14
Tim Pavlov
In reply to this message
Да, оно самое
05:14
In reply to this message
Для toncli можно использовать просто нулевой адресс, там без разницы
ИК
05:15
Игорь Коняхин
Ну нужно бы протестировать, что оно с разными адресами работает
05:20
Согласно этому описанию:
out_list_node$_ prev:^Cell action:OutAction = OutListNode

Выходит, что должно быть хотя бы одно действие, не может быть 0
05:27
.store_uint(0x18, 6)

Я так понимаю, что в TON все функции big-endian?
TP
05:31
Tim Pavlov
In reply to this message
есть глобальная функция my_address, можешь пихать в качестве адреса любые значение просто используя
store_uint(123, 256)
, к примеру. тут уже на твое усмотрение
05:32
In reply to this message
может быть и 0, там же есть out_list_empty
ИК
05:33
Игорь Коняхин
In reply to this message
Вот тут отвечали, что любые 256 бит не подойдут
05:34
In reply to this message
Там ни у out_list_empty$_ ни у out_list_node$_ нету тегов, поэтому не понятно, как отличать
TP
05:35
Tim Pavlov
In reply to this message
смотря для чего, для innternal message подходит только MsgAddressInt в качестве source-а, а для external message в качестве source-а подходит любой MsgAddress
M
05:36
Max
In reply to this message
адрес это 256 битное число, перед ним есть инициализаторующие данные которые формируют msgaddredd
TP
05:36
Tim Pavlov
In reply to this message
slice_bits для проверки размера или просто null? можно использовать, возможно
ИК
05:36
Игорь Коняхин
In reply to this message
Тут для тестов нужно симулировать как раз internal сообщение
TP
05:37
Tim Pavlov
для интерналов прекрасно подходит и addr_none в toncli
05:37
опять же, ты же просто выполняешь инструкции, стимулируешь работу TVM
05:37
никакой проверки адресов там нет, какое сообщение передашь - такое и получишь
05:37
без выкинутых исключений
ИК
05:37
Игорь Коняхин
In reply to this message
addr_none == 00
Недостаточно тестирования
Этот случай может сработать, а реальный нет
TP
05:38
Tim Pavlov
если тебе нужно знать какие адреса можно использовать для теста заданий, то нигде не написано, что адреса должны быть валидными)
ИК
05:39
Игорь Коняхин
In reply to this message
Хм, возможно действительно
Ну или вообще ничего не проверять: если бит не хватит, то и так исключение вылетит, что и нужно для теста)
TP
05:39
Tim Pavlov
вот именно)
ИК
05:40
Игорь Коняхин
Ну тут главный вопрос в том, что поскольку всё по сути нетипизировано, то есть шанс не прочитать какие-нибудь пару бит-флагов из-за чего всё поедет
05:40
Буду пробовать
TP
05:41
Tim Pavlov
давай, удачи
ИК
05:42
Игорь Коняхин
Сегодня был по разным причинам сложный день, но прогресс есть 💪
05:46
Последите пока меня нет, чтобы Дуров не выкатил новый язык программирования
TP
05:51
Tim Pavlov
In reply to this message
дадим знать)
V
06:15
Vladimir
In reply to this message
Спасибо, что проявили внимание. По советам ребят начал изучать информатику, скорее всего школьная программа. Открыл для себя двоичную систему и примерно начинаю понимать на сколько это все серьезно. Дошел до ассемблера пока. Вот нашел на Ютубе канал по которому прохожу обучение, пока все понятно. Вообще подходя к блокчейну, да планируется игра и NFT связанные в ней. Изначально я смотрел в сторону JavaScript, ну и блокчейн был полигон, а не тон. Думаю пока потихоньку буду азы изучать, а вам спасибо за советы, я их все в избранное сохраняю.
06:20
Deleted Account
Подскажите как устанавливается плагин? https://github.com/savva425/func_plugin_sublimetext3
P
07:12
Pepeg
In reply to this message
В саблайме: Preferences -> Browse Packages в эту папку разархивируй просто
07:12
Deleted Account
In reply to this message
И ничего не происходит ) синтаксис FunC не подсвечивает, ничего не поменялось )
P
07:13
Pepeg
file.func так не работает -> file.fc работает
07:13
либо руками справа снизу поменяй
либо ctrl + shift + p -> Set syntax: func
AP
07:38
Andrew Python
In reply to this message
followed by valid MsgAddress, it should store obtained address in the storage.
https://github.com/ton-blockchain/func-contest1/blob/main/3.fc#L11
NM
08:26
Nikita Misharin
In reply to this message
Так я подумал, что нужно просто перед этим еще 8 битов для workchain_id добавить, а потом любые 256 битов 🤔
AR
10:33
Alexander Ruliov
Кто-нибудь уже реализовывал генерацию парсеров и typescript типов из tl-b спеки?
AT
10:36
Andrey Tvorozhkov
In reply to this message
Смотри как умею) Только 🤫
AR
10:37
Alexander Ruliov
Выглядит как биндинг к чему-то, но неплохо, да.
10:37
Проснулся и подумал, что хорошо бы биндинг к TVM)
10:38
Говоришь какой метод дёрнуть и с какими параметрами, оно выполняет, дампит всё что можно и нельзя, возвращает тебе обратно, а дальше смотришь в json'ы уже.
AT
10:38
Andrey Tvorozhkov
In reply to this message
Это доработанный tonlibjson
AR
10:39
Alexander Ruliov
Тогда и тесты как белому человеку можно будет писать, а не мучаться с ними больше, чем с самим контрактом)
AT
10:40
Andrey Tvorozhkov
In reply to this message
Так фифт тебе тоже самое делает) А в чем заключаются страдания?
AR
10:42
Alexander Ruliov
In reply to this message
О, спасибо. Вот где такие штуки находить вообще непонятно)
AT
10:42
Andrey Tvorozhkov
Единственный аспект, который виден для улучшения тестов, на мой взгляд - это возможность их писать внутри контракта, например. И все делать в одной функции.

Но там есть проблема с подсчетом газа, для этого нужно добавлять tvm op.
AR
10:43
Alexander Ruliov
In reply to this message
В низкоуровневости проверок тестов на том же func, которых обычно нужно написать больше, чем объём контракта.
AT
10:43
Andrey Tvorozhkov
In reply to this message
А, т.е. тезис не писать тесты на фанкси потому что это избыточно?
10:44
Там js тесты есть. Но оно костыль на костыле. Но зато более выше по уровню
10:46
In reply to this message
На мой взгляд, именно в смарт контрактах, нужно иметь максимально низкоуровневые тесты. Потому что смарт контракт это в целом про низкоуровневость, оптимизацию битиков и вот это всё. Кажется, func в этом крут
NM
10:47
Nikita Misharin
In reply to this message
Ну самое очевидное улучшение сейчас -- больше примеров. Сейчас написать что-то кроме проверки гет функции довольно затруднительно для новичка. Следующим логичным улучшеним было бы удобно сделать stdlib функции для тестов: например функция возвращающая message. В общем-то хоть какой-то синтаксический сахар над дебагом тоже нужен. Сейчас throw происходит, а что в переменной не понятно
AT
10:48
Andrey Tvorozhkov
In reply to this message
Согласен
10:48
In reply to this message
Тут я скорее больше про концепцию тестирования
10:50
In reply to this message
Но вообще я старался упростить :))

Те же get_c7 / get_prev_c4 - довольно магические вещи

Два месяца назад такого бы не было) Сб-на как и тестов на фанкси
10:50
In reply to this message
Так что по тихоньку все улучшается
AR
10:51
Alexander Ruliov
In reply to this message
На js я сейчас на два порядка быстрее пишу, чем на func и могу описать куда более сложные и объёмные тесты. Тесты должны быть хорошие и много, а не быстрые и экономные.
NM
10:52
Nikita Misharin
In reply to this message
Да я понимаю, что пока все только в процессе разработки. Так-то спасибо, что это сделали
AT
10:54
Andrey Tvorozhkov
In reply to this message
🤔, я на js тесты смартов не писал, только видел краем глаза. А дадите пример (можно в личку)?

В последний раз когда я смотрел про газ там речи вроде как не шло, про с5 / с7 тоже. Но могу ошибаться
AR
10:56
Alexander Ruliov
In reply to this message
Не дам) можно вместо js любой другой подставить. Python там, или PHP прости господи (хотя нынче он хорош).
AT
10:56
Andrey Tvorozhkov
In reply to this message
Речь про тесты смарт контрактов или тесты обычного кода?)
AR
10:57
Alexander Ruliov
In reply to this message
Обычного кода. Но никто не мешает тестировать смартконтракты нормальным языком)
AT
10:58
Andrey Tvorozhkov
In reply to this message
🤷🏻‍♂️, func нормальный язык
A
11:02
Andrey Vrub
In reply to this message
У вас чек в сообщение.Но ничего не происходит )
AT
11:13
Andrey Tvorozhkov
In reply to this message
Эх, если бы все было так просто)
D
11:42
Daniil
Скиньте пример файла с коллекцией нфт, пожалуйста)
VG
12:00
Vova Goose
Привет, ищу разработчика TON в Стамбуле, напишите в личку кто заинтересован в работе и находится тут. Извиняюсь если объявление не в тему.
РБ
12:07
Роман Барбье
In reply to this message
Вова разработчики ТОН все в Дубае
А
12:09
Андрей
In reply to this message
Вот это сообщение точно не в тему, и к тому же ложное
m
12:19
m
Почему в чате нет возможности комментить и ставить лайки? Мне кажется тут это необходимо 🙏 @f_closer
12:20
F
12:25
F
In reply to this message
Комменты есть, называются Обсуждения, и доступны ПКМ по сообщению -> посмотреть N ответов
Например у этого сообщения (https://t.me/tondev/62736) на данный момент 12 ответов.
Второй пример - ваше сообщение, я его прокомментировал ответив на него)

Мы модераторы, а добавить реакции на сообщения может только создатель чата. К сожалению создатель чата занят/недоступен и не может включить реакции.

PS: Комменты бывают у постов в канале. Эти комментарии в чате являются и отображаются ответами к сообщению
AR
12:29
Alexander Ruliov
In reply to this message
Нужно читать контракт, если у него нет методов для увода монет, то не смогут.
m
12:30
m
In reply to this message
Понял.
Все таки ответы и комменты это разные вещи. Ответы забивают собой ленту. И помимо топикстарта приходится листать еще много неинтересных тебе ответов.
Вдруг если появится возможность - включите пожалуйста.
D
13:08
Daniil
При деплое нфт маркетплейса, нужно именно 1 тон отправлять, или можно меньше?
NM
14:22
Nikita Misharin
Вопрос, вот в конкурсе обычная конструкция что-то читать из storage, а потом обратно туда же писать. В примерах контрактов я видел, что просто просто используются глобальные переменые. Учитывая, что в первом случае приходится постоянно читать/создавать cell, есть какой-то в этом смысл?
AP
14:24
Andrey Pfau
In reply to this message
Глобальная переменная хранит данные только во время исполнения контракта
14:24
Она не персистентна
NM
14:25
Nikita Misharin
In reply to this message
Оу, спасибо!
T
15:12
Tolya
TP
15:15
Tim Pavlov
In reply to this message
Спасибо
ИК
15:25
Игорь Коняхин
In reply to this message
+
15:26
In reply to this message
Например с тем, что, из actions мне нужно вручную всё распарсить в исходящие сообщения
AT
15:28
Andrey Tvorozhkov
In reply to this message
This. Это лечится добавлением простых функций)
ИК
15:29
Игорь Коняхин
In reply to this message
Оптимизирован до битиков должен быть сам смарт-контракт. В тестах важнее надёжность, удобочитаемость и простота написания. Например, просто написать тест в стиле "отослалось сообщение на адрес X с содержанием Y" нельзя - нужно парсить нетипизированный набор битов
15:29
In reply to this message
Это правда
Имея тесты для задачи 2, написать тесты для задачи 3 будет значительно легче
15:30
Но се равно: в FunC нет ведь многих например всяких штук типа .map .filter и т.п., ну и опять же уверенности в типизации
c
15:32
cryshado
In reply to this message
.map .filter и т д, это же все сахар
15:32
А func язык низкого уровня
NM
15:33
Nikita Misharin
In reply to this message
Ну это в контексте тестов, как я понимаю
ИК
15:36
Игорь Коняхин
In reply to this message
Сами функции .map .filter - сахар, можно написать самим, а концепция функции как полноценный объект, который можно передавать (что необходимо для работы .map .filter) - часть языка, и для этого нужна поддержка
T
15:37
TON Дев Чат
In reply to this message
На каком именно этапе проблема?
Тестируете в тестнете? Если да, отвечает ли тонцентра ok или ошибкой?
Запускаете deployMarketplace и deploySale_mp параллельно? есть шанс, что в этих функциях оказывается одинаковый seqno и второе сообщение не может примениться?
ИК
15:44
Игорь Коняхин
Вопрос про парсинг ссылок на ячейки
Предположим, есть:
some_data: a: (## 8) b: (## 300) = SomeData
Тут всё ясно: вначале 8 бит, затем 300 и никак по другому, а что со ссылочками?
other_data: a:^A b:^B = OtherData
только вот тут выглядит, что есть аж четыре варианта ("ab", "a", "b", ""), и непонятно как это интерпретировать.

Если что, ситуация не гипотетическая. Я всё ещё пытаюсь распарсить actions, и там как раз:
out_list_node$_ prev:^Cell action:OutAction = OutListNode;
action_send_msg#0ec3c86d mode:(## 8)
out_msg:^(MessageRelaxed Any) = OutAction;

читая ссылку, я не знаю: это ссылка на ячейку с сообщением или с предыдущим действием
15:45
Т.е. если бы гарантировалось, что prev:^Cell всегда есть, то было бы всё однозначно, но тогда список был бы бесконечным)
AR
15:46
Alexander Ruliov
Ссылки занимают ноль байт в данных (в смысле в слайсе бит который парсится) ячейки, они хранятся отдельно и всё что делает метод их парсинга — достаёт следующую из доступных.

И их может быть только четыре.
FD
15:47
Full Stack Dev
How to deploy smart contract to MyLocalTon?
15:48
Also, how to connect MyLocalTon using TonWeb js lib?
AP
15:49
Andrey Pfau
Ячейка имеет такую структуру:
data, cell0, cell1, cell2, cell3

Когда идёт парсинг то данные читаются из текущего контекста ячейки, из data. Когда есть ссылка на ячейку, то контекст текущий ячейки переключается на cell0, затем если снова ссылка на cell1 и т.д
c
15:49
cryshado
In reply to this message
Объекты это тоже сахар
15:49
Объект понятие относительно, можно при большом желании ООП на С написать
AR
15:50
Alexander Ruliov
In reply to this message
Ну и в случае примера, сначала точно будет prev, затем out_msg.

Прочекать, нулевая ли она можно с https://ton.org/docs/#/func/stdlib?id=cell_null
ИК
15:52
Игорь Коняхин
In reply to this message
Я понимаю, что они хранятся отдельно. Если перефразировать, вопрос такой: запись "a: ^A" гарантирует наличие ссылки на А или нет?

Если гарантирует, то всё однозначно, но согласно описанию actions выходит бесконечный список.

Если не гарантирует, то как узнать, была ли данная ссылка в сообщении. В моём примере выше: как узнать, хранится ли в ячейке "a" или "b"?
AR
15:52
Alexander Ruliov
In reply to this message
Гарантирует, но она может быть null.
c
15:52
cryshado
In reply to this message
Ну есть способы, узнать есть ли ссылка
AR
15:53
Alexander Ruliov
Как мне нравится говорить «есть наличие отсутствия»)) или отсутствие наличия, непонятно)
ИК
15:53
Игорь Коняхин
In reply to this message
😮 О
Т.е. выходит, что TL-B схемы не "null-safe"
c
15:54
cryshado
In reply to this message
Ну тут явно не указан тип ячейки на которую ссылка
15:55
Тлб схемы нужны чтобы (де)сериализовать данные, уровень глубины и строгость можешь сам контролировать
T
15:55
TON Дев Чат
In reply to this message
Гарантирует. Null быть не может. В данном случае смотреть надо на другой объект:
out_list_empty$_ = OutList 0;
out_list$_ {n:#} prev:^(OutList n) action:OutAction
= OutList (n + 1);

В нем все нормально.
OutListNode вероятно нигде не используется.