5 August 2022
PS
07:55
Pablo Samius
In reply to this message
✌Мир тебе братик.
D
08:00
Daniil
In reply to this message
Детализировать, боюсь, не могу, мало информации
PS
08:04
Pablo Samius
In reply to this message
Время на разработку очевидно каждого из пунктов
А?
08:48
Алекс 🇺🇦CR
Почему мои сообщения удалили
SH
08:58
Seitaro Higuchi
In reply to this message
Это чат для разработчиков, а не помощи в решении викторин.
А?
08:58
Алекс 🇺🇦CR
In reply to this message
Сверху не удалили(
СВ
09:34
Сергей В
Вопросик про toncli
Хочу использовать новые тесты
Скомпилировал fift и func из нужно репы и нужной ветки
спулил свежий toncli установил pip install -e .
Заменил пару .fif файлов как указано в доке
Тесты работают хорошо, но перед каждым запуском тестов получаю

message_helpers.func:69:18: error: undefined function `generate_internal_address`, defining a global function of unknown type
slice ssrc = generate_internal_address();


На работу тестов вроде не влияет, но можно ли это пофиксить?
ES
10:04
Eugene Sannikov
Всем привет))

Есть ли тут кто-то, кто активно участвует в эирдропах?

Напишите пожалуйста тут или мне в ЛС
AT
10:04
Andrey Tvorozhkov
In reply to this message
toncli update_libs не помог?
СВ
10:29
Сергей В
In reply to this message
неа, не помогает
SH
10:31
Seitaro Higuchi
In reply to this message
Там кажется новые хэлперы эти ворнинги вызывают.
А(
11:13
Андрей Власов (Andrey Vlasov)
Вопрос теоретический, но для практического применения.

Я создал NFT, лежит в кошельке. Я владелец. Отправляю NFT на адрес самого контракта NFT. С кошелька моего исчезает, появляется на адресе самого NFT.

Управление им теряется, и фактически это является вариантом сжигания NFT. Верно? Тогда не нужна пересылка на кошельки от которых "якобы" забыта Seed-фраза (а как вы это проверите?).

Само NFT остаётся в блокчейне, информацию о нём можно считывать, использовать, но передавать его никому не получится. И редактировать тоже никак.
ᅠᅠ
11:33
ᅠ ᅠ
Чтобы засрать беседу, вот для чего викторины
11:33
Ну это тупо
11:46
Здесь есть как сделать адрес без владельца на tvm
А
11:50
Александр
In reply to this message
А если я лентяй?
А(
11:50
Андрей Власов (Andrey Vlasov)
In reply to this message
Да. Но тот вариант тоже интересен, так как можно создавать на нём архив.
В
12:06
Влад<f>имир
🙏
В
12:06
Влад<f>имир
В
Влад<f>имир 02.08.2022 16:32:10
Можете ли помочь с пониманием?

Адрес аккаунта зависит исключительно от начального кода и данных. Если задеплоить нфт с пустым контентом и без коллекции, то он всегда будет иметь один адрес. Как тогда?)

Ведь насколько я понимаю внесение контента и овнера происходит с internal транзакцией, а адрес тогда не изменится. Или внесение контента таким образом сделанно именно для нфт с коллекцией, а для единичного нужно сразу все данные при деплое указывать
SH
12:15
Seitaro Higuchi
In reply to this message
А в чем собственно вопрос?
OB
12:20
Oleg Baranov
In reply to this message
для сингл нфт сразу при деплое задаются данные, соответственно адрес будет разный
В
12:20
Влад<f>имир
In reply to this message
Ага понял. Спасибо
DS
12:29
Daniil Sedov
пытаюсь новые тесты запускать, собрал из исходников func и fift из нужного репозитория и ветки, скачал asm.fif и asmtests.fif, пробую запускать, а оно жалуется на undefined function `invoke_method`

было у кого нибудь такое?
A
12:39
Anonymus
а что за файл
12:41
если конкретно .func
то библиотеку импортнуть надо было в моем случае
DS
12:44
Daniil Sedov
In reply to this message
в смысле где жалуется? в test.fc
12:44
In reply to this message
stdlib?
A
12:45
Anonymus
In reply to this message
может быть, в вашем случае не знаю точно
сам тоже новичок
DS
12:46
Daniil Sedov
In reply to this message
пробовал уже stdlib подключить, не помогло, только начало еще сильнее жаловаться на то, что переопределяются встроенные методы
A
12:46
Anonymus
In reply to this message
хм, какие-то тесты, я думаю нужно определить такие функции в коде
12:46
но это не точно
12:47
я тесты не проводил еще, не встречался с такими проблемами, пока просто компиляции делал
DS
12:47
Daniil Sedov
In reply to this message
invoke_method это функция из новых тестов в toncli, по идее чтобы это работать начало, достаточно было собрать из toncli-local func и fift, обновить asm.fif и asmlib.fif и все... но не работает все равно
VE
12:48
V E
всем привет. в func есть готовая реализация crc16? вроде
int crc16(slice s) {...}

по типу как с sha256:
int string_hash(slice s) asm "SHA256U";


или нужно реализовать самому?
DS
12:49
Daniil Sedov
In reply to this message
я в доках не нашел такого
A
12:49
Anonymus
In reply to this message
crc16 даже в самом процессоре инструкции есть 😆
потому думаю должны быть такие реализации 100-процентные
найти только надо
SH
12:50
Seitaro Higuchi
In reply to this message
В твм готовых опкодов нет, надо реализовывать самому.
R
13:01
Roman
что за уродливый процесс установки toncli? какие-то длл качать с яндекс диска лол
13:10
дизлайкеру кажется адекватным качать длл с яндекс диска? как угодно
AT
13:11
Andrey Tvorozhkov
In reply to this message
При чем тут Яндекс диск?
13:11
Вы можете собрать тон сами
R
13:11
Roman
2022, а для распространения интерфейса командной строки нужно выполнить 11 шагов
AT
13:11
Andrey Tvorozhkov
Тонкли это обертка запуска бинарников и больше ничего
R
13:11
Roman
я следовал официальному гайду с гитхаба https://github.com/disintar/toncli/blob/master/INSTALLATION.md
AT
13:11
Andrey Tvorozhkov
In reply to this message
Там предлагается скачать уже собранные бинари из гитхаб экшенов
R
13:12
Roman
после pip install он предлагает еще какие-то бинарники скачать, а в бинарники еще и добавить длл с яндекс диска лол
AT
13:12
Andrey Tvorozhkov
Ppa / deb / Трали вали пока находятся в работе, но тоже скоро будут
13:12
In reply to this message
А, вы видимо про либ крипто для винды
13:12
Удалите винду 👍
R
13:12
Roman
можешь сам удалиться с такими советами, горе-программист
13:13
товарищи не осилили скрипт накатать для установки?
13:13
уважения к тону все меньше и меньше после начала изучения
AT
13:15
Andrey Tvorozhkov
In reply to this message
Спасибо, что держите нас в курсе. Осилить написать скрипт можете вы! Репозиторий в общем доступе, PR примем
А
13:25
Андрей
In reply to this message
бан
J
13:28
Jack Rotgar
In reply to this message
Бан наверное жестковато с ходу, но поучиться уважению сообщества человеку стоит конечно.
j
13:30
jessez
In reply to this message
яндекс диск это жестко )))
RG
13:34
Ruslan Gabdullin
Да что вы к этому Яндекс.Диск прицепились. Люди готовый бинарь дают, а вы все про диск. Я вот его долго искал.
AP
13:35
Andrey Pfau
@tvorogme может загрузить dll в репозиторий с инструкцией? А то в некоторых местах Яндекс диск заблокирован + там ограничение на количество скачиваний
ω
13:35
ωαδιμ
всем привет, я новичок
можете подсказать, кто-нибудь, где можно найти подробную документацию по func? на оф сайте только статься на ton society и 10 уроков на гитхабе, но хотелось бы более подробной информации
RG
13:35
Ruslan Gabdullin
@tvorogme поправь меня, если ошибаюсь. Этот DLL есть в составе OpenSSL: надо взять версию 1.1.1 для win64 вот отсюда https://slproweb.com/products/Win32OpenSSL.html
R
13:37
Roman
In reply to this message
ребятушки, большинство кодеров сидит на винде. а мне предложили сменить операционку из-за того, что никто не захотел организовать нормальный процесс установки. это имхо и есть неуважение, как так можно сказать вообще в ответ на логичный вопрос
J
13:37
Jack Rotgar
In reply to this message
Так организуйте.
13:37
In reply to this message
+
А
13:37
Андрей
In reply to this message
> большинство кодеров сидит на винде
смешно
RG
13:38
Ruslan Gabdullin
Рано или поздно их доделают. Проект ведь поддерживают и развивают. Зачем же хейтить?
F
13:40
F
@romaleks360
Посидит немного в муте
В
13:42
Василий
В чем разница между
/ ~/  и ^/
?
В доках 3 оператора с одинаковым описанием. Это фантастика!
После деления будет применён унарный оператор или о чем это вообще?
13:43
И ещё три с делением по модулю
AP
13:43
Andrey Pfau
In reply to this message
Ну я виндой тоже пользуюсь + WSL2
АГ
13:45
Андрей Гулицкий
In reply to this message
Без WSL Винда вообще неюзабельна для разработчика
13:45
Разве что если ты для экосистемы Майкрософт что-то делаешь
PS
13:49
Pablo Samius
In reply to this message
👀
AT
14:00
Andrey Tvorozhkov
In reply to this message
Да, давайте поменяем ссылку на эту
J
14:01
Jardis
Всем привет, а почему баланс наших жетонов перестал отображаться? И не определяет что это Jetton стандарт, хотя вчера ещё все было нормально
СВ
14:10
Сергей В
А что значит _ в конце шестнадцатеричного представления клетки?
x{6800.....690C_}
AP
14:11
Andrey Pfau
In reply to this message
Не полный байт
ω
14:13
ωαδιμ
In reply to this message
дополнение битовой строки до :8, в конец битовой строки добавляется единичка(1) и нули до тех пор, пока длина не станет кратной 8
14:14
In reply to this message
_ означает, что битовая строка была модифицирована таким образом
NN
14:14
Nick Nekilov
In reply to this message
Проблема точно не в контракте? У меня всё работает отлично.
J
14:14
Jardis
In reply to this message
Мы использовали jetton.live
14:15
In reply to this message
Этот тоже не отображается нормально
A
14:16
Anonymus
git clone git@github.com:disintar/toncli.git
Cloning into 'toncli'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

хм
14:16
а ещё я второй репозиторий нашёл от tonwhales
14:17
не знаю какой правильный
ω
14:17
ωαδιμ
In reply to this message
более подробная информация https://ton.org/tvm.pdf в разделе 1.0 Notation for bitstrings
СВ
14:18
Сергей В
In reply to this message
спасибо :)
J
14:18
Jardis
In reply to this message
Проблема с tonscan видимо?
NN
14:22
Nick Nekilov
In reply to this message
Обращайся к тестеру чтобы он добавил поддержку on-chain данных.
Судя по Bio, сделать это можно только в закрытом сообществе протон. 😁
J
14:22
Jardis
14:22
In reply to this message
14:24
Вчера было нормально все, сегодня договариваемся об интеграции с гейтом wert.io, скинул им ссылку, а здесь такая шляпа
AT
14:41
Andrey Tvorozhkov
In reply to this message
Надо клонить через https ссылку)
A
14:41
Anonymus
In reply to this message
есть такое...
14:41
In reply to this message
я просто с сайта архив решил скачать
S
14:45
Stas
гайс как отловить ошибку в промисе трансфера если сам трансфер не промис?
14:45
хочу в интерфейс ошибку вывести не понимаю как отловить ее
M
14:48
Mikhail
In reply to this message
он ведь не промис, для отправки нужно еще вызвать метод .send()
СВ
14:48
Сергей В
In reply to this message
а я правильно понял?
вот у меня заканчивается на C_
C = 1100, мне нужно просто отбросить 100 с конца?
0xC >> 3
S
14:50
Stas
In reply to this message
и правда
14:52
In reply to this message
tg_image_1954450642.jpeg
Not included, change data exporting settings to download.
43.9 KB
просто если только подпись вызывать без send то ошибка в промисе, а catch ее не ловит потому что там промис не возвращается, короче хуемое
ω
14:54
ωαδιμ
In reply to this message
да,
вот выдержка на всякий из документации к TVM: "If the length of a binary string is not divisible by four, we augment it by one 1 and several (maybe zero) 0s at the end, so that its length becomes divisible by four, and then transform it into a string of hexadecimal digits as described above. To indicate that such a transformation has taken place, a special “completion tag” _ is added to the end of the hexadecimal string. The reverse transforma- tion (applied if the completion tag is present) consists in first replacing each hexadecimal digit by four corresponding bits, and then removing all trailing zeroes (if any) and the last 1 immediately preceding them (if the resulting bitstring is non-empty at this point)."
14:56
In reply to this message
(0xC >> 3) подходит для конкретного частного случая
СВ
14:57
Сергей В
In reply to this message
ага, я понимаю, просто суть уловить что бы :)
Спасибо)
NN
14:59
Nick Nekilov
In reply to this message
Там в ton-wallet много проблем с этим. Не помню кейсы, но вроде при возникновении ошибок ничего не происходит, при закрытии окна тоже, при отмене. Вроде так.
14:59
Может что-то исправили.
В
15:08
Василий
Я правильно понимаю что нужно отдавать предпочтение итеративным алгоритмам, а не рекурсивным? Из-за стоимости лукапа функции. Или всё не так серьезно?
A
15:14
Anonymus
рекурсивные всегда медленнее
15:15
как минимум - даже ресурсов больше ест
15:16
если рекурсия максимум на 2-3 раза, то ещё можно ради простоты это использовать, а так - если числа большие там, то лучше итерации
M
15:16
Mikhail
Подскажите плиз как можно проверить какая транзакция выполнилась если я отправляю одновременно несколько с одинаковым seqno.
желательно как можно проверить транзакцию через js либу.
T
15:17
Tim
скачать тело последней транзакции и сравнить с теми что отправлял
15:17
но лучше так просто не делать
15:18
если нужно отправлять несколько паралеллельно - используй highload wallet. на js есть в ton3-contracts
M
15:18
Mikhail
In reply to this message
окей, спасибо!
S
15:22
Stas
чкто я туплю,
LITE_SERVER_UNKNOWN: cannot apply external message to current state : Failed to unpack account state
кто сталкивался с ней?
OB
15:24
Oleg Baranov
In reply to this message
видимо аккаунт не инициализирован
S
15:51
Stas
In reply to this message
чето не пойму на deploy тот же ответ
N
16:10
N0
Ребят, а есть ли в func что-то типа is_int?
DS
16:14
Daniil Sedov
In reply to this message
forall X -> int is_null(X x) asm "ISNULL";
forall X -> int is_int(X x) asm "<{ TRY:<{ 0 PUSHINT ADD DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS";
forall X -> int is_cell(X x) asm "<{ TRY:<{ CTOS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS";
forall X -> int is_slice(X x) asm "<{ TRY:<{ SBITS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS";
forall X -> int is_tuple(X x) asm "ISTUPLE";

