TON Overflow на русском

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

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

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

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

  • Как запускать интеграционные тесты без testnet?

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

    Вы можете использовать песочницу для развертывания нескольких смарт-контрактов и проведения интеграционного теста.

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

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

    Решено

    Самый простой способ решить эту проблему - просто загрузить предварительно скомпилированный двоичный файл:

    https://github.com/ton-defi-org/ton-binaries

  • [Решено] Сколько логики реально можно включить в цепочку?

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

    Решено

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

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

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

    https://ton.org/docs/participate/own-blockchain-software/random#how-does-блок-начальноезначение-влияет-случайнымобразом-в-контрактах

    Возможно, вы захотите создать oracle для этих целей.

  • [Решено] Какова плата за хранение кошелька в год?

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

    Решено

    1 МБАЙТ - это 4 тонны в год. Размер кошелька составляет менее 1/4 КБ, что приводит к получению менее 0,001 тонны в год.

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

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

    Решено

    Не пытайтесь десериализовать / сериализовать ссылочное значение, как если бы вы использовали целое число. Вместо этого используйте load_ref:

    (slice, cell) load_ref(slice s) asm( -> 1 0) "LDREF";

    https://ton.org/docs/develop/func/stdlib/#load_ref

  • [Решено] Что такое MessageAny?

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

    Решено

    "MessageAny" - это тип, который ссылается на тип Message.

    https://github.com/ton-блокчейн/ton/blob/master/crypto/block/block.tlb#L155

  • Проводился ли стресс-тест в сети TON?

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

    Кто-нибудь когда-нибудь проходил стресс-тест в сети ton? Насколько мне известно, его пропускная способность очень ограничена.

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

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

    click to show

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

  • [Решено] Может ли TonKeeper подключиться к testnet?

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

    Решено

    Перейдите в настройки и нажмите несколько раз на логотип tonkeeper, расположенный внизу, после чего выберите testnet вместо mainnet

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

    Решено

    PUSHINT - это инструкция TVM-asm, необходимая для сборки смарт-контракта. Аналог из Fift - это просто написание числа "1" или любого другого, которое вы хотите.

    Использование кодов операций TVM вне смарт-контракта невозможно.

  • Как отсортировать транзакции в порядке исполнения?

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

    Если я хочу взять блок транзакций из блокчейна TON и отсортировать их все в порядке выполнения, как я должен это сделать?

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

    click to show

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

  • Какую задержку установить для завершения транзакции?

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

    Чтобы убедиться, что первая транзакция была обработана и кошелек получил монеты TON, прежде чем пытаться отправить jetton, вам следует дождаться подтверждения первой транзакции.

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

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

    Также важно отметить, что при программной отправке транзакций могут применяться ограничения скорости API. Вам следует ознакомиться с документацией к используемому вами API, чтобы определить соответствующее ограничение скорости и соответствующим образом скорректировать свой код, чтобы избежать запрета. Например, используя "https://testnet.toncenter.com/api/v2/jsonRPC", ** вы могли бы отправлять транзакцию примерно раз в 10 секунд, не превышая лимита скорости API.**

  • Как получить курс конвертации тонны в фиатную валюту?

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

    Вы можете использовать pancakeswap API для получения цены монеты в долларах США и конвертации ее в вашем приложении

    Простой пример

    const PANCAKESWAP_TONCOIN_ID = '0x76a797a59ba2c17726896976b7b3747bfd1d220f' const PANCAKESWAP_URL = 'https://api.pancakeswap.info/api/v2/tokens' const UPDATE_ERROR = "Can't update token price" await new Axios({}) .get(`${PANCAKESWAP_URL}/${pancakeswapTokenId}`) .then(async (response) => { if ( response.status === 200 && response.data && parseJSON(response.data) ) { const { data } = parseJSON(response.data) if (data.price && validateThirdpartyPrice(data.price)) { resolve({ price: data.price }) } else { resolve({ error: UPDATE_ERROR }) } } else { resolve({ error: UPDATE_ERROR }) } }) .catch(() => { resolve({ error: UPDATE_ERROR }) })

    Как вы можете видеть в data.price, вы получите значение, подобное: 2.42187 (Тонкоин в долларах США)

  • Где хранится история голосования валидатора?

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

    Я хотел бы увидеть всю историю прошлых голосований валидаторов. Как именно я могу это сделать?

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

    click to show

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

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

    Решено

    В этом посте есть JS-код, который это делает, а также объяснения, как все это работает: https://ton-community.github.io/tutorials/01-wallet/

    Вы должны быть в состоянии получить адрес кошелька следующим образом:

    import { mnemonicToWalletKey } from "ton-crypto"; import { WalletContractV4 } from "ton"; async function main() { // open wallet v4 (notice the correct wallet version here) const mnemonic = "unfold sugar water ..."; // your 24 secret words (replace ... with the rest of the words) const key = await mnemonicToWalletKey(mnemonic.split(" ")); const wallet = WalletContractV4.create({ publicKey: key.publicKey, workchain: 0 }); // print wallet address console.log(wallet.address.toString({ testOnly: true })); } main();
  • [Решено] Как объединить строки в FunC?

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

    Решено

    Тип string в FunC представлен slice , поэтому вам нужно создать новую ячейку и поместить в нее подстроки:

    slice charA = "A"; ;; char A slice charB = "B"; ;; char b ;; create cell with "ABBA" string in it cell cellABBA = begin_cell() .store_slice(charA) .store_slice(charB) .store_slice(charB) .store_slice(charA) .end_cell(); ;; convert cell to slice (or simply use the cell itself) slice stringABBA = cellABBA.begin_parse(); ~strdump(stringABBA); ;; #DEBUG#: ABBA
  • Возможно ли создать пирамидальную схему роялти NFT на TON?

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

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

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

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

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

    Решено

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

  • Есть ли подсветка TL-B для кода Visual Studio?

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

    Существуют плагины, которые добавляют подсветку функционального кода в код Visual Studio. Есть ли что-то подобное, но для TL-B?

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

    click to show

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

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

    Адреса, начинающиеся с EQ, являются адресами с возможностью возврата, а те, которые начинаются с UQ, не являются адресами с возможностью возврата. Это всего лишь подсказка программному обеспечению кошелька о том, хотите ли вы, чтобы отправленное сообщение могло отскочить или нет.

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

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

    Сегодня большинство кошельков обрабатывают это автоматически, и вы можете забыть о различиях.