TON(二)编译中涉及的更多细节
系列文章目录
TON 基础入门(一)合约的编译配置工作
文章目录
- 系列文章目录
- 前言
- 一、预编译文件的配置
- 二、基本编译命令
- 三.toncli 的使用
- 示例用法
前言
上回讲到了ton编译的两种模式,今天,让我们更加详细的介绍一下。
一、预编译文件的配置
首先请详细阅读这里的按安装说明
以下是详细的步骤和说明:
下载二进制文件:
根据你的操作系统(OS),从表格中下载对应的TON二进制文件。这些文件包括:func、fift、lite-client。
确保下载的版本与你的操作系统兼容,并安装任何额外的依赖项。例如,如果你使用的是MacOS arm64,你可能需要通过Homebrew安装openssl、ninja、libmicrohttpd和pkg-config。
设置二进制文件:
在Windows和Linux/MacOS上,下载完成后,你需要改变这些文件的权限,使它们可执行。这可以通过在终端运行chmod +x命令来完成,例如:chmod +x func、chmod +x fift、chmod +x lite-client。
为了方便使用,你可以将这些二进制文件添加到你的系统路径中,或者将它们复制到/usr/local/bin目录下。这样你就可以在任何地方通过命令行访问它们了。例如:cp ./func /usr/local/bin/func。
验证安装:
为了确保一切安装正确,你可以在终端运行fift -V && func -V && lite-client -V来检查这些程序的版本。如果安装正确,这些命令将输出各自的版本号。
使用Fift:
如果你打算使用Fift(一种用于编写TON智能合约的脚本语言),你还需要下载fiftlib.zip。这是一个包含Fift库的压缩文件,你需要将其解压到你的设备上的某个目录(例如/usr/local/lib/fiftlib)。
解压fiftlib.zip后,你需要设置环境变量FIFTPATH指向这个目录。这样,Fift就可以找到并使用这些库了。
完成这些步骤后,你就基本完成了TON智能合约开发环境的设置。这样你就可以开始编写和测试你的智能合约了。记得在开始之前检查所有的依赖项是否都已正确安装,并且环境变量设置正确。
二、基本编译命令
func
编译器是用于将 FunC 代码编译成 Fift TVM 汇编代码的工具。从你提供的信息来看,func
编译器支持多种命令行选项,用于控制编译过程和输出格式。
以下是一些常用的 func
编译器选项:
-I
:启用交互模式,从标准输入解析代码。-o <fift-output-filename>
:将生成的代码写入指定的文件,而不是标准输出。-v
:增加详细级别,向标准错误输出额外信息。-i <indent>
:设置输出代码的缩进(以两个空格为单位)。-A
:在代码前加上"Asm.fif" include
前缀。-O <level>
:设置优化级别(默认为2)。-P
:将代码封装在PROGRAM{ ... }END>c
中。-S
:在输出代码中包含栈布局注释。-R
:在输出代码中包含操作重写注释。-W <output-boc-file>
:包含 Fift 代码以序列化并保存生成的代码到指定的 BoC 文件。启用-A
和-P
。-s
:输出 FunC 的语义版本并退出。-V <version>
:显示func
构建信息。
假设你有一个名为 main.fc
的 FunC 文件,你想将其编译成 Fift 代码并保存到 output.fif
文件中,你可以使用以下命令:
func -o output.fif main.fc
如果你想将编译后的代码封装在 PROGRAM{ ... }END>c
中,并且包含 "Asm.fif" include
前缀,你可以使用:
func -A -P -o output.fif main.fc
如果你还希望将生成的代码序列化并保存到 BoC 文件中,可以使用:
func -A -P -W output.boc -o output.fif main.fc
确保在命令行中正确地使用这些选项,并且没有多余的破折号或其他错误的参数。
fift 命令
bye
:当你在Fift解释器中输入这个命令时,它会退出解释器。words
:输入这个命令会列出所有可用的Fift命令。
命令行选项:
-n
:不预加载标准前导文件Fift.fif
。这个文件通常包含了一些基本的Fift定义和库。-i
:即使指定了明确的源文件名,也强制进入交互模式。-I<source-search-path>
:设置库源文件的搜索路径。在Unix系统上用冒号分隔,在Windows系统上用at符号分隔。如果没有指定,将使用环境变量FIFTPATH
三.toncli 的使用
toncli 是一款强大的编程工具,在这里安装它,之后,我们可以配合预编译文件,一起使用。
toncli
是一个用于与TON区块链交互的命令行工具,它提供了多种命令来帮助开发者进行智能合约的部署、交互和测试。以下是 toncli
的一些主要功能和命令的简要说明:
-
start:创建基于示例项目的新项目结构。你可以创建不同类型的项目,如钱包、NFT集合、NFT项目、Jetton铸造者、Jetton钱包等。
-
deploy:将当前项目部署到区块链上。
-
get:在合约上运行get方法。
-
send:向合约发送内部交易。
-
run_transaction:在本地运行远程交易。
-
fift:与Fift交互。Fift是TON区块链上用于编写智能合约的脚本语言。你可以运行交互式Fift、运行Fift文件或发送BOC文件。
-
lite-client:与lite-client交互。lite-client是TON区块链的轻量级客户端,用于与区块链进行交互。
-
func:与func交互。func是TON区块链上的智能合约编译器。
-
tointeger:将字符串解析为整数,以便在func中传递给合约。
-
sendboc:发送BOC文件。BOC是TON区块链上用于表示智能合约和数据的二进制格式。
-
wallet:打印两个钱包的地址——可弹跳钱包和部署钱包。
-
run_tests:运行测试。
-
update_libs:更新库。
-
-v, --version:显示包版本。
每个命令都有帮助信息,例如,你可以通过运行 toncli deploy -h
来获取 deploy
命令的帮助信息。
如果你需要更多关于 toncli
命令的信息,通常可以在GitHub上的官方文档中找到。但是,由于网络原因,我无法解析你提供的链接。这可能是由于链接的问题或网络连接问题。请检查链接的合法性,并在网络稳定时重试。如果你有其他关于 toncli
的问题或需要帮助,请随时告诉我。
eg : toncli fift
toncli fift
是TON区块链开发工具集的一部分,用于与TON网络交互,特别是用于智能合约的开发和部署。
以下是toncli fift
命令的一些关键用法和选项:
-
位置参数:
command
:指定要运行的模式,可以是interactive
(交互模式)、run
(运行Fift文件)或sendboc
(运行Fift文件并通过lite-client发送BOC文件)。
-
选项:
-h, --help
:显示帮助信息并退出。--net {testnet,mainnet,ownnet}
:指定要部署的网络,可以是测试网(testnet)、主网(mainnet)或自定义网络(ownnet)。--workchain WORKCHAIN
:指定要部署的工作链(Workchain)。--update
:更新网络的缓存配置。--build
:从项目的func/
文件夹构建func代码。--fift-args FIFT_ARGS, -fa FIFT_ARGS
:向Fift命令传递参数和关键字参数。例如,-fa "-v 4"
可以设置详细级别。--lite-client-args LITE_CLIENT_ARGS, -la LITE_CLIENT_ARGS
:在sendboc
模式下向lite-client命令传递参数和关键字参数。例如,-la "-v 4"
可以设置详细级别。
使用toncli fift
时,你可以根据需要选择不同的模式和选项。例如,如果你想以交互模式运行Fift,只需输入toncli fift
。如果你想运行一个Fift文件,可以使用toncli fift run yourscript.fif
。如果你需要发送一个BOC文件,可以使用toncli fift sendboc yourscript.fif
。
此外,如果你在项目根目录下运行sendboc
模式,它会自动在build/boc/
目录下创建一个以文件名命名的BOC文件。如果不在项目根目录下运行,它将使用临时目录。
这些命令和选项为TON智能合约开发者提供了灵活的工具,以便于开发、测试和部署智能合约。
这段文本是关于 toncli lite-client
命令的使用说明。toncli lite-client
是一个用于与 TON 区块链的 lite-client 交互的命令行工具。lite-client 是一个轻量级的客户端,它允许用户查询区块链的状态和发送交易,而不需要运行一个完整的节点。
以下是 toncli lite-client
命令的一些关键用法和选项:
-
位置参数:
command
:指定要运行的 lite-client 命令。可以是interactive
来启动交互式 lite-client,或者任何其他 lite-client 支持的命令。
-
选项:
-h, --help
:显示帮助信息并退出。--net {testnet,mainnet,ownnet}, -n {testnet,mainnet,ownnet}
:指定要连接的网络,可以是测试网(testnet)、主网(mainnet)或自定义网络(ownnet)。--update
:更新网络的缓存配置。--lite-client-args LITE_CLIENT_ARGS, -la LITE_CLIENT_ARGS
:在 lite-client 命令的开始处传递参数和关键字参数。--lite-client-post-args LITE_CLIENT_POST_ARGS, -lpa LITE_CLIENT_POST_ARGS
:在 lite-client 命令的末尾传递参数。
示例用法
-
启动交互式 lite-client:
toncli lite-client interactive
-
连接到测试网并更新缓存配置:
toncli lite-client --net testnet --update
-
向 lite-client 命令传递参数:
toncli lite-client --lite-client-args "-v 4" help
-
在 lite-client 命令的末尾传递参数:
toncli lite-client --lite-client-post-args "-v 4" help
这些命令和选项为 TON 区块链开发者提供了灵活的工具,以便于查询区块链状态、发送交易和管理智能合约。