держи сразу для всех типов
N
16:15
N0
Спасибо огромное, а то уже кучу времени на это потратил
NN
16:15
Nick Nekilov
У кого-нибудь есть под рукой номера блоков, в которых было несколько шардов?
NA
16:17
Narek Abovyan
In reply to this message
А для чего такое пригождается?
NN
16:18
Nick Nekilov
In reply to this message
Это аналог template из C++ или generic или многих других языков.
NA
16:18
Narek Abovyan
Да в целом понятно, интересно какую задачу таким образом пытаетесь решить
NN
16:20
Nick Nekilov
In reply to this message
Погоди. Ты про forall или про is_xxx? 🤔
NA
16:21
Narek Abovyan
Про is_xxx
NN
16:21
Nick Nekilov
А, тогда не знаю.
PS
16:23
Pablo Samius
Зашел я в чат Девчат, а тут одни мужики
16:23
😜
N
16:24
N0
In reply to this message
Нужна проверка типа, пытаюсь сдлеать сереализатор из tuple в cell и обратно
SM
16:29
Sup M8
Кто делал первый контракт для нфт?)
DS
16:30
Daniil Sedov
In reply to this message
В ton smart challenge четвертая таска это преобразования из tuple в cell и обратно, вот там и пригождается :)
S
16:33
Stas
LITE_SERVER_UNKNOWN: cannot apply external message to current state : External message was not accepted

новая ошибка
16:33
это что ?😭
DS
16:33
Daniil Sedov
In reply to this message
"External message was not accepted"
16:34
В функции recv_external ты после проверки данных написал accept_message()?
S
16:35
Stas
это трансфер обычный
А?
16:37
Алекс 🇺🇦CR
In reply to this message
Незнаю, также интересно
S
16:38
Stas
In reply to this message
а я seqno старый передавал
NA
16:38
Narek Abovyan
In reply to this message
Теоретически я 😅
Хотя может кто-то еще раньше делал
i
16:39
isoscele 💎
what exactly "valid" means in the 3rd exercise?
SH
16:39
Seitaro Higuchi
In reply to this message
Мы первый раз столкнулись когда писали задачу для контеста: она заключается в том, что на вход функции подаётся тупл с неизвестным содержимым (неизвестны типы), а нужно сериализовать. Так-то фанси строготипизирован и ситуаций когда ты не знаешь тип на стеке быть особо не должно
i
16:39
isoscele 💎
how to check if a message is valid?
NA
16:39
Narek Abovyan
In reply to this message
Ну вот да, я поэтому удивился
16:39
Про туплы не подумал что-то
DS
16:39
Daniil Sedov
In reply to this message
I don't know either but as I understand it's explained in tlb scheme, you can find a link to it in task
SH
16:40
Seitaro Higuchi
In reply to this message
Ну и потом конструкция которую мы использовали, чтобы сделать is_int показалась слишком интересной чтобы ее выбрасывать и слишком сложной, чтобы давать участникам ее самим делать
NA
16:41
Narek Abovyan
Надо это все собирать в большую библиотеку с полезностями
AT
16:49
Andrey Tvorozhkov
In reply to this message
Можно выделить какую-нибудь общую между js (вашим будущим CLI) и тонкли
NA
16:50
Narek Abovyan
ну оно никак не будет завязано на какой-то конкретный инструмент по-хорошему
AT
16:50
Andrey Tvorozhkov
In reply to this message
Ага, просто внутри тонкли уже есть эти штуки - можно выделить в какое-то репо и сделать понятный процесс обновления
DS
16:50
Daniil Sedov
In reply to this message
stdlib разве не эту функцию выполняет?
AT
16:51
Andrey Tvorozhkov
In reply to this message
Возможно, когда я выползу из отпуска я осилю твой wasm в тесты тонкли ;)
IM
16:51
Illia Malovanyi
Как понять, что нужно использовать udict или всё же idict? Только по типу данных ключа? В func-contest1 в задании с хешмапой давали тип для ключа, в этот раз что-то не дают в func-contest2. Выходит, что лучше юзать idict?
NA
16:52
Narek Abovyan
In reply to this message
его бы тоже стандартизовать как-то
T
16:52
Tim
In reply to this message
васм в тонкли не залезет потому что он вызывается только из js пока
NA
16:52
Narek Abovyan
он у каждого свой уже считай
DS
16:52
Daniil Sedov
In reply to this message
У меня в рабочем решении udict
AT
16:55
Andrey Tvorozhkov
In reply to this message
Надо подумать как это решить. Я хочу добавить модульность в структуру проекта (project.yaml) и возможность запускать js тесты
16:55
Если это не 1 контракт, а серия контрактов взаимодействующих между собой - js тесты лучше
T
16:55
Tim
Мне кажется получится слишком большой франкенштейн. Пусть js запускает js
AT
16:55
Andrey Tvorozhkov
Да и много кто ими пользуется
16:56
In reply to this message
Нунинаю, на первый взгляд не понятно
16:56
Я хочу убрать все зависимости в пользу кастомного libtonlibjson
16:56
Через ppa / deb / трали вали
16:56
Тогда все будет ставится в 1 команду
T
16:56
Tim
питон поставить это самый тяжелый шаг
AT
16:57
Andrey Tvorozhkov
И не будет вызовов бинари, а будет нормальный .so
16:57
In reply to this message
Ton скомпилировать самый сложный шаг) По чату и вопросам в личку - 90% приходят с Core dump
16:57
Потому что бинари не подходят к их системе
T
16:58
Tim
Скомпилировать тон - 1 команда в идеале. Нужно только пофиксить кейсы для систем где не хватает каких-то зависимостей
AT
16:59
Andrey Tvorozhkov
In reply to this message
В идеале - apt get install ton toncli

ИМХО
J
17:00
Jenya
# Importing wallet
wallet = await client.import_wallet(seed)

что это делает? не совсем понимаю
T
17:00
Tim
apt-get это в лучшем случае половина юзеров
17:00
есть ещё мак и (ВИНДОУС)
AT
17:00
Andrey Tvorozhkov
In reply to this message
Так делает для всех топовых систем
T
17:00
Tim
и больше всего проблем как раз у этих двух
AT
17:00
Andrey Tvorozhkov
Brew изи, а вот с виндой
17:00
——_———
T
17:01
Tim
brew изи только для мазохистов, я каждый раз как его запускаю он 10 минут перекачивает рецепты
AT
17:01
Andrey Tvorozhkov
In reply to this message
😂😂😂😂
F
17:01
Ferrari Apple
In reply to this message
Факт
AT
17:01
Andrey Tvorozhkov
Ну, когда у меня был мак я поставил на него arch и был рад
T
17:01
Tim
Нарек вроде обещает wasm для компилятора тона
VD
17:01
Vitaly Dmitriev
In reply to this message
не замечаю этих проблем
T
17:02
Tim
вот тогда заживем
17:03
из всего блокчейнового самый адекватный пока был hardhat, он хотя бы реально ставится одной командой и на любой системе. Сам потом докачивает всякие компиляторы и эмуляторы
IM
17:07
Illia Malovanyi
In reply to this message
а какую ты версию stdlib используешь? стандартную в toncli? на мой контракт походу порчу нагнали, все тесты локальные проходит, а даёт 5 очков в боте 🥲
NA
17:07
Narek Abovyan
In reply to this message
Ну вот к этому стремимся
17:07
Чтобы ничего собирать не надо было самому
DS
17:11
Daniil Sedov
это нормально что у меня после всяких преобразований cell отбросил мусорные биты? или это не мусор был?

из этого
CS{Cell{006430718b16c8736f026f0278c8caffc9746f02756f03208201cbe7ed43d8208201fd68ed43d802fe2030fe2030fe2030fe2030} bits: 28..36; refs: 0..0}

получилось это:
CS{Cell{00026c} bits: 0..8; refs: 0..0}

эти два cell'а равны?
T
17:11
Tim
Чтобы проверить равенство cellов нужно сравнить их хеш
17:11
эти два не похожи на равные
DS
17:13
Daniil Sedov
In reply to this message
CS{Cell{009fb9b0682383c3bc3a4a2f75c71c7fe20718d03c0000000000000000000000000000002736f026f0278c8caffc9746f02756f03208201cbe7ed43d8208201fd68ed43d802fe2030fe2030fe2030fe20308} bits: 150..274; refs: 0..0}

и

CS{Cell{001f00000000000000000000000000000008} bits: 0..124; refs: 0..0}

если на эти посмотреть (я просто вместо числа кучу нулей вставил), то если bits это оффсет, выглядит как правда что они равны
AT
17:13
Andrey Tvorozhkov
In reply to this message
Тут логично все. Было с 28 по 36 бит
17:13
Стало с 0 по 8
DS
17:13
Daniil Sedov
In reply to this message
сейчас посмотрю на хэши
AT
17:13
Andrey Tvorozhkov
Звучит как одинаковые слайсы
PK
17:15
Peter Krivoschekov
Всем привет!
Как я могу in_msg_body дабвить свой текст
например:
пришло в контракт «Hello»
а в ответ контакт отправляет «Conctract: Hello»?
17:16
Можно ли как то работать со строками
или что то типо того
Или возможно ли сложить строку со slice
DS
17:19
Daniil Sedov
In reply to this message
даже хеши не успел посчитать, из обоих слайсов одинаковый селл получился
17:19
значит да, равные
NN
17:28
Nick Nekilov
In reply to this message
Бамп
AT
17:30
Andrey Tvorozhkov
In reply to this message
-1,8000000000000000,38
NN
17:30
Nick Nekilov
In reply to this message
Спасибо 🙏
J
18:22
Jenya
Traceback (most recent call last):
File "/home/ubuntu/egsaa/generate_wallet.py", line 7, in <module>
client.init_tonlib()
File "/home/ubuntu/.local/lib/python3.10/site-packages/ton/sync.py", line 18, in syncified
return loop.run_until_complete(coro)
File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "/home/ubuntu/.local/lib/python3.10/site-packages/ton/client/tonlib_methods.py", line 67, in init_tonlib
wrapper = TonLib(self.loop, self.ls_index, cdll_path, self.verbosity_level)
File "/home/ubuntu/.local/lib/python3.10/site-packages/ton/tonlibjson.py", line 82, in init
tonlib = CDLL(cdll_path)
File "/usr/lib/python3.10/ctypes/__init__.py", line 374, in init
self._handle = _dlopen(self._name, mode)
OSError: libcrypto.so.1.1: cannot open shared object file: No such file or directory
Exception in tonlibjson.del: Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.10/site-packages/ton/tonlibjson.py", line 128, in del
self._tonlib_json_client_destroy(self._client)
AttributeError: 'TonLib' object has no attribute '_tonlib_json_client_destroy'

Exception ignored in: <function TonLib.del at 0xffffbce58310>
Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.10/site-packages/ton/tonlibjson.py", line 131, in del
RuntimeError: Error in tonlibjson.del: 'TonLib' object has no attribute '_tonlib_json_client_destroy
a
18:23
assemblerx64
In reply to this message
Получить кошелек по сид фразе. Поскольку эта либа работает с исполняемым файлом, который зачем-то держит все кошельки в кейстор, то сначала мы импортируем с помощью этой функции, потом юзаем через client.find_wallet(wallet.path)
18:24
In reply to this message
Возможно поможет apt install openssl
J
18:25
Jenya
In reply to this message
установлен
RG
18:25
Ruslan Gabdullin
apt install libssl-dev, причем важно чтобы версия была 1.1.1. Версия 3.0 не подойдет
18:26
У тебя ubuntu22.04, как я понял) Там эта версия ставится чуть сложнее
a
18:26
assemblerx64
In reply to this message
Связано ли это с устаревшестью tonlib?) Или все юзают старую
RG
18:27
Ruslan Gabdullin
Все юзают, как мне известно.
18:28
In reply to this message
Вот эта инструкция возможно поможет установить нужную версию
https://stackoverflow.com/questions/72133316/ubuntu-22-04-libssl-so-1-1-cannot-open-shared-object-file-no-such-file-or-di
ПП
18:59
Просто Паша
image (2).png
Not included, change data exporting settings to download.
5.5 MB
IM
19:03
Illia Malovanyi
В чём особенность MessageRelaxed? В том, что в таких сообщениях мы можем передать message_body?
SH
19:12
Seitaro Higuchi
In reply to this message
Нет, в том что там src_addr более широкий и может быть addr_none
a
19:25
assemblerx64
Python библиотека для новичков v0.21
github.com/psylopunk/pytonlib

+простейшие методы для нфт
+минимальная документация
+стабильность (в отличие от старых версий)
J
19:26
Jenya
In reply to this message
а для арма как?
RG
19:27
Ruslan Gabdullin
In reply to this message
IM
19:34
Illia Malovanyi
In reply to this message
А где можно прочитать про то, насколько широкий "src_addr"? Лазил по вайтпейперу tvm, но так и не нашёл
P
19:49
Pi
Кто нить обучение по тонкли проводит?
NN
21:16
Nick Nekilov
In reply to this message
https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb#L133

src - MsgAddress (который включает в себя и MsgAddressInt и MsgAddressExt)
dest - MsgAddressInt

https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb#L109-L110
KI
21:40
Karim Iskakov
Вот есть ios/android кошельки, например Tonkeeper.

Могут ли они как-то достоверно доказать, что хранят приватный ключ только на девайсе?

Знаю способ, что можно к каждому релизу публиковать хэш билда. Но для этого придется заопенсорсить код (что применимо не ко всем проектам), чтобы каждый мог собрать проект и сверить хэш
a
21:45
assemblerx64
In reply to this message
Tonhub опенсорсный😍
KI
21:46
Karim Iskakov
А без опенсорсинга всего проекта это как-то можно сделать?
a
21:48
assemblerx64
In reply to this message
Ну как вариант отдельное приложение, которое подписывает транзакции и их отправка через другое приложение)

