28 March 2022
AT
20:54
Andrey Tvorozhkov
In reply to this message
Можно чеоез тонвеб
T
20:54
The Find
In reply to this message
Thanks!
P
21:01
Purple
In reply to this message
https://github.com/toncenter/tonweb-mnemonic/issues/13 только там проблемка была, посмотри что там в итоге решили
21:40
Deleted Account
Друзья, помогите разобраться. Скачал компилятор по инструкции и toncli для python3.10. Все делал на Win10 x64.

При запуске на шаге 10 команды toncli вывод:
disintar.io NFT owners today say: 🙈 🙉 🙊
ERROR: 🔎 Can't find such command

p.s. папка с бинарниками лежит на диске C в program files x86
21:41
python есть в PATH
AT
21:41
Andrey Tvorozhkov
In reply to this message
Все хорошо)
21:42
Deleted Account
В плане?
AT
21:42
Andrey Tvorozhkov
Просто идите дальше по инструкции
21:42
In reply to this message
Ну тут нет никаких ошибок, оно говорит, что вы не ввели команду, которую хотите выполнить
21:42
Deleted Account
ааа
AT
21:42
Andrey Tvorozhkov
:))))
21:42
Deleted Account
ну тогда отлично)
AT
21:43
Andrey Tvorozhkov
Согласен, не юзер френдли
21:43
Но, как есть)
21:43
Deleted Account
просто у меня не было вывода first time run и тп
21:43
сразу так выдало, а ставил первый раз
AT
21:46
Andrey Tvorozhkov
🤔
ИК
21:47
Игорь Коняхин
Я тут подумал: я правильно понимаю, что в TON невозможно самостоятельное создание кошельков?

Т.е. обычно (в Bitcoin, Ethereum) ты просто генеришь локально публичный/приватный ключ, и публичный ключ - уже является твоим кошельком, его можно уже отослать для пересылки денег, и для этого не нужна никакая запись в блокчейне.

А в TON, поскольку любой кошелёк является смарт-контрактом, то его надо вначале задеплоить, а для этого надо это дело оплатить, а оплатить внешним сообщением нельзя, т.е. какой-то другой контракт должен за свой счёт оплатить тебе создание кошелька.

Так? или я чего-то недопонимаю?
P
21:48
Purple
In reply to this message
создание адреса возможно без смарт-контракта. А так да, дабы совершить транзакцию нужно задеплоить.
21:49
Deleted Account
Кстати, а есть уже плагины для FunC
21:49
По подсвечиванию синтаксиса
21:49
ну в atom или там VS
P
21:49
Purple
In reply to this message
есть
21:49
Deleted Account
как называется и где
P
21:50
Purple
21:50
Deleted Account
принял
ИК
21:50
Игорь Коняхин
In reply to this message
Получается, что вначале:
1) Создаёшь/генерируешь адрес
2) Просишь на него отправить денег
3) И только затем по данному адресу открываешь контракт ...
4) после чего можно уже переводить деньги дальше
Верно?
Выходит, что на момент получения денег даже не известно какой конкретный смарт-контракт их получит, так как смарт-контракт нужно выбрать только на шаге 3
AP
21:51
Andrew Python
In reply to this message
Самый жирный для jetbrains'овских ide
P
21:51
Purple
In reply to this message
ну адрес зависит от смарт-контракта, а так да, неизвестно что за смарт-контракт человеку, который переводит
AT
21:52
Andrey Tvorozhkov
In reply to this message
Лучше всего интелиджи использовать
21:52
Оно там прям максимально прокачено
21:52
Как написано в доках и гайдах
ИК
21:52
Игорь Коняхин
In reply to this message
🤔 Интересно, понял, спасибо)
VS
23:21
Victor Shpaga
Извиняюсь за оффтоп, но вопрос отчасти по кошельку: для получения условного тон бриллианта нужен v4 кошель, в v3 ведь не было такой функциональности?
23:22
Насколько я помню из коммьюнити чатов и т.д., подписки и нфт поддерживаются с в4, поправьте если чушь несу.
NA
23:23
Narek Abovyan
Нфт никак не связаны с контрактом кошелька
VS
23:23
Victor Shpaga
In reply to this message
Благодарю за пояснение.
NA
23:24
Narek Abovyan
Просто в нфт прописан адрес владельца, это даже не обязательно может быть кошелек
VS
23:24
Victor Shpaga
In reply to this message
То есть любой СК условно говоря может "хранить" нфт?
NA
23:24
Narek Abovyan
Нет понятия хранить нфт
23:25
Есть контракт нфт, в нем написано кто владелец
23:25
Ничего более
VS
23:25
Victor Shpaga
In reply to this message
Ок, речь про принадлежность
23:25
In reply to this message
Понял, спасибо.
23:57
Deleted Account
Коллеги, добрый день. Подскажите, как построить диплинк для трансфера через бэкенд тонкипера?
29 March 2022
00:01
там не только func, но и fift и tl-b
AF
00:21
An Filatov
С чего начать изучение func, нам не же прогают смарт контракты ton
Знаю c++
q
00:23
qpwe
In reply to this message
С документации ton.org/docs
SG
00:35
Semyon Golovin
Где нужно вызывать?
cmake --build . --target func
В
00:49
Вова 💛💙
In reply to this message
Та мало инфы
q
01:01
qpwe
In reply to this message
Уже успел всё прочесть? 😦
VS
01:33
Victor Shatilov
toncli не может получить доступ к скачанным ton-binaries пишет permisson denied раздал права на папку через chmod, всё равно не хочет... Не подскажете, в чем может быть проблема?
AT
07:49
Andrey Tvorozhkov
In reply to this message
Какая ос?
09:14
Deleted Account
Дайте ссылку на поддержку диамонта
09:14
Я про нфт
SG
09:37
Semyon Golovin
Что я делаю не так? Собрал компилятор по инструкции https://ton.org/docs/#/compile.
Пытаюсь запустить компиляцию контракта но получаю command not found
D
09:38
Dario
In reply to this message
sudo make install
ИМ
09:38
Илья Михеев
вам нужно добавить func в PATH
VE
09:44
V E
In reply to this message
бинарники func и fift должны быть в liteclient-build/crypto
SG
09:47
Semyon Golovin
In reply to this message
В crypto вот что у меня. Папочку bin не вижу
VE
09:48
V E
In reply to this message
теперь можно из папки запускать компиляцию. для удобства лучше добавить в PATH
SG
09:57
Semyon Golovin
In reply to this message
То же самое валится
F
10:00
F
In reply to this message
./func для запуска программы которая лежит в папке где вы находитесь
r
10:21
rafici
32mkQAdM5qAPa-9t08IOF7MUnjVGDd2Ynm2n_sw0M8h_Cp7Ys7f
Пацаны, а можно тест токенов парочку? Не могу тестгивер бота победть что-то.
SG
10:35
Semyon Golovin
In reply to this message
Спасибо
SD
10:37
Sen Dmi
In reply to this message
Спасибо
T
10:40
TON Дев Чат
In reply to this message
Выглядит как невалидный адрес. А какие проблемы с ботом?
SG
10:43
Semyon Golovin
Как подключить стандартную библиотеку?
T
10:46
TON Дев Чат
In reply to this message
func можно передавать несколько файлов, один из файлов должен быть stdlib.fc. Экземпляр можно взять здесь https://github.com/newton-blockchain/ton/blob/master/crypto/smartcont/stdlib.fc
r
10:47
rafici
In reply to this message
Не сразу сообразил, что он хочет, чтоб я ввёл код с картинки, всё, победил, спасибо)
AT
11:17
Andrey Tvorozhkov
In reply to this message
А пробовали toncli? Или концепция в том, чтобы попробовать все самому ручками прям с 0?
SG
11:19
Semyon Golovin
In reply to this message
toncli как я понимаю требует какую то определенную архитектуру файлов. А у меня один файлик hello_world.fc который хотелось бы скомпилировать и попробовать
AT
11:20
Andrey Tvorozhkov
👌, просто возможно "попробовать" будет сложновато
11:20
Нужно runvm запускать)
11:20
Чтобы локально
SG
11:24
Semyon Golovin
In reply to this message
Возможно, но вроде получилось. Сейчас попробую через toncli
11:39
Deleted Account
А заем нужен фифт, еесли есть фанк?
ИМ
11:39
Илья Михеев
In reply to this message
func компилируется в fift-asm, а fift в коды TVM
AP
11:51
Andrey Pfau
In reply to this message
Фифт не компилируется, там он просто генерирует
11:52
FunC компилируется в скрипт-кодогегератор на Fift
GG
14:04
Game God
Привет. Создаю свой GameFi проект и планирую использовать игровые токены на базе блокчейна Ton. Я правильно понимаю, что пока готового смарт-контракта для них нет и выпуск собственных монет еще в разработке? Если кому то интересно, можете глянуть мой white paper, там же уже есть тестовый вариант игры с доступом через тг бота: https://telegra.ph/Krible-Karble-World-Metaverse-02-22
A
14:09
Anton
In reply to this message
у тебя ошибка в линке в слове krable
GG
14:14
Game God
In reply to this message
да, есть такое, но ссылка сама работает...
A
14:20
Alt
привет, подскажите пожалуйста
когда смарт контракт отправляет message с вложенными монетками – газ за транзакцию по дефолту вычитается из этого количества монет или доплачивается?
YY
14:43
Yernar Yerboluly
Всем привет, с чего начать чтоб начать разработку в ton (tvm)?
14:43
советы может быть для начинающего (я сам веб-разраб)
AT
14:45
Andrey Tvorozhkov
In reply to this message
toncli quick start guide
YY
14:47
Yernar Yerboluly
Спасибо большое )))👍
MA
15:28
Mikhail Aksenov
Всем привет! Я понимаю, что у меня максимально дилетантский вопрос, но даже не знаю где спросить.
Подскажите пожалуйста, на ТОНе есть что вроде Remix IDE компилятора (что бы автоматически загружать Смарт контракты сразу в блокчей и видеть их адрес).. если нет, то какими способами вообще работать со стартами и как их деплоить?
Спасибо!
TP
15:29
Tim Pavlov
In reply to this message
ide нет, можно это делать через toncli. https://github.com/disintar/toncli/blob/master/docs/quick_starat_guide.md
MA
15:30
Mikhail Aksenov
In reply to this message
Спасибо, а если мы говорим об нфт, то история такая же?
TP
15:31
Tim Pavlov
In reply to this message
тут не в курсе, если честно
MA
15:31
Mikhail Aksenov
In reply to this message
Ладно, хорошо, спасибо большое, буду изучать)
TP
15:31
Tim Pavlov
In reply to this message
пожалуйста)
ЛС
16:39
Лариса Сергиенко
Я не бот.🙂
TP
16:43
Tim Pavlov
а где посмотреть error codes для throw_if? есть список какой-то? он их переводит в сообщения или не?
TP
16:44
Tim Pavlov
In reply to this message
спасибо большое
q
16:45
qpwe
In reply to this message
Всегда пожалуйста
AP
16:48
Andrew Python
In reply to this message
Ещё стоит упомянуть, что:
Predefined exceptions of TVM correspond to exception numbers n in the range 0–31. © tvm.pdf
TP
16:51
Tim Pavlov
In reply to this message
понял, спасибо
x
17:07
xxffwwoqqzz
Добрый день. Возникают трудности при установке liteclient, func и fift по этому гайду.

Перехожу в папку ton командой cd ./ton

Запускаю команду git submodule update --init

И получаю следующий вывод:

Submodule 'third-party/abseil-cpp' (https://github.com/abseil/abseil-cpp.git) registered for path 'third-party/abseil-cpp'

Submodule 'third-party/crc32c' (https://github.com/google/crc32c) registered for path 'third-party/crc32c'

Submodule 'third-party/libraptorq' (https://github.com/ton-blockchain/libRaptorQ) registered for path 'third-party/libraptorq'

Submodule 'third-party/rocksdb' (https://github.com/facebook/rocksdb.git) registered for path 'third-party/rocksdb'

Cloning into '/home/xxffwwoqqzz/ton/third-party/abseil-cpp'...

Всё замирает на этом моменте и никак не двигается дальше

Кто-то знает, что делать в этой ситуации?
17:09
In reply to this message
UPD. Только что спустя минут 5-10 начался клонироваться другой репозиторий. Возможно у меня просто очень слабый интернет, поэтому всё так долго тянется
A
17:32
Alt
я новичок, использую toncli
через run_tests локальный дебаг работает
теперь хочу задеплоить в тестнет, но я так понимаю мне нужен файл fift/data.fif – как мне его сгенерировать?

работаю вот с этим примером (в коде контракта специально сделаны ошибки, если что)
https://github.com/disintar/task-1-playground
AT
17:36
Andrey Tvorozhkov
In reply to this message
А зачем в рамках контеста что-то куда-то деплоить?)
A
17:37
Alt
мне кажется так легче поиграться с контрактами будет
AT
17:37
Andrey Tvorozhkov
data.fif это файл где описываются данные для контракта на языке Fift. Язык мудрен и с приколами, возможно могут возникать сложности)
A
17:38
Alt
In reply to this message
это я понимаю, в рамках run_tests я ведь его и генерирую, я так полагаю
вопрос в том можно ли его так же просто сгенерировать для деплоя
AT
17:38
Andrey Tvorozhkov
"TonUtil.fif" include
"Asm.fif" include

"build/contract.pk" load-generate-keypair // generate key pair
constant private_key // save private to constant
constant public_key // save public to constant

<b
0 32 u, // seqno
0 32 u, // subwallet-id
public_key B, // add bin public key to cell
b>
17:38
Ну вот пример для кошелька
А
17:39
Артём
Ребят, хочу научиться кодить на FunC, но к сожалению базовых знаний совсем нету с чего начать вообще, книги может есть какие нибудь с базовым материалом т.к инфы не нашёл нигде
AT
17:39
Andrey Tvorozhkov
<b создает билдер, 0 32 u, кладет 32 бита unsigned integer
AP
17:39
Andrew Python
In reply to this message
вообще его даже в таком виде можно пихнуть в задание, 64 нулевых бита и паблик для разнообразия)
AT
17:39
Andrey Tvorozhkov
Все слова можно прочитать в вайтепейпере фифта
17:40
<b 0 64 u, b>
17:40
Я верю, что это можно как-то самому написать)
x
17:45
xxffwwoqqzz
In reply to this message
Прошло больше 30 минут. В итоге всё сломалось на копировании 4-го сабмодуля

