В данном посте мы рассмотрим технические аспекты утилиты tvm_linker, предназначенной для компиляции и связывания исходного кода ассемблера TVM смарт-контрактов в блокчейне TON (The Open Network). Утилита tvm_linker позволяет преобразовать исходный код в двоичный файл TVC, а также эмулировать фазу вычислений транзакции TON.
Предварительные условия:
- Последняя версия Rust
- Инструмент Cargo
Скачать их можно здесь
Как собрать:
$ cargo update && cargo build --release -j8
Как использовать:
tvm_linker имеет несколько режимов работы:
-
Генерация готового к развертыванию контракта:
$ tvm_linker compile [--lib <lib_file>] [--abi-json <abi_file>] [-w <workchain_id>] [--debug] [--print_code] [--silent] [--debug-map <debug_info_path>] <source>
-
Декодирование .boc сообщений, подготовленных внешним образом:
$ tvm_linker decode [--tvc] boc-file
-
Подготовка внешних входящих сообщений в формате .boc:
$ tvm_linker message <contract-address> [--init] [--data] [-w]
-
Эмуляция выполнения контракта:
$ tvm_linker test <contract-address> --body XXXX... [--sign key-file] [--trace] [--decode-c6] [--internal <value>] [--src address] [--now unixtime] [-s source-file] [--balance <value>]
-
Дизассемблер:
dump
выводит псевдографическое представление дерева ячеек.text
дизассемблирует tvc, созданный компиляторами Solidity и FunC.graphviz
создает вывод в формате dot для генерации графического представления DAG tvc.
Поддержка:
Получите больше документов на docs.ton.dev и посмотрите наши обучающие видео на YouTube. Следите за обновлениями.