Если бы там были http соединения мб можно было бы почекать трафик
NN
21:51
Nick Nekilov
In reply to this message
Tonkeeper - гарантированно не может.
21:53
In reply to this message
Charles позволяет смотреть даже то что Tonkeeper и куда отправляет.
a
21:54
assemblerx64
In reply to this message
В плане прям декодированным? Разве не на уровне приложения шифруется трафик?
21:55
Ща потыкаю, интересно
NN
21:55
Nick Nekilov
In reply to this message
Как шифруется - так и расшифровывается 😁
a
21:56
assemblerx64
In reply to this message
Есть что погуглить конкретное? Только не клевые сертификаты так ломаются?
Y
21:57
Yehor
Ребят, всем привет, никто не сталкивался с такой проблемой при установке toncli? В чем может быть причина?
NN
21:57
Nick Nekilov
Charles Proxy
a
21:57
assemblerx64
In reply to this message
Не, про расшифровку. Это уже качнул
NN
21:58
Nick Nekilov
А, да там ничего не "ломается". Все прозаично.
IM
22:28
Illia Malovanyi
In reply to this message
@tvorogme кажется это к тебе
AT
22:29
Andrey Tvorozhkov
А я уже ответил, что хз что это. Выглядит как мисверсии пакетов. В первый раз такую ошибку вижу в контексте тонкли
В
22:35
Василий
In reply to this message
Что по версии питона? Вижу там из collections что-то не импортируется
Y
23:00
Yehor
In reply to this message
23:02
уже немного другая ошибка, но суть та же, как я понял
PK
23:07
Peter Krivoschekov
Всем привет! Кто нибудь знает как можно минтить токины для TON с помощи смарт контрактов?
Будет полезна любая информация об этом
Было бы круто если вы скините ссылки на репы в github и статью где это можно почитать 😁
В
23:07
Василий
In reply to this message
В 3.10 меняется интерфейс к collections.Mapping. Либо обнови toncli с зависимостями, либо откати питон до <=3.9
PK
23:12
Peter Krivoschekov
In reply to this message
Помогите пж)))
В
23:13
Василий
In reply to this message
Попробуй pip'ку обновить и с помощью неё обновить toncli. Но затык здесь именно в том, что пакеты у тебя до 3.9 стоят, а питон 3.10-й. У меня тоже 3.10 но на линуксе и все ок
DS
23:13
Daniil Sedov
In reply to this message
23:13
Или в чем вопрос был?
AT
23:14
Anthony Tsivarev
In reply to this message
Y
23:14
Yehor
In reply to this message
попробую, спс
PK
23:14
Peter Krivoschekov
In reply to this message
Как это вообще возможно делать с помощи смарт контрактов
В
23:14
Василий
In reply to this message
https://ton.org/mining
Officially ended
PK
23:14
Peter Krivoschekov
Теперь новый вопрос, для чего нужно jetton.live?
Y
23:15
Yehor
In reply to this message
обновил пакеты pip и заработало вроде
23:15
23:16
@trinketer22 спасибо большое)
23:16
и вообще всем, кто помогал))
T
23:17
Tim
In reply to this message
Смотри контракт нфт китов
PK
23:18
Peter Krivoschekov
In reply to this message
Ок, спасибо
23:19
А есть какие нибудь репы на github которые ты мог посоветовать ?
T
23:30
Tim
Ты нфт хочешь минтить или жетоны?
PK
23:31
Peter Krivoschekov
Жетоны
T
23:31
Tim
PK
23:32
Peter Krivoschekov
Ок, спасибо
буду читать и разбиратся
6 August 2022
SK
00:52
Sergey Klimov
прани я один в 4 задании по контесту не могу преодолеть планку в 44 балла?)))
мб есть кто то еще? для совместного поиска проблемы)))
01:39
龙形的影子
In reply to this message
А как ты баллы получаешь?
Я только 1-е сделал, если что
SK
02:17
Sergey Klimov
In reply to this message
https://t.me/toncontests_bot
отправляю архив, мне в ответ присылают сколько я набрал баллов)
02:19
это нормально что такой большой вывод?
02:20
In reply to this message
да спс помогло
RG
02:21
Ruslan Gabdullin
In reply to this message
Чудесно!
J
03:38
Jenya
In reply to this message
🤡
VD
03:40
Victor Dm.
Оказывается есть вывести все флаг, вот я олежка, пытался, спрашивал как посчитать фее и правда говорят, нужго вопрос правильно ставить😱
VD
03:59
Victor Dm.
In reply to this message
Я еще и спрашивал про эти флага😭 извините, но меня это сильно ударило
Д
04:20
Дмитрий
Ребят, всем привет👋
04:21
Подскажите ламеру в кратце, что нужно, чтоб какой либо адрес вебхукнуть и отслеживать все транзы?
04:22
Наверное по аналогии с TonNotifyBot, только не для бота, а для сайта
BA
04:28
Berkut Armageddon
In reply to this message
Ухх попробую ответить
Если я правильно понял вопрос - это не относится к тону в принципе
Страницу отпарсить можно, например на PHP

Если надо ещё уведомления в телегу - можно дополнительно бота и API телеги юзать

P. S. Я веб разраб, к разработке тона отношения не имею
Д
04:31
Дмитрий
In reply to this message
Я скорее имел ввиду стек технологий, которые нужны, чтоб сделать такое, допустим ton-http-api и вот это всё
BA
04:33
Berkut Armageddon
In reply to this message
Если указывать юрл эксплорера - то я бы использовал PHP и всё
Скрипт на крон ещё повесить, и отслеживать новые транзы на странице эксплорера
04:34
Может есть что-то готовое конкретно для эксплорера тон - это уже не подскажу
Д
04:45
Дмитрий
Понял вас
Д
05:33
Дмитрий
А @TONNotifyBot опенсорсный?
1
06:39
123
In reply to this message
Есть такой бот - @TonutilsBot

К сожалению, видимо, не опенсурсный. Я бы тоже хотел посмотреть на код
СВ
07:54
Сергей В
In reply to this message
А там понятно все тесты проходят или часть?
СВ
08:33
Сергей В
In reply to this message
Ух ты, и правда, ну это отличное улучшение относительно 1го контеста 👍
OB
09:13
Oleg Baranov
In reply to this message
Выложу позже) Надо код прихорошить)

Но если кратко - то это прокаченная версия https://github.com/xssnick/tonutils-go/blob/master/example/block-scan/main.go С базой, воркерами на обогащение транзакций и рассылку вебхуков.
Я
10:49
Я твой Бог
Запустили Bug Bounty программу 🐞

Будет интересно для разработчиков, сразу для двух продуктов:

tonhold.com - TON кошелёк

testnet.tegro.finance - DEX на TON

За найденные эксплойты и менее критичные ошибки, полагается вознаграждение.

Если нашли уязвимость в сайте, можете сообщить о ней заполнив форму https://forms.gle/ybfeRtibrRXWKYKR6
10:51
◾️ Anonymous◾️
In reply to this message
Это для меня 🥺
Спасибо
R
11:39
Roman S.
Подскажите, есть у TON название стандарта для НФТ? Типа ERC-721 на эфире?
АГ
11:40
Андрей Гулицкий
In reply to this message
R
11:42
Roman S.
In reply to this message
Спасибо
11:43
Т.е. если я хочу запустить контракт и создать НФТ, мне нужно использовать данный код: https://github.com/ton-blockchain/token-contract/tree/main/nft ?
m
13:16
mrboorger
Можно как-то поймать exception от, например, load_msg_addr? Или как-то по-другому узнать, что не получаилось загрузить?
VD
13:41
Victor Dm.
In reply to this message
body := cell.BeginCell().MustStoreInt(128, 8).EndCell() так делать чтобы все вывести?
VD
14:01
Victor Dm.
In reply to this message
OB
14:03
Oleg Baranov
In reply to this message
Ты в го хочешь отправит месседж?
VD
14:03
Victor Dm.
Да
14:03
Я просто флаги не знаю, как ставить, вроде так
OB
14:03
Oleg Baranov
Там абстрагировано это, у воллета есть сенд, там передается месседж в котором можешь задать mode
14:05
128 да, выведет все
VD
14:06
Victor Dm.
А все увидел
14:06
Соррян
OB
14:06
Oleg Baranov
а в эмаунте 0 передавай
14:06
ну он игнорится при 128
VD
14:07
Victor Dm.
stateInit можно nil оставлять?
OB
14:09
Oleg Baranov
да
VD
14:10
Victor Dm.
IHRDisabled за что отвечает?
AP
14:24
Andrew Python
а можно в следующий раз приколы типа crc16 и base64 захардкодить в ноде? (точнее сделать tvm инструкции)
а так прикольный контест
М
14:24
Местный
Аукцион закончился где можно посмотреть домен. ? Можно ли выложить на продажу ?
DS
14:29
Dmitry Shanin
In reply to this message
Посмотреть можешь на dns.ton.org, там же можешь и отредактировать (привязать адрес своего кошелька, например), если есть хром и расширение для хрома с кошельком. Насчет продажи не слышал пока ничего.
14:30
In reply to this message
Все сделал уже? Как по сравнению с первым, интереснее?
AT
14:30
Anthony Tsivarev
на getgems можно по идее продавать
AT
14:31
Andrey Tvorozhkov
In reply to this message
Это обычные нфт, можно будет продавать на нфт маркетах :)
DS
14:31
Dmitry Shanin
Ну контракт домена по стандарту nft, скоро появятся маркеты.
AP
14:34
Andrew Python
In reply to this message
Интересно, но... В прошлом контесте были +- стандартные операции, а в этом какие-то странные и/или бесполезные.
AT
14:34
Andrey Tvorozhkov
In reply to this message
Вроде как из-за того, что хотят новичков :)
DS
14:37
Daniil Sedov
In reply to this message
А мне понравилось это реализовывать)
AP
14:37
Andrew Python
In reply to this message
да мне тоже понравилось, только зачем?
SV
14:39
Sergei Voroshilov
In reply to this message
Тонов заработать 😁
SH
14:44
Seitaro Higuchi
In reply to this message
Почему же? Если прорешать контест то станет ясно как работать со словарями, как сериализовать/десериализовать произвольные данные, как устроены сообщения и как устроены адреса. Да, не все задачи в таком виде встают именно в смартконтрактах (например отображать адреса обычно надо в UI, сериализация произвольных данных происходит на js итп), но каждый кто пишет для ТОНа все эти аспекты должны понимать. А тут новички и понимать начнут и к синтаксису фанси привыкнут.
DS
14:47
Daniil Sedov
In reply to this message
Согласен, в формате контеста гораздо быстрее синтаксис и особенности запомнились
AP
14:48
Andrew Python
In reply to this message
Просто задания кажутся неполноценными, из-за того, что используются только гет-методы. В прошлый раз каждое задание было полноценным смарт-контрактом.
В
15:08
Василий
Как дебажить Type check error?
Прочитал как TVM обрабатывает исключения и по ходу я не могу ни откуда получить eip на инструкцию где оно выбросилось.
Либо я чего-то не понимаю
SH
15:12
Seitaro Higuchi
In reply to this message
Попробуйте запускать fift/toncli (или чем вы пользуетесь?) с -v 4, он покажет трейс исполнения tvm, сравнив со скомпиленным кодом в fif файле как правило уже ясно где упало.
В
15:13
Василий
In reply to this message
toncli. Спасибо, попробую!
В
15:28
Василий
@rulon А если я в какой-то момент сравниваю целочисленное и null это нормальная тема или нет? Вроде написано что null корректен для всех типов, но возможно я не так понял.
15:28
Похоже что не очень
АГ
15:46
Андрей Гулицкий
In reply to this message
Ну можешь свой контракт написать по стандарту.
В
15:57
Василий
Я правильно понимаю что в FunC if( (a == b) & (b == c) ) В любом случае будут проверены оба условия и никакой оптимизации в зависимости от выполнения первого не будет?
15:58
И никакого варианта кроме вложенных условий нет
SH
15:59
Seitaro Higuchi
Да, сейчас оптимизаций логических условий нет.
Z
16:15
Zainabella
Hello
s⁢
16:15
ss_kali ⁢
In reply to this message
English - @tondev_eng
Н
16:36
Никита
if (op == 2) { ;; batch deploy of new nfts
int counter = 0;
cell deploy_list = in_msg_body~load_ref();
do {
var (item_index, item, f?) = deploy_list~udict::delete_get_min(64);

} until ( ~ f?);
}

что такое } until ( ~ f?); ?
AT
16:39
Andrey Tvorozhkov
In reply to this message
While условие
DS
16:39
Daniil Sedov
In reply to this message
Цикл do .. until
AT
16:40
Andrey Tvorozhkov
Посмотрите что выдает delete get min - поймете :)
Н
16:40
Никита
что такое ~f?
DS
16:40
Daniil Sedov
In reply to this message
~ это операция отрицания
16:41
f? Видимо какая то переменная
Н
16:41
Никита
In reply to this message
с этим я разобрался, но вот эта f? хз что вооще
AP
16:42
Andrew Python
In reply to this message
bool, который говорит, взялся ли item, или вместо него null (потому что хешмапа пустая)
NN
16:42
Nikolay Nick
f? это переменная
16:42
там либо -1 либо 0
S
16:47
Stas
Как в tonweb хеш транзакции достается после send?
T
16:47
Tim
In reply to this message
Никак
S
16:52
Stas
Всмысле
AP
16:55
Andrew Python
In reply to this message
а никак)))
AT
16:56
Andrey Tvorozhkov
In reply to this message
Там вроде уже идёт к тому чтобы можно было, я видел апдейт тонцентра с выводом хеша боди
16:56
Но видимо хеш боди можно и локально посчитать
S
16:59
Stas
Тогда другой вопрос как мне хеш локально посчитать?)
I
16:59
Ihor
Хай гайз, дайте пожалуйста ссылку на сервис, который мне покажет все версии моего кошелька. Есть такое?
SV
17:01
Sergei Voroshilov
In reply to this message
В Тонкипере можно переключаться между разными версиями. Но не знаю, все там или нет
I
17:04
Ihor
In reply to this message
Там не все и мне влом на мобиле сид вводить
СВ
17:17
Сергей В
А как на func написать условие с AND?
типа
 if (x >= 0 && x <= 10) {...}