Cloning into '/home/xxffwwoqqzz/ton/third-party/rocksdb'...
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
fatal: clone of 'https://github.com/facebook/rocksdb.git' into submodule path '/home/xxffwwoqqzz/ton/third-party/rocksdb' failed
Failed to clone 'third-party/rocksdb'. Retry scheduled
Cloning into '/home/xxffwwoqqzz/ton/third-party/rocksdb'...
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
fatal: clone of 'https://github.com/facebook/rocksdb.git' into submodule path '/home/xxffwwoqqzz/ton/third-party/rocksdb' failed
Failed to clone 'third-party/rocksdb' a second time, aborting
17:46
In reply to this message
В чём может быть такая ошибка? Кто-то сталкивался с таким? И это нормально, что оно так долго думает и не может скачать репозитории?
Х
17:48
Хусан
In reply to this message
А
17:51
Артём
In reply to this message
Благодарю
VS
18:31
Victor Shpaga
Подскажите пожалуйста, чтобы обновить пк версию тонкипера до в4 нужно заново установить из свежего дистриба, или есть возможность обновить через приложение? Андроидная апка как-то сама это сделала, пк апка — нет.
И
18:58
Илья
Я новичок не смог скачать компилятор и тон на пк хы
SC
19:01
Sand Cat
Ребята а можно поинтересоваться, че с вайтпейпером, как я понял их 2 ?
19:02
Как номинатора найти, если я валидатор, суммы непонятны, конект где искать?
19:09
попробууй toncli
19:12
Где можно пополнить кошелек монетами в тестовой сети?
SG
19:22
Semyon Golovin
In reply to this message
Х
19:22
Хусан
In reply to this message
спасибо
V
19:39
V
PS D:\toncontest\test> toncli start wallet
disintar.io NFT owners today say: 🙈 🙉 🙊
INFO: 🐒 I'll create folder D:\toncontest\test/wallet with project wallet and all needed files
Traceback (most recent call last):
File "C:\Users\48537\AppData\Local\Programs\Python\Python310\Scripts\toncli-script.py", line 33, in <module>
sys.exit(load_entry_point('toncli', 'console_scripts', 'toncli')())
File "c:\ws\toncli\src\toncli\main.py", line 416, in main
bootstrapper.deploy()
File "c:\ws\toncli\src\toncli\modules\projects.py", line 45, in deploy
shutil.copytree(os.path.abspath(f"{self.project_location}/{self.project_name}"),
File "C:\Users\48537\AppData\Local\Programs\Python\Python310\lib\shutil.py", line 554, in copytree
with os.scandir(src) as itr:
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\ws\\48537\\src\\48537\\projects\\wallet'

что я делаю не так? следую гайду
q
19:40
qpwe
T
Testgiver TON Bot 29.03.2022 19:39:59
q
19:40
qpwe
In reply to this message
Интересная капча в боте 🙈 Есть шансы её написать верно?
ВП
19:40
Влад Павлючков
In reply to this message
669337?
SG
19:41
Semyon Golovin
In reply to this message
Есть. С 5 попытки написал)
q
19:41
qpwe
In reply to this message
Тяжко, видимо я бот. Начал вводить и серые 🤡
TP
19:41
Tim Pavlov
пхахах
ВП
19:41
Влад Павлючков
In reply to this message
Вот это точно безумие)
TP
19:41
Tim Pavlov
In reply to this message
интересно, в каком порядке?)
q
19:42
qpwe
In reply to this message
Дошел до 1/4 и понял, что не могу понять в каком 🥲
И
19:48
Илья
In reply to this message
спасибо
SG
19:49
Semyon Golovin
Как отправить данные в recv_external?
toncli send --net testnet --body 32?
AP
19:50
Andrew Python
In reply to this message
1. toncli send вообще для другого (чтобы кастомное внутреннее послать контракту)
2. Надо написать usage.fif для своего контракта, и потом использовать его через toncli sendboc

upd: инструкция к toncli send https://github.com/disintar/toncli/blob/master/docs/advanced/send_fift_internal.md
toncli sendboc https://github.com/disintar/toncli/blob/master/docs/advanced/send_boc_with_fift.md
SG
19:53
Semyon Golovin
In reply to this message
Ок. Попробую
Х
19:57
Хусан
In reply to this message
Попробуй заново всё установить и вслед. раз лучше скриншот кидай
И
20:05
Илья
а что лучше изучать FunC или Fift?
TP
20:07
Tim Pavlov
In reply to this message
это как спросить что лучше изучать C или ASM
c
20:08
cryshado
In reply to this message
Для разработки контрактов в тоне и то и то нужно хорошо знать, и уметь на этом писать
TP
20:08
Tim Pavlov
In reply to this message
вот именно
AP
20:08
Andrew Python
In reply to this message
с такими вопросами лучше начать с Python😏
SG
20:08
Semyon Golovin
А где найти документацию по fift?
c
20:10
cryshado
In reply to this message
Сборник всей доки по тону https://github.com/tonstack/ton-docs
x
20:30
xxffwwoqqzz
() recv_internal (slice in_msg) impure {...}

что значит слово impure?
20:30
In reply to this message
и есть ли ещё какие-то слова? где можно про это почитать?
TP
20:30
Tim Pavlov
In reply to this message
значит у функции сторонний эффект на состояние блокчейна, как я понял
20:31
In reply to this message
inline, inline_ref, method_id. читай в доке по объявлению функций
x
20:32
xxffwwoqqzz
In reply to this message
сторонний эффект на состояние блокчейна это как?
20:32
In reply to this message
точняк, спасибо большое
TP
20:33
Tim Pavlov
In reply to this message
транзакция, изменение переменной, которая хранится в блокчейне и все в таком духе
x
20:33
xxffwwoqqzz
In reply to this message
типа асинхронное что-то?
TP
20:34
Tim Pavlov
In reply to this message
не, не в асинхронности дело. состояние блокчейна рассылается по всем нодам. это список транзакций, исполнение смарт контрактов и тд. Если ты его меняешь в функции, значит она
impure
x
20:35
xxffwwoqqzz
In reply to this message
дошло, спасибо!)
TP
20:35
Tim Pavlov
In reply to this message
пожалуйста)
NN
20:43
No No
Здарова, то нить уже прошел 1 задание?
20:44
Куда вообще загружать ответы
AP
20:44
Andrew Python
In reply to this message
низя задания обсуждать)
20:44
In reply to this message
позже ссылку на бота дадут
NN
20:44
No No
Оу щит)
TP
20:46
Tim Pavlov
In reply to this message
А вообще какой срок сдачи?
AP
20:46
Andrew Python
In reply to this message
таймер на сайте есть
The contest ends on 07 April at 18:00 UTC Time
TP
20:47
Tim Pavlov
О, круто, и нет ограничений, типа, кто быстрее сдал - тот круче? Измеряется только кол-вом успешно решенных задач и потраченным газом?
AP
20:48
Andrew Python
In reply to this message
Сказали скорость не важна.
TP
20:48
Tim Pavlov
In reply to this message
Понял, спасибо
AT
21:19
Andrey Tvorozhkov
In reply to this message
Переустановите питон (как в гайде), он находится в нестандартной папке
AP
21:20
Andrey Pfau
In reply to this message
Тыкните на картинку , она в превью обрезается
AT
21:22
Andrey Tvorozhkov
In reply to this message
Да, это правда так. send отправляет internal сообщение от контракта деплойера. Если хочется отправить external в свой контракт нужно полностью описывать сообщение.

Спасибо, что отвечаешь по вопросам тонкли, очень приятно :)))
AP
21:28
Andrew Python
In reply to this message
Я просто прокрастинирую из-за пятого задания)
21:31
Deleted Account
Друзья, кто может нормально объяснить что такое forall, из доков не понял
TP
21:31
Tim Pavlov
In reply to this message
Аналог template C++
AP
21:31
Andrey Pfau
In reply to this message
Это как дженерики или темплейты
TP
21:32
Tim Pavlov
In reply to this message
)
21:32
Deleted Account
стало еще непонятней…
AP
21:32
Andrey Pfau
In reply to this message
Вы на каком языке до этого писали?
21:32
Deleted Account
python, JS
TP
21:32
Tim Pavlov
In reply to this message
Ну типа ты не привязываешь переменную к какому-то типа
21:32
А говоришь что она может быть любого типа
AP
21:32
Andrey Pfau
In reply to this message
А ну, там этого нет, там же слабая типизация
TP
21:32
Tim Pavlov
И условно даешь ему имя X, Y
21:32
Deleted Account
а
21:33
In reply to this message
вот теперь понял
TP
21:33
Tim Pavlov
Отлично)
21:33
Deleted Account
In reply to this message
Спасибо
TP
21:33
Tim Pavlov
In reply to this message
Пожалуйста)
V
21:38
V
In reply to this message
Спасибо)
22:25
Deleted Account
Можете скинуть гайд по компиляции и дебагу смарт-контракта
И
22:26
Илья
In reply to this message
Сборник всей доки по тону https://github.com/tonstack/ton-docs

Компилятор https://github.com/disintar/toncli/blob/master/INSTALLATION.md
22:36
Deleted Account
После настройки папка с контестом должна быть возлк func бинарника, или можно с любого места вызывать toncli func
22:37
~ % toncli func
disintar.io NFT owners today say:
🙈 🙉 🙊
ERROR:
🚫 It is not project root, there is no folder func - I can't deploy it
22:37
у меня такой вывод просто
22:41
делаю на MacOS
22:43
решил sudo toncli func
AT
22:44
Andrey Tvorozhkov
In reply to this message
Хм, так быть недолжно
22:45
Действительно что-то сломалось
22:45
(в тонкли)
AZ
23:01
Anton Zlobin
Еще раз здраствуйте, а когда создаем нфт, транзакцию отправлять на адрес коллекции, верно?
НА
23:05
Нестор Архангельский
Всем разработчикам привет! Я и @semgoSE Не можем понять как передавать аргументы в смарт контракт на ton. Кто подскажет + к карме и репутации😉
23:07
Deleted Account
In reply to this message
Ладно, переустановлю и попробую снова, второй раз через make переустановку сделаю
AT
23:07
Andrey Tvorozhkov
In reply to this message
нененене
23:07
не надо
23:07
Это в тонкли ошибка
23:07
Я же сказал
23:08
А зачем вообще конпилить вне директории проекта?
23:08
(я пофикшу, но чуть позже)
AZ
23:30
Anton Zlobin
In reply to this message
то куда вы транзакцию отправляли
НА
23:31
Нестор Архангельский
In reply to this message
Ещё актуально
30 March 2022
AZ
00:05
Anton Zlobin
In reply to this message
А как вы задеплоили? Вы пример нфт использовали?
00:08
In reply to this message
У вас работает кнопка create нфт?
00:17
In reply to this message
Адрес коллекции указан в логах консоли
TP
00:22
Tim Pavlov
In reply to this message
кстати, у меня при выполнении toncli выдает то же самое, но жалуется что не может найти папку fift. Какое может быть решение?
00:23
установил на убунту как в доке сказано
00:23
на винде то же самое
Х
07:34
Хусан
In reply to this message
Надо написать usage.fif для своего контракта, об это выше писали, пролистай
SG
07:48
Semyon Golovin
In reply to this message
Нужен именно usage.fif или data.fif?
Х
07:50
Хусан
Я ещё не знаю
07:50
Как именно надо
AP
07:51
Andrew Python
In reply to this message
data.fif - это хранилище контракта при деплое
usage.fif - это создание новой транзакции (boc-файла) для последующей отправки (можно использовать toncli sendboc для автоматической отправки)
Х
07:52
Хусан
In reply to this message
Спасибо
D
09:50
Daniil
Ребят, привет, мы завершили разработку проекта TON Name (tonname.tech) - установка никнейма и аватара для адреса, если кто-то хочет поддержать проект, мы готовы к совместной работе и интеграции (у нас открытое апи).

Для NFT пока не придумали интеграции, но можете написать если есть какие-то идеи, мы привязываем автарки и никнеймы к адресам тон 😄
VO
09:52
Valeriy Osipov
In reply to this message
Привет, а по Nft какого рода интеграции рассматриваете?
N
09:52
Nick
Не придумали, поэтому в тексте присутствует 2й абзац)
GG
09:53
Game God
In reply to this message
Есть только get методы. А задать имя через api?
N
09:53
Nick
In reply to this message
Все на tonname.tech записано, хендлер пополнений кошелька
AP
09:54
Andrew Python
In reply to this message
Это просто оффчейн база данных?
N
09:54
Nick
Пока-что да, в дальнейшем - увидим
D
09:57
Daniil
In reply to this message
Помимо установки имени и аватарки, у нас есть галочки и метки скам. Скоро сделаем страницы пользователей, там будет кнопка пожаловаться.
Галочки выдаются адресам известных проектов
GG
09:58
Game God
In reply to this message
Видимо я что-то не понимаю. Допустим я хочу прикрутить к своей игре возможность привязки ник неймовигроков и их аваторов к их тон кошелькам. Я могу это сделать через их api? Сейчас я вижу только get методы для чтения данных из базы...
VO
09:58
Valeriy Osipov
In reply to this message
Для аватарок есть идея, можешь в лс стукануть, я залочен до 1 апр
D
09:58
Daniil
In reply to this message
Установки нет в апи, она платная. На сайте tonname.tech посмотрите)
VO
09:59
Valeriy Osipov
Ты из команды Даниила тоже?
GG
09:59
Game God
In reply to this message
ясно, спасибо
N
09:59
Nick
да
09:59
In reply to this message
Есть идея
10:13
Deleted Account
Всем привет
10:14
Такой вопрос. Межбанковские переводы это же тоже смарт контракты?
GE
10:55
Greg Evseev
Привет всем!
А есть какой-нибудь краш-курс или хотя бы фак для новичков? Больше интересуюсь в интеграциях и верификации транзакций. Разрабатываю решения, связанные с блокчейнами уже несколько лет и меня давно интересует ТОН, но как-то руки не доходили.
T
11:39
TON Дев Чат
In reply to this message
https://ton.org/docs/ Посмотрите оглавление, вероятно найдее то, что ищете.
Mk
12:26
Mr. k
I had a question whether asp. Net core is popular in Russia and other countries and can it be found?
GE
12:27
Greg Evseev
In reply to this message
Спасибо большое!
AS
12:43
Alexander Strakh
Добрый день!
Подскажите, какие инструменты можно использовать для разработки смарт-контрактов для TON?
JF
12:44
John Fyodor
In reply to this message
func, fift
AS
12:44
Alexander Strakh
Это насколько я понимаю языки
GE
12:45
Greg Evseev
da
AT
12:49
Andrey Tvorozhkov
In reply to this message
Toncli
P
12:52
Placeholder
@andreypfau , есть ли возможность научить ton development plugin переходить к определению функции в stdlib без добавления stdlib.fc в директорию с кодом контракта?
13:01
In reply to this message
Наверное, этот пребилд нужно установить и сделать что-то типа find / -name func
Не знаю, куда макось обычно исполняемые файлы кладет
AP
13:01
Andrey Pfau
In reply to this message
Имеешь ввиду к виртуальному файлу?
P
13:02
Pepeg
Приветы, подскажите, что я делаю не так со сборкой компилятора
вот полная ошибка https://pastebin.com/m1FQ7Tsx
P
13:02
Pepeg
P
Pepeg 30.03.2022 12:51:36
Hello, guys! Did anyone faced with that problem: error:
numeric_limits’ is not a member of ‘std

when compiling func compiler?
Just did everything from https://ton.org/docs/#/compile
AP
13:02
Andrey Pfau
Который заранее загружен в плагин
P
13:05
Placeholder
In reply to this message
stdlib уже загружен в плагин? просто сейчас без stdlib.fc в той же директории — cannot find declaration to go
AP
13:08
Andrey Pfau
In reply to this message
Нет, я просто уточняю что конкретно требуется
AP
13:12
Andrew Python
In reply to this message
Можно сделать по дефолту виртуальный, но если в папке есть реальный, то приоритетнее брать его?
P
13:12
Placeholder
In reply to this message
Я не знаю, как это лучше реализовать и какие препятствия тут есть). Может, в настройках плагина добавить возможность указать путь до stdlib
AT
13:18
Andrey Tvorozhkov
In reply to this message
Лучше через тонкли
13:18
Подсосать директорию тонкли просто
13:18
Там уже для тестов много фанкси наворотов
ИВ
14:02
Игорь Ваулин
Господа, зачем нужны fift и func одновременно и почему один компилируемый а другой интерпретируемый. Как в этом разобраться?
AT
14:02
Andrey Tvorozhkov
In reply to this message
Можно почитать доки на эту тему)
ИВ
14:03
Игорь Ваулин
In reply to this message
да вот не понимаю с какого конца читать. Можно все-таки более специфический совет дать
JF
14:03
John Fyodor
In reply to this message
Func - высокоуровневый, fift - низкоуровневый.
Первый проще писать, во втором проще делать оптимизации
ИВ
14:04
Игорь Ваулин
In reply to this message
спасибо, гораздо понятнее. То есть func компилируется в fift, а fift интепретируется уже сразу?
JF
14:04
John Fyodor
In reply to this message
Типа того
AT
14:05
Andrey Tvorozhkov
In reply to this message
Чуть сложнее
ИВ
14:05
Игорь Ваулин
In reply to this message
так что почитать то? просто отдельно доки для фифта есть, есть отдельно доки на тон.орг и отдельно еще какие-то доки. оно пока не складывается в голове
AT
14:06
Andrey Tvorozhkov
In reply to this message
Func собирается в скрипто-генератор на фифте. Fift ASM

