TON Overflow на русском

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

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

  • [Решено] Где находится исходный код контракта кошелька?

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

    Решено

    Здесь вы можете ознакомиться с исходным кодом кошелька версии 4: https://github.com/ton-блокчейн/кошелек-контракт, кошелек v3: https://github.com/ton-блокчейн/ton/blob/master/crypto/smartcont/кошелек-v3-code.fif

    P.S. отличная статья с объяснениями каждой версии контракта кошелька: https://ton.org/docs/participate/wallets/contracts

  • Насколько высоки штрафы для валидаторов?

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

    Привет,

    Значение наказания рассчитывается на основе параметра конфигурации 40, который определяет некоторые связанные значения, включая:

    default_flat_fine * default_proportional_fine * severity_flat_mult * severity_proportional_mult * long_flat_mult * long_proportional_mult

    Если этот параметр конфигурации не указан, то максимальное наказание составляет 101 тонну, в противном случае оно рассчитывается следующим образом:

    пусть: flat = default_flat_fine * (severity_flat_mult / 256) * (long_flat_mult / 256) пусть: part = default_proportional_fine * (severity_proportional_mult / 256) * (long_proportional_mult / 256) затем: max = flat + (part * stake / 4G) while: 4G = 4 * 1024 * 1024 * 1024 = 4,294,967,296

    Наконец, максимальное наказание = минимальное (ставка, макс)

    На момент написания этого ответа конфигурационный параметр 40 пуст, поэтому максимальное значение наказания составляет просто 101 ТОННУ.

    Если вы хотите проверить код, см. раздел [пул.fc строка 84](https://github.com/ton - блокчейн/номинатор-пул/blob/main/func/pool.fc#L84).

  • [Решено] Есть ли "float" в FunC?

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

    Решено

    В FunC и TVM в целом нет float. Числа с плавающей запятой полезны в научных вычислениях. Поскольку они не обладают точной точностью, они обычно не так полезны в приложениях, работающих с деньгами.

    Суммы в тоннах, такие как 1,234567890, хранятся в виде большого целого числа нанотонн, такого как 1234567890, и при отображении пользователю они делятся на 1 миллиард в клиентских приложениях, так что пользователь может просмотреть более удобную и понятную сумму. Другие денежные ценности, такие как джеттоны, используют тот же принцип.

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

  • [Решено] Как получить адреса всех активных кошельков TON?

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

    Решено

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

    Однако, если вы ищете источник данных общего назначения, вы можете попробовать использовать отчеты, доступные на https://m3talab.io/reports/ton-telegram-open-сеть.

  • [Решено] Как переключить браузерное расширение TON Wallet на testnet?

    0 Голоса
    2 Сообщения
    22 Просмотры
  • Насколько сложно перенести проект Solidity в TON?

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

    Короче говоря, да, вам следует переписать свои смарт-контракты с нуля. Сколько вам нужно переписать, зависит от логики проекта. Я могу поделиться парой вещей, которые помогут вам принять решение.

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

    Во-вторых, и я бы сказал, что это очень важный момент. Ton имеет другую архитектуру, чем ETH, подобные цепочки. Вы можете прочитать эту статью, чтобы подробнее понять, как Ton работает со smartcontracts и почему. [запись в блоге](https://blog.ton.org/how-to-shard-your-ton-smart-contract-and-why - изучаю-анатомию-тонн-джеттонов)

  • Что определяет чистоту в FunC? Функции чтения/записи

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

    В контексте языка FunC эти три варианта определяют концепцию чистой функции.

    Чистая функция - это функция, которая:

    A) ** Считывает только значения, переданные** ему в качестве параметров, и не обращается ни к какому внешнему состоянию. Это означает, что его выходные данные определяются исключительно входными параметрами.

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

    C) Может ** считывать значения вне параметров функции ** , но его выходные данные должны быть независимыми от каких-либо глобальных данных. Это означает, что он не должен использовать какие-либо глобальные переменные или данные или зависеть от них.

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

    Практически: а) присутствует модификатор "нечистый" - гарантирует правильное поведение б) отсутствует модификатор "нечистый" - компилятор функции будет делать странные вещи, например, удалять некоторый код без вашего разрешения.

    Это автоматически удалит вызов функции в двух случаях: a) функция ничего не возвращает: () fun() { }

    б) функция возвращает что-то, но это что-то ничему не присваивается:

    (int) fun() { return 5; } ... int a = fun(); ;; fun is called fun(); ;; fun call is removed"
  • Что такое seqno?

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

    Отличный вопрос, "seqno" - это интересная концепция на TVM, которая станет изюминкой

    Который больше похож на номер транзакции кошелька, отправляющего Tx. Как "одноразовый номер" в EVM world.

    Для дополнительного примера, если вы хотите отправить Txs через SDK в блокчейн, используйте следующий код:

    // (=== more codes === ) // console.log("Interacting with Collection Contract: \n" + contract_address); let seqno: number = await wallet_address.getSeqno(); let transfer = await wallet_address.sendTransfer({ seqno: seqno, secretKey: keyPair.secretKey, messages: [ internal({ value: toNano("0.5"), to: contract_address, init: { code: init.code, data: init.data, }, bounce: true, body: packed, }), ], });

    Сначала вам нужно будет получить seqno для отправки с параметрами в транзакции.

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

    Владелец склада: https://github.com/tonkeeper/wallet

  • [Решено] Для чего используется адрес ef8zmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzm0vf?

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

    Решено

    Это адрес договора с избирателем. Более подробная информация доступна по адресу: https://ton.org/docs/develop/smart-contracts/governance

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

    Решено

    Да, вы можете использовать многие SDK / проекты с открытым исходным кодом, совместно используемые соответствующим способом, для достижения этого.

    https://github.com/ton-foundation/ton-x Эта библиотека может предоставить вам возможность подключения с помощью qr-кода с поддержкой мобильного кошелька tonhub

    Совсем недавно сообщество TON только что запустило TON Connect 2.0, вы можете подключить более качественный пользовательский интерфейс и работать с ним в режиме реального времени.

    Тем не менее, вы можете найти пример на онлайн-странице github, чтобы попробовать. вот пример демо-ссылки и репозитория:

    https://github.com/ton-connect/demo-dapp-with-react-ui https://ton-connect.github.io/demo-dapp-with-react-ui/

  • [Решено] Как вы жестко кодируете адрес в FunC?

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

    Адрес контракта - это хэш кода **stateInit**.

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

    Например, приведенный ниже язык Tact показывает, как я могу создать код stateInit для получения адреса смарт-контракта:

    contract Example { any_int: Int; init() { self.any_int = 0; } receive("A") { let contractInit: StateInit = initOf TargetContract(self.any_int, 666); send(SendParameters{ to: contractAddress(contractInit), value: 0, mode: 0 + 64 + 128, bounce: false }); } } contract TargetContract { counter: Int; balance: Int; init(input_counter: Int, input_balance: Int){ self.counter = input_counter; self.balance = input_balance; } receive(){ // empty, means do nothing when receive empty body message. } }

    Как вы можете видеть, мы можем изменить параметры, необходимые второму контракту, чтобы предопределить адрес контракта, поскольку мы получили код stateInit.

  • Каков метод касания фрагмента в смарт-контракте кошелька?

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

    Пожалуйста, обратитесь к этому https://ton.org/docs/develop/smart-контракты/рекомендации/подсказки#пример Он поместит переменную "cs" поверх стека, а затем уменьшит газ для взаимодействия с этой переменной.

  • Как я могу распечатать что-то в FunC?

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

    В FunC world вы можете ввести это, чтобы получить результат:

    var e = 123; e~dump();
  • Кстати, в чем разница между addr и Addr-ом?

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

    addr, это псевдоним для 256u,: напишите 256uint.

    Между тем, полная сериализация адресов также включает тег формата адреса, рабочую цепочку, часть 256bit и некоторые дополнительные поля.

    Addr, извлеките из стека два элемента: рабочую цепочку и хэш-часть и обработайте это.

    Все идентификаторы учетных записей имеют 256-битный адрес в MasterChain и BaseChain (базовая рабочая цепочка).

    В настоящее время в блокчейне TON работает только мастерчейн (workchain_id=-1) и иногда базовая рабочая цепочка (workchain_id=0).

    Оба они имеют 256-битные адреса, поэтому отныне мы предполагаем, что workchain_id равен либо 0, либо -1, и что адрес внутри workchain ровно 256-битный.

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

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

    Есть несколько статей, написанных @KAL https://blog.ton.org/step-by-step-guide-for-writing-your-first-smart-контракт-в-функции-2

    Это обзорное руководство, в котором вы пройдете от нуля до конца написания смарт-контракта в FunC, а также с помощью testinYes. Тестовые примеры важны при написании кода, поскольку они помогают проверять правильность кода, выявлять и исправлять ошибки, служат документацией, облегчают обслуживание и повышают уверенность в качестве кода и надежности.

    Есть несколько статей, написанных @KAL https://blog.ton.org/step-by-step-guide-for-writing-your-first-smart-контракт-в-функции-2

    Это обзорное руководство, в котором вы пройдете от нуля до конца написания смарт-контракта в FunC, а также ознакомитесь с тестовыми примерами.

    Тем не менее, вот свежий учебник от Kal, который также был недавно опубликован: https://ton-community.github.io/tutorials/

    Даже то, что, насколько мне известно, сообщество работает над "Hardhart", "Foundry", аналогичной тестированию, отладке, развертыванию универсальной библиотеки, называемой "Bluepint". Наслаждаться.

    https://github.com/ton-community/blueprint

  • [Решено] Какой самый лучший обозреватель блоков для сети TON?

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

    В отличие от Ethereum, где https://etherscan.io является единственным доминирующим исследователем, TON - это более децентрализованная экосистема с разными исследователями, которые преуспевают в разных вещах. Полный список находится на сайте https://ton.app/explorers

    Несколько интересных из них:

    https://tonscan.org - Отлично подходит для простых вещей, отшлифованный пользовательский интерфейс. Отлично подходит для пользователей, в меньшей степени для разработчиков.

    https://tonwhales.com/explorer \ - Полезен для разработчиков, поскольку показывает гораздо больше низкоуровневой информации, если вам нужно отладить транзакции, которые завершились неудачей.

    https://dton.io \ - Также хорош для разработчиков, так как показывает данные низкого уровня. Имеет очень классную функцию отслеживания транзакций, которая показывает код операции TVM, выполняемый в каждой транзакции.

    Также отмечается, что у исследователей есть специальные версии для testnet. Как https://testnet.tonscan.org

  • [Решено] Как мне получить конечную точку RPC для TON?

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

    Прежде всего, как вы используете конечную точку RPC, которую вы хотите?

    Чтобы получить конечную точку RPC для сети TON, вы можете либо запустить свой собственный узел, либо использовать общедоступный узел, управляемый третьей стороной. Чтобы запустить свой собственный узел, вам нужно будет загрузить и настроить программное обеспечение TON, которое можно получить из официального репозитория TON GitHub. Для поиска общедоступных узлов вы можете проверить веб-сайты, такие как TON Labs, или выполнить поиск узлов TON на популярных форумах.

    Документацию для сети TON, включая информацию о RPC API, можно найти в разделе для разработчиков TON на веб-сайте TON Labs и в официальном репозитории TON GitHub.

    https://github.com/ton-core https://github.com/ton-community

    Пожалуйста, обратите внимание, что TonApi (https://tonapi.io/) - это централизованный индексированный сервис, а не RPC. Для децентрализованных приложений вам нужно, чтобы ваши запросы к блокчейну направлялись на полные узлы или узлы-валидаторы. Этого не происходит с TonApi, поскольку у него есть специальные индексы, которые не поддерживают полные узлы TON и узлы vliadator.

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

    Решено

    Официальную документацию TON можно найти здесь: https://ton.org/docs

    Если вы только начинаете работать с TON, недавнее руководство было доступно здесь: https://ton-community.github.io/tutorials/01-wallet/