Не могу в доке найти :(
P
17:18
Purple
In reply to this message
&
СВ
17:19
Сергей В
In reply to this message
Ааа нужно оба выражения в скобки взять, понял, спс
NN
17:30
Nikolay Nick
Кто подскажет, во втором задании контеста результирующие хэшмапы должны содержать не больше 256 элементов? Или входные содержат максимум 256?
СВ
17:57
Сергей В
In reply to this message
Думаю про входные речь, но это предложение можно выкинуть и ничего не изменится в постановке задачи
NN
17:59
Nikolay Nick
Меня это немного запутало. Так как какой смысл об этом говорить если это входные
18:00
Как код не пишу больше 30 баллов за второе не смог получить. Гадаю, что не так
DS
18:54
Daniil Sedov
In reply to this message
дебаж
NN
19:01
Nikolay Nick
Как? В тонкли не вижу дебага
AT
19:12
Andrey Tvorozhkov
In reply to this message
СВ
19:21
Сергей В
А нет возможности как-то ограничить разрядность инта в func? Может какие-то асм инструкции чтоб сдвиг сделать как будто инт 32х битный?
DV
19:23
Dan Volkov
In reply to this message
Разрядность в переменной? Можно только проверить перед записью и выдать ошибку
СВ
19:25
Сергей В
In reply to this message
Просто все алгоритмы для crc на сдвигах, и рассчитывают на wraparound(или как там это называется когда старший бит при сдвиге влево становится младшим)
Думал есть может какай асм для симуляции такого сдвига :)
AP
19:35
Andrew Python
In reply to this message
проверить можно этими инструкциями (так ведь?)
DS
19:43
Daniil Sedov
In reply to this message
~dump()
19:44
In reply to this message
Я просто чекал, если число > лимита, вычитал :)
NN
19:51
Nikolay Nick
In reply to this message
Это что и где?
DV
19:51
Dan Volkov
In reply to this message
да
SH
20:00
Seitaro Higuchi
In reply to this message
они exception'ы вызывают, обычно это не то что разработчик хочет.
m
21:27
mrboorger
Можно как-то узнать, что, например, load_msg_addr выкинул экспешн? Или как-то по-другому узнать, что не получилось загрузить?
7 August 2022
А(
03:14
Андрей Власов (Andrey Vlasov)
In reply to this message
Всем привет.
Так знает кто-нибудь, что это такое и как его едят?
SV
03:15
Sergei Voroshilov
In reply to this message
Я так понял, что сюда можно указать адрес контакта, который будет управлять доменами 3го уровня.

Поправьте, если я неправ
Л
03:17
Лаборатор 2.4
In reply to this message
Для него ещё нет смарт контракта
А(
03:19
Андрей Власов (Andrey Vlasov)
In reply to this message
4. Проверил работу резолвинга домена в tonscan.org. Работает. Попробуйте ввести в строке поиска: highfeed.ton

Это текст из другого канала.
Л
03:21
Лаборатор 2.4
In reply to this message
Работает
М
04:48
Местный
Скажите пожалуйста а отказаться от участия аукциона можно ?
YP
05:37
Yaroslav Paroshin
In reply to this message
Если сделали ставку, то вроде как нет
Можете только её не повышать, если кто-то перебьет
Л
05:38
Лаборатор 2.4
In reply to this message
Скажи домен , поможем может
М
05:57
Местный
А на маркет плейсе перепродать домен тоже можно будет ?
Л
06:04
Лаборатор 2.4
Я думаю его прям сейчас можно продать)
М
06:12
Местный
In reply to this message
Каким образом ?
Л
06:13
Лаборатор 2.4
Нажимаешь редактировать , вписываешь адрес кошелька кому хочешь передать , используй гаранта )
М
06:22
Местный
In reply to this message
А площадка есть такая ? Скиньте плиз
06:22
Только не скам
Л
06:27
Лаборатор 2.4
In reply to this message
Не знаю )
06:27
Такие советы не могу дать )
s
06:58
sd
In reply to this message
Нет, этот инструмент позволяет просто проассоциировать адрес с именем. Для смартконтракта, например.
06:58
Это != трансфер нфт
Л
07:10
Лаборатор 2.4
In reply to this message
Тоесть пока никак да?
DS
07:13
Daniil Sedov
In reply to this message
А просто передать нфт нельзя разве?
Л
07:18
Лаборатор 2.4
In reply to this message
Пока это не нфт ) я не нашел на кошельке пока
J
07:19
Jardis
Привет ребята, мы заминтили стейблкоин USDL буду рад пообщаться об интеграции в ваши платформы/сервисы https://tonscan.org/jetton/EQC9_XMo-BejWKRXzEwrFfHmTUmRHfJLRUWkmIn27JmOzBZ4

Скоро будет доступна интеграция с фиатным шлюзом и виджеты с API. Сейчас мы подключаем первого партнёра, который будет использовать наш стейбл и обеспечит ликвидность на старте.
07:23
У кого есть потребность в стейбле?
s
07:26
sd
In reply to this message
Есть потребность в надёжном. Стейбл, обеспеченный картинками (как вообще можно обеспечить стейбл картинками) - не внушает доверия.
J
07:27
Jardis
In reply to this message
А кто говорил о картинках? На начальном этапе у нас идёт фондирование в USDC обернутые в NFT
NN
07:28
Nikolay Nick
может кто объяснить как в словаре может быть 256 элементов если ключи 256 бит?
Словарь это ячейка а она содержит до 1023бит. Значит словарь не может содержать больше 3 значений. Я что то тут не въеду
J
07:28
Jardis
Почему когда говорят о технологии NFT сразу представляют картинки?)
s
07:29
sd
Какие тон есть нфт -не-картинки?
J
07:29
Jardis
In reply to this message
Л
07:30
Лаборатор 2.4
In reply to this message
Ton names
s
07:30
sd
Я видел вчера предложение застейкать в вашем сервисе TON whales. Это картинка или нет?
J
07:30
Jardis
In reply to this message
Утилити токен
s
07:30
sd
In reply to this message
Надеюсь, ты имеешь ввиду ton dns, потому что тон неймс нельзя рассматривать всерьёз.
Л
07:31
Лаборатор 2.4
In reply to this message
)))) ну там не было сказано про серьезность
07:31
😁
J
07:32
Jardis
In reply to this message
Мы думали о TON DNS но пока нет вторичного рынка такой вариант нам не подходит
Л
07:32
Лаборатор 2.4
In reply to this message
Вот у нас ломбард , там нет картинок , там облигации ) в нфт
s
07:32
sd
Ладно, это не тема данного чата. Просто не хочется, чтобы первый стейбл на тон - и сразу с крахом депегнулся, потому что обеспечение "утилити токенами" влечёт за собой определённые последствия.
Л
07:34
Лаборатор 2.4
In reply to this message
А как сделать например токен который будет равен рублю ? В двух словах?
J
07:34
Jardis
In reply to this message
На нашей платформе всегда можно будет погасить 1:1 USDL все открыто и прозрачно, сейчас мы ищем аудитора под фонд
07:34
Готовы расшарить ключ от мультисига в TF
07:35
Но они говорили не будут поддерживать стейблы такие как USDT USDC и прочие
Л
07:35
Лаборатор 2.4
Usdl будет равен 1 лире?
s
07:38
sd
In reply to this message
В двух словах не получится, есть много разных типов стейблов и каждый функционирует и обеспечен по-своему. Вот юсдс, например. Но чтобы всерьёз рассчитывать обеспечение в нфтшках, это что-то новое. Обеспечь стейбл утилити токенами битона, а после их ухода в другой бч слови депег, потому что картинки стали никому не нужны 🎉
J
07:39
Jardis
Только алго
Л
07:40
Лаборатор 2.4
In reply to this message
Понял ) тоесть денег нужно очень много )))))
NN
07:41
Nikolay Nick
In reply to this message
up
J
08:31
Jardis
In reply to this message
Обеспечиваешь рублём и гарантированную конвертацию из стейбла в рубль
Л
08:33
Лаборатор 2.4
In reply to this message
Это не возможно , с рублем 😂😂👌
08:33
Гарантированную конвертацию )
F
08:35
F
Чат про разработку а не про экономику
NN
08:38
Nikolay Nick
Вот именно
08:38
Ответьте мне про словари, пожалуйста
08:39
Я уже и tvm.pdf почитал
08:39
Но там сложно понять
СВ
08:42
Сергей В
In reply to this message
Ну наверное словарь создает много ячеек что бы все влезло
08:43
Мне кажется если интересно то нужно поискать десереализацию словарей на js или другом языке
NN
08:46
Nikolay Nick
Да мне интересно и я ищу уже почти сутки.
08:49
In reply to this message
Так словарь это ячейка. Ячейка может содержать 4 ссылки на другие ячейки. Это что, получается ячейка содержит например одну запись ключ: значение и ссылки на другие ячейки с данными? Такая нехилая вложенность?
СВ
08:51
Сергей В
In reply to this message
я точно не знаю, но по другому я не могу представить как это могло работать

Вот вроде на go
https://github.com/xssnick/tonutils-go/blob/master/tvm/cell/dict.go
NN
08:52
Nikolay Nick
Интересно. Посмотрю
08:52
Благодарю
OB
08:54
Oleg Baranov
А откуда взяли ограничение в 256 значений?
NN
08:55
Nikolay Nick
In reply to this message
Задание из контеста
08:56
Там сказано мол хэшмапа содержит не более 256 значений
OB
08:56
Oleg Baranov
In reply to this message
Словарь в твм это по сути бинарное дерево, ветви в виде ссылок содержат другие ветви с ссылками так вглубь
08:56
In reply to this message
Наверное это просто условие задания
08:57
А теничемки там может быть их очень много, только газа читать не хватит по факту)
NN
08:57
Nikolay Nick
Жесть
08:57
Неплохой контест для новичка)
OB
08:58
Oleg Baranov
Ну это если погружаться во внутряки словарей) не думаю что контест это подразумевал)
NN
09:00
Nikolay Nick
Ну смержить две хешмапы каждая из которых до 256 значений и выполнить на 100 баллов это очень глубоко надо погрузиться
09:00
Я вот на 30 из 100 только сделал
СВ
09:17
Сергей В
In reply to this message
Да не нужно даже знать про эти 256 ничего, можно это условие удалить из текста задания :)
В решение точно такоеже как если его писать на любом другом языке
NN
09:18
Nikolay Nick
Да не такое же
09:18
На питоне и на фанке отличается
09:18
Ввиду специфики
СВ
09:20
Сергей В
Значит не правильно решаете :)
DS
09:21
Daniil Sedov
In reply to this message
В cell ведь могут храниться ссылки на другие cell :)
NN
09:29
Nikolay Nick
In reply to this message
Я как раз об этом и спрашивал выше
DS
09:34
Daniil Sedov
In reply to this message
Суть та же, как и на любом другом языке
09:35
In reply to this message
Посмотрите в доках функции для работы с dict, все просто будет.
NN
09:39
Nikolay Nick
In reply to this message
Это я уже давно
DS
09:41
Daniil Sedov
In reply to this message
Ну вот. По сути эта задача также как и на питоне решается
NN
09:41
Nikolay Nick
Только здесь вложенный словарь получать другой командой
DS
09:41
Daniil Sedov
In reply to this message
Ну если конечно .update не рассматривать)
NN
09:41
Nikolay Nick
_ref
DS
09:41
Daniil Sedov
In reply to this message
Вложенный словарь?
NN
09:42
Nikolay Nick
Те ячейки что в ссылках
D
09:43
Daniil
Как можно получить все домены ton dns пользователя по адресу?
DS
09:44
Daniil Sedov
In reply to this message
Вы о чем?
09:44
NN
09:47
Nikolay Nick
Ну ячейка это до 1023бит данных и 4 ссылки на другие ячейки. Получается dict_get достанет и эти ссылки на другие ячейки. А я подумал что ссылки на другие ячейки надо получать с помощью dict_get_ref
09:48
Сложно в этом разобраться за один день и всё не перепутать
СВ
09:49
Сергей В
In reply to this message
Да забей ты на 1023, просто пользуйся данный api оно тебе slice возвращает, ненадо думать вообще про это
DS
09:49
Daniil Sedov
In reply to this message
Ну я когда контест писать начал, почти ничего в func не понимал, по ходу разбирался по документации, довольно просто все на самом деле
NN
09:50
Nikolay Nick
Ну когда разобрался то да)
09:50
Я так Раст учил/учу
09:50
Нихера непонятно, потом бац понял смотришь всё же элементарно было
СВ
09:52
Сергей В
In reply to this message
Нужно понять вот это, это по сути решение 😆
NN
09:52
Nikolay Nick
Я уже примерно понял что дальше делать
09:53
Буду пробовать
09:53
Благодарю всех за помощь 🙏
А(
10:13
Андрей Власов (Andrey Vlasov)
Друзья, кто знает откуда брать информацию по оставшемуся времени аукциона ton dns?
С начала просто, я с момента первой транзакции и деплоя аукциона считал, а когда начинается продление уже бот выдаёт неверные данные. Кто что знает?

Интересует информация из блокчейна, а не из других ботов и сайтов.
a
10:19
assemblerx64
In reply to this message
гет метод 91481
А(
10:19
Андрей Власов (Andrey Vlasov)
Ещё интересует флаг занятости домена. Сейчас я каждую заявку к ton dns на уже занятый домен отслеживаю в действиях создания аукциона и пишу, что адрес аукциона не найден.
Может есть какой-то другой способ? А то средства возвращаются не напрямую отправителю, а через дополнительный адрес, и он ещё и меняется, походу.
10:21
In reply to this message
Это через https как запросить можно?
Время окончания number или extra?
a
10:21
assemblerx64
In reply to this message
10:22
In reply to this message
Время начала в ответе. Время конца сами считаете
А(
10:23
Андрей Власов (Andrey Vlasov)
In reply to this message
Благодарю за ответ.
10:27
龙形的影子
In reply to this message
Чтобы увидеть свои днс на кошельке, нужно совершить какое-нибудь действие с ними. Например, привязать к кошельку или отредактировать резолвер.

https://telegra.ph/Kak-zabrat-TON-domen-s-aukciona-i-privyazat-k-nemu-TON-koshelyok-08-06

Я вижу свои днс в тонкипере и есть кнопка «transfer»
s
10:27
sd
In reply to this message
Кнопка в кипере есть, однако пробовали передавать, не получалось.
10:29
龙形的影子
In reply to this message
Хм, ок, спасибо
А(
11:29
Андрей Власов (Andrey Vlasov)
In reply to this message
Мне подсказали get_auction_info дёрнуть, чтобы получить всю информацию по аукциону. А откуда дёрнуть пока не сказали. Знаете?
a
11:30
assemblerx64
In reply to this message
toncenter. runGetMethod
А(
11:44
Андрей Власов (Andrey Vlasov)
In reply to this message
Максим, что здесь не правильно?
ResponseAuctionInfo = requests.get("https : / / toncenter.com/api/v2/runGetMethod(91481, force=True)?account={}".format(AuctionAdress))
Кроме меня, конечно ))) Пробелы сам сюда добавил сейчас.
N
11:46
NMI
In reply to this message
Посмотри как формируется запрос в swagger toncenter
А(
11:54
Андрей Власов (Andrey Vlasov)
In reply to this message
У меня есть только адрес контракта аукциона. А в описании, к сожалению нет примеров запросов, чтобы их под себя переделать.
11:54
In reply to this message
Подскажи, как правильно написать?
В
13:10
Василий
Есть где-то более подробная дока по TL-B чем та, что на ton.org/docs?
Там нет ни слова про Either | Maybe | Any
Я конечно могу догадываться что хотел сказать автор, но это как-то странно.
13:12
Upd:https://github.com/tonstack/ton-docs/blob/main/TL-B/README.md
Если кому вдруг пригодится
В
13:25
Василий
In reply to this message
Спасибо, увидел. Очень путанно честно говоря.
Если у меня для одного типа определено несколько конструкторов, то мне надо по binary_tag'у понять что вызывается?
SH
13:30
Seitaro Higuchi
In reply to this message
Да:
https://ton.org/docs/#/overviews/TL-B?id=deserialization
>Given the TL-B scheme any object can be serialized to builder and deserialized from slice. In particular, when we deserialize object we need to start with determination of corresponding constructor by tag and then deserialize variables one by one from left to right (recursively jumping to serialization of variable which are TL-B objects themselves).
VD
13:44
Victor Dm.
@xssnik , что за ошибка 2022/08/07 13:39:54 failed to send message: lite server error, code 0: cannot apply external message to current state : External message was not accepted? Хотя сообщения удачно отправилось
T
13:47
Tim
Ошибка в сообщении
13:48
Лс знает что оно не выполнится
VD
14:05
Victor Dm.
14:06
Неужели боди нужно добавить?
T
14:06
Tim
Возможно. Лучше весь код сразу писать а не только интернал
VD
14:07
Victor Dm.
err = job.wallet.provider.Send(worker.ctx, &wallet.Message{
Mode: 128,
InternalMessage: &tlb.InternalMessage{
IHRDisabled: true,
Bounce: false,
DstAddr: addr,
Amount: tlb.FromNanoTONU(0),
},
})
14:07
Пожалуйста
14:10
T
14:11
Tim
128+3 надо
14:11
Возможно тело пустое тоже стоит добавить
14:12
А секно там не надо указывать?
B
14:13
Bulat
Ребят, подскажите пожалуйста с чего начать изучение FunC? Почему-то все гайды просят установить разные зависимости, и при этом ничего не понятно.
Н
14:22
Никита
In reply to this message
что такое seqno ?
T
14:25
Tim
Номер транзакции в кошельке.
Как nonce в эфире
OB
14:37
Oleg Baranov
Не, он автоматом подтягивается и заполнится
В
14:38
Василий
Как использовать parse_addr если он выбрасывает исключения, а исключения не могут быть обработаны на уровне FunC?
OB
14:39
Oleg Baranov
In reply to this message
А какой кейс? Если он не распарсился какое поведение нужно?
В
14:40
Василий
In reply to this message
Ну если он не валидный, то вернуть какой-то целочисленный статус вместо исключения
OB
14:41
Oleg Baranov
In reply to this message
Исключение по сути и есть целочисленный статус)
14:41
При ошибках валидации в контрактах лучше кидать исключения
В
14:42
Василий
In reply to this message
Ясное дело, только прерывает выполнение, а мне этого не надо
Видимо только ручная валидация
OB
14:43
Oleg Baranov
In reply to this message
Если нужно проверить не пустой ли он просто, то можно длину битов посмотреть, или первые 2 бита, но в целом сомнительно мне кажется продолжать выполнение в таком кейсе
14:44
Можно поддерживать нулевой адрес и стандартный, при нулевом одно поведение при стандартном другое, а если это что то битое то уже кидать исключение
В
14:45
Василий
In reply to this message
В реальном мире конечно. Я просто с контестом ковыряюсь и надо вернуть статус. Хотя возможно там нет теста с не валидным адресом вообще, но я подозреваю что есть.
14:46
Мудрю наверное
OB
14:48
Oleg Baranov
In reply to this message
скорее всего да, но если очень хочется - то вот схемы всех типов адресов.
https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb#L100 можно под каждый по своему проверять) но это уже из разряда извращений)
В
14:51
Василий
In reply to this message
Ну вот нам как раз этим и предлагается заниматься 😀
OB
14:52
Oleg Baranov
In reply to this message
ну тогда, try harder 🙂
Н
15:00
Никита
In reply to this message
спасибо🔥
SH
15:36
Seitaro Higuchi
In reply to this message
Там в контесте нужно провалидировать адрес, его придется вручную парсить.
m
16:03
mrboorger
Что такое amount в третьей задаче? Это одно число grams или туда ещё нужно учитывать ExtraCurrencyCollection, fwd_fee и тд?
DS
16:04
Daniil Sedov
In reply to this message
спрашивай это в чате контеста, или вообще через бота
S
16:59
Serg 💤
Всем привет, такой вопрос с каким сервисом работает @wallet при покупке TON за рубли и другую валюту, и есть ли аналоги? чтоб бот мог выдавать форму для ввода данных карты для покупки TON
DS
16:59
Daniil Sedov
In reply to this message
telegram bots payments api
S
17:03
Serg 💤
In reply to this message
и какой из провайдеров будут переводит ton coin на нужный адрес ?
VD
17:07
Victor Dm.
@TrueCarry , не помогла, все равно ошибка, добавил + 3
17:07
In reply to this message
Mode: 128 + 3,
SV
17:10
Sergei Voroshilov
In reply to this message
Вы хотите сами такого бота сделать?
E
17:10
Eugene
Если slice~load_dict() отдает null , то курсор сдвинится всеравно или останется на своем месте?
SV
17:12
Sergei Voroshilov
In reply to this message
Сами провайдеры в telegram bots payments api про TON ничего не знают. Они просто принимают оплату с карт
S
17:13
Serg 💤
я о том же. мне нужен не бот.. а прямая интеграция с каким ни будь сервисом который выдает форму банковской карты на оплату и после оплаты переводит TON на нужный адрес
j
17:15
jessez
In reply to this message
ну найди сервис, который выставляет подобные счета, принимай платежи, фиксируй оплату и отправляй тон на кошелек плательщика. не?
S
17:15
Serg 💤
нет так не пойдет
j
17:16
jessez
почему? можно ведь это автоматизировать. а как пойдет? видишь другие сценарии?
S
17:17
Serg 💤
если в запасе всего 100ТОН а оплата приходит на 1000, нудно время чтоб докупить еще и все перевести
SV
17:20
Sergei Voroshilov
In reply to this message
Такого сервиса скорей всего ещё нет
j
17:21
jessez
In reply to this message
ну так в чем проблема сделать ограничение сделки по уровню резерва?
S
17:22
Serg 💤
по нищебродски выглядеть будет
s
17:25
sd
In reply to this message
ты делаешь биржу? 😁
SV
17:29
Sergei Voroshilov
In reply to this message
Можно привлечь заимствования, чтобы ликвидность поднять
T
17:30
Tim
> Нет денег
> Юзерам не скажем, будет по нищебродски
S
17:30
Serg 💤
можно, но в добавок за каждой формой карты идет налоговая отчетность
17:31
сейчас все сервисы престали с физиками работать
17:31
минимум это оформление самозанятости
S[
18:43
Shtrasen [Отвечаю не сразу]
Всем привет

Подскажите сколько стоит услуги смартконтракщика написать смарт контакт под коллекцию ?
DS
18:44
Daniil Sedov
In reply to this message
Смартконтрактщик 😂
МГ
19:04
Максим Григорьев
пальцем в небо)
J
19:22
Jardis
In reply to this message
Мы скоро интегрируем фиатный шлюз, напиши мне
19:23
Но ru карты не будут работать
19:31
◾️ Anonymous◾️
In reply to this message
какой тогда в этом смысл ? :)
P
19:33
Purple
In reply to this message
а мутить стейбл в тоне и выплачивать зп с ликвидности стейбла это топ идея!
s
19:35
sd
In reply to this message
Это личная переписка, да?
19:36
◾️ Anonymous◾️
In reply to this message
как обычно, не удивлён :)
P
19:38
Purple
это коммерческое предложение, NDA не было :)
19:39
◾️ Anonymous◾️
In reply to this message
тут дело не в NDA друг, а в репутации.
19:39
Ты её с каждым таким сообщением теряешь и в скором времени она будет 0.
P
19:39
Purple
In reply to this message
поплачу как нибудь потом
19:40
◾️ Anonymous◾️
Ладно, не буду оффтопить. Просто видимо ты молодой и многого ещё не понимаешь, а когда поймёшь будет уже поздно.
P
19:40
Purple
смешные офферы с зп в нфт и 50% скидки или с ликвидности стейбла дают возможность только посмеяться
19:41
◾️ Anonymous◾️
In reply to this message
Я проводник, главный не я, к сожалению. Труд программистов никто не ценит :)
F
19:41
F
Так ну все, чат все таки про разработку, а не экономику и личные сообщения
LA
20:40
L A
Всем привет, подскажите по каким причинам tonscan не отображает картинки коллекции? Хотя все отображается в тулсе и на маркетах.
А
21:06
Аᴧᴇᴋᴄᴇй
Ребята , добрый вечер ! Нужна помощь по созданию NFT коллекции на блокчейне TON ( конкретно разработка Смарт контракта )
ω
21:57
ωαδιμ
Приветствую! Можете подсказать есть ли в func логические операторы, если да, то как они выглядят?
IR
22:03
Ivan Romanovich
In reply to this message
https://ton.org/docs/#/func/statements?id=operators Логические операторы представлены как побитовые целочисленные операторы.
СВ
22:07
Сергей В
In reply to this message
if ((x > 0) & (x < 10))