А что вы хотите?)
14:07
Если хочется разобраться как все работает с 0 - нужно делать одно, если хочется что-то начать делать вот прям ща - нужно делать другое)
14:07
Доги тон.орг хорошо описывают высокоуровнево всё
14:07
Вайтпейперы более детально)
VO
14:11
Valeriy Osipov
Народ, а cryptoBotом кто-то пользовался для продажи крипты в рубли? Уже 10 сделок невозможны
YY
14:46
Yernar Yerboluly
tg_image_2241660.jpeg
Not included, change data exporting settings to download.
89.4 KB
при установке toncli на macOS m1 было такая ошибка у кого нибудь ?
c
14:47
cryshado
In reply to this message
пиво инсталл cmake
ИМ
14:47
Илья Михеев
(имеется ввиду brew install cmake)
YY
14:53
Yernar Yerboluly
14:53
теперь такая после установки cmake
GG
14:55
Game God
Macos m1 разве поддерживается?
YY
14:55
Yernar Yerboluly
с контеста как могу протестировать 1 таск ?
куда и как отправлять ?
14:56
следую поэтому гайду
14:57
In reply to this message
?
DB
15:43
D B
Привет всем!

Ищем TON разработчиков для внедрения блокчейн механик в гейм проект. Игра уже на стадии демо версии.

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

Спасибо и хорошего дня!
AT
15:44
Andrey Tvorozhkov
toncli v0.0.25 mini update:

- add get_prev_c4 / get_prev_c5 in run_tests
- fix -c in run_tests
- fix func in non project root
- Other minor fixes

To update:

pip install -U toncli
toncli update_libs
15:44
🙈
15:47
In reply to this message
Протестировать никак
15:47
In reply to this message
Можно только засабмитить)
15:47
Локально через run_tests можно разрабатывать)
AP
15:51
Andrew Python
In reply to this message
Спасибо за
- fix -c in run_tests
а то приходилось каждому заданию корневой каталог и project.yaml делать)
P
16:56
Philosow
Всем привет! Помоги начать работать с Тон: какое ide и может ещё что качать? Сейчас "работаю" на VS code c#
P
16:59
Philosow
In reply to this message
Спасибо!
YY
17:24
Yernar Yerboluly
In reply to this message
А куда? И можно ли по отдельности таски сабмитить и если неправильно можно ли еще раз отправлять?
P
17:41
Philosow
In reply to this message
А по документации, кроме офиц возможно есть источники?
И
17:48
Илья
А зачем?
17:48
В документации всё есть
A
17:50
A
Всем привет, ребята скажите есть примерное описание, что из себя будут представлять тон сайтс?
AP
17:52
Andrey Pfau
In reply to this message
AT
17:53
Andrey Tvorozhkov
In reply to this message
Еще тонкли есть
P
18:01
Philosow
In reply to this message
👍
18:09
In reply to this message
👍🏻
18:13
Вот ещё такой вопрос: есть ли какие специфические моменты для организации работы с toncoin?
c
18:41
cryshado
In reply to this message
весь тонкоин один большой специфический момент
P
18:43
Philosow
Ну вот хочу разобраться: тон- это ж сеть, тонкоин её часть как и старт контракты. Так?
JF
18:48
John Fyodor
In reply to this message
Так
P
19:16
Pepeg
Приветы, в run_test'e как-то можно кол-во коинов указать в сообщении? Не совсем понимаю как это окружение тестовое устроено
я так понимаю нужно делать это
.store_grams(grams)
, но откуда оно берет эти грамы в тестовом окружении?
AT
19:17
Andrey Tvorozhkov
In reply to this message
Это просто тип данных
EG
20:25
Egor Georgievskii
Добрый вечер, установил тонкли по инструкции на винду, при попытке запустить toncli run_tests получаю Error interpreting standard preamble file `Fift.fif`: cannot locate file `Fift.fif`
Check that correct include path is set by -I or by FIFTPATH environment variable, or disable standard preamble by -n.

Пробовал поставить FIFTPATH=...AppData\Local\toncli\toncli\fift-libs , не помогает. Кто-нибудь знает как пофиксить?
s
20:26
sepеzho.copy
Привет, вопрос есть по поводу данных транзы. А именно мэсседжа.

Создаю транзу с мэсседжом, который просто кладу в поле data строкой (второй скрин)

После чего начинаю слушать “toncenter.com/api/v2/getTransactions” и просматривать транзу, которою только что сделал

данные приходят в каком-то формате непонятном. Можете подсказать как расшифровать это?
20:26
20:26
V
20:32
V
In reply to this message
У меня на винде такая же ошибка, решил попробовать на убунте, а тут такая. Кто-то сталкивался с этим?
AT
20:58
Alexander Tikhomirov
Всем привет, как долго перевод через мост проходит ton->bsc ?
21:00
Deleted Account
In reply to this message
Я удалил папку build, и просто сделал cmake
21:00
In reply to this message
Минут 10-30
AT
21:01
Alexander Tikhomirov
In reply to this message
У меня что-то уже часа полтора висит
21:03
Deleted Account
In reply to this message
Смотри msg data в body: это cell тип данных передачи информации который нужно расшифровать, посмотри доки, set_data, get_data в смартконтракте
c
21:03
cryshado
c
cryshado 30.03.2022 20:48:16
исторический момент, первая хешмапа, отправленная в хайлоад валет на джаваскрипте в самой удобной библиотеке для работы с тоном от tonstack

Скоро релиз, и это будет доступно каждому!
21:03
тестим
21:03
21:03
Deleted Account
In reply to this message
А такое тоже бывает
г
21:48
главный человек на базаре
какой яп в тоне?
AP
21:50
Andrey Pfau
In reply to this message
FunC Fift
IP
21:54
Ilya Pishchulin
Хай, не нашел какой-то инфы по установке FunC, тестовых запусков смартконтрактов и FAQ для совсем новичков, которые хотят попробовать хотя-бы нулевой таск запустить. Можете, пожалуйста, подсказать куда смотреть?
F
21:58
Flyheck
тоже интересует этот вопрос
T
21:58
TON Дев Чат
In reply to this message
IP
21:59
Ilya Pishchulin
Как раз нашел эту страничку, спасибо большое
AT
22:14
Alexander Tikhomirov
In reply to this message
Ребят, а кто сможет помочь с транзакцией через мост тон ? Не корректно перевод был выполнен.
T
22:18
TON Дев Чат
In reply to this message
G
23:37
Gleb
Ребят, у tonа есть evm?
DV
23:39
Dan Volkov
In reply to this message
evm нет, есть tvm
c
23:41
cryshado
In reply to this message
В будущем будет воркчейн с evm
23:41
Сейчас только tvm
G
23:45
Gleb
Благодарю
31 March 2022
01:07
Deleted Account
In reply to this message
С пропиткой
ИК
02:33
Игорь Коняхин
При выполнении pip install toncli получил предупреждение:
WARNING: The script normalizer.exe is installed in 'C:\Users\nns20\AppData\Roaming\Python\Python310\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Он видимо думал, что Python установлен для конкретного пользователя, а я устанавливал для всех, соответственно, мой Python живёт в Program Files.
Нормально будет просто перенести Scripts и site-packages в фактическое место Питона?
ИК
03:10
Игорь Коняхин
In reply to this message
Есть разница, какую из их IDE устанавливать, чтобы на неё поставить плагин?
ИК
03:28
Игорь Коняхин
In reply to this message
Решил не выпендриваться с организацией и просто добавил папку в PATH согласно рекомендации. Всё заработало:)
03:30
При выполнении toncli Quick Start получил сообщение:
Saved new private key to file build/contract.pk
Но самого файла contract.pk найти не могу ни в папке build ни в другом месте. Где его искать? или что-то пошло не так?
c
03:33
cryshado
In reply to this message
Можно не использовать toncli, жизнь становится проще в 10 раз. Ты сам все создаешь, и знаешь где че как
03:35
А еще лучше для тон дева не юзать винду. Я разрабатывал все через Remote SSH в вс коде на убунту сервере. Сейчас под мак ос собрал через кровь и пот
03:35
Но под виндой там страшно
03:35
Но в винде 11 есть wsl
03:35
Убунта20.04 и вперед
ИК
03:36
Игорь Коняхин
Тут вроде бы в этом чате уже много раз рекомендовали, наоборот, не ставить всё вручную, а использовать toncli, вот я и поставил
03:36
Если ставить "оригиналы" тоновские рядом (на том же компе) с toncli, не будет проблем?
03:37
У меня Windows 10, но WSL 2 уже стоит.
Чисто с виндой много проблем?
c
03:37
cryshado
In reply to this message
Ну это рекомендовали разработчики toncli. Они ее юзают в своих проектах, и к ней привыкли. И если видят баг, сразу для себя фиксят, а простым юзерам ждать багфикса нужно будет.

Все равно в ручную, как мне кажется все отлично можно делать. Ну как в ручную. У нас фифт и служит для автоматизации всего - там можно и создавать ключи, читать, сохранять и т д например как угодно
03:37
In reply to this message
Чисто с виндой да, я пытался 😅
ИК
03:39
Игорь Коняхин
Для этого надо с fift ещё научится работать:)
Я ещё в 2019-ом базово разобрался с ним, но в результате слился с контеста, так как по FunC инфы ещё не было совсем.
03:40
Буду пробовать)
c
03:44
cryshado
In reply to this message
да, тогда из документации по FunC был код FunC😀
03:45
фифт не сложно понять, у него нет синтаксиса, только слова, которые делают что-то со стеком
03:45
вот дока если что https://ton-blockchain.github.io/docs/fiftbase.pdf

а вот пример, который я не так давно писал https://github.com/cryshado/ton-share-smc/blob/main/init.fif
ИК
03:45
Игорь Коняхин
    var cs = get_data().begin_parse();
cs~load_uint(64);
return cs.preload_uint(256);

Почему в контракте от toncli (а также в нескольких других) для пропуска используется load_uint, а не skip_bits, который прямее отражает суть, и по идее должен быть не медленнее?
c
03:46
cryshado
In reply to this message
ну сделай skip_bits и сэкономишь газ 😀👍
03:47
In reply to this message
а может и нет, надо проверять, но то что skip_bits логичнее это правда
03:48
In reply to this message
мб return cs.skip_bits(64).preload_uint(256);
ИК
03:49
Игорь Коняхин
In reply to this message
Да, нужно бы перечитать
Суть работы ясна, но уж очень он необычный, поэтому когда видишь код (например этот же init.fif), то мозг входит в шок
03:49
А вот от кода на FunC шока больше нет - прогресс:)
c
03:49
cryshado
In reply to this message
ну это да, но если подсветка кода есть, чуть по легче, с гитхаба фифт читать страшно
03:49
In reply to this message
👍👍👍👍
03:51
In reply to this message
есть смысл ещё смотреть Fift-ASM выхлоп от FunC, очень помогает, понять, как сделать что-то экономнее по газу. Маленькие контракты можно в целом и сразу писать на Fift-ASM
ИК
03:52
Игорь Коняхин
А в TON нет возможности частично перезаписать данные?
Т.е. например есть код:
    set_data(begin_cell()
.store_uint(stored_seqno + 1, 32)
.store_uint(stored_subwallet, 32)
.store_uint(public_key, 256)
.end_cell());

Меняется только первое число, но перезаписываются все данные целиком? Нельзя чисто перезаписать первые 32 бита?
03:53
И вопрос разработчикам toncli - зачем там вообще в контракте stored_subwallet?
TP
03:53
Tim Pavlov
In reply to this message
неа, cell-ы не модифицируемые, это же состояние блокчейна, оно не мутабильное
ИК
03:55
Игорь Коняхин
Т.е. если у тебя дохрена данных хранится, то ты се равно должен всё-всё-всё с нуля пересобрать? Кажется неэффективно
03:56
In reply to this message
Вот разницу между Fift и Fift-Asm я так и не уловил. Fift-Asm это третий, ещё более низкоуровневый язык для TON?
c
03:56
cryshado
In reply to this message
вообще, если бы FunC был бы языком более высокого уровня, вы бы делали что-то вроде this.stored_seqno = stored_seqno + 1, но он максимально близок к TVM
03:56
In reply to this message
это в каком контракте, кошелька?
TP
03:56
Tim Pavlov
In reply to this message
ну все зависит от данных, их можно разделить эффективно, по идее, и хранить в отдельных cell-ах, и делать store_ref на неизменяемые данные. Не пробовал, но такая штука должна работать и эффективнее в этом плане
ИК
03:57
Игорь Коняхин
In reply to this message
В контракте, который идёт вместе с toncli
c
03:57
cryshado
скинь ссылку пж
TP
03:57
Tim Pavlov
In reply to this message
однако для контестов это не применимо, тут данные нужно в чистом виде хранить, чтоб тесты выполнялись
ИК
03:57
Игорь Коняхин
In reply to this message
code.func
Not included, change data exporting settings to download.
2.1 KB
Контракт кошелька от toncli
c
03:57
cryshado
In reply to this message
Fift-ASM это микро-программа написанная на фифте. FunC компилится в фифт-асм и эта программа асм-слова переводит в байткод для твм
03:59
In reply to this message
а ну это контракт кошелька с купой не нужного кода, посомтри лучше на https://raw.githubusercontent.com/newton-blockchain/ton/master/crypto/smartcont/wallet3-code.fc

