TON Overflow на русском

552 Темы 1.0k Сообщения

Русское зеркало answers.ton.org

  • 0 Голоса
    1 Сообщения
    45 Просмотры

    В других блокчейнах, таких как Ethereum, я сталкивался с концепцией "подтверждения блоков". Это означает, что транзакция считается "завершенной" и необратимой только после того, как определенное количество блоков будет включено в блокчейн после нее, что может занять некоторое время.

    В экосистеме TON я с этим еще не сталкивался. Всегда ли предполагается, что все "завершено" после первого блока? Или есть какие-то случаи, когда вам приходится ждать определенного "количества подтверждений блокировки"?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • 0 Голоса
    1 Сообщения
    12 Просмотры

    В настоящее время блокчейн TON состоит только из одной рабочей цепочки и мастер-цепочки. Весь код смарт-контрактов в masterchain и базовой рабочей цепочке выполняется TVM (виртуальной машиной Ton). Но TON предоставляет возможность создавать больше рабочих цепочек в будущем. И в техническом документе Николая Дурова упоминается, что эти гипотетические будущие рабочие цепочки могли бы использовать разные виртуальные машины:

    Разные рабочие цепочки могут иметь разные правила, что означает разные форматы адресов учетных записей, разные форматы транзакций, разные виртуальные машины (ВМ) для смарт-контрактов, разные базовые криптовалюты и так далее.

    Итак, я пытаюсь понять: обязательно ли эти "разные виртуальные машины" должны быть похожи на TVM, или они могут быть очень разными, как EVM? Мог бы кто-нибудь гипотетически создать рабочую цепочку TON, где код выполнялся бы EVM вместо TVM, так что код, написанный для EVM, можно было бы повторно использовать в TON?

    Оригинал вопроса

  • Могу ли я заставить VS Code автозаполнять load_uint и store_uint?

    0 Голоса
    1 Сообщения
    9 Просмотры

    Я использую Visual Studio Code с расширением "FunC Language Support" от Whales Corp. Эта настройка удобна и часто помогает при автозавершении в FunC. Но по какой-то причине, когда я набираю load_uint() или store_uint(), автозаполнение предлагает всевозможные варианты от load_coins до load_ref, но не тот, который мне нужен, хотя это популярная функция.

    Это не конец света, я могу напечатать все это вручную, но мне это кажется очень странным. Может быть, я чего-то не понимаю и поддержку load_uint() можно как-то включить?

    Оригинал вопроса

  • 0 Голоса
    1 Сообщения
    5 Просмотры

    В мире NFT обычно в цепочке хранится только ссылка на изображение, а сам файл изображения хранится где-то в другом месте. Возможно, это может привести к проблеме "гниения ссылок", когда файл удаляется, оставляя владельца NFT практически ни с чем.

    И это приводит к вопросу: если вы хотите создать TON NFT в 2023 году, есть ли для вас предпочтительный способ хранения изображений? Насколько я понимаю, варианты таковы:

    Есть платный хостинг, но он работает только до тех пор, пока за него платят * Есть сервисы хостинга изображений, такие как Imgur, но они кажутся мне недостаточно надежными * Есть GitHub, который кажется несколько надежным, но хостинг изображений не является его основной целью * Есть хранилище TON, но Я слышал, что это не поддерживается (пока?) популярной торговой площадкой Getgems * Есть IPFS, но это экзотика * Можно просто использовать NFTS с помощью инструмента GetGems и думать "хостинг - это не моя проблема", но это также зависимость от внешнего сервиса * Я слышал, что изображения могут быть даже хранятся по цепочке, но это разумно только для самых маленьких

    Итак, вариантов много, у каждого есть свои недостатки, и выбрать трудно. Итак, есть ли какие-нибудь рекомендации на этот счет? И какой способ самый популярный?

    Оригинал вопроса

  • 0 Голоса
    2 Сообщения
    21 Просмотры

    Решено

    Да, мнемоника - это единственное, что определяет закрытый ключ вашего кошелька. Если вы каким-то образом узнаете чью-то мнемоническую фразу, у вас будет полный доступ к их кошельку. Вот почему так важно сохранить эту фразу в секрете.

    Я должен также отметить, что можно сгенерировать закрытый ключ без использования мнемонической фразы. Обычно используемые кошельки обычно не предоставляют такую функциональность (потому что вы не сможете создать резервную копию своего кошелька, написав где-нибудь эту фразу), но теоретически это возможно. Это позволит снизить вероятность столкновения (из 1 в ≈ 20482⁴ 3⋅10⁷⁹ как вы правильно сказали, с 1 в ≈ 2⁵12 101⁵⁴), но не полностью ликвидировать ее. Поскольку кошельки генерируются независимо, реального способа предотвратить столкновение в теоретическом смысле не существует.

    Вам также может быть интересен инструмент под названием "vaniton". По сути, он реализует метод грубой силы, но вместо того, чтобы пытаться найти точные ключи (что неосуществимо), он просто выполняет поиск мнемонических фраз, которые будут выдавать адреса, подходящие для поиска (т.е. содержащие, например, некоторые предопределенные подстроки).

    Теперь перейдем к вашим вопросам:

    Чисто гипотетически – да, столкновения возможны. 2. Оценить точную скорость сложно, потому что это действительно зависит от аппаратного обеспечения. На моем компьютере бенчмарк vaniton показал скорость 13,7 адресов в секунду. Добавление большего количества серверов пропорционально увеличило бы скорость атаки методом перебора. Опять же, если мы говорим чисто теоретически, то нет ограничений на потенциальную скорость атаки (но на самом деле даже использование всех доступных на Земле вычислительных мощностей не сильно поможет). 3. Да, это верно.

    Я хотел бы еще раз подчеркнуть: хотя все эти утверждения верны в теории, перебрать 3 из 10 фраз в любом практическом смысле невозможно (независимо от того, сколько серверов вы используете). Например, если бы у вас был доступ к 1 миллиарду серверов, каждому из них все равно нужно было бы проверить примерно 3⋅10⁷⁰ фраз, что по-прежнему является астрономически огромным числом. Даже если предположить, что скорость составляет 3 миллиона фраз в секунду (на каждом сервере), это займет 10⁶⁴ секунд или около 3⋅10⁵⁶ лет (это 56-значное число). Для сравнения, текущий возраст Вселенной составляет "всего" 1,37⋅10⁹ лет.

  • Что я должен использовать в качестве "account_id" в методах TON API?

    0 Голоса
    1 Сообщения
    21 Просмотры

    TON API предоставляет доступ REST API к блокчейну TON. Некоторые из его методов требуют заполнения переменной {account-id}. Что я должен туда поместить, какой формат значений он принимает?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • Как отследить сразу много TON NFT?

    0 Голоса
    1 Сообщения
    6 Просмотры

    Я хотел бы отслеживать все изменения, касающиеся анонимных номеров Telegram. Они существуют как NFT, поэтому любая транзакция, такая как смена владельца, хранится в блокчейне TON, и эта информация доступна любому. Но таких NFT насчитывается 136 000, поэтому трудно отследить их все для хобби-проекта, слишком много данных. Может быть, есть какие-нибудь агрегаторы, которые позволяют вам подписаться на изменения во всей коллекции?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • Всегда ли seqno уникален для каждой транзакции?

    0 Голоса
    1 Сообщения
    15 Просмотры

    Seqno предназначен для увеличения при выполнении транзакций. Но всегда ли это меняется с каждой транзакцией, или возможно, что какой-то смарт-контракт участвует в разных транзакциях, сохраняя при этом одно и то же значение seqno?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • Существует ли ограничение по размеру для коллекций NFT на TON?

    0 Голоса
    1 Сообщения
    5 Просмотры

    Может ли коллекция NFT на TON состоять из миллиона предметов или это слишком много? Существует ли ограничение по размеру и насколько оно велико?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • Как функция set_code() влияет на адрес смарт-контракта?

    0 Голоса
    2 Сообщения
    16 Просмотры

    Адрес является производным от начального состояния (начальный код + начальное хранилище) контракта. Таким образом, изменение кода с помощью set_code() не должно иметь никакого эффекта на адрес, поскольку измененный код не будет "начальным".

  • 0 Голоса
    2 Сообщения
    14 Просмотры

    Я не слышал о таком инструменте, но мне кажется, что для разработчика создать его должно быть легко. Библиотеки, подобные "ton-core", позволяют любому программно получить адрес для любой конкретной комбинации ключей и кошелька, для этого им даже не требуется Интернет. Таким образом, программа, которая запрашивает ключ и распечатывает адреса всех контрактов кошелька с этим ключом, будет состоять всего из десятков строк кода.

    В этом руководстве содержится информация, необходимая для его написания: https://ton-community.github.io/tutorials/01-wallet/

  • 0 Голоса
    1 Сообщения
    7 Просмотры

    У меня есть вопрос, который может показаться глупым. Если я все правильно понимаю, отклоненные транзакции не увеличивают "seqno` кошелька отправителя. Может ли это привести к ситуации, когда я пытаюсь программно отправить больше значения, чем у меня есть, и поскольку значение seqno не увеличивается, а задача кажется незавершенной, сеть продолжает пытаться обработать ее, и я плачу сборы снова и снова? Сколько раз пользователь может заплатить комиссию в этом случае? Что можно сделать, чтобы остановить обработку сетью транзакции?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • 0 Голоса
    1 Сообщения
    9 Просмотры

    Хороший способ учиться в процессе разработки - это изучать код, написанный другими людьми. Существуют смарт-контракты с открытым исходным кодом, написанные на FunC, которые люди могут использовать в учебных целях. Но существуют ли проекты с открытым исходным кодом, написанные на Tact, или язык слишком новый для этого?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • Как преобразовать число bigint в обычное число с плавающей точкой?

    0 Голоса
    1 Сообщения
    10 Просмотры

    Разрабатывая блокчейны на основе EVM, я привык делать это с помощью эфиров: parseFloat(ethers.utils.formatUnits(reserves.token0, token0.decimals));

    Есть ли что-то подобное на TON?

    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show

    Оригинал вопроса

  • [Решено] Следуйте инструкциям по `send_raw_message`.

    0 Голоса
    3 Сообщения
    19 Просмотры
    "store_uint" - это, предположительно, функция или метод, который принимает два параметра. * Первый параметр, "0x18", представляет собой шестнадцатеричное представление числа. В десятичной форме "0x18" равно 24. * Вторым параметром, "6", может быть размер или длина сохраняемых данных, часто относящихся к количеству битов. В этом случае целое число 24 сохраняется в 6-битном формате.

    В общем, сериализация - это процесс преобразования структур данных или состояний объектов в формат, который может быть сохранен, передан и реконструирован позже. Это часто используется при сетевом обмене данными, когда необходимо отправить данные по сети или когда необходимо сохранить сложные структуры данных для последующего использования.

    https://docs.ton.org/develop/smart-contracts/messages#message-layout
  • 0 Голоса
    3 Сообщения
    43 Просмотры

    Блокчейн-сети часто состоят из различных узлов (компьютеров), которые взаимодействуют друг с другом. Они отправляют и получают сообщения, содержащие транзакции, блоки и другие данные. Это сообщение обычно подразделяется на внутренние и внешние сообщения:

    ** Внутренние сообщения **: Обычно это транзакции или сообщения, отправляемые между смарт-контрактами внутри блокчейн-сети. Они также известны как "внутренние транзакции".

    Внешние сообщения: Это сообщения, отправляемые в блокчейн-сеть из внешнего источника. Например, когда пользователь инициирует транзакцию, это будет внешнее сообщение для сети.

    Следовательно, "recv_external предназначен для входящих внешних сообщений" означает, что функция или метод "recv_external" используется для получения и обработки сообщений, которые отправляются в блокчейн-сеть извне.

  • Как фонд TON получает доход?

    0 Голоса
    3 Сообщения
    11 Просмотры

    Это очень полезно, Говард! На случай, если кто-то спросит, хотя это был pow, члены фонда TON, скорее всего, могут быть майнерами, которые пришли пораньше, так что именно поэтому я задал этот вопрос в первую очередь.

  • TON узел

    0 Голоса
    1 Сообщения
    13 Просмотры

    Не могли бы вы мне немного помочь?

    root@hz-ton:~# sudo docker-compose up [+] Running 1/1 ⠿ Container root-ton-node-1 Recreated 0.2s Attaching to root-ton-node-1 root-ton-node-1 | [=] No global config provided, downloading default. root-ton-node-1 | [+] Using provided IP: 167.235.65.98:43678 root-ton-node-1 | [ 3][t 1][2023-06-11 22:39:02.462337246][validator-engine.cpp:1304][!validator-engine] found init block [ w=-1 s=9223372036854775808 seq=27747086 YRkrcmZMvLBvjanwKCyL3w4oceGPtFfgx8ym1QKCK/4= N42xzPnJjDlE3hxPXOb+pNzXomgRtpX5AZzMPnIA41s= ] root-ton-node-1 | [ 1][t 1][2023-06-11 22:39:02.462621529][validator-engine.cpp:3504][!validator-engine] failed to parse config: [Error : 0 : failed to parse json: Opening '"' expected] root-ton-node-1 | [=] Found existing server certificate, skipping root-ton-node-1 | [=] Found existing client certificate, skipping root-ton-node-1 | [=] Liteserver disabled root-ton-node-1 | [+] Running validator-engine root-ton-node-1 | [ 3][t 1][2023-06-11 22:39:02.486787564][validator-engine.cpp:1304][!validator-engine] found init block [ w=-1 s=9223372036854775808 seq=27747086 YRkrcmZMvLBvjanwKCyL3w4oceGPtFfgx8ym1QKCK/4= N42xzPnJjDlE3hxPXOb+pNzXomgRtpX5AZzMPnIA41s= ] root-ton-node-1 | [ 1][t 1][2023-06-11 22:39:02.487007476][validator-engine.cpp:3504][!validator-engine] failed to parse config: [Error : 0 : failed to parse json: Opening '"' expected] root-ton-node-1 exited with code 2

    Итак, я убегаю init.sh в моем контейнере docker, который создает config.json, но он падает с ошибкой выше, как это исправить? init.sh файл: https://github.com/ton-blockchain/ton/blob/cc0eb453cb3bf69f92693160103d33112856c056/docker/init.sh#L43

    Оригинал вопроса

  • 0 Голоса
    2 Сообщения
    20 Просмотры

    Решено

    Безусловно, экосистема EVM действительно известна своими надежными эксплорерами блоков, и аналогичные инструменты доступны и в экосистеме TON. Эти исследователи предоставляют подробную информацию о блоках, транзакциях и событиях, происходящих в сети TON:

    Explorer.toncoin.org - Всесторонний обозреватель блоков, который предоставляет подробную информацию о блокчейне FreeTON, включая блоки, транзакции и данные учетной записи.

    DTON.io - Это еще один популярный TON block explorer, который предоставляет подробную информацию о состоянии сети, транзакциях и деталях блоков.

    TONscan.org - Это особенно полезный инструмент, если вас интересуют конкретные блоки и их транзакции. Страница блоков TONscan содержит подробный список всех блоков. Вы можете нажать на каждый блок, чтобы увидеть подробное представление о его транзакциях.

    Каждый из этих обозревателей предоставляет несколько разные функции и интерфейсы, поэтому вы можете обнаружить, что один из них соответствует вашим потребностям больше, чем другие. Все они направлены на повышение прозрачности и облегчение понимания блокчейна TON, расширяя возможности разработчиков и пользователей взаимодействовать с сетью.

  • [решено] Доступен ли для просмотра смарт-контракт Fragment?

    0 Голоса
    2 Сообщения
    19 Просмотры

    Решено

    Да, вы можете найти информацию о коде NFTs в FunC здесь:

    https://github.com/TelegramMessenger/telemint