как-то так
ω
22:15
ωαδιμ
И еще вопрос - в каком формате кидать решение contest боту? Кидал боту проект, созданный в toncli, набрал 0, хотя код рабочий
СВ
22:17
Сергей В
In reply to this message
Там же описано как надо отправлять
Сунуть .fc и ,json в zip и кинуть им в бота
ω
22:18
ωαδιμ
In reply to this message
я искал и не нашел(, спасибо!
22:21
In reply to this message
а где эту информацию можно подробнее рассмотреть?
VD
22:22
Victor Dm.
2022/08/07 22:21:10 failed to send message: lite server error, code 0: cannot apply external message to current state : Failed to get account state
exit status 1 Такая, отправляю с помощью transferNoBounce?
SH
22:26
Seitaro Higuchi
In reply to this message
>Failed to get account state
Это значит что аккаунта к которому отправлено экстернал сообщение (вероятно кошелек?) не существует (нет кода и данных)
VD
22:27
Victor Dm.
Он существует, я с него тоны отправляю
ω
22:27
ωαδιμ
In reply to this message
спасибо!
VD
22:28
Victor Dm.
In reply to this message
И как мне исправить, этот аккаунт есть в сети и тоны отправляю с него сегодня
22:31
Другой кошелек, таже проблема
SH
22:32
Seitaro Higuchi
In reply to this message
Вы уверены, что корректно состовляете сообщение? Вдруг вы внешнее сообщение (которое должно идти к вашему кошельку) отправляете к кошельку-destination?
VD
22:34
Victor Dm.
уверен
22:34
А
22:35
Андрей
Значит что то делаете не так 🤷‍♂
SH
22:37
Seitaro Higuchi
In reply to this message
Да, ошибка однозначно говорит о том, что ЛС пытается проверить валидность сообщения и то, что кошелек его принимает и стопается на этапе невозможности достать стейт кошелька. А сеть правильная? может аккаунт есть в тестнете, а сообщение отправляется в мейннет?
OB
22:38
Oleg Baranov
In reply to this message
Может версия не та? Попробуй вывести адрес от воллета и сравнить
VD
22:38
Victor Dm.
4 на 3
OB
22:39
Oleg Baranov
И это у тебя именно с модом 128? Или с любым?
Iz
22:40
Ideš za Kanadu
Привет ребят, не большой вопрос по синтаксису, что означает знак "?" в данном контексте?
SH
22:42
Seitaro Higuchi
In reply to this message
В фанси ? валидный символ в имени функции или переменной. Т.е. можно иметь переменную с именем x?44_a (и даже хуже). Обычно функции и переменные с ? на конце используют для булевых значений.
AP
22:43
Andrey Pfau
In reply to this message
Это не относится к синтаксису, это в названии можно ставить. Обычно этим помечают boolean-функции (-1 или 0) на аозврате
VD
22:43
Victor Dm.
In reply to this message
TransferNoBounce или просто
22:43
та часть вроде нормально отправляет
22:43
Iz
22:43
Ideš za Kanadu
In reply to this message
спасибо
22:44
In reply to this message
спасибо
OB
22:45
Oleg Baranov
In reply to this message
Сделай гет баланс от кошелька и выведи, глянь че там будет
22:50
Может реально нода тестнетовска а кошель в мейне или наоборот
VD
22:55
Victor Dm.
In reply to this message
Нет, но вроде нашел ошибку сейчас фиксить буду, походу адрес и приватный ключ от разных кошельков
SK
23:23
Sergey Khaylov
Всем доброго времени суток.
Подскажите, где можно найти требования для железа под ноду? Упираемся в лимиты )
8 August 2022
Y
00:08
Yehor
Привет, ребят, вопрос по челленджу. Кто 3 задание делал, нужно ли проверять скрытые поля? Например {n:#}, {X:Type} ?
A
01:06
Arthur
Подскажите что делать с такой ошибкой?
N
01:10
N0
In reply to this message
Попробуй выполнить команду которая написана в ошибке
A
01:12
Arthur
In reply to this message
Как то так, одна ошибка исчезла. А ну видимо теперь все в порядке
NN
06:43
Nikolay Nick
In reply to this message
Вообще не выходит. Не понимаю я устройства этого словаря.
Вот получаю я слайс. Проверяю есть ли этот слайс в первом и словаре и добавляю если нет. А как взять ячейку из ячейки чтобы дальше вглубь пойти по словарю?
СВ
06:53
Сергей В
In reply to this message
А как 1й слайс получаешь?
NN
07:01
Nikolay Nick
In reply to this message
(key, slice dic2s, int f) = dict2.udict_get_next?(256, key);
DS
07:02
Daniil Sedov
In reply to this message
Не надо никакие ячейки парсить
07:02
In reply to this message
Вот также и следующий получай
СВ
07:08
Сергей В
In reply to this message
Вызов udict_get_next? еще раз с ключем который вернул прошлый вызов, даст след. елемент.
Так можно по всему словарю пробежаться
NN
07:08
Nikolay Nick
вот мой код
07:08
получаю 30 из 100
07:09
ща
DS
07:11
Daniil Sedov
In reply to this message
Ты так лучше его не кидай
07:11
Я думаю
NN
07:11
Nikolay Nick
    int key = -1;
do {
(key, slice dic2s, int f) = dict2.udict_get_next?(256, key);
(slice value, int success) = dict1.udict_get?(256, key);
if(~ success){
dict1~udict_set(256, key, dic2s);
dict2.udict_delete?(256, key);
}
} until(f)
return (dict1, dict2);
DS
07:11
Daniil Sedov
Типа это ж кто то у кого 0 сможет скопировать)
NN
07:12
Nikolay Nick
да и ладно
07:12
с этим решением в топ 3 не попадёшь)
07:13
я посмотрел третье задание и немного офигел от этой tlb схемы и т.д. даже хз как я там делать буду)
DS
07:13
Daniil Sedov
In reply to this message
Я 3 скипнул и вернулся только когда остальное сделал
07:13
В итоге вот третий день уже с ним мучаюсь
NN
07:14
Nikolay Nick
я вот хотел про хэшмапы пропустить, но грызёт что то внутри
СВ
07:34
Сергей В
In reply to this message
у меня в 3м вышло 400 строк кода, он самый мучительный :)
DS
07:35
Daniil Sedov
In reply to this message
😳
NN
07:35
Nikolay Nick
Матерь божья
DS
07:35
Daniil Sedov
Куда так много
СВ
07:35
Сергей В
In reply to this message
ну может я что-то не так делал :) хз :)
DS
07:36
Daniil Sedov
In reply to this message
Так а ты в итоге 100 получил по нему?
СВ
07:39
Сергей В
In reply to this message
да
DS
07:39
Daniil Sedov
In reply to this message
А было 84 или 89 из ста? Или сразу зашла?
СВ
07:39
Сергей В
In reply to this message
ну чуть чуть дожать осталось
07:40
In reply to this message
и 50 и 69 и 80 было)
NN
07:41
Nikolay Nick
In reply to this message
Этот код я написал дня 2 назад, чуть чуть дожать уже длится два дня)
DS
07:41
Daniil Sedov
In reply to this message
А не знаешь, там init или body надо проверять на валидность? Или шапку мэсседжа достаточно?
СВ
07:41
Сергей В
In reply to this message
надо
DS
07:42
Daniil Sedov
In reply to this message
Окей, спасибо
СВ
07:44
Сергей В
In reply to this message
Ну ты же тесты пишешь? покрой все варианты возможные и дебаж
типа оба пусты, 1й пуст, 2й пуст, мапы не пересекаются, пересекаются
DS
07:44
Daniil Sedov
In reply to this message
Да кстати, когда одна из мап пуста надо проверять
07:45
У меня тоже сначала не зашла, я потом тестов написал и зашла
07:45
Точнее у меня в первый день 100/100 выдало, а на следующий когда они перетестили решения, получилось 0/100 из-за бесконечного цикла)))
07:45
Но потом все равно понадобилось проверку на пустые словари делать
NN
07:46
Nikolay Nick
Да я делал проверку на пустую и что то баллов не добавило, подумал что у них в тестах нет таких
СВ
08:03
Сергей В
In reply to this message
Просто напиши тесты что я перечислил, и разбирайся в чем дело, некоторые 100% не пройдут
NN
08:18
Nikolay Nick
А как в тестах проверить что возвращает тестируемая функция?
В
08:19
Василий
In reply to this message
в стеке у тебя лежит возврат. который tuple
NN
08:21
Nikolay Nick
Тупл, точно
В
08:22
Василий
Как понимать:
if and else branches should both return or both not return
?
У меня в процедуре есть return в конце и в моем понимании пройдя все ветвления он должен сработать
DS
08:23
Daniil Sedov
In reply to this message
Это один из приколов func который мне кажется багом
В
08:23
Василий
In reply to this message
А это где-то описано?
DS
08:26
Daniil Sedov
In reply to this message
я не видел, но мб есть инфа
PS
08:26
Pablo Samius
In reply to this message
return по идее должен быть два раза
В
08:27
Василий
In reply to this message
А как обычно решается? Дробить ветвления на процедуры?
DS
08:27
Daniil Sedov
In reply to this message
я либо весь оставшийся код в else пихаю, либо убираю return из If'а
08:27
но у меня в фанси еще опыта толком нет, мб можно и по нормальному как то делать
В
08:30
Василий
In reply to this message
В смысле два раза? Не более двух? Я вообще не понимаю почему он ожидает return в else блоке
PS
08:32
Pablo Samius
In reply to this message
Нет. Либо 2 либо 0 раз
В
08:35
Василий
Т.е
If(...){ 
if(...){return}
}else{...} return
Нельзя?
08:37
Очень странно
DS
08:44
Daniil Sedov
In reply to this message
Почему
08:45
Можно много ретернов.
08:45
Просто в некоторых случаях компилятор если видит