а так сабвалет нужен, чтобы его менять и с одним публичным ключем создавать разные кошельки с разными адресами(так как адрес в тоне у нас зависит от начального состояния контракта StateInit)
03:59
ну это для контракта кошелька фича такая
ИК
04:01
Игорь Коняхин
In reply to this message
Т.е. если я делаю .store-ref(X), то будет записано байт по размеру ссылки, но сама ячейка X не будет продублирована?
TP
04:01
Tim Pavlov
In reply to this message
да, она хранится в блокчейне уже, ты на существующий cell ссылаешься, как я понял
ИК
04:01
Игорь Коняхин
Другими словами:
.store_ref(X).store_ref(X).store_ref(X).store_ref(X)
сохранит 4 ссылки на X, но саму ячейку X сохранит только один раз?
c
04:02
cryshado
In reply to this message
ячейка стореджа может максимум занимать 1023 бита, как и любая другая ячейка. И иметь при себе максимум 4 ref, ссылки(рефы) хранятся отдельно от этих 1023 битов, но всё равно занимают 256 бит на каждый реф в памяти
04:03
In reply to this message
ссылка это хеш ячейки, он сохранит 4 раза её хеш, а саму ячейку один раз
ИК
04:03
Игорь Коняхин
Говоря о низкоуровневости, я ведь правильно понимаю, что если мы захотим хранить строку произвольной длины, то нам нужно будет самим вручную обеспечить разбиение этой строки в цепочку (или дерево) ячеек?
c
04:04
cryshado
In reply to this message
да, обычно делают паравозик из ячеек для больших строк, в фифте даже есть append-long-string в либе TonUtil.fif, который это делает
ИК
04:04
Игорь Коняхин
In reply to this message
О, тогда отсюда (насколько я понимаю) ещё получается и глобальная дедупликация: если кто-то уже создавал такую ячейку, то это находится по хешу и не сохраняется повторно
c
04:06
cryshado
In reply to this message
ты про то, как хранят данные ноды блокчейна? Ну вроде да, у нас ещё есть библиотеки. Это когда можем в мастерчейн задеплоить библиотеку большого кода, а контракты будут хранить вместо кода в себе только хеш ячейки библиотеки. Полезно, когда нужно деплоить много одинаковых контрактов например, чтобы сэкономить на сторедж фи
04:06
да и даже если нода видит два одинаковых контракта, стореджа и т д, будет хранить вроде только один реально
04:06
короче там вроде всё по умному сделано)
ИК
04:08
Игорь Коняхин
Понял
c
04:08
cryshado
ну вообще тема с bag of cells нмогим кажется странным решением, но на самом деле оно очень гениальное. Там ещё есть меркле пруфы, которые генерятся на данные, благодаря всей этой структуре и т д
ИК
04:10
Игорь Коняхин
Относительно ссылок на ячейки, 4 ссылки на ячейки существуют в "отдельном пространстве"?

Другими словами коды:
cs~load_uint(8);
cs~load_ref();
cs~load_uint(8);
cs~load_ref();
cs~load_uint(8);
cs~load_ref();
cs~load_uint(8);
cs~load_ref();
и
cs~load_uint(8);
cs~load_uint(8);
cs~load_uint(8);
cs~load_uint(8);
cs~load_ref();
cs~load_ref();
cs~load_ref();
cs~load_ref();
делают одно и то же?

Или 4 ссылки на ячейки находятся в "основном потоке"?
c
04:10
cryshado
In reply to this message
да, одно и тоже делают. Они отдельно
04:11
Например благодаря всей этой теме с ячейками ещё, мы можем пруфать любую инфу, которую получили от лайтсервера, и понимать, что он нас не обманул. Ну точнее сейчас так никто не делает, кроме оригинального lite-client. Но это возможно, мы сейчас пишем либу на жс, которая будет уметь такое.

PS: в других блокчейнах мы просто должны доверять эндпоинту JSON RPC, который может быть например взломан и врать нам)
ИК
04:11
Игорь Коняхин
In reply to this message
Люблю алгоритмы!
Нужно будет когда-нибудь написать свой блокчейн:)
c
04:11
cryshado
In reply to this message
👍
ИК
04:13
Игорь Коняхин
In reply to this message
Я тогда немного не понимаю: разве лайт-сервер это не конечный пользователь, который просто создаёт свои транзакции и отправляет их полноценным серверам?
c
04:16
cryshado
In reply to this message
лайт-сервера позволяют нам, пользователям общаться с блокчейном. По факту это просто такие же валидаторские ноды, но просто которые не валидируют и у них есть API интерфейс (там свой овер тсп протокол ADNL и т д)

мы можем кинуть им запрос, с просьбой отправить например экстернал сообщение в блокчейн, но можем и попросить например выполнить get метод у контракта А или получить баланс контракта

и тут вступает магия тона, при дико сложных манипуляциях, мы можем убедиться в том, что лайтсервер 100% не обманул нас и мы получили достоверные данные

это всэ потому что к стейту(или к куску стейта) контракта, который по факту тоже состоит из ячеек генерятся меркле пруфы, которые мы можем пруфать на клиенте
04:17
сейчас все общаются через костыль с блокчейном, юзают JSON RPC сервер, который юзает биндинги тонлиб(сам тонлиб это оригинальная либа на с++ для работы с блокчейном тон, очень хорошая штука). Но сам JSON RPC это костыль, так как он не позволяет нам на полную юзать все приемущества тона, а ещё это централизация

если условный https://toncenter.com/ упадёт, то все dApps теряют букву d
04:18
У нас есть реализация аднл на расте https://github.com/tonstack/adnl-rs и дока https://github.com/tonstack/ton-docs/tree/main/ADNL

пока всё немного сырое, но мы на пути к тому, чтобы общаться с блокчейном, так как это задумывали его создатели

Безопасно, удобно и децентрализовано
ИК
04:18
Игорь Коняхин
In reply to this message
Т.е. лайт-сервер по сути точка-входа в блокчейн. Понял, спасибо
c
04:19
cryshado
In reply to this message
угу
ИК
04:23
Игорь Коняхин
In reply to this message
Вопрос для пользователей JetBrains ещё актуален:
Есть разница, какую из их IDE устанавливать, чтобы на неё поставить плагин?
c
04:25
cryshado
In reply to this message
врде IntellJ IDEA нужна для плагина, ну я ее ставил
04:25
есть комюнити версия вроде, бесплатная
ИК
04:26
Игорь Коняхин
Я бы просто если нет разницы, предпочёл поставить Rider, так как он ещё и для C# пригодится
04:27
<Высказывание про Java удалено, чтобы никого не обидеть>
c
04:27
cryshado
In reply to this message
попробуй, я бы предпочёл vs code, но там ток старый плагин 2019ого года, а этот очень свежий, удобный и с поддержкой сразу: func, fift, TL-B
04:27
есть подсветка для вима кстати)
04:28
In reply to this message
https://github.com/cryshado/neovim-ton-dev (это конфиг, а не сам плагин, плагин в ридми есть)
04:28
ну открывать код бывает в консоле нужно иногда
04:28
посмотреть чисто что-то быстренько
ИК
04:28
Игорь Коняхин
Я не такой хардкорщик:)
c
04:29
cryshado
🙂
ИК
04:38
Игорь Коняхин
In reply to this message
Нашёл куда пошёл contract.pk
Оказывается, toncli скопировал папку всего проекта "wallet" из оригинального места в новое и contract.pk (а также другие файлы) создал уже на новом месте.

Выяснилось это при попытке выполнить toncli get hello_world

 [🌗] [contract] [kQDH7Eba_xDCO3qu_c8sKORGrDM7MK8aG5MSEZwM3iMh0EfZ] 1.995434971💎 / Inited: True
INFO: 🙀 All contracts successfully deployed!
Traceback (most recent call last):
File "C:\Program Files\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Program Files\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\nns20\AppData\Roaming\Python\Python310\Scripts\toncli.exe\__main__.py", line 7, in <module>
File "C:\Users\nns20\AppData\Roaming\Python\Python310\site-packages\toncli\main.py", line 439, in main
deployer.get(real_args[2:], args)
File "C:\Users\nns20\AppData\Roaming\Python\Python310\site-packages\toncli\modules\abstract\deployer.py", line 287, in get
self.addresses = self.get_address(real_contracts)
File "C:\Users\nns20\AppData\Roaming\Python\Python310\site-packages\toncli\modules\abstract\deployer.py", line 126, in get_address
raise ValueError(f"😥 No address_text found in {contract.address}")
ValueError: 😥 No address_text found in C:\Users\nns20\Development\TON\wallet/build/contract_address


Т.е. вроде бы контракт и задеплоился, но се равно ошибка. toncli ищет contract_address по исходному расположению проекта и там его действительно нет. Что делать? Просто скопировать "дополненный" проект из нового места в моё оригинальное?

Но ведь по идее не должно быть такого рассинхрона
c
04:41
cryshado
In reply to this message
TP
04:50
Tim Pavlov
такой вопрос, можно ли как-то сделать дамп cell-а в toncli?
04:51
пишу тест, хочу посмотреть вообще содержимое переменных
c
04:53
cryshado
In reply to this message
cell дампится как хеш, тебе нужно из cell сделать слайс и его парсить
04:54
в фифт-асм есть DUMPSTK можно задампить стек
TP
04:54
Tim Pavlov
In reply to this message
ой, я slice и имел в виду, хочу посмотреть их содержимое
04:54
In reply to this message
если просто переменную использовать, то он и ее задампит?
c
04:55
cryshado
In reply to this message
ну все что на стеке, вроде д, только мб надо будет достать значение перед этим ручками в фифт асм
TP
04:57
Tim Pavlov
In reply to this message
понял, спасибо
ИК
05:04
Игорь Коняхин
Тесты в task-1-playground (https://github.com/disintar/task-1-playground) - это ведь только небольшой набор "претестов"?
Т.е. если показывает Success, это ещё не гарантия правильности?
c
05:05
cryshado
In reply to this message
тесты можно(нужно) писать на fift, просто в toncli придумали их писать на func
05:06
ИК
05:06
Игорь Коняхин
Я пока ещё не успел разобраться в том как оно работает. Я в том смысле, что там предоставлен полный набор, который также будет тестироваться и для официальных результатов или лишь небольшая выборка?
c
05:07
cryshado
In reply to this message
там просто по приколу, как я понял)
05:07
официальных тетов нет нигде для контеста вроде
ИК
05:07
Игорь Коняхин
Это как раз был мой следующий вопрос: для всех других заданий, я так понимаю, тестировать нужно целиком самому?
c
05:08
cryshado
In reply to this message
да, task-1-playground это сам по себе не понятный прекол, который ток запутывает(его вообще не тф делали, а disintar если посмотреть)
ИК
05:09
Игорь Коняхин
Ну ссылка на task-1-playground есть с официальной страницы соревнования: https://github.com/ton-blockchain/func-contest1 (почти в самом низу)
c
05:10
cryshado
In reply to this message
Ну лучше бы показали как ручками фифт юзать, просто это уже было готовое видимо
05:10
Как мне кажется это только все запутывает
ИК
05:14
Игорь Коняхин
Относительно запутывания, тут в чате много раз промелькивало, что для контеста не нужно деплоить контракты?
А как их тогда тестировать?
c
05:16
cryshado
In reply to this message
Через фифт локально запускать твм, но я думаю для финальных ручных тестов все таки можно задеплоить
05:16
Просто нужно и тесты писать, и деплой скрипты на фифте)
ИК
05:18
Игорь Коняхин
Чувствую, предстоит ещё немало изучить)
?H
05:22
💎Saito Hatsune
А представь сколько мне, как новичку изучать

Легче купить петлю на Disintar и мыло, поставить в эту виртуальную комнату и виртуально повеситься.
05:23
XD
, сори за оффтоп
EM
05:31
Elon Musk
Кто-то знает, как обернуть тестовый тонкоин, чтобы заюзать мост eth-ton? Вообще не вдупляю как это работает
AT
07:34
Andrey Tvorozhkov
In reply to this message
Это не совсем так.

Toncli рекомендуем не только мы, но и другие люди.

Если говорить в рамках контеста я не знаю как люди запускают тесты без тонкли и считают газ. Это довольно сложная штука. И run_tests у нас очень круто прокачен. Разные вербоузы, func синтаксис. Короче, прям конфетка.

Если говорить просто про жизнь - я не знаю как удобно разрабатывать без тонкли. Оно делает много хорошего. Позволяет деплоить контракт одной командой, позволяет отправить internal сообщения фифтом в одну команду и так далее.

Сейчас оно довольно стабильное. Все баги которые сабмитятся сюда - исправляются.

Плюс оно имеет поддержку винды. Короче приколов много.
07:39
In reply to this message
Не задеплоился. Есть два контракта кошелька. Один - кошелёк деплоера. Он внутри тонкли лежит и баланс в 2 тона показывает как раз на нем. Этот кошелек нужен для упрощения деплой и работы. С него будут отправляться интернал сообщениям и с него будут отправляться деньги для инициализации новых контрактов.

Для решения вашей проблемы просто задеплойте сначала контракт, а только потом запрашивайте гет методы
07:41
In reply to this message
Все правильно
07:43
In reply to this message
В чем непонятность?
07:45
In reply to this message
Смотрите, деплоить ничего никуда не нужно. Плейграунд как раз служит примером. Если идти по докам - то вы запустите run_tests эта штука локально запускает функции смарт контракта и потом проверяет результат их работы. Утверждается что этого достаточно для контеста.
07:50
In reply to this message
В дополнение к этому - есть очень подробная документация внутри тонкли. И про тесты и про все. Прочитайте, если интересно как это внутри работает.
AP
09:17
Andrey Pfau
In reply to this message
без разницы, плагин под любую IDE от JetBrains
EG
10:52
Egor Georgievskii
In reply to this message
Никто не знает что может помочь? Кроме как на другой оси пробовать
AT
10:53
Andrey Tvorozhkov
In reply to this message
Положите содержимое AppData\Local\toncli\toncli\fift-libs в папку с проектом
10:53
Говорили такое вроде помогает
10:54
Проблема в виндовых путях и fift.exe

Возможно это можно починить, но я не знаю как. А у меня на винде (x2) работает
EG
10:54
Egor Georgievskii
Спасибо я попробую
O
12:25
Or
Привет!
Кто-нибудь пробовал развернуть контракты NFT?
AP
12:28
Andrew Python
In reply to this message
@disintar пробовал 😅
O
12:34
Or
In reply to this message
Я ищу fift deployment script
12:35
Вы знаете, где я могу найти его?
ИМ
12:36
Илья Михеев
очень сомневаюсь что можно просто найти fift скрипт и с ним создать NFT
O
12:38
Or
In reply to this message
Я ищу репозиторий GitHub с файлами fc и fift, пример коллекции NFT
DK
13:18
Dan Kamilov
всем привет. та либа Tonlib она на tonweb надстройка для работы на java?
DK
13:40
Dan Kamilov
и еще вопрос в tonweb
13:50
вот publicKey и secretKey где взять? как для существующего кошеля получить
TP
13:55
Tim Pavlov
In reply to this message
Так сохрани в конфиге где-то существующие
13:55
И оттуда читай
DK
14:03
Dan Kamilov
In reply to this message
в случае если есть адрес кошелька и секретная фраза, то какими методами (видимо через nacl) их сгенерить в tonweb ?
TP
14:08
Tim Pavlov
In reply to this message
Всмысле сгенерировать, если они уже есть?
DK
14:10
Dan Kamilov
In reply to this message
ок, значит я не шарю совсем). В случае генерации нового кошеля с новой секретной фразой я понял. Для существующего (например созданного в TonKeeper) где их взять?
TP
14:11
Tim Pavlov
In reply to this message
Ключи в самом tonkeeper-е возьми. Приватный можно экспортировать, по идее. Не знаю, с tonkeeper-ом не работал
AP
14:12
Andrew Python
In reply to this message
Для существующего (созданного в приложении кошелька) есть библиотека tonweb-mnemonic
DK
14:13
Dan Kamilov
In reply to this message
как я понял

const keyPair = await tonMnemonic.mnemonicToKeyPair(mnemonic);

