[Можно ли использовать этот код?] Оптимизация и использование утилиты tvm_linker в блокчейне TON

В данном посте мы рассмотрим технические аспекты утилиты tvm_linker, предназначенной для компиляции и связывания исходного кода ассемблера TVM смарт-контрактов в блокчейне TON (The Open Network). Утилита tvm_linker позволяет преобразовать исходный код в двоичный файл TVC, а также эмулировать фазу вычислений транзакции TON.

Предварительные условия:

Как собрать:

$ cargo update && cargo build --release -j8

Как использовать:

tvm_linker имеет несколько режимов работы:

  1. Генерация готового к развертыванию контракта:

    $ tvm_linker compile [--lib <lib_file>] [--abi-json <abi_file>] [-w <workchain_id>] [--debug] [--print_code] [--silent] [--debug-map <debug_info_path>] <source>
    
  2. Декодирование .boc сообщений, подготовленных внешним образом:

    $ tvm_linker decode [--tvc] boc-file
    
  3. Подготовка внешних входящих сообщений в формате .boc:

    $ tvm_linker message <contract-address> [--init] [--data] [-w]
    
  4. Эмуляция выполнения контракта:

    $ tvm_linker test <contract-address> --body XXXX... [--sign key-file] [--trace] [--decode-c6] [--internal <value>] [--src address] [--now unixtime] [-s source-file] [--balance <value>]
    
  5. Дизассемблер:

    • dump выводит псевдографическое представление дерева ячеек.
    • text дизассемблирует tvc, созданный компиляторами Solidity и FunC.
    • graphviz создает вывод в формате dot для генерации графического представления DAG tvc.

Поддержка:

Получите больше документов на docs.ton.dev и посмотрите наши обучающие видео на YouTube. Следите за обновлениями.