if () {
return
}
...


Думает что по else нет return и выдает ошибкк
SH
08:46
Seitaro Higuchi
In reply to this message
Обновите фанси из мастера
В
08:46
Василий
In reply to this message
Так я оттуда и компилил его
DS
08:46
Daniil Sedov
In reply to this message
Там это исправлено уже?
SH
08:47
Seitaro Higuchi
In reply to this message
Если делали это раньше чем неделю назад, то обновитесь. Мы прямо перед конкурсом смержили последние апдейты
В
08:49
Василий
In reply to this message
Ок, попробую
SH
08:50
Seitaro Higuchi
In reply to this message
Это не баг, просто правильный выход из всех вложенных условий (когда ещё и функции могут быть инлайнами) - дело непростое. И в предыдущих версиях фанси это оставляли на совесть разработчика.
DS
08:50
Daniil Sedov
👌
В
09:03
Василий
In reply to this message
Понятно, что это все не просто, но если это defined behaviour, то где оно defined?
Z
09:15
Zainabella
Hello
В
09:45
Василий
In reply to this message
Помогло, спасибо!
09:53
In reply to this message
А вот fift я походу обновил зря.
Потому что полезло:```Error interpreting file `/tmp/tmp6bgcphy3.fif`: contract_tests.fif:11: PROCINLINE:<{:-?
```

```
NN
10:12
Nikolay Nick
скорее всего не обновились. у меня такая же ошибка была, я с гита либы fift качал и зменял вручную. с toncli у меня почему то старые скачиваются
В
10:14
Василий
In reply to this message
Да, я только бинарник обновил.
Наверное проще будет код без return'ов переписать
10:14
И наверное правильнее
NN
10:14
Nikolay Nick
да скачай с гита, да замени дело на пару минут
H
10:17
Hartmann D.
In reply to this message
Спасибо
NN
10:25
Nikolay Nick
вопрос по тестам. вот я сделал тест, два метода, первый отправляет данные второй я так понял возвращает ответ.
Если с кодом возврата всё понятно и оно работает то как посмотреть что там в стеке? пробовал dump_stack(), он мне возвращает #DEBUG#: stack(0 values) :
SH
10:30
Seitaro Higuchi
возможно переменная которую вы хотите посмотреть дальше не используется и к моменту дебага компилятор ее уже дропнул со стека. Чтобы это предотвратит можно сделать после debug'а ~impure_touch к переменной. Эта функция говорит компилятору чтобы переменную до этого момента не выбрасывали.
СВ
10:34
Сергей В
In reply to this message
Примерно вот так
var (_, stack) = invoke_method(gcd, [3 ,9]);
[int result] = stack;
throw_if(101, result != 3);

тут gcd возвращает int
АГ
10:45
Андрей Гулицкий
Зачем в TIP-66 с контрольной суммой дополнительно проделываются побитовые операции?
SH
10:47
Seitaro Higuchi
In reply to this message
Есть https://ton.org/docs/#/howto/smart-contract-guidelines согласно которым первый бит op'а указывает на то запрос ли это или response на запрос. В реальной жизни граница часто несколько размыта, тем не менее там где это очевидно - следуем гайдлайнам.
АГ
10:47
Андрей Гулицкий
In reply to this message
Спасибо
NN
10:48
Nikolay Nick
In reply to this message
Спасибо
Z
11:11
Zainabella
Hello
NN
11:13
Nikolay Nick
Так ну дамп стек выводит мне тупл с хешами ячеек.а как то посмотреть содержимое ячеек реально? например увидеть словарь в читаемом виде? или десь это невозможно?
DS
11:14
Daniil Sedov
In reply to this message
это не хеши ячеек, а сами ячейки
NN
11:14
Nikolay Nick
и даже не хеш содержимого ячеек?
DS
11:15
Daniil Sedov
In reply to this message
это само содержимое
NN
11:17
Nikolay Nick
точно?
#DEBUG#: stack(1 values) : [C{E8C8142B5796D77E1068822C1D081E347D1B1C525B26062B3BBD4A535C18E852} C{FF5D935C8F3C6D329588F5FA8637FEA84798C9EFB91DBD5E17C4D1FF1C8B776F}] не особо это похоже на то что я туда кладу
DS
11:19
Daniil Sedov
In reply to this message
а что ты туда кладешь?)
AT
11:20
Andrey Tvorozhkov
In reply to this message
Там есть 2 типа, (1) C - бесполезная хрень, оно хранится внутри плюсов и из этого никак не получить данные. В лайтклиенте можно что-то типа savecell вызывать, тогда будет полезнее

(2) Cs (cell slice) - это уже полезнее. В вайтпейпере есть сериализация ячеек (не бок) вот это оно
DS
11:20
Daniil Sedov
а
11:20
я думал C тоже выводит содержимое
AT
11:20
Andrey Tvorozhkov
In reply to this message
Неа, там просто хеш
DS
11:20
Daniil Sedov
ну по идее если от C сделать .begin_parse() это будет CS?
AT
11:20
Andrey Tvorozhkov
In reply to this message
Да
DS
11:21
Daniil Sedov
In reply to this message
ну вот @thainik
NN
11:24
Nikolay Nick
а как распаковать тупл? tuple.unpair() у меня ошибку выдаёт
11:25
error: cannot apply function unpair : Forall (A B) [A, B] -> (A, B) to arguments of type tuple: cannot unify type tuple with [??78, ??79]
(cell a, cell b) = stack.unpair();
SH
11:33
Seitaro Higuchi
In reply to this message
funC строго типизирован: в этом смысле на уровне языка есть непрозрачный
tuple который может содержать 2 целла или что-то еще, а есть [cell, cell] тот же кортеж но содержать может только 2 целла(хотя на уровне твм это одно и то же). unpair - функция применимая только ко второму. Компилятор и ругается, что не может применить функцию для [A,B] к tuple.
Выходов несколько, можно сделать пустую asm функцию которая кастует tuple к [A,B] (по сути она ничего делать не будет, только говорить компилятору что тип того что лежит на стеке вот такой). можно достать элементы из тупла по одному, можно написать asm который unpair'ит туплы.
NN
11:34
Nikolay Nick
япона...
11:35
вот по одному tuple.first , second вроде достаётся без ошибок.
И снова вопрос а моно как то в тестах вывести содержимое переменной помимо стека(dump_stack()) ? ретурн ничего не возвращает
DS
11:37
Daniil Sedov
как правильно проверить, является ли результат load_msg_addr() addr_none ?
делаю if (addr.slice_bits() == 2), но мне кажется что можно по другому
SH
11:40
Seitaro Higuchi
In reply to this message
вполне приемлемый способ. Других конструкторов с длиной два у MsgAddress нет.
DS
11:40
Daniil Sedov
In reply to this message
👌
AT
11:42
Andrey Tvorozhkov
In reply to this message
~dump, можно почитать в TVM вайтпейпере про debug tvm op
Af
12:06
Alex from Mars
Всем привет!

Вопрос по jetton'ам.
Вот что написано тут

decimals - Optional. If not specified, 9 is used by default. UTF8 encoded string with number from 0 to 255. The number of decimals the token uses - e.g. 8, means to divide the token amount by 100000000 to get its user representation, while 0 means that tokens are indivisible: user representation of token number should correspond to token amount in wallet-contract storage.
In case you specify decimals, it is highly recommended that you specify this parameter on-chain and that the smart contract code ensures that this parameter is immutable.

1. У меня один жеттон с эмиссией 50, хочу чтобы переводили его только целое число монет, т.е. 1,2,3 и т.д.
Какое число decimals я должен указать?

2. Другой жеттон с эмиссией 5 млрд., у него хотел бы что-бы можно было переводить с сотыми, т.е. 0.17, 14.55, 22.12 и т.д.
Какое число decimals я должен указать?

Заранее благодарю.

P.S. изначально думал, что указав 0 - можно будет переводить целое число, указав 2 - сотые.
M
12:23
Maxxi
toncli выдает
error: undefined function `unsafe_tuple`, defining a global function of unknown type
чего подкрутить?
M
12:24
Maxxi
In reply to this message
это я видел, а как его подключить?
В
12:25
Василий
In reply to this message
12:27
In reply to this message
Или можешь его определение вставить в файл.
Forall X -> tuple unsafe_tuple(X x) asm "NOP";
AP
12:28
Andrew Python
In reply to this message
в project.yaml добавить перед файлом с задачей
В
12:37
Василий
In reply to this message
А в чем вообще смысл unsafe_tuple, если там NOP?
Это тайпкаст какой-то?
AP
12:39
Andrew Python
In reply to this message
🤷‍♂️
СВ
12:40
Сергей В
In reply to this message
Я копипасти его в файл с задачей, а потом удалял копипасту когда боту кидал 😁
В
12:40
Василий
In reply to this message
Изящно
AT
12:45
Andrey Tvorozhkov
In reply to this message
В
12:46
Василий
In reply to this message
Спасибо!
A
12:56
Alexander
Какие на текущий момент самые грамотно написанные open source проекты на func, с которых можно поучиться best practices middle/advanced уровня? (К примеру, bridge, elector)

Спасибо.
SH
13:04
Seitaro Higuchi
In reply to this message
Вы все верно изначально думали (про 0 и 2), что посеяло сомнения?
Af
13:06
Alex from Mars
In reply to this message
В Тонкипер неправильно отображаются токены с такими настройками...
И они уверяют что ошибка у нас...
https://t.me/tonkeeper_discuss_ru/51620
SH
13:08
Seitaro Higuchi
In reply to this message
Вроде как пишут что как раз много кто просто захардкодил decimals=9 и неверно отображают, а у вас проблем нет.
Af
13:11
Alex from Mars
In reply to this message
К сожалению есть.
Это 1 Pio должен быть.
Везде отображается верно, кроме тонкипера.
Чтобы это исправить они сказали сделать decimals=9
СВ
13:14
Сергей В
А можно поднять свой "тестнет" ? Видел MyLocalTon но он в headless окружении не работает
E
13:15
Eugene
Подскажите пожалуйста можно ли использовать рекурсию в функциях func?
СВ
13:16
Сергей В
In reply to this message
Да, можно
SH
13:16
Seitaro Higuchi
In reply to this message
E
13:28
Eugene
Как я понимаю пустой tuple занимает одно место в стеке. Если встретился этот пустой tuple, как его сериализовать?
AP
13:32
Andrew Python
In reply to this message
Значит тонкипер неправильно поддерживает стандарт жетонов. Надо просто ждать пока они одумаются пофиксят
DS
13:35
Dmitry Shanin
In reply to this message
Это выглядит странно. Если у тонкипера decimals = 9 захардкожено, а у вас 0, то ваш 1 токен должен в их интерфейсе отображаться, как 0.000000001. Или я чего-то не понимаю..
SH
13:36
Seitaro Higuchi
In reply to this message
А можно адрес этого кошелька?
Af
13:53
Alex from Mars
In reply to this message
EQD-yMB2g-aFC8UNleDxYTgB_Ghz-Pqd_GMtQMNJ2ptAoOg1
13:55
In reply to this message
Они писали, что у всех захардкожено, а у них правильно, согласно описанию этого параметра.
@subden
ID
13:59
Igor Diakonov
In reply to this message
decimals - Optional. If not specified, 9 is used by default. UTF8 encoded string with number from 0 to 255. The number of decimals the token uses - e.g. 8, means to divide the token amount by 1 0000 0000 to get its user representation, while 0 means that tokens are indivisible
13:59
У них decimals = 2 прописано
14:00
Непонятно что должен тонкипер фиксить
AP
14:07
Andrew Python
In reply to this message
"...number from 0 to 255", 2 можно)
Дефолтное значение должно использоваться, если в данных жетона нет поля decimals
ID
14:17
Igor Diakonov
In reply to this message
Так оно есть и оно 0 для "pio".
Тонкипер эти значения и использует. По этому 1000000000 PIO и остаётся 1000000000 PIO а не становится 1 PIO.

Мож я что-то не так понимаю? )
14:18
TON Scan: TON address and transaction explorer
https://ton.cx/address/EQD-yMB2g-aFC8UNleDxYTgB_Ghz-Pqd_GMtQMNJ2ptAoOg1
AP
14:24
Andrew Python
In reply to this message
В общем с decimals всё правильно, а вот эмиссия у Mars не 5 и не 50 лярдов...
14:24
когда люди начнут тестнетом пользоваться....
DS
14:38
Daniil Sedov
In reply to this message
Бывает лень
В
14:49
Василий
Допустим есть функция ( slice, int, int ) validate ( slice ds ) inline { ... }
Вызываю ( int err, int delta ) = ds~validate( data )
Ругается: error: cannot implicitly assign an expression of type (slice, int, int) to a variable or pattern of type (slice, ??50)Что я делаю не так?
SH
14:50
Seitaro Higuchi
In reply to this message
( slice, (int, int) ) ~validate ( slice ds ) inline { ... }
В
14:52
Василий
In reply to this message
Пардон, там:
( slice, int, int )

Без вторых ()
SH
14:54
Seitaro Higuchi
In reply to this message
попробуйте вот так (со скобками и ~ перед validate)
В
14:55
Василий
In reply to this message
Но тогда мне возвращать надо тоже ( slice ( int, int ) )?
SH
14:56
Seitaro Higuchi
In reply to this message
Нет, тогда конструкция
( int err, int delta ) = ds~validate( data ) должна работать норм
В
14:58
Василий
In reply to this message
Собралось, но после ```return ( slice ds, ( int err, int len ) )
А почему так правильно?
Т.е я внёс ваши правки и оно ругалось на return. Затем поправил return
SH
15:01
Seitaro Higuchi
In reply to this message
А, я неверно понял предыдущий вопрос. Да, ретурнить нужно ( slice ds, ( int err, int len ) )
конструкция a= b~f()
это синтаксический сахар для
(b, a) = f(b)
Но если a, сама по себе не одна переменная, а несколько - то нужно оборачивать в скобки.
Т.к. (c,d) = b~f() под капотом (b,(c,d)) = f(b);
В
15:03
Василий
In reply to this message
Спасибо большое!
15:08
In reply to this message
А на стеке по возврату
c
и
d
как обычно лежать будут?
SH
15:09
Seitaro Higuchi
In reply to this message
Да, конструкция (a,b,c) это нотация для компилятора, на стеке оно лежит тремся отдельными элементами. А вот [a,b,c] это кортеж из трех элементов и на стеке будет лежать один tuple
В
15:24
Василий
В каком случае
load_uint
даёт исключение 5?
integer out of expected range
SH
15:26
Seitaro Higuchi
In reply to this message
Длина больше 256?
В
15:27
Василий
Но я вызываю
load_uint( 32)
и данные в слайсе есть. Мб бит знака где-то вылез? Хотя странно
A
15:35
Artyom
всем привет, подскажите, пожалуйста, а почему скан не находит кошелек по домену, хотя адрес кошелька домену присвоил? Пишет, что Domain misconfigured or does not exist
В
15:35
Василий
Таки косяк со слайсом был.
Н
15:36
Никита
Как в tonweb взаимодействовать с уже задплоеным нфт контрактом?
A
15:37
Artyom
In reply to this message
все, само заработало как-то))
Af
15:39
Alex from Mars
In reply to this message
15:41
In reply to this message
Да, это я поправил после ваших ответов, до этого выставил 9, как просили ребята из Tonkeeper.
Но при такой ситуации когда decimals=9, я не знаю как сделать чтобы один жеттон переводился только целым числом, а другой с сотыми.
LC
15:54
Lev Chelyadinov
Всем привет. Пытаюсь задеплоить Payment Channel с кошелька v3R2 (использую последнюю версию tonweb JS SDK). Код беру из примера использования SDK, только свой кошелек и API-токен подставляю.