это мне даст ключи по моей секретной фразе да?
Н
14:14
Никита
In reply to this message
Если я хочу реализовать возможность перевода с кошелька пользователя моего приложения/телеграм бота, ему необходимо будет вводить секретный ключ своего кошелька для совершения перевода?
г
14:17
главный человек на базаре
Мужики, кто-нибудь разобрался с минтом? Кнопка Create NFT просто отказывается создавать NFT😕
ИМ
14:17
Илья Михеев
Вы про disintar?
г
14:18
главный человек на базаре
Нет, я сам пишу и что-то не выходит. Видел на гитхабе, что не только у меня такая проблема
O
14:18
Or
In reply to this message
у меня та же проблема
P
14:23
Placeholder
In reply to this message
Я не разработчик, но предполагаю, что это для того, чтобы была возможность создать более чем один кошелек с одинаковым приватным и ключом и при этом исключить replay attack
TP
14:26
Tim Pavlov
In reply to this message
Там потом так и ответили)
ИК
14:26
Игорь Коняхин
In reply to this message
Так будет работать, но будет небезопасно, так как секретный ключ даёт тебе полный доступ к кошельку пользователя.
По хорошему, пользователь должен подписывать транзакцию у себя локально.
В приложении это можно запрогать, а для Телеграмм бота вроде бы не получится
TP
14:27
Tim Pavlov
In reply to this message
Так есть же в кошельках функция доступа для различных проектов. Может в этом направлении есть? Когда вы на DEX нажимаете привязать метамаса, он же не отдает приватный ключ. Тут как в OAuth. Глянь а этом направлении
ИК
14:28
Игорь Коняхин
In reply to this message
Спасибо за разъяснения!
Буду изучать
14:32
In reply to this message
Стоп.
Разве с одним приватным ключом вообще может быть как-то связано два кошелька?
Один приватный ключ = один публичный, а один публичный = один адрес куда пересылать деньги = один кошелёк
P
14:33
Placeholder
In reply to this message
Контракты могут отличаться. Адрес — не просто хэш от публичного ключа.
AT
14:33
Andrey Tvorozhkov
In reply to this message
Может. Смарт контракт это обычная программа, просто работающая по специальным правилам.

Вы можете написать 2 независимые программы работающие на 1 публичном ключе
14:34
In reply to this message
Адрес смарт контракта это хэш StateInit куда входит не только клетка с данными, но и библиотеки и код
ИК
15:10
Игорь Коняхин
Кажется понял
Выходит, в ТОН можно сгенерировать только одну пару приватный/публичный ключ, затем переиспользовать её для всех смарт контрактов и, если начальный код+данные будут разными, то и адреса получатся разными
15:12
In reply to this message
И чтобы задеплоить один контракт на один и тот же публичный ключ, но получить другой адрес, нужно, чтобы разными были данные - для этого вводится stored_subwallet
15:14
Ну а проверка нужна для того, чтобы транзакцию снятия денег c одного такого кошелька нельзя было в точности переслать на другой кошелёк с тем же публичным ключом
VK
15:32
Vladislav Kibenko
In reply to this message
Возможно это пригодится

https://gist.github.com/wolframdeus/2ca2812ad85de5faf33e425d28fb2996
DK
15:35
Dan Kamilov
In reply to this message
супер сейчас попробую. В целом довольно просто реализовывается отправка на кошелек, но вот с генерацией секретного ключа застрял пока, т.к ТонКипер его не дает)
VK
15:36
Vladislav Kibenko
In reply to this message
Мнемонику (24 слова) не помните?
TP
15:36
Tim Pavlov
а есть пример какой-то как вручную задать какой-то адрес в func? почему они кстати 48-байтовые?
DK
15:36
Dan Kamilov
мнемоника есть, ключ что-то генерится не тот
15:36
сейчас по вашему примеру нагенерю еще раз
VK
15:36
Vladislav Kibenko
In reply to this message
В пример который я кинул их вставить попробуйте и не забудьте потестить на разных версиях кошелька
T
15:40
TON Дев Чат
In reply to this message
Если не для конкурса, то есть такая ветка funC
https://github.com/newton-blockchain/ton/tree/func-constants
Соответственно, там можно вот так адреса литералами записывать
https://github.com/starlightduck/docs/commit/fd724c49067969a6ddcef30967502fa70036e9b4

А в целом надо брать tl-b схему адреса https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb#L105 и руками сериализовать
DK
15:40
Dan Kamilov
In reply to this message
оно генерит все, но адрес кошеля по мнемонике другой получается.

как это может быть?

Если в тонкипере ввожу мнемонику, то заходит на нужный адрес, а код выдает другой адрес.
15:41
мнемонику ведь просто вводить по порядку от 1 до 24 верно в массив?
AT
15:41
Andrey Tvorozhkov
In reply to this message
В тоне бывает 4 разных хэша на один RAW адрес)
VK
15:41
Vladislav Kibenko
In reply to this message
Версии кошелька разные пробуете?
DK
15:41
Dan Kamilov
In reply to this message
вот тут я не знаю как пробовать разные версии?
15:41
In reply to this message
как разные хеши получить?

то есть транзакция не проходит почему-то
VK
15:41
Vladislav Kibenko
In reply to this message
image_2022-03-31_17-41-53.png
Not included, change data exporting settings to download.
6.2 KB
Там другие версии есть
TP
15:42
Tim Pavlov
In reply to this message
спасибо большое
VK
15:42
Vladislav Kibenko
In reply to this message
image_2022-03-31_17-42-45.png
Not included, change data exporting settings to download.
3.0 KB
Вот список кошельков, если не ошибаюсь. Попробуйте 3-4+
DK
15:49
Dan Kamilov
In reply to this message
так, попробовал все) на все выдает адреса, но ни один не сходится с тем что ТонКипер дает)
VK
15:50
Vladislav Kibenko
Значит на каком-то этапе что-то не так делаете. Тут сложно ещё что-то подсказать. Как давно кошелек создавали?
DK
15:50
Dan Kamilov
In reply to this message
тут по адресу выдает
bounceable": {
"b64":
"b64url":

оба моих адреса, по адресу который вбил
15:51
In reply to this message
пару недель назад, на нем для теста 3 Тонкоина валяется. И если я кошель подключаю в коде через адрес кошелька, то он видит эти 3 ТонКоина, но тогда вопрос как сгенерить секретный ключ для отправки этих коинов куда-то еще, т.к видимо транзакция не проходит изза неверного секретного ключа
15:56
In reply to this message
и кстати если подключение делаю не через public_key а через address, то он видит баланс и тд нормально на любой версии кошелька.

может быть мнемонику надо не от 1 до 24, как -то в другом порядке в массиве держать?
VK
15:57
Vladislav Kibenko
Точно в верном порядке слова вбиваете?
T
15:58
TON Дев Чат
In reply to this message
попробуйте ту же мнемонику в wallet.ton.org вбить (он юзает tonweb-mnemonic). Даст правильный адрес? Если даст, то неверно юзаете мнемонику вы, если нет - то в чем-то еще проблемы.
DK
15:58
Dan Kamilov
да от 1 до 24

и вопрос еще чем отличается

const keyPair = await tonMnemonic.mnemonicToKeyPair(mnemonic);

от

const seed = await tonMnemonic.mnemonicToSeed(mnemonic);

const keyPair = TonWeb.utils.nacl.sign.keyPair.fromSeed(seed);
15:58
In reply to this message
попробую сейчас, спасибо
16:03
In reply to this message
это смешно, но wallet.ton.org выдает верный адрес, а эта же мнемоника в коде, в случае создания кошеля через public_key - неверный)
T
16:04
TON Дев Чат
In reply to this message
ну код wallet.ton.org открытый, стоит воспроизвести все шаги оттуда и найти различия.
ИК
16:09
Игорь Коняхин
() recv_internal (int balance, int msg_value, cell in_msg_full, slice in_msg_body)


Я ведь правильно понимаю, что количество пересылаемых тонов является свойством (int msg_value) любой internal транзакции и хранится вне текста сообщения (cell in_msg_full, slice in_msg_body)?

Благодаря этому, любые контракты кошельков, написанных разными разработчиками, могут пересылать друг другу деньги без дополнительных требований совместимости. Так?
T
16:11
TON Дев Чат
In reply to this message
msg_value хранится в хэдере сообщения, а именно в in_msg_full. Можно, в целом, распарсить его и оттуда достать значение.
Тут чуть больше инфы https://ton.org/docs/#/smart-contracts/messages
16:12
Но поскольку формат хэдера строго определен никаких требований совместимости не появляется: в любом валидном сообщении msg_value в строго определенном месте.
ИК
16:13
Игорь Коняхин
Понял
А in_msg_body - это ведь кусок in_msg_full, а дан он нам отдельным параметром чисто для удобства?
TP
16:15
Tim Pavlov
как работать со списком action-ов из c5 регистра? в каком виде они там содержатся?
A
16:21
Andrei
In reply to this message
в виде цепочки из ячеек. В первом рефе очередной ячейки продолжение цепочки
TP
16:22
Tim Pavlov
а сам action какую форму имеет? что содержит в себе сама ячейка?
A
16:22
Andrei
В самой ячейке идет тег, определяющий тип действия, затем его параметры (например, для send_raw_message это 8 бит на mode и само сообщение в отдельном рефе)
AT
16:24
Andrey Tvorozhkov
In reply to this message
👀 вау) ты вернулся)
A
16:25
Andrei
In reply to this message
🙃
TP
16:25
Tim Pavlov
In reply to this message
есть ссылка на TL-B action-а?
16:26
вот, искал как раз
TP
16:26
Tim Pavlov
In reply to this message
спасибо большое
AT
16:28
Andrey Tvorozhkov
In reply to this message
Вау, сет код это тоже экшн
16:29
Вот это я тесты накатаю на дисинтар
A
16:29
Andrei
In reply to this message
Ну да. Он меняет код только после вычислений. Есть set_c3, который грубо говоря меняет "текущий" код
16:30
Ну точнее просто словарик с айдишниками функций
AT
16:30
Andrey Tvorozhkov
In reply to this message
16:30
Я дэлаю так
A
16:31
Andrei
ну тут зависит от того, что дальше написано)
16:32
вообще видимо предполагается делать что-то вроде
on_code_upgrade();
throw(0);

где у первой штуки задан вручную айдишник
16:32
после set_c3
AT
16:32
Andrey Tvorozhkov
In reply to this message
Забавно. Но это же, видимо, никак не проверить на выходе runvmx?
A
16:32
Andrei
Видимо да
AT
16:33
Andrey Tvorozhkov
Я вот думаю начать контрибьютить в фифт
16:33
Пока записываю что хотелось бы)
A
16:33
Andrei
In reply to this message
AT
16:33
Andrey Tvorozhkov
Да, я туда и смотрел)
16:33
Прикольная штука
16:34
Но черт ногу сломит
A
16:34
Andrei
In reply to this message
Ну там в c3 лежит континуэйшн, он вообще говоря может и не словариком быть
16:35
Можно сделать так, что имена функций при каждом вызове циклически сдвигаются)
16:36
Кстати норм бы было такие веселые штуки в контест добавить)
AT
16:36
Andrey Tvorozhkov
In reply to this message
Мне кажется точно не в первый)
16:36
Ребятам и так сложно))
DK
17:08
Dan Kamilov
In reply to this message
спасибо за помощь.

один раз получилось дать транзакцию.

теперь выходит

node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "Incorrect address".] {
code: 'ERR_UNHANDLED_REJECTION'
}


С чем может быть связана данная ошибка? вылетает на await query.send(); отправке трансфер запроса
AP
17:24
Andrew Python
In reply to this message
Четвёртое-пятое задания хорошие даже для не самых новичков
AT
17:25
Andrey Tvorozhkov
In reply to this message
Я бы с удовольствием порешал, но пока не было времени :(
17:25
Мб на выходных 🤔
AP
17:26
Andrew Python
In reply to this message
Начинай сразу с пятого) я код контракта написал, а на следующий день открыл и не понял свой же код)
DK
18:42
Dan Kamilov
За сколько транзакция проходит?
AZ
18:45
Anton Zlobin
In reply to this message
Добавьте .catch(console.err)
То что вы видите просто говорит о непойманной ошибке
O
19:05
Or
In reply to this message
когда я проверил код NFT, он был не таким, как в репозитории Github.
VK
19:24
Vudi Kingyru
In reply to this message
Логично) это же стандарт
O
19:25
Or
In reply to this message
так где я могу найти контракты, которые они использовали?
AT
19:25
Andrey Tvorozhkov
In reply to this message
Нигде, они закрытые
19:25
Скоро опубликуем
c
19:26
cryshado
In reply to this message
гнёт
AT
19:26
Andrey Tvorozhkov
Ну есть люди которые уже их получили из ассемблера)
19:26
In reply to this message
Лучше так, проверить все 100 раз, чем что-то кто-то взломает
O
19:27
Or
Но почему они не использовали стандарт?
AT
19:27
Andrey Tvorozhkov
Мы опубликуем контракты сразу с тестами
19:27
In reply to this message
Всмысле? Оно все совместимо со стандартом
19:27
Даже с новыми изменениями 🤫
AP
19:28
Andrew Python
In reply to this message
Стандарт != Стандартный код
O
19:29
Or
In reply to this message
Возможно из-за новых изменений я не могу проверить код
AT
19:29
Andrey Tvorozhkov
In reply to this message
Что значит проверить?)
O
19:29
Or
In reply to this message
AT
19:30
Andrey Tvorozhkov
In reply to this message
.
DV
20:15
Dan Volkov
А где сейчас можно достать брендированные ассеты?
20:15
раньше на сайте можно было скачать разные иконки
V
20:30
Vitaly
По поводу NFT, пытаюсь переложить свои небольшие знания солидити

Вот есть стандарт и есть пример СК nft на гитхабе.

Если я допустим хочу сделать NFT в котором будет дополнительное кастомное свойство, чтобы в другом СК его прочитать и как-то отреагировать - как это предполагается делать?

В солидити ты просто импортируешь стандарт и вызываешь/оверрайдишь функции, как в обычном ООП языке, проще разобраться.
c
20:32
cryshado
In reply to this message
Стандарт != стандартный код, все равно все реализацию нфт пишут свою и «готовых библиотек», как в солидити нет
V
20:32
Vitaly
In reply to this message
ага, окей, это я могу, пример поменять
20:32
жаль конечно что в фунЦ нет стандартных библиотек
20:33
было бы намного удобнее, да и проверять наверно со стороны контракты было бы проще
c
20:33
cryshado
In reply to this message
FunC довольно молодой, еще и довольно язык низкого уровня
V
20:34
Vitaly
да я заметил :D
DV
20:46
Dan Volkov
Кстати, мы сейчас ведем работу над мощным расширением для VS Code для FunC

Сейчас работает подсветка и автокомплиты из stdlib (на данный момент не контекстные)

