TSA - Symbolic analyzer for TVM (The Telegram Open Network Virtual Machine) based on USVM.
-
Clone this repo with all submodules (using
IntelliJ Idea
orgit clone --recurse-submodules https://github.com/explyt/tsa
). -
Build the submodule:
cd tvm-disasm npm i npm run build
-
Download
fift
andfunc
for the corresponding operating system from the last TON release and add them to$PATH
. -
Install
tact
compiler with yarn:yarn global add @tact-lang/compiler
-
Build the project, running
./gradlew build
from the root of the repo.
The analyzer could be used in two ways - with a plugin for IntelliJ Idea and as a command-line tool. For more information, see README in the modules for the plugin and for the CLI, correspondingly.
Existing tests are located in the test directory of the core module. They consist of two parts:
- source files with tested code written in Tact/FunC/Fift or already compiled TVM-bytecode in the Bag of Cells (BoC) format located in the resources dir;
- Kotlin tests located in the kotlin dir running the analyzer for the corresponding sources.
To run tests, execute the following command from the root of the repo:
./gradlew tsa-core:test