Почему-то операция деплоя падает с кодом 9 (https://testnet.tonscan.org/address/EQA2ePulLIFnRRG09cQDuFa9XNpzajohRZMdt9DPMaqWCmwX).

Код вот такой (коротенечько):
const channelInitState = {
balanceA: toNano('0'),
balanceB: toNano('1'),
seqnoA: new BN(0),
seqnoB: new BN(0)
};

const channelConfig = {
channelId: new BN(256),
...
};

const channelB = tonweb.payments.createChannel({
...channelConfig,
isA: false,
myKeyPair: keyPairB,
hisPublicKey: keyPairA.publicKey
});

await channelB
.fromWallet({ ... })
.deploy()
.send(toNano("0.05"));


Почему такая ошибка может возникать?
T
15:55
Tim
In reply to this message
Нельзя сделать половину целым половину сотым. Децималы единые для всего токена
Af
15:56
Alex from Mars
In reply to this message
Я про разные токены говорил, а не про половину одного токена.
T
15:57
Tim
Тогда никакой проблемы нет. Ставьте сколько нужно децималов и ждите пока тонкипер пофиксит
Af
16:04
Alex from Mars
In reply to this message
Да вот жду уже месяц, тут ребят из моего чата попросил осветить проблему.

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

Ладно, жду тогда у моря погоды.. :)
E
16:10
Eugene
Подскажите, где можно трейсбэк тестов в тонкли посмотреть?
AT
16:24
Andrey Tvorozhkov
In reply to this message
-v 4
E
16:26
Eugene
In reply to this message
Спасибо
M
16:28
Mr. B
In reply to this message
😂
7C
16:39
7 Arseny Chernov
Подскажите пожалуйста, какие правила для сериализации ссылок на целл? Просто 257 бит?
ω
17:33
ωαδιμ
Подскажите пожалуйста, какие есть способы чтения из tuple? Единственное что я нашел, это методы first, ..., fourth и list_next (который вроде работает не для всех кортежей, либо я что-то неправльно понял). Буду благодарен за ссылки на источники!
AP
17:35
Andrew Python
In reply to this message
forall X -> X get_tuple_element(tuple t, int pos) asm "INDEXVARQ";
а вообще tvm.pdf вам в помощь
ω
17:36
ωαδιμ
In reply to this message
спасибо!
В
17:39
Василий
In reply to this message
Основной это tupple.at( int idx ) как я понимаю
ω
17:41
ωαδιμ
In reply to this message
спасибо
AP
17:41
Andrew Python
In reply to this message
в Func?
В
17:42
Василий
In reply to this message
Да, он в stdlib
AP
17:43
Andrew Python
In reply to this message
можно линк пожалуйста?
В
17:49
Василий
In reply to this message
https://ton.org/docs/#/func/builtins
Вот.
В самом конце:```at gets the value of component of a tuple on specified position```
17:49
Это даже не stdlib, а встроенный примитив funC
AP
17:52
Andrew Python
In reply to this message
лять) а я себе asm функцию сделал
В
17:54
Василий
In reply to this message
Ну дело не пыльное, но было бы странно иметь втроенный тип кортежей и не иметь встроенного итератора
17:56
Хотя странностей хватает)
17:59
И зачем его туда закопали тоже не ясно. По идее есть раздел tuple primitives в доке по stdlib и там ему и место. С другой стороны это не stdlib...Мир не прост совсем не прост
DS
18:10
Daniil Sedov
In reply to this message
Что ж я наделал в 4 задаче...
AP
18:10
Andrew Python
In reply to this message
ну правда. Я человек простой. Не нашёл в stdlib - написал сам

upd: и в stdlib есть закомментированные функции, которые реализованы на уровне компилятора. tuple.at можно было также сделать
DS
18:10
Daniil Sedov
Перепишу
M
18:41
Mr? BunnyFight
Ребят, в чем может быть проблема? До этого все более менее адекватно работало
18:41
Шутки про win не принимаются
СВ
18:43
Сергей В
In reply to this message
Надо указать путь до func.exe
DS
18:43
Daniil Sedov
In reply to this message
Тебя просит скрипт ввести путь до func.exe
18:43
Потом попросит до fift.exe
M
18:44
Mr? BunnyFight
А где он лежать может?)
18:44
В самой бинарке?
DS
18:44
Daniil Sedov
In reply to this message
Там где тон устанавливал
M
18:44
Mr? BunnyFight
кк
18:44
In reply to this message
Спасибо
M
19:05
Mr? BunnyFight
Такой вопрос, что это за ху.... в плане все чисто, все прописано адекватно как по мне, что не так?)))
19:06
Какая к черту точка с запятой
19:09
Трабл был решен перезапуском VS code
A
19:48
Arthur
In reply to this message
По этому гайду устанавливал? У меня линукс, единственная проблема которая была я забыл эти бинарники сделать исполняемыми но как на винде все не знаю
M
20:02
Mr? BunnyFight
In reply to this message
Да все уже, разобрался, у меня бинарка хорошо работает, просто иногда как затупок сижу после долговременного просиживания напротив мониторов
20:02
Такие иногда вопросы задаю в этом чате, что умереть можно
В
20:09
Василий
Запускаю тесты и получаю stack underflow.
В какую сторону смотреть?
T
20:09
Tim
в сторону неправильно созданных ячеек
E
20:15
Eugene
execute DUP
[ BC{0000} () () ]
execute TLEN
handling exception code 7: not a tuple of valid size
default exception handler, terminating vm with exit code 7


Могли бы подсказать почему TLEN не отрабатывает на тупле любой размерности ?
В
20:21
Василий
In reply to this message
А что может быть не так?
Я действительно в тесте собираю целл и если я эту часть закомментирую то вс ё ок.
Но вроде всё стандертно uint'ы в основном
T
20:21
Tim
любой кривой бит такую ошибку выдаст (вроде)
В
20:22
Василий
In reply to this message
А есть какие-то требования по выравниванию?
20:27
In reply to this message
Определил что оно падает когда вставляются слайсы, но оба слайса из одних интов
J
20:29
Jardis
Кто-нибудь работает над оракулами? Chainlink будет?
В
20:32
Василий
In reply to this message
Короче в слайсе было перепутано число и битность в store_uint
Н
20:33
Никита
Всем добрый вечер, при попытке деплоя выдаёт подобную ошибку: не находит некоторые функции и опы

можете помочь, пожалуйста, в чём может быть ошибка ?
*снизу выдаёт ошибки с путями, уходя далеко в файлы питона
В
20:33
Василий
In reply to this message
Спасибо!
A
20:56
ARS
У ячеек же есть ограничение по вложенности?
T
20:56
Tim
1023 вроде
AP
20:57
Andrew Python
или 255
T
20:57
Tim
In reply to this message
как повезет сегодня?)
AP
20:57
Andrew Python
In reply to this message
A
20:58
ARS
Спасибо
AT
21:13
Andrey Tvorozhkov
In reply to this message
Func не компилируется, нужно добавить файлы зависимостей либо в project.yaml либо в #include если это правильная версия func

(Питон тут не при чем)
J
21:15
Jardis
Чей проект? https://mytonwallet.io/
MU
21:17
Mikhail Ukrasin
Вирджинские острова)
А
21:19
Андрей
In reply to this message
Где нашли там и спрашивайте)
V
21:28
Victor
Есть чат для разработчиков у китов? С ton-x не могу разобраться
IG
22:49
Ilia Gaevskii
Привет. А Я правильно понимаю что этот контракт можно отследить ток по хэшу кода контракта, и у него нет уникальных методов?
AT
22:55
Andrey Tvorozhkov
In reply to this message
Там гетметоды в папке стракт
IG
22:58
Ilia Gaevskii
In reply to this message
сяб
23:03
А хеш кода у нфт одинаковый что у гемсов что у Дизинтара и других МП?
AT
23:04
Andrey Tvorozhkov
In reply to this message
Разный
J
23:41
Jenya
Почему он Inactive? Как его активировать? Я транзакцию провел и зашел на него но он неактивный
G?
23:44
GoJohnny 🔒💎
In reply to this message
Нужна исходящая транзакция
J
23:45
Jenya
In reply to this message
а понял
9 August 2022
CZ
00:13
Chak Zefir
In reply to this message
А что такое ton-x?
V
00:14
Victor
In reply to this message
Вроде как библиотека для коннекта тонхаба к приложению. Подобно ton-connect у тонкипера.
ВК
03:37
Вика Купила TON в 2021
Ага
T
04:55
Tony
К домену на ton dns уже можно прикрутить cid из ipfs или нужно ждать TON Sites ?
J
05:11
Jack Rotgar
In reply to this message
Ждать
S
05:12
SVIATOSLAV
In reply to this message
Будет TON Storage
T
05:14
Tony
In reply to this message
вообще написано что тут можно настроить dns.ton.org но нужно расширение TON Chrome но его нет, а есть только TON Wallet

попробую через него
05:27
а что такое resolver? гугл не находит
05:30
In reply to this message
нашел ответ в чате выше, но все равно не понял для чего это
SV
06:25
Sergei Voroshilov
In reply to this message
Это одно и то же)
T
06:34
Tony
In reply to this message
да, уже понял, так как настройки открылись)
J
08:08
Jardis
Привет всем, есть желающие сделать NFT Bank? У нас есть такая потребность, но мы не можем в нем участвовать напрямую из-за конфликта интересов. С юридической обвязкой мы поможем.

Надо чтобы он принимал недвижимость, автомобили, домены, на баланс, в общем все что имеет ценность и выдавал NFT сертификаты на получение с баланса предъявителю.
OB
12:06
Oleg Baranov
Написал документацию по протоколу взаимодействия с лайт-сервером, с примерами, она затрагивает ADNL, TL, TL-B, BoC, Cells. Так же, детально разобран вызов методов контракта и получение блока мастерчеина.

Используя ее вы сможете написать с нуля получение и обмен данными напрямую с лайтсервером на любом языке. Я писал ее используя свой опыт разработки tonutils-go.

📄 Документация:
https://github.com/xssnick/ton-deep-doc

Если чего-то не хватает, или вы хотите чтобы я описал какой то еще процесс - закидывайте issue на гитхабе, с темой и что конкретно интересует. 😊
В
12:25
Василий
Есть способ проверить cell ref не используя load_ref?
AK
12:25
Andrey Kravchenko
In reply to this message
У меня сейчас 91, и фиг поймешь что еще не учтено... У кого еще было 91, поделитесь тестом, который помог разобраться 😊
12:26
In reply to this message
Его наличие? Через slice_refs проверяю, а потом уже load_ref делаю.
В
12:26
Василий
In reply to this message
Спасибо!
DS
12:33
Daniil Sedov
In reply to this message
вы init и body проверяете?
В
12:33
Василий
In reply to this message
У меня сейчас 60 и портянка на почти 500 строк уже со всякими проверками.
Либо я не правильно понимаю смысл Any и дико всё усложняю, либо там есть не пустые Hashmap'ы или ещё что-то
AK
12:34
Andrey Kravchenko
In reply to this message
Конечно, body только на флаг either.
DS
12:34
Daniil Sedov
In reply to this message
тип X в Message определяет тип body, так как в таске рассматривается MessageAny, мы не знаем тип body
В
12:35
Василий
In reply to this message
Ну значит я правильно понимаю
DS
12:35
Daniil Sedov
In reply to this message
ну вот
12:35
еще можно чтобы проще было, TRY CATCH юзать
В
12:36
Василий
In reply to this message
Воу! Как это так? Разве есть обработка исключений?
DS
12:36
Daniil Sedov
In reply to this message
пока на уровне fift только. но думаю в скором времени и в func добавят
12:36
ассемблерные вставки юзать никто не запрещал
В
12:37
Василий
Так так можно на стандартных функциях написать всё и чисто эксшепшены ловить
DS
12:38
Daniil Sedov
In reply to this message
ну да. просто сделать функцию которая парсит корректное сообщение, а если на любом этапе экзепшн, то месседж некорректный
В
12:40
Василий
In reply to this message
Мда....я что-то решил что надо чисто средствами языка решать всё
DS
12:40
Daniil Sedov
In reply to this message
ну так это тоже средства языка :)
В
12:40
Василий
In reply to this message
Ну это как посмотреть
E
13:24
Eugene
В каком случае в адресах используется Anycast?
DS
13:26
Daniil Sedov
In reply to this message
Если он там есть
13:26
Или в чем вопрос
В
13:26
Василий
In reply to this message
В смысле на практике или с точки зрения структуры?
AC
13:26
AlexNet Crypto
Есть парсер, что бы результаты команд lite-client переводил в json? Как понял должен быть по tlb схеме
AP
13:32
Andrey Pfau
In reply to this message
есть реализации клиентов на других языках
AC
13:34
AlexNet Crypto
То что нашел это обертки на tonlib, но там данные не целиком
E
13:36
Eugene
addr_std$10 anycast:(Maybe Anycast) workchain_id:int8 address:bits256  = MsgAddressInt;