https://marketplace.visualstudio.com/items?itemName=tonwhales.func-vscode
c
20:46
cryshado
In reply to this message
Ооооо круто
20:47
Надеюсь сможете догнать по функционалу плагин для иде
DV
20:48
Dan Volkov
In reply to this message
а что там есть?
20:48
кроме подсветки
AP
20:53
Andrey Pfau
In reply to this message
DV
20:53
Dan Volkov
In reply to this message
🙏
AP
21:08
Andrew Python
In reply to this message
Тоже что-ли сделать плагин.... Для nano
c
21:13
cryshado
In reply to this message
fift и tl-b, референсы, подсказки, проверка типов и т д
CP
21:14
Catchain Protocol
ждём плагин для windows блокнота
JF
22:09
John Fyodor
In reply to this message
Для notepad++
22:10
И для вима
AP
22:10
Andrew Python
In reply to this message
Для вима я где-то видел
JF
22:10
John Fyodor
🥲🥲🥲
c
22:10
cryshado
In reply to this message
есть
22:10
причем очень хороший
JF
22:10
John Fyodor
In reply to this message
Это ловушка
c
22:10
cryshado
JF
22:11
John Fyodor
Ты заходишь в вим, чтобы оценить плагин, и не можешь из него выйти
22:11
И всю жизнь пишешь код на фанке
c
22:11
cryshado
ор
AP
22:11
Andrew Python
In reply to this message
Почему он в доке не упоминается?)
c
22:11
cryshado
In reply to this message
в какой
AP
22:12
Andrew Python
In reply to this message
Ton.org/docs там вроде остальные плагины есть
c
22:12
cryshado
спросите енотов хз
22:12
In reply to this message
я юзаю чтобы быстро в консоле смотреть какие то func файлы, очень удобно так то
SF
22:12
Slava Fomin
In reply to this message
В payload можно положить как текстовый комментарий, так и бинарные данные. А в чём именно сложность?
М
22:33
Марат
V
23:23
Vitaly
а как сменить tonwallet на тестнет и получить на него ton?
TP
23:24
Tim Pavlov
In reply to this message
надо зайти на страницу в вебе с параметром ?testnet=1
23:25
а получить можно через бота, ему свой адрес дать и все. ссылка на бота есть в ton-доках
V
23:25
Vitaly
In reply to this message
на какую страницу?
TP
23:25
Tim Pavlov
In reply to this message
V
23:25
Vitaly
а, а расширение как на это переключить?
TP
23:26
Tim Pavlov
пока никак, я такой кнопки не нашел по крайней мере, только через браузер пока, кажется, можно
V
23:26
Vitaly
я просто пытаюсь разобраться с NFT веб примером, а он-то с расширением работает
V
23:27
V O
Всем привет! Если здесь есть свободные в данный момент разработчики в сети ton, напишите пж в личку. Есть пара проектов, может быть где-то будем интересны друг другу)
TP
23:29
Tim Pavlov
In reply to this message
https://chrome.google.com/webstore/detail/free-ton-wallet-for-devel/akcphkffgohbehfpkkmlpfaecdohdfdo
ну вот нашел какой-то кошель, там вроде есть фича с переходом на Testnet
V
23:29
Vitaly
In reply to this message
у этих ребят даже сайт не открывается
23:29
падазрительна
TP
23:30
Tim Pavlov
ну попробуй какие-то тестовые логины пароли, для тестнета сойдет, главное чтоб работал
23:30
а уже для мэйна можно и обычный кошелек использовать
V
23:30
Vitaly
ну это да
23:30
а, нет, что я несу
23:30
экзампл то работает с экстеншном официальным
23:31
как я понимаю
TP
23:36
Tim Pavlov
такой вопрос, имеет смысл в смарт-контракте проверять если адрес отправителя сообщения нужного типа или это нода сама сделает?
Hz
23:48
H z
Здравствуйте! у кого получилось 1 файл сделать правильно ?
1 April 2022
V
00:26
Vitaly
In reply to this message
узнал
00:26
Required version 1.1.35+

Click menu in right-top corner -> About

Click on "Version:" with shift key pressed
TP
00:26
Tim Pavlov
дает доступ в Testnet?
V
00:30
Vitaly
In reply to this message
переколючает ton wallet на testnet
TP
00:30
Tim Pavlov
ну отлично
V
00:30
Vitaly
а бот долго деньги на кошелёк даёт?
TP
00:30
Tim Pavlov
не, быстро
V
00:31
Vitaly
о, и правда
TP
00:41
Tim Pavlov
а тут вообще можно задавать вопросы по условиям контеста? типа если не очень их понял
ВК
01:45
Вика Купила TON в 2021
In reply to this message
Это чат для разработчиков…
TP
01:45
Tim Pavlov
In reply to this message
ну да, просто сюда люди и по контестам зашли, в том числе и я, вот и спрашиваю
ИК
04:28
Игорь Коняхин
Разбираюсь в стандартных контрактах
Сейчас читал restricted-wallet-code.fc
(https://github.com/newton-blockchain/ton/blob/master/crypto/smartcont/restricted-wallet-code.fc)

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

1) Во-первых, в чём вообще замысел этого контракта?
2.1) config_param(-13) - насколько я понял из описания параметров, валидаторы, общим голосованием могут записать в отрицательные параметры вообще что угодно. Я верно понимаю?
2.2) Описания в TL-B схемах -13 параметра, соответственно, нет. Что вообще там планируется?
3)
ifnot (msg_seqno) {
accept_message();

Типа самое первое сообщение принять даже до проверки подписи? Почему?
4)
var elector = config_param(1).begin_parse().preload_uint(256);

Я пока ещё не успел разобраться в механизмом валидаторов, но, насколько я понял, тут получается адрес смарт-контракта электора, и деньги, если restricted, можно переводить только на него. Я верно понимаю? Но зачем?
ИК
05:14
Игорь Коняхин
❓Вопрос по toncli: я правильно понимаю, что каждый тест состоит из двух функций: "запускателя" и "проверятеля", которые связаны только тем, что запускатель имеет такое же имя с суффиксом _data?
Например,
jkalfdjqwer
jkalfdjqwer_data
05:16
Нет возможности тестировать цепочки событий?
Например:
- Отослать сообщение
- Проверить
- Отослать другое сообщение
- Снова проверить
- Отослать третье сообщение
- Снова проверить
и т.д.
TP
05:17
Tim Pavlov
In reply to this message
можно
ИК
05:18
Игорь Коняхин
Для четвёртого и пятого задания, тесты цепочек точно были бы очень актуальны:)
TP
05:21
Tim Pavlov
такой вопрос: у меня if в func с условием, когда условие срабатывает он должен делать то, что внутри if-а. В выходном fift я вижу, что при срабатывании if-а, после инструкции IFJMP он делает BLKDROP и выходит с функции. С чем это может быть связано?
ИК
05:23
Игорь Коняхин
In reply to this message
А как?
TP
05:25
Tim Pavlov
In reply to this message
извини, я бы постарался что-то разобрать, но боюсь что обсуждать задачи контеста нельзя
ИК
05:26
Игорь Коняхин
Ну это вопрос по toncli и не относится конкретно к контесту
05:26
Я 99% уверен, что вопрос допустим, но можно подождать до официального ответа
TP
05:27
Tim Pavlov
давай лучше так
ИК
05:46
Игорь Коняхин
In reply to this message
Пришлось пару раз перечитать, но кажется осознал.
Я просто шёл по Quick Start Guide, и я думал, что, как там написано
toncli deploy -n testnet

уже задеплоило мой контракт, а оно, похоже, в первый раз автоматически создало контракт деплоера, вернее, лишь подсчитало адрес, а инициировать контракт деплоера и задеплоить непосредственно мой контракт оно сразу не могло, так как на нём не было денег. Я вчера кинул на него денег, но не догадался повторно вызвать деплой.
Сейчас повторно вызвал деплой, он сработал, и теперь
toncli get hello_world

работает:)
Для понимания: я верно описал, что происходит?
AT
07:42
Andrey Tvorozhkov
In reply to this message
+- да.

Когда первый раз пишешь деплой он создает один кошелек тонкли, (создает папку и считает адрес)

Потом просит туда отправить деньги.

Потом нужно ещё раз написать деплой. И тогда кошелек тонкли реально задеплоился (т.к. будут деньги на смарте). И задеплоился тот контракт который в папке.

Так происходит только в первый раз. Дальше все автоматически отсылается с кошелька тонкли на контракты, которые хочется деплоить.
07:45
In reply to this message
_data ни на что не влияет. Влияет чётность method_id
07:45
Возможно стоит почитать advanced Доку по тестам в тонкли, там все описано
07:46
In reply to this message
Сейчас это можно сделать запуская функцию «с4 после прошлого теста»
P
08:20
Pepeg
Всем привет, get_data() ведь не меняет состояние хранилища, т.е. мне не обязательно каждый раз сохранять его, если я явно не хочу другие данные туда загрузить?
AT
08:24
Andrey Tvorozhkov
In reply to this message
Не меняет
08:24
In reply to this message
Get_data просто кладет на стек c4 :)
P
08:25
Pepeg
окей, спасибо)
P
12:41
Placeholder
отправляемые методом сообщения кладутся в регистр c5? В каком виде они там хранятся? Можно как-то протестить, что сохранилось то, что ожидалось?
AT
12:42
Andrey Tvorozhkov
In reply to this message
поищите по чату, уже отвечали)
DT
13:43
Dmitry Tarasov
Всем привет!
Хочу настроить прием TON на сайт, встал вопрос подтверждения транзакции, не вижу в explorer’ах где можно увидеть кол-во подтверждения транзакции.

Я впервые пытаюсь настроить прием криптовалюты, может где-то ошибаюсь, за любую помощь заранее спасибо!!!
AP
13:46
Andrey Pfau
подтверждение транзакций - это сколько блоков сгенерировалось после, то есть надо просто смотреть в каком блоке транзакция, запомнить ее номер и потом просто запрашивать каждый раз последний блок и вычитать из его номера тот номер блока, в котором наша транзакция
TP
13:53
Tim Pavlov
такой вопрос: у меня if в func с условием, когда условие срабатывает он должен делать то, что внутри if-а. В выходном fift я вижу, что при срабатывании if-а, после инструкции IFJMP он делает BLKDROP и выходит с функции. С чем это может быть связано?
DT
13:54
Dmitry Tarasov
In reply to this message
Спасибо, а где можно про это подробнее почитать.
Потому что вроде как понятно, но не понятно как это все реализовать.
SF
13:56
Slava Fomin
In reply to this message
В сети TON конфирмация блоков не требуется. Достаточно фиксации транзакции в БЧ, т. е. одного блока.
AP
13:56
Andrey Pfau
In reply to this message
confirm_count = last_block_id - transaction.block_id
DT
13:58
Dmitry Tarasov
In reply to this message
каким образом тогда засчитывать транзакцию ?
Просто если она существует, значит можно подвердить ?
13:59
In reply to this message
а какой экплорер дает необходимый api чтобы это осуществить ?
SF
13:59
Slava Fomin
In reply to this message
Достаточно убедиться, что транзакция отобразилась в БЧ.
AP
14:00
Andrey Pfau
In reply to this message
SF
14:00
Slava Fomin
In reply to this message
Для этого не нужен эксплорер. Можно использовать JS-библиотеку.
14:00
In reply to this message
Вот пример готового кода:

(для одного кошелька)
https://github.com/toncenter/examples/blob/main/deposits-single-wallet.js

(для множества кошельков)
https://github.com/toncenter/examples/blob/main/deposits-multi-wallet.js
DT
14:34
Dmitry Tarasov
In reply to this message
А есть что-то подобное для php ?

Чёт не смог у данного автора найти.
ИМ
14:34
Илья Михеев
In reply to this message
очень сомневаюсь что появится под php
SF
14:36
Slava Fomin
А я думал на PHP только Wordpress сейчас )
ИК
14:36
Игорь Коняхин
In reply to this message
Благодарю!
Почитаю advanced документацию
SF
14:37
Slava Fomin
In reply to this message
Можно сделать микросервис на Node.js и интегрировать с PHP.
ИК
14:39
Игорь Коняхин
In reply to this message
Вопросы про restricted-wallet-code ещё актуальны
DT
14:40
Dmitry Tarasov
In reply to this message
это все мифы)
SF
14:44
Slava Fomin
In reply to this message
Советую присмотреться к TypeScript. В рамках TON-а это довольно перспективное направление.
DT
14:46
Dmitry Tarasov
In reply to this message
Спасибо!

А если таким способом сделать
confirm_count = last_block_id - transaction.block_id
Какие проблемы могут быть ?

В других блокчейнах например usdttrc20, каким образом подверждают транзакции ?
SF
14:47
Slava Fomin
In reply to this message
А зачем Вам это нужно?
DT
14:48
Dmitry Tarasov
In reply to this message
Принимать платежи от пользователей
AP
14:50
Andrey Pfau
In reply to this message
Не нужно подтверждать транзакции в тоне
14:50
Если они есть в блокчейне - значит они уже валидные
14:50
Достаточно просто проверять что сумма от пользователя поступила на кошелек
SF
14:52
Slava Fomin
Всё верно. Я об этом уже написал выше и даже официальный код примера скинул как фиксировать транзакции )
DT
14:52
Dmitry Tarasov
In reply to this message
а как идентифицировать транзакцию ?
Что именно эта относится к этой ? Только путем сверки суммы ?
Мне нужно пользователю начислить баланс
AP
14:53
Andrey Pfau
1.Либо в комментарии к транзакции чтобы пользователь написал код какой нибуть
2. либо генерируете кошелек для каждой отдельной транзакции
AP
14:54
Andrey Pfau
3.Либо просите пользователя указать свой кошелек чтобы сверять
14:54
Обычно пользуются 1 и 3 способом
DT
14:54
Dmitry Tarasov
In reply to this message
да это я уже почитал и там все классно)))
Но только на другом языке)
AP
14:55
Andrey Pfau
In reply to this message
А в чем проблема написать под свой язык?
SF
14:55
Slava Fomin
In reply to this message
Тогда рекомендую обратить внимание на английский язык, тоже очень перспективное направление 😁
14:59
Есть еще вариант для сильных духом — можно взять библиотеку tonlib на C++ и сделать для неё байндинги на PHP.
AP
15:00
Andrey Pfau
In reply to this message
Это кстати самый оптимальный вариант для php
SF
15:00
Slava Fomin
Это точно оптимальнее, чем с нуля писать реализацию на PHP. Хотя я бы сделал микросервис на Node.js.
AP
15:01
Andrey Pfau
In reply to this message
А зачем микросервис когда есть тонцентр?
15:02
Плюс у него открытая репа, можно свой локально поднять а докере
SF
15:02
Slava Fomin
In reply to this message
В ТонЦентр нужно еще сформировать запрос, с нуля на PHP это сделать будет не так просто.
AP
15:03
Andrey Pfau
In reply to this message
А в чем проблема и чем это будет отличаться от микросервиса на ноджс?
SF
15:03
Slava Fomin
В Node.js можно использовать TonWeb, где уже многое реализовано и есть готовые примеры.
AP
15:03
Andrey Pfau
Что там что там будут запросы по http
15:03
Типо зачем костыли ещё одни делать
15:04
Юзать тонцентр будет гораздо практичнее чем писать биндинги к нативному тонлиб
SF
15:05
Slava Fomin
Тогда придётся писать все примитивы на PHP с нуля.
AP
15:06
Andrey Pfau
Это дело 30 минут, не нужно давать вредные советы
ВК
15:06
Вика Купила TON в 2021
In reply to this message
Лучше питон 🐍
AP
15:06
Andrey Pfau
In reply to this message
Лучше котлин 🐱
А
15:08
Артем
Kotlin + Spring😍
SF
15:08
Slava Fomin
In reply to this message
Если речь идёт только о том, чтобы получить список транзакций из БЧ, то да. А если нужно деплоить контракты, генерировать адреса и т. д., то нет.
AT
15:23
Andrey Tvorozhkov
In reply to this message
Я сейчас хочу её немного для питона прокачать)
15:23
Чтобы совсем по красоте)
С
15:25
СА
Какие перспективы у тона(цена монеты), и какая технологическая начинка, которая будет пользоваться спросом по вашему мнению , что есть у Тон перед другими альтами?
15:25
Вы парни тут технически грамотные
F
15:27
F
In reply to this message
Вы скорее всего ошиблись чатом, вам сюда: @toncoin_rus_chat
В данном чате обсуждаются только технические вопросы. Все остальные вопросы включая цены - мимо
Технологическая начинка: ton.org/docs
AP
15:28
Andrey Pfau
Video file
Not included, change data exporting settings to download.
00:34, 820.8 KB
ИМ
15:28
Илья Михеев
In reply to this message
Суперская переделка)
VL
15:29
Vladimir Lebedev
In reply to this message
А где фуньк? Когда тон начнёт популяризироваться в тиктоке? 🤔
AP
15:30
Andrey Pfau
Пока нельзя взаимодействовать с сокетами он туда не попадет((9(9(
VL
15:30
Vladimir Lebedev
In reply to this message
Через оракулов можно
M
15:31
Mарсель Дюшан
In reply to this message
а че последнее?
AP
15:32
Andrey Pfau
In reply to this message
1c
A
15:35
Alex
Я на 1С кодю) очень трудно после него в fift
ИК
15:38
Игорь Коняхин
In reply to this message
Ну на fift после всего трудно:)
A
15:40
Alex
In reply to this message
я бы даже сказал БОЛЬНО))
AP
15:57
Andrey Pfau
А
15:58
Артем
-глаза
TP
15:58
Tim Pavlov
In reply to this message
ты наверное себя таким интеллигентом чувствуешь с таким шрифтом)
AP
16:05
Andrew Python
In reply to this message
Что-то на эльфийском
AP
16:05
Andrey Pfau
In reply to this message
ну да жабьи скрипты они такие
TP
16:12
Tim Pavlov
можно вообще из recv_internal писать explicit return? пишу, а мне в фифте он пишет BLKDROP вместо нормально завершения. Из-за чего func компилятор может вообще вставлять эту инструкцию?
ИК
16:55
Игорь Коняхин
Я несколько раз перечитал, но так и не понял: что делает method_id?
Насколько я понял, обычный id методов:
crc16(<function_name>)

