TON(二)编译中涉及的更多细节

系列文章目录

TON 基础入门(一)合约的编译配置工作

文章目录


前言

上回讲到了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 文件中,你可以使用以下命令:

bash 复制代码
func -o output.fif main.fc

如果你想将编译后的代码封装在 PROGRAM{ ... }END>c 中,并且包含 "Asm.fif" include 前缀,你可以使用:

bash 复制代码
func -A -P -o output.fif main.fc

如果你还希望将生成的代码序列化并保存到 BoC 文件中,可以使用:

bash 复制代码
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 的一些主要功能和命令的简要说明:

  1. start:创建基于示例项目的新项目结构。你可以创建不同类型的项目,如钱包、NFT集合、NFT项目、Jetton铸造者、Jetton钱包等。

  2. deploy:将当前项目部署到区块链上。

  3. get:在合约上运行get方法。

  4. send:向合约发送内部交易。

  5. run_transaction:在本地运行远程交易。

  6. fift:与Fift交互。Fift是TON区块链上用于编写智能合约的脚本语言。你可以运行交互式Fift、运行Fift文件或发送BOC文件。

  7. lite-client:与lite-client交互。lite-client是TON区块链的轻量级客户端,用于与区块链进行交互。

  8. func:与func交互。func是TON区块链上的智能合约编译器。

  9. tointeger:将字符串解析为整数,以便在func中传递给合约。

  10. sendboc:发送BOC文件。BOC是TON区块链上用于表示智能合约和数据的二进制格式。

  11. wallet:打印两个钱包的地址------可弹跳钱包和部署钱包。

  12. run_tests:运行测试。

  13. update_libs:更新库。

  14. -v, --version:显示包版本。

每个命令都有帮助信息,例如,你可以通过运行 toncli deploy -h 来获取 deploy 命令的帮助信息。

如果你需要更多关于 toncli 命令的信息,通常可以在GitHub上的官方文档中找到。但是,由于网络原因,我无法解析你提供的链接。这可能是由于链接的问题或网络连接问题。请检查链接的合法性,并在网络稳定时重试。如果你有其他关于 toncli 的问题或需要帮助,请随时告诉我。

eg : toncli fift
toncli fift是TON区块链开发工具集的一部分,用于与TON网络交互,特别是用于智能合约的开发和部署。

以下是toncli fift命令的一些关键用法和选项:

  1. 位置参数

    • command:指定要运行的模式,可以是interactive(交互模式)、run(运行Fift文件)或sendboc(运行Fift文件并通过lite-client发送BOC文件)。
  2. 选项

    • -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 命令的一些关键用法和选项:

  1. 位置参数

    • command:指定要运行的 lite-client 命令。可以是 interactive 来启动交互式 lite-client,或者任何其他 lite-client 支持的命令。
  2. 选项

    • -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:

    bash 复制代码
    toncli lite-client interactive
  • 连接到测试网并更新缓存配置:

    bash 复制代码
    toncli lite-client --net testnet --update
  • 向 lite-client 命令传递参数:

    bash 复制代码
    toncli lite-client --lite-client-args "-v 4" help
  • 在 lite-client 命令的末尾传递参数:

    bash 复制代码
    toncli lite-client --lite-client-post-args "-v 4" help

这些命令和选项为 TON 区块链开发者提供了灵活的工具,以便于查询区块链状态、发送交易和管理智能合约。

相关推荐
YSGZJJ13 分钟前
股指期货的套保策略如何精准选择和规避风险?
人工智能·区块链
web3探路者9 小时前
深入探索Solana链上的Meme生态:创新、潜力与挑战#区块链开发#dapp开发
web3·区块链·团队开发·dapp开发·区块链技术·链游开发·交易所开发
加密新世界1 天前
指南: 如何在 MEV 项目中使用 Yul
区块链
程序猿阿伟2 天前
《C++编写以太坊智能合约:安全至上的编程之道》
c++·安全·智能合约
MavenTalk3 天前
solana链上智能合约开发案例一则
rust·区块链·智能合约·dapp·solana
kejijianwen3 天前
Algen的跨链互操作性:增强区块链连接性
运维·centos·区块链
Sui_Network4 天前
World Wide Walrus:下一代数据存储协议
大数据·人工智能·web3·去中心化·区块链
Huazzi.4 天前
区块链中的wasm合约是什么?
区块链·wasm
一水鉴天4 天前
智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序6 进化论及科学的信息技术创新:分布式账本/区块链/智能合约
开发语言·人工智能·学习·区块链·智能合约·分布式账本
电报号dapp1194 天前
TON商城与Telegram App:生态融合与去中心化未来的精彩碰撞
去中心化·区块链