В этом случае как используется anycast?
F
13:40
F
In reply to this message
Самый лучший способ - не использовать lite-client и не парсить его вывод)
Лучше всего использовать библиотеки, которые уже отдают ответ в json
AC
13:43
AlexNet Crypto
In reply to this message
Отличное решение! :) Сейчас открыл tonlib там есть tonlibjson
Буду смотреть в этом направлении
Если можно накидайте ссылки, если есть что то другое
T
13:47
Tim
In reply to this message
Язык уточняй
E
13:50
Eugene
In reply to this message
??
M
15:05
Mark
In reply to this message
Вау, какие подробности
То есть {X:Type} вводится ради
body:(Either X ^X) 
?
DS
15:07
Daniil Sedov
In reply to this message
Да. X:Type значит что у нас есть тип X, на который мы отошлемся
M
15:10
Mark
Ага! То есть в месседже, который начинается с бита(тэга), потом инфо, инит (всё как в тизере на сайте), бади на самом деле состоит из типа X, и это всё вместе определяет Message типа X или ^X, который далее допереопределяется в Message Any, так?
DS
15:12
Daniil Sedov
In reply to this message
X и ^X это один тип, только в первом случае он будет записан в этом же cell, а во втором он в отдельном ref записан
15:12
In reply to this message
Ну и у мэсседжа тэг пустой
M
15:16
Mark
То есть для десериализации MessageAny мы пропускаем пустой тэг и сразу начинаем сканировать Message X? И уже в бади может быть что угодно, X или ссылка на Х и его мы прочитаем просто как slice?
MessageAny некий сахар для описания Message X, без указания Х
Типа
 _ {X: Type} (Message X) = MessageAny;
DS
15:18
Daniil Sedov
In reply to this message
message$_ {X:Type} info:CommonMsgInfo
init:(Maybe (Either StateInit ^StateInit))
body:(Either X ^X) = Message X;

- сначала у нас идет пустой тег у конструктора мэсседжа, переходим к другим значениям
- читаем info с типом CommonMsgInfo
- читаем init с типом Maybe (Either StateInit ^StateInit)
- читаем body с типом Either X ^X
15:19
"MessageAny некий сахар для описания Message X, без указания Х"
Ну не знаю можно ли это так называть.
MessageAny это буквально тип, который определен как Message с любым X
M
15:20
Mark
In reply to this message
ага, ага, я понял правильно
наконец-то
DS
15:20
Daniil Sedov
Either X ^X

Означает, что нужно прочитать 1 бит. Если бит равен 0, то сразу после него записан X.
Если бит равен 1, то X записан в отдельной ячейке, на которую в нашей ячейке есть ref
M
15:21
Mark
По сути задание сводится к варианту десерализации + обработка ошибок. В доках есть уже пример для Relaxed, а тут надо написать нерелаксд
DS
15:21
Daniil Sedov
Но в случае мэсседжа, мы не знаем тип X, поэтому достаточно просто проверить корректность этого бита и существования ссылки на ячейку, если бит 1
M
15:21
Mark
In reply to this message
ооо!!! Понял, вот что в доке имелось ввиду!
DS
15:22
Daniil Sedov
Maybe X
Означает, что нам нужно прочитать 1 бит, если там 0, то X не записан, идём дальше. Если бит 1, то X записан сразу после него
M
15:22
Mark
то есть ^ это то самое погружение в меркл (или не меркл) три, которых вроде 4 уровня максимум (в каком-то другом задании)
15:23
блин почти сложился паззл, похоже, пойду писать код наконец) Спасибо
DS
15:23
Daniil Sedov
In reply to this message
4 уровень это в 4 таске про вложенность кортежей, насколько я помню.

^X значит мы тип X в ref записываем, а не прямиком в данные текущей ячейки. Ну например если там слишком много битов и не влезет
M
15:23
Mark
Данил, вы бы могли собрать комментарии и наполнить документацию)
Я по себе знаю, как лучше складывается рассказ, когда есть слушатель, а не белый лист бумаги
DS
15:23
Daniil Sedov
А ячейки могут ссылаться на глубину 1024
M
15:24
Mark
агага, красиво придумано)
nn
15:49
no name
всем привет, подскажите пожалуйста, возможно ли через toncli get <method> ... передать cell? и, если да, то как. метод в качестве аргумента принимает cell
M
15:54
Mark
Мы можем просто использовать функцию из стд parse_addr для того чтобы читать обобщенный MsgAddress и не надо парсить отдельно MsgAddressInt MsgAddressExt?
VK
16:04
Vlad Kurenkov
привет! а есть где-то туториалы, где подробно рассказано как создавать кошельки?

- мб есть какая-то обёртка в питоне?
- сколько времени занимает создать кошелёк и задеплоить его в mainnet?
AC
16:19
AlexNet Crypto
В lite-client при вызове lasttransdump, есть данные init:(just, можно как то через pytonlib вытащить эти данные?
16:21
In reply to this message
Выше выкладывали код на go, для быстрого перебора адресов и ниже вроде обсуждали это
https://t.me/tondev/83516
ω
16:25
ωαδιμ
In reply to this message
можно ссылку на данную инфу?
AC
16:27
AlexNet Crypto
In reply to this message
В ответе от pytonlib есть поле init_state, но оно всегда пустое
DS
16:37
Daniil Sedov
In reply to this message
l
16:38
l2k1
слушайте, а вчерашние коммиты которые сеть подразламывали не ревертили? если сейчас будут разливаться новые ноды, это может плохо кончиться... может ревертнуть?
DS
16:38
Daniil Sedov
In reply to this message
да. но учти, что msgaddressint не может быть addr_none, а msgaddressext может
16:39
load_msg_addr юзай кстати
M
16:39
Mark
ага, то есть проверить первый бит надо? типа прелоад? Чтобы он остался потом для использования функции?
DS
16:39
Daniil Sedov
In reply to this message
не совсем понял
ω
16:40
ωαδιμ
In reply to this message
спасибо
DS
16:40
Daniil Sedov
просто если тебе нужно по схеме сейчас получить msgaddressint, ты делаешь load_msg_addr, а потом проверяешь, если это addr_none то схеме не соответствует
16:40
а если по схеме msgaddressext, то addr_none может быть и ничего проверять не нужно
AK
16:45
Andrey Kravchenko
Может кто-нибудь свой тест для 3-го задания конкурса скинуть в лс? Все перепроверил несколько раз, вроде бы все нюансы учел, а все равно 91 балл 😅
DS
16:46
Daniil Sedov
In reply to this message
на неё тесты трудно писать. дебаж наугад
16:46
пройдись еще раз по коду, чекни все ли правильно. чекни как ты адреса читаешь, чекни проверки для init и body
M
16:47
Mark
в случае addr_none это префикс 00,
parse_addr возвращает tuple, и там можно проверить первый бит
а load_msg_addr возвращает два слайса, как там проверить?
AK
16:48
Andrey Kravchenko
In reply to this message
Да это все понятно, ладно, может просто стоит сделать перерыв и вернуться через пару часов.
DS
16:49
Daniil Sedov
In reply to this message
load_msg_addr если юзать через ~, изменится исходный слайс (как и с load_uint например), а вернет он слайс, взятый из префикса исходного, являющийся корректным msgaddress
16:49
"Loads from slice s the only prefix that is a valid MsgAddress"
16:50
addr_none это слайс с двумя битами 00
16:50
не ну
16:50
можно и parse_addr
16:50
суть не меняет
16:50
просто parse_addr нужно применять на слайсе, который уже является msgaddress
16:50
а load_msg_addr тебе его как раз и вытащит
M
16:53
Mark
Я примерно понял, ага
щас пока попроюу как есть, потом вернусь к этому, если остальное правильно будет
Получается для StateInit гарантируется, что HashMap состоит из чего? пустых значений?
DS
16:56
Daniil Sedov
In reply to this message
hashmap сам пустой. то есть просто бит 0
https://ton.org/docs/#/func/stdlib?id=dictionaries-primitives
16:56
" In other words, s consists either of one bit equal to zero (if the dictionary is empty), or of one bit equal to one and a reference to a cell containing the root of the binary tree"
16:56
это как тип Maybe
16:57
а, ну
16:57
второй тип такой же по сути, сначала бит 0 или 1, обозначающий, пустая ли мапа
s
17:26
sepеzho.copy
Гайс, привет. Вопрос по поводу jetton токенов. Правильно понял, что этот контракт - актуальный вариант? Есть самплы кода который минтит токены используя этот контракт?
17:31
AK
17:43
Andrey Kravchenko
TASK 3 - Message validation score is : 100/100
Вот жеж блин: "гарантированное условие, что для hashmap в тестах используется только hme_empty$0", вот и была проверка, если там 1 - то ошибка, в итоге добавил проверку на hme_root$1 и тесты прошли, снова подводные камни в условиях.
DS
17:51
Daniil Sedov
In reply to this message
все решил?
AK
17:53
Andrey Kravchenko
In reply to this message
Да, остальные в первый же день, только с этой задачей пришлось повозиться, какая-то пирамидальная сложность задач вышла 😊 и по размеру файлов также:
1 - 507
2 - 1167
3 - 9001
4 - 5164
5 - 2082
DS
17:55
Daniil Sedov
In reply to this message
1 - 428
2 - 1832
3 - 4100
4 - 4520
5 - 2275
17:55
а ты сверху файла удалял описание таски?
AK
17:56
Andrey Kravchenko
In reply to this message
Не, ничего не удалял, там еще где-то комментарии есть (особенно в 3 их полно)
DS
17:56
Daniil Sedov
In reply to this message
а ты в 3 юзал try..catch?)
17:56
судя по размеру файла - нет
СВ
17:58
Сергей В
In reply to this message
А что так можно было? :D
DS
17:58
Daniil Sedov
In reply to this message
агаа
СВ
17:59
Сергей В
я даже про такой механизм не знал :)
а есть дока где? :) или это новое что-то?
DS
17:59
Daniil Sedov
In reply to this message
в fift это было уже, в func пока не добавили
17:59
через ассемблерные вставки пока делается
СВ
17:59
Сергей В
In reply to this message
Аааа, ну я не настолько крут чтоб fift знать :D
DS
18:00
Daniil Sedov
In reply to this message
он проще. как и любой язык ассемблера
18:00
просто в доках смотришь нужную команду, и что она принимает на вход - что возвращает
18:00
никаких заморочек с синтаксисом) просто подряд команды пишешь и все
mメ
18:34
merik メリク
Всем привет! Подскажите, пожалуйста, как я могу на своем сайте сделать отправку нфт через тонхаб? Почему-то найти не могу

Я использую эту либу: https://github.com/ton-foundation/ton-x
IC
19:27
Ivar Crazy
Подскажите, где почитать про TPS и время создания нового блока. А также эксплорер, где можно проанализировать блоки, а не только транзакции на конкретный кошелек
M
19:31
Maxxi
In reply to this message
а как тогда понимать Maybe (Either StateInit ^StateInit) ?
если для Either может быть и 0 и 1?
AT
19:31
Andrey Tvorozhkov
In reply to this message
Either - Если 0 - дальше все биты это Стейт инит
19:32
In reply to this message
Если 1 - ссылка на след клетку и там все биты Стейт инит
DS
19:32
Daniil Sedov
In reply to this message
Maybe (...) Значит что мы читаем один бит, если он 0, то идём дальше, если он 1, то читаем то что в скобках
19:32
Either (...) (...) Значит что мы читаем один бит, если там 0, то мы читаем первое значение, если там 1, то читаем второе
M
19:34
Maxxi
In reply to this message
если 1, то читаем следующий бит, наверное. это будет уже расшифровка скобок?
AT
19:36
Andrey Tvorozhkov
In reply to this message
Я немного напутал, дал ответ про either. Ответ Даниила выше более развёрнутый
M
19:36
Maxxi
0 -> null
10 -> StateInit
11 -> ^StateInit
так?
AT
19:37
Andrey Tvorozhkov
In reply to this message
Да
M
20:23
Mark
А что за трай кэчт можно использовать, если мы отправляем fc, а он только в fift?
DS
20:25
Daniil Sedov
In reply to this message
Посмотри в доках как объявлять функции, использующие команды ассемблера
M
20:27
Mark
Compiler directives?
Nope...
20:28
Assembler function body definition?
20:29
F2FF TRY:<{ code1 }>CATCH<{ code2 }> -
Equivalent to <{ code1 }> CONT <{ code2 }> CONT TRY.
20:29
оно что ли? Не понятно чо искать...
AP
20:32
Andrew Python
In reply to this message
DS
20:38
Daniil Sedov
In reply to this message
Да
M
20:48
Mark
какая жесть, что будет в 4 и 5ом?
А что это за фигня?
error: previous function return type (int, tuple) cannot be unified with return statement expression type (int, [slice, slice, int]): cannot unify type [slice, slice, int] with tuple
return (-1, [s_addr, d_addr, amount]);
Почему это он не может объеденить их в тапл? Это же и есть форма ответов...
DS
20:49
Daniil Sedov
In reply to this message
4 и 5 легче третьего как оказалось) по чатам видно что все испытывают трудности в основном с 3 таской
M
20:49
Mark
жесть, надо было идти дальше
DS
20:50
Daniil Sedov
In reply to this message
Замени
return (-1, [s_addr, d_addr, amount]);

На
return (-1, unsafe_tuple([s_addr, d_addr, amount]));
M
20:50
Mark
хорошо, спасибо, а почему?
20:50
это где-то описано?
DS
20:50
Daniil Sedov
In reply to this message
Приколы строгой типизации тюплов
20:50
Ща
20:51
[a, b, c] это тюпл строго с этими типами. В твоём случае [slice, slice, int].
А tuple это вообще любой тюпл, с любым размером и типами.

Если бы функция возвращала не tuple, а [slice, slice, int], то ошибки бы не было, но в тасках требуется не менять сигнатуры функций
20:52
unsafe_tuple приводит тюпл с четкими типами к просто tuple
M
20:52
Mark
а откуда её импортировать? нагуглить невозможно...
DS
20:52
Daniil Sedov
unsafe видимо потому что при этом теряется информация о типах внутри тюпла, из-за чего теоретически могут возникнуть траблы
20:52
In reply to this message
Она в typehelpers вроде лежит, а может и в stdlib
M
20:52
Mark
ааа, я понял, почему, он понимает буквально, а надо обощить