А method_id делает его
(crc16(<function_name>) & 0xffff) | 0x10000

т.е. добавляет бит 0x10000

Моё понимание:
а) Добавление бита 0x10000 - единственный эффект method_id
б) Бит 0x10000 - чисто "декоративный" - он даёт понять эксплоерам и другим программам, что данный метод надо показать в интерфейсе
в) Зачем нужно & 0xffff не понятно, так как ведь результат crc16 уже 16-битный, нет?
г) crc16 - 16 бит = 65 536 вариантов, т.е. немаловероятны коллизии. Значит ли это, что одни имена функций фактически "блокируют" другие имена?
AP
17:14
Andrey Pfau
In reply to this message
нет. (crc16(<function_name>) & 0xffff) | 0x10000 это поведение по умолчанию, если вы ставите method_id(число) то у него ID будет равен именно этому числу
T
17:16
TON Дев Чат
In reply to this message
Нет, без method_id во внутреннем словаре у функции будут последовательные индексы 1,2,3,4,5... . Это нестрашно, но если вам надо вызывать метод локально, то вам надо знать этот номер (и для разных версий контракта он может различаться), что неудобно. А когда вы ставите method_id id функции вычисляется из имени по формуле выше, т.е. вызывать локально этот метод можно просто зная имя (и у разныъ версий контракта все будет одинаково).
P
17:18
Pepeg
А в тестах как-то можно подписать слайс приватным ключом?
Если нет, то как можно хексдамп слайса достать?

#DEBUG#: s0 = CS{Cell{002b62470de9406080fa0000000000000000000000000004} bits: 0..173; refs: 0..0}

Я так понимаю это не оно
T
17:20
TON Дев Чат
In reply to this message
method_id полезен еще в одном случае, когда надо вызвать определенную функцию у неизвестного кода.
Например вы хотите обновить код контракта, но помимо собственно set_code хотите вызвать функцию миграции (которая например layout стораджа под новый код поменяет). Это представляет проблему, т.к. старый код должен вызвать функцию миграции из нового. а как? Например старый код говорит я вызову функцию с id 1666. И тогда на новый код просто ложится обязанность объявить функцию миграции с method_id(1666). Пример см здесь https://github.com/newton-blockchain/ton/blob/master/crypto/smartcont/elector-code.fc#L431
17:21
In reply to this message
Насколько мне помнится, на уровне funC тестов в toncli проблема считается нерешаемой. @tvorogme но Андрей подскажет точно.
AT
17:24
Andrey Tvorozhkov
In reply to this message
В тестах нельзя подписать слайс приватным ключем.

А про хекс дамп - просто десереализуйте клетку
17:26
Вот то что внутри Cell прогоните через десереализатор и получите нужный хекс
P
17:26
Pepeg
👍🏻
ИК
17:33
Игорь Коняхин
In reply to this message
Понял, спасибо!
Тогда получается, что описание в документации (https://ton.org/docs/#/func/functions) неправильное:

but get-methods of the contract are numbered by crc16 hashes of their name

неверно

method_id uses the default value (crc16(<function_name>) & 0xffff) | 0x10000

верно
17:35
Ещё такая путаница:
Ordinary functions are usually numbered by subsequent integers starting from 1, but get-methods of the contract are numbered by crc16 hashes of their name

А есть ли вообще разница "ordinary functions" и "get-methods"?
Я вот в коде контрактов не вижу никаких get-модификаторов, которые превращали бы функции в методы
A
17:36
Andrei
Разницы по сути нет, только семантическая: предполагается ли вызывать этот метод в лайт-клиенте по его имени. Трансляция имени в айдишник происходит именно по такому правилу
ИК
17:38
Игорь Коняхин
In reply to this message
Т.е. технически это одно и то же, но когда мы говорим "метод" подразумеваем, что это что-то, что будет вызываться извне, а "функция" - будет вызываться изнутри?
T
17:39
TON Дев Чат
In reply to this message
Скорее не предполагается, а удобно. Методы с method_id "удобно" вызывать извне.
A
17:39
Andrei
In reply to this message
Ну да, но тут ключевое слово именно "гет-метод" (из пейпера терминология идёт). А функции это все остальное, да.
17:39
Да, гет-методы можно и изнутри вызывать
ИК
17:40
Игорь Коняхин
Понял
Тут путаница из-за того, что в большинстве языков программирования "функция" и "метод" значат разные вещи
17:42
forall - это просто такой нестандартный синтаксис для шаблонизации типов?
Т.е. если бы синтаксис был бы более стандартным, то было бы не:
forall X, Y -> [Y, X] pair_swap([X, Y] pair) {
а
[Y, X] pair_swap<X, Y>([X, Y] pair) {
?
A
17:45
Andrei
Ну шаблонизация это скорее способ сказать компилятору сгенерить разные версии функции, а тут она одна полиморфная (с тем же самым асм-кодом). Это тонкости теории типов уже.. В хаскеле такой же полиморфизм скажем
ИК
17:47
Игорь Коняхин
Если не вдаваться во внутреннее устройство, то это просто способ сказать, что подойдут любые типы X и Y?
A
17:48
Andrei
Любые типы, занимающие ровно одну ячейку в стеке
ИК
17:49
Игорь Коняхин
In reply to this message
Понял, спасибо)
V
17:49
Vitaly
а есть где-то документация по nft части tonweb?
17:49
какие там методы, параметры
ИК
17:57
Игорь Коняхин
In reply to this message
А в FunC вообще есть типы, которые занимают не ровно одну ячейку?
Насколько я понимаю,
[1, 5, 8, 9] - одна ячейка
(1, 5, 8, 9) - четыре ячейки
Т.е. круглые кортежи не подойдут, но всё остальное, кажется, подходит
AP
17:58
Andrey Pfau
AP
Andrey Pfau 01.04.2022 17:54:25
я часа 3 убил на то чтобы понять сфигали у меня ключи не такие как в тон, а потом понял.......
17:58
дуров приколист почему у него в обратную сторону буквы у hex
A
17:59
Andrei
In reply to this message
Ну да, на данный момент только "круглые кортежи" занимают не одну ячейку
18:00
In reply to this message
Ловушка Дурова 😼
ИК
18:00
Игорь Коняхин
CF - CodeForces
Hz
18:01
H z
Почему нельзя всё на с и с ++ писать ? :(
18:01
Все постоянно новый велосипед изобретают
AP
18:01
Andrey Pfau
In reply to this message
потому что поддержка си кода очень сложная
18:02
и собирать трудно
Hz
18:02
H z
In reply to this message
Дак есть же питон для этого
AP
18:02
Andrey Pfau
и вообще у си множество проблем
AP
18:02
Andrew Python
In reply to this message
Не надо питон)
AP
18:02
Andrey Pfau
питон 🤮
ИК
18:03
Игорь Коняхин
In reply to this message
Самое главное: код, который исполняется на блокчейне должен выполняться строго-настрого в точности одинаково везде. Для обычных языков это не так как минимум из-за дробных чисел, ну и плюс наверняка могут быть расхождения из-за их сложности
AP
18:03
Andrey Pfau
уж лучше джава скрипт
Hz
18:03
H z
In reply to this message
Какие там проблемы то ? Ядра осей работают на оси и какие проблемы ? Дрова пишутся на нем также,не вижу проблем абсолютно , тем более есть с#
A
18:03
Arsenii
In reply to this message
Wasm
AP
18:03
Andrey Pfau
In reply to this message
дробный чисел в тоне кстати нет, все операции с целыми
ОБ
18:03
Олег Борзов
In reply to this message
pyTON жеж
Hz
18:03
H z
In reply to this message
Тоже норм ,но в свете ноды и корявых нпм так себе
ИК
18:04
Игорь Коняхин
In reply to this message
Думаю как раз ровно по этой же причине: чтобы всё у всех выполнялось в точности одинаково и работало без хитростей
Hz
18:04
H z
Да я честно тоже не понимаю питон ,мне больше си и си ++ роднее
18:04
Ну и js
AP
18:04
Andrey Pfau
ну сейчас на с++ вообще нет смысла что то писать
18:04
на расте разве что
Hz
18:05
H z
In reply to this message
Почему ? Биток написан на с++ и робит исправно - это не показатель ?
ИК
18:05
Игорь Коняхин
На С++ контесты на CodeForces:)
VL
18:05
Vladimir Lebedev
In reply to this message
Как же тут не хватает реакций...
ИК
18:05
Игорь Коняхин
+
VL
18:05
Vladimir Lebedev
In reply to this message
+
Hz
18:05
H z
Раст такая же Ява ,Вирт Машина
ИК
18:06
Игорь Коняхин
Не: Раст как раз низкоуровневый, но со многим контролем ошибок, которого нет в С++
A
18:06
Andrei
In reply to this message
Но при этом есть встроенные примитивы для fixed-point арифметики
18:06
muldiv типо
Hz
18:06
H z
Крче просто заметил все любят раст - он гибкий и да там в математике с числами проблем меньше вроде как , плавающие точки ,но си можно точно настроить на эти моменты
18:07
In reply to this message
Ааа,теперь ясно ,спс )
AP
18:08
Andrey Pfau
In reply to this message
показатель то что биток был написан в 2009 году, уже больше 13 лет, а с++ и то скоро стукнет 40 лет. Этот язык был разработан в своё время и отвечал запросам того времени. В текущих реалиях на с++ уж точно не имеет смысла что либо писать, а если нужен низкоуревневый код - то тут вполне нормально использовать Си (без плюсов)
Hz
18:08
H z
Просто я к чему - там ж вроде как трабла в математич. аппарате если память не изменяет
ИК
18:08
Игорь Коняхин
In reply to this message
На С/С++, если глубже копать, то оказывается, что вообще полный ппц. Вот, например, с помощью С++ можно опровергнуть теорему Ферма:
https://habr.com/ru/post/229963/
Hz
18:08
H z
In reply to this message
Да именно си для низкоуровневых мастхэв
VL
18:09
Vladimir Lebedev
In reply to this message
Ща прошивки и драйвера тоже на расте потихоньку кодят. В андроиде блютус стек переписали на раст)
AP
18:10
Andrey Pfau
ну да
18:10
на андроиде низкоуровневые вещи - на раст, а уровень повыше - котлин
18:10
отличный стек я считаю
VL
18:10
Vladimir Lebedev
In reply to this message
+
AP
18:10
Andrey Pfau
остальное не нужно
18:11
Deleted Account
Всем привет, я есть ли примеры разработок кошелька на питоне? Нужна библиотека или хотя бы апи методы или вебсокет

Нужно получать блоки, смотреть данные в них, отправлять транзакции и создавать кошельки

Гуглю уже несколько дней, не могу найти ничего по этому поводу
AP
18:12
Andrey Pfau
ИК
18:12
Игорь Коняхин
Ох, как же меня бомбит, что if/else в мейнстримовых языках до сих пор не expression.
т.е. нет ни одной причины, почему код:
a = 
if (condition) {
5
} else {
8
}

