TVM Linker 是一个用于编译和连接TON 智能合约的实用工具,它将TVM (TON Virtual Machine) 的组合语言源代码进行编译,连接其部分,添加标准选择器和运行时,并将其存储到二进制 的TVC 文件中。 此外,它还可以通过模拟 TON 交易的计算阶段来立即执行智能合约。
TVM 组合语言可以通过以下 TONLabs 编译器之一生成:
先决条件
- 最新版本的 Rust
- Cargo 工具
- 安装教程
构建方法
$ 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]
$ tvm_linker message <contract-address> [--init] --abi-json <abi_file> --abi-method <method_name> --abi-params {json_with_params} [-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) 反汇编器
$ tvm_linker disasm dump <tvc-file>
$ tvm_linker disasm text <tvc-file>
$ tvm_linker disasm graphviz <tvc-file>
更多帮助信息,请使用 tvm_linker --help
查看所有选项、标志和子命令的详细描述。
输入格式
作为一种临时措施,使用了一些类似 LLVM 组合语言的输入格式。 源代码应该包含几种函数类型:
.internal
- 仅由合约的运行时使用的特殊函数,例如main_external
、main_internal
、onTickTock
、onBounce
。
支持
在docs.ton.dev 获取更多文档,并查看我们的YouTube 频道 以 获取教程。 敬请关注。