• Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
Theme Center
  • Theme Center
  • default

  • reset theme
Collapse

tonpie.io

Подпишись на канал фаундера и разработчика экосистемы tonpie

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

Запланировано Прикреплена Закрыта Перенесена TON Overflow на русском
a-func
2 Сообщения 1 Posters 58 Просмотры
    • Сначала старые
    • Сначала новые
    • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано Answers
    #1

    Существует существующий контракт, который был развернут кем-то другим, например токен, у которого есть методы получения, такие как get_balance(address) или get_total_supply()

    Я пишу новый смарт-контракт в FunC, который должен считывать информацию из этого токен-контракта, например, мне нужно прочитать чей-то баланс из моего кода

    Как я могу это сделать?


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

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #2

    Решено

    Для одного контракта на TON невозможно вызвать метод в другом смарт-контракте на TON.

    Шаблон контрактов, вызывающих контракты синхронно (в рамках потока одной и той же транзакции), исходит от Solidity и EVM, но этот шаблон применим не ко всем блокчейнам. Существует несколько концептуальных различий между TON и EVM - вы можете прочитать о них подробнее [здесь](https://society.ton.org/six-unique-aspects-of-ton-blockchain-that-will - неожиданность-солидность-разработчики).

    Лучше просматривать смарт-контракты на TON, такие как micro services, которые запущены на разных машинах. Они могут отправлять сообщения друг другу, но эти сообщения являются асинхронными, а не атомарными - поэтому они могут обрабатываться в разных блоках (в разных транзакциях).

    Вам нужно будет учесть это в вашей контрактной архитектуре. Вот несколько идей о том, как это сделать:

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

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

    1 ответ Последний ответ
    0

  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.