не должен работать - это не сломало бы нигде ничего
AP
18:13
Andrey Pfau
In reply to this message
в котлине ок
ИК
18:13
Игорь Коняхин
В Расте тоже
18:13
Deleted Account
AP
18:13
Andrey Pfau
ИК
18:13
Игорь Коняхин
Ждём C/C++/C#/JavaScript/Python
ОБ
18:14
Олег Борзов
In reply to this message
a = 1 if c > 2 else 2
ИК
18:14
Игорь Коняхин
In reply to this message
Для таких простых выражений оно работает, но ты не можешь написать там произвольный код, а в Rust между фигурными скобками - можешь
AP
18:14
Andrey Pfau
In reply to this message
kotlin also can
VL
18:15
Vladimir Lebedev
In reply to this message
Го перепишем ноду на раст
ИК
18:15
Игорь Коняхин
Уже есть Deno
ОБ
18:15
Олег Борзов
In reply to this message
а зачем писать сложный код в таких выражениях?
это превратит код в кашу нечитаемую
AT
18:15
Andrey Tvorozhkov
In reply to this message
?)
VL
18:15
Vladimir Lebedev
In reply to this message
Не, в смысле тоновскую ноду)
AT
18:16
Andrey Tvorozhkov
Выпилить тонкли и прочие приколы?)
VL
18:16
Vladimir Lebedev
In reply to this message
Это такой локальный мем в этом чате
Hz
18:17
H z
In reply to this message
Так тут дело ж в компиляторах а не самом языке - я понял из статьи.
ИК
18:17
Игорь Коняхин
In reply to this message
Если условие стоит посередине как в Питоне (что вообще было на уме у того, кто это придумал), то да, а если это обычный if, который может вернуть значение, то нет
AA
18:18
Alexander Andreev
In reply to this message
Скорее, в особой философии C++ с названием «undefined behaviour», когда компилятор волен творить всё, что угодно.
Hz
18:19
H z
In reply to this message
Ну так можно же свой компилятор написать а напишешь свой и вот тебе новый язык,так все и делают 😂
ИК
18:19
Игорь Коняхин
In reply to this message
Смотри, другой пример: в С++ есть указатели, и это очень большая часть того как всё работает, и ты можешь плюс-минус куда угодно писать что угодно, а на блокчейне такое допускать нельзя
AT
18:20
Andrey Tvorozhkov
In reply to this message
Toncli
Hz
18:20
H z
In reply to this message
Ну есть же си ,строго последовательно всё воспроизводится , железная логика без всяких классов
18:20
Deleted Account
In reply to this message
Можно ссылку пожалуйста?
ИК
18:20
Игорь Коняхин
In reply to this message
Ну так в С тоже есть указатели
Hz
18:21
H z
In reply to this message
Дык можно же стек строгий описать ,нет ?
18:21
Deleted Account
In reply to this message
Большое спасибо
Hz
18:23
H z
Просто все не любят си и си++ , а по сути все значимые ядра на нём написаны и комп работает через си ,контролёры ,там же оперативная память и материнка и шины и тому подобные вещи.
ИК
18:23
Игорь Коняхин
In reply to this message
Теоретически, мне кажется, можно было бы это сделать.
Но для блокчейна очень большой акцент на том, чтобы супер экономно использовать ресурсы: как вычислительные, так и хранилище и FunC под это заточен
Hz
18:23
H z
In reply to this message
А func это типо Явы ?
ИК
18:23
Игорь Коняхин
Нет, это типо С
18:24
Только в некоторых аспектах ещё более низкоуровневое
18:24
И заточенное под конкретный блокчейн
Hz
18:24
H z
In reply to this message
Сразу выводит в асм? оО?
AA
18:25
Alexander Andreev
In reply to this message
Так можно просто обёртки над ними использовать и будет меньше проблем.
AP
18:26
Andrey Pfau
In reply to this message
да, func компилируется в ASM для виртуальной машины TVM
AA
18:27
Alexander Andreev
In reply to this message
Плюсы всё равно никуда не денутся в ближайшие несколько лет – на них написано много кодовой базы, а Rust пока не догняет по производительности C++.
AP
18:27
Andrey Pfau
In reply to this message
по поводу производительности откуда инфа?
18:27
скорость такая же, или вы сами тестили но с включенным дебаг флагом?)
ИК
18:27
Игорь Коняхин
In reply to this message
Опять же ^
Но вообще, мне кажется, людей которые смогут обосновать, почему на ТОН всё работает так как работает (особенно странный стековый FIFT) в мире единицы
AP
18:28
Andrey Pfau
In reply to this message
что с fift не так?
ИК
18:28
Игорь Коняхин
Стековая модель
AP
18:28
Andrey Pfau
и чем это плохо?
18:29
другой подход к програмированию != не так
ИК
18:29
Игорь Коняхин
Нет ведь случайного доступа к памяти
18:29
Нельзя за О(1) получать доступ к элементу массива
V
18:29
Vyacheslav
Какую же соску сделали из документации, прям приятно)
ИК
18:30
Игорь Коняхин
Возможно я пока не проникся, но ограничения для средне-крупных программ кажутся достаточно большими
AP
18:30
Andrey Pfau
In reply to this message
вообще то можно)
JF
18:31
John Fyodor
In reply to this message
Ну это ещё не соска
18:31
Соска это когда у тебя на каждый метод по примеру с комментариями
V
18:31
Vyacheslav
In reply to this message
По сравнению с тем, что было
AP
18:32
Andrey Pfau
обажаю дурова
AP
18:32
Andrey Pfau
AP
Andrey Pfau 01.04.2022 18:23:20
Result<Ed25519::PublicKey> Ed25519::PrivateKey::get_public_key() const {
auto pkey = detail::X25519_key_to_PKEY(octet_string_, true);
if (pkey == nullptr) {
return Status::Error("Can't import private key");
}
SCOPE_EXIT {
EVP_PKEY_free(pkey);
};

TRY_RESULT(key, detail::X25519_key_from_PKEY(pkey, false));
return Ed25519::PublicKey(std::move(key));
}
ИК
18:32
Игорь Коняхин
In reply to this message
Как перечитаю документацию про FIFT, чувствую, у меня появится много вопросов:)
AP
18:32
Andrey Pfau
называть x25519 ключи - ed25519 это конечно треш
ИК
18:33
Игорь Коняхин
In reply to this message
+
V
18:34
Vitaly
а если я хочу выпустить NFT с дополнительными числовыми данными на который может реагировать специальный смарт-контракт (при этом всё ещё имея ссылку на его внешние данные для сторонних сервисов), мне нужно свой СК NFT делать или я могу в tonweb запихать в cell данных помимо ref[0] = "моя строка" и свои числа?
если я допустим свой createMintBody замучу'
createMintBody(params) {
const body = new Cell();
body.bits.writeUint(1, 32); // OP deploy new nft
body.bits.writeUint(params.queryId || 0, 64); // query_id
body.bits.writeUint(params.itemIndex, 64);
body.bits.writeCoins(params.amount);

const nftItemContent = new Cell();
nftItemContent.bits.writeAddress(params.itemOwnerAddress);
Куда-то сюда
const uriContent = new Cell();
uriContent.bits.writeBytes(serializeUri(params.itemContentUri));
nftItemContent.refs[0] = uriContent;

body.refs[0] = nftItemContent;
return body;
}


будет такое работать по вашему?
V
18:34
Vyacheslav
In reply to this message
Это не Дуров придумал
AP
18:34
Andrey Pfau
In reply to this message
а кто же?)
JF
18:34
John Fyodor
In reply to this message
Мы уже давно выяснили, что Дуров ворует биты из документации, поэтому у него все строки превращаются в один символ
V
18:35
Vyacheslav
X это конвенция, ed это тип ключа
AP
18:35
Andrey Pfau
ключи x25519 и ed25519 это разные вещи, но в коде он почему то их путает местами
ИК
18:35
Игорь Коняхин
In reply to this message
Моё исходное сообщение было не про то, что fift плохой или хороший, а про то, что не понятно - зачем нужно было вводить для блокчейна такую нестандартную модель
AP
18:35
Andrey Pfau
In reply to this message
Hz
18:36
H z
In reply to this message
Вот это другой подход! Круто 😎
AP
18:36
Andrey Pfau
curve25519 и edwards25519 - это конвенции, а ключи именно x25519 и ed25519
V
18:36
Vyacheslav
In reply to this message
Окей, мой прокол, сори
18:37
Так а чё за прикол тогда?
AP
18:38
Andrey Pfau
в том что в коде называется td::ed25519 но по факту это x25519 из openssl
V
18:38
Vyacheslav
Не ну не может же такого быть
AP
18:38
Andrey Pfau
я скинул код
18:38
из исходников
V
18:38
Vyacheslav
Да я вижу
Hz
18:39
H z
А смарты на этом блокчейне пишутся на func?
V
18:39
Vyacheslav
Странно это короче
ИК
18:39
Игорь Коняхин
А контракт может отсылать другому контракту external сообщения?
Т.е. предположим, что в контракте хранится private_key (что глупо, но оставим это в стороне). Он может тогда сформировать сообщение, подписать его и отправить одному из стандартных кошельков, которые принимают только recv_external() ?
18:39
In reply to this message
FunC или Fift
Hz
18:39
H z
Ну всё теперь это мой любимый блокчейн ❤️
Hz
18:40
H z
In reply to this message
Круто ,что не solidity!!! А то совсем не нравится : D
AP
18:41
Andrew Python
In reply to this message
Нет. Контракт может только послать сообщение другому. Это сообщение обработается в recv_internal
AP
18:42
Andrey Pfau
In reply to this message
контракт вообще не может хранить приватные ключи, потому что все данные открытые в блокчейне
ИК
18:42
Игорь Коняхин
In reply to this message
Т.е. чтобы принимать сообщения и от других контрактов, нужно вручную в своём контракте в recv_internal прописать нужный код? (например, вызвать recv_external)
18:43
In reply to this message
Ну хранить-то может:)
А то, что это глупо - это отдельный вопрос
AP
18:43
Andrew Python
In reply to this message
Не принимать, а обрабатывать принятое) принять и кошелёк может
ИК
18:44
Игорь Коняхин
Ок, понял
Hz
18:44
H z
Ну а по поводу питона - здесь нейронки и ИИ и Лабы многие математич. Просто взять доктора наук,которому хочется написать програмку - он её напишет и всё будет Гуд. В этом контексте питон лидер к сожалению.
V
18:45
Vyacheslav
In reply to this message
Это из разряда "ой да пох, потом перепишем"
AP
18:45
Andrey Pfau
не ну реально
18:45
че за бред
18:45
я два дня сидел с этими ключами гребанными
18:45
не понимал почему у меня результат не такой
18:45
а потом когда глянул в исходники и обнаружил что это фейк ed25519 за маской x25519 ужаснулся
Hz
18:46
H z
In reply to this message
Сочувствую
V
18:47
Vyacheslav
In reply to this message
Openssl причём поддерживает ed25519
ИК
18:51
Игорь Коняхин
А нет информации о том, как устроен dict в TON?
Я силён в обычных алгоритмах, но не совсем понятно, как они переносятся на TON. Если хранить словарь в виде двоичного дерева, то можно "меньшее" поддерево хранить в первой ссылке ячейки, "большее" - во второй, а в самих битах ячейки хранить ключ+значение (+может ещё какую вспомогательную информацию).

Это будет работать, но для этого понадобится под каждую пару ключ/значение заводить отдельную ячейку, а это в ТОНе ведь очень дорого.
JF
18:53
John Fyodor
In reply to this message
Patricia trie
18:53
Где индекс грани участвует в формировании ключа
ИК
18:55
Игорь Коняхин
In reply to this message
Спасибо
Изучу
A
19:57
A
Всем привет, я был занят последние два месяца 😂😂 подскажите пожалуйста поэтапно, что сейчас нужно, чтобы дрогнуть нфт в тон?
19:57
уже есть площадки где это работает ?
AT
19:57
Andrey Tvorozhkov
In reply to this message
NN
20:03
Nick Nekilov
In reply to this message
АП
20:06
Антон Порошин
Всем привет 👋 ищу единомышленников для создания команды и развития игры (утки которые добывают тон) на тон монете, сейчас готова уже платформа, необходимо найти программиста кто поможет автоматизировать ввод и вывод тон с платформы в автоматическом режиме и регистрацию через Телеграм, сейчас пока ввод и вывод реализован ручной вариант, кому интересно 🧐 пишите
P
20:24
Pepeg
var result = check_data_signature(request, signature, public_key);
var result = check_signature(slice_hash(request), signature, public_key);
одно от другого чем-то принципиально отличается? Первый выкидывает cell underflow, а второй норм 🤔
NN
20:38
Nick Nekilov
In reply to this message
If the bit length of data is not divisible by eight, throws a cell underflow exception.
(это про check_data_signature)
SG
21:33
Semyon Golovin
Что за ошибка?
AT
21:34
Andrey Tvorozhkov
In reply to this message
Последняя версия toncli?
21:35
Обновитесь, пожалуйста, до последней (инструкция выше) и повторите команду с флагом -v 2 если ошибка останется - пришлите аутпут ссылкой на гист
SG
21:36
Semyon Golovin
In reply to this message
toncli -v?
21:37
In reply to this message
Посмотреть версию. toncli -v,
21:37
?
AT
21:37
Andrey Tvorozhkov
In reply to this message
К несчастью оно не сработает
21:37
Просто обновитесь)
21:38
pip show toncli версию покажет
SG
21:39
Semyon Golovin
Version: 0.0.32
21:39
Ошибка осталась
21:41
In reply to this message
В аутпуте прислать это файл?
`C:\Users\sem12\AppData\Local\Temp\tmpc7d8e2zb.fif
AT
21:45
Andrey Tvorozhkov
In reply to this message
Неа
21:45
Весь аутпут
21:45
Но надо запускать run_tests с флагом -v 2
AT
21:47
Andrey Tvorozhkov
А, тесты надо обновить
21:48
null() убрать из стака
AT
21:57
Andrey Tvorozhkov
In reply to this message
Выглядит как что-то не то делаете
21:57
Попробуйте на примере тасков контеста
21:57
Все должно из коробки работать
SG
22:11
Semyon Golovin
Это функция автоматически вызывается?
AT
22:13
Andrey Tvorozhkov
Почитайте эдвенцед доку в тонкли
22:13
По тестам
SG
22:13
Semyon Golovin
Уже увидел)
22:13
In reply to this message
Спасибо
ИК
22:17
Игорь Коняхин
Для того, чтобы работать с несколькими смарт-контрактами мне нужно несколько toncli проектов?
Т.е. я копирую папку task-1-playground и переименовываю в task-2-playground, task-3-playground и работаю в них отдельно?
TP
22:19
Tim Pavlov
да не обязательно
22:19
поменяй внутри project.yaml имена файлов и все
22:20
он тогда будет тестить другой смарт контракт
22:20
и с другими тестами
ИК
22:20
Игорь Коняхин
И затем каждый раз редактировать project.yaml, чтобы переходить от работы с одним контрактов к другому?
22:21
Тогда быстрее переключаться между папками
TP
22:21
Tim Pavlov
тогда тебе нужно столько консольных окон, сколько у тебя смарт контрактов, чтобы не нужно было делать переход по папкам)
22:21
несколько окон IDE в таком случае, ну чтоб удобно было
22:21
там поменять 2 строчки
AP
22:26
Andrew Python
In reply to this message
В toncli у каждой команды есть параметр запуска -c для выбора контракта. Я у себя сделал такую структуру и такой project.yaml:
task1:
func:
- 1.fc
tests:
- tests/task1-test.fc

task2:
func:
- 2.fc
tests:
- tests/task2-test.fc

taskN:
func:
- N.fc
tests:
- tests/taskN-test.fc
22:27
Потом просто запускаешь
toncli run_tests -c task2 например
ИК
22:28
Игорь Коняхин
In reply to this message
О, то что нужно, спасибо!
А почему test.fc продублирован несколько раз? (тьфу - это Телеграмм так строки перенёс:) - вопрос снят)
AT
22:53
Andrey Tvorozhkov
Миллиард звезд создателям pyTONv3 / tonlibjson. Очень жаль, что когда я писал тонкли я использовал лайтклиент, а не tonlibjson. Обязательно перепишу в свободное время.
RG
22:57
Ruslan Gabdullin
In reply to this message
Кстати, у меня есть написанный код-обертка над tonlibjson с почти всеми функциями из toncenter.com)
23:00
Deleted Account
Че за жесть! Ввожу 24 слова в тонкипер и тон валлет - получаю 2 совершенно разных адреса! Ну че за глупость?! Кипер я так понял версию 4 делает, а валет 3... и че теперь? как вообще на мобилке и на пк сделать одинаковые адреса...
23:16
Deleted Account
Кто занимается TON Wallet? Обновите версии адресов до V4R2
V
23:21
Vitaly
А как зная аккаунт узнать список NFT которыми он владеет?
23:21
Не очень понимаю как это нужно выяснять
К
23:23
Кремний 🏴‍☠️
In reply to this message
Поставь кипер на комп.
Валлет лагает что на макоси, что на ios.
23:24
Deleted Account
In reply to this message
кипер же ток под мобилку?
К
23:32
Кремний 🏴‍☠️
In reply to this message
Not sure. На мак с м1 ставил 🌚
Hz
23:33
H z
Народ, у меня остался код с фритона (сейчас еверскале) так вот это обменник . Там смарт написан на солидити . Его я так понял смысл запускать ,так как смарты у вас нету на солидити...
ИК
23:36
Игорь Коняхин
In reply to this message
Никак
Насколько я понимаю (поправьте кто-нибудь если я не прав), владельцы (и вообще вся логика) хранятся в конкретных NFT смарт-контрактах, т.е. чтобы найти NFT, принадлежащие конкретному адресу, нужно проиндексировать весь блокчейн
TechLead в том это упоминал среди проблем этого дела (https://youtu.be/_1PSvqho8UE)
V
23:37
Vitaly
In reply to this message
феноменально
23:37
Deleted Account
In reply to this message
А разве не выйдет просмотреть просто все поступления от одного адреса?
23:38
In reply to this message
И из них уже контракты нфт достать
V
23:38
Vitaly
но за ответ спасибо, по крайней мере ясно из чего исходить
23:38
In reply to this message
а, нет, погоди
23:38
ты мне сканул в целом про NFT, а речь именно про тоновские
23:40
In reply to this message
просто на эфире у меня в солидити была бы история с получением balanceOf(owner) и потом tokenOfOwnerByIndex по списку
23:40
а тут какая-то жопа
23:42
опять же, nft при смене владельца посылают мессагу на нового владельца
23:42
то есть wallet как-то уведомляется о владении nft
23:45
Deleted Account
In reply to this message
винда
2 April 2022
Hz
00:03
H z
У вас не будет случаем конкурса ,чтобы валидировать эффективно ,ну или другое ,чтобы допустим человека 3 хотя бы выйграли квоту(300к монет) ???