[这能用吗] VM Linker:TON 智能合约的编译与连接工具

TVM Linker 是一个用于编译和连接TON 智能合约的实用工具,它将TVM (TON Virtual Machine) 的组合语言源代码进行编译,连接其部分,添加标准选择器和运行时,并将其存储到二进制 的TVC 文件中。 此外,它还可以通过模拟 TON 交易的计算阶段来立即执行智能合约。

TVM 组合语言可以通过以下 TONLabs 编译器之一生成:

先决条件

构建方法

$ 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_externalmain_internalonTickTockonBounce

支持

docs.ton.dev 获取更多文档,并查看我们的YouTube 频道 以 获取教程。 敬请关注。