搭建开发环境

Hacker Dōjō Web3前沿技术 workshop文稿
研究种类:TONFun|翻译—TON 社区开发专栏Blog内容汉化
资助金额:120 USDT
Bounty链接:https://dorahacks.io/daobounty/247
本项目由Hacker Dōjō 资助,文章转载请注明出处。
🔸学习量子计算、密码学、Space等Web3前沿技术
🔸认领Bounty,赚取赏金
🔸参与Hackathon,获得资助
更多Web3精彩技术分享尽在Dōjō👇
WeChat: @HackerDojo0

搭建开发环境

在这篇文章中,我们将介绍如何在TON生态系统搭建完整的开发环境。以下几个工具将被讨论到:
TON二进制文件(binaries )(
lite-client
,tonlib
,func
,fift
,...
)toncli
ton-contract-executor
tonstarter-contracts
MyLocalTON
TON二进制文件

注意:完成这一步,对于在TON区块链上进行开发来说非常重要。
要在TON区块链上开发和交互,你需要编译器、客户端、节点的二进制文件,有两种方式可以获得:
从源代码编译
从Auto Builds获得二进制文件
我们需要采取前一种方式,因为Auto Builds不适用于我们的目标分支。另外,官方TON二进制文件可以从ton仓库的Auto Builds下载。然而,我们将使用TON的分叉链,来提供后续所需的测试功能。请按照以下步骤操作:
1. 安装最新版本的:
make
cmake >= 3.0.2
g++
or clang
(or another C++ 14 compatible compiler)
OpenSSL (with C Headers) >= 1.1.1
2.复制[SpyChesses's TON](<https://github.com/SpyCheese/ton/actions>)并切换 到 toncli-local
分支:
3. 在任意位置创建一个生成目录,我们可以将其命名为 <ton-build>
。假定你已经将 ton
复制到 <ton-rep>
中,在终端执行以下命令:
4. 生成每个目标
5.这些步骤将会花费一些时间,等完成后,二进制文件将会在以下目录中:
你可以将它们复制到特定的目录并将它们增加到你的 PATH
。
6. TON二进制文件创建完成。
toncli

[toncli](<https://github.com/disintar/toncli>)
是TON的跨平台命令行界面,它让区块链的智能合约操作和交互变得更简单。
我们将使用一个带有新测试框架的 toncli
分叉版,因此也需要分叉的TON二进制文件。请按照以下步骤安装:
确定完成了
TON Binaries
部分的设置。从官方网站安装python(
>=3.9
)到你的系统。
注意1:如果你使用windows系统,请不要使用Microsoft商店版本。
注意2:确定将python添加到
PATH
(windows上只需选中Add Python 3.xx to PATH
选项即可)
3.使用以下命令安装 toncli
:
注意:如果你看到
WARNING: The script toncli is installed in '.../Python/3.X/bin' which is not on PATH
提示,需要将提示中的地址增加到PATH
环境变量中。
4. 进入到TON二进制文件的文件夹中,打开终端,然后在其中运行 toncli
命令。你可以看到它会自动检测二进制文件并设置它们。如果因为任何原因无法找到二进制文件,只需按要求提供二进制文件的抽象路径即可。如果检测成功,你将看到以下输出:

正如你看到的,toncli带有多个命令,可以帮助智能合约的开发和交互。这些命令都有很好的文档说明,这里我们将介绍它们的用法。
配置项目

要配置一个项目,我们可以使用 start
命令从示例项目创建一个新项目。目前有4个选项: wallet
,external_data
,external_code
和 simple_storage
。我们将使用 simple_storage
选项:
你可以看到合约是怎样部署在 simple_storage/func/
中的,也可以看到测试是怎样部署在 simple_storage/tests/
中的。
项目yaml文件

project.yaml
文件包含项目的结构和元数据。你可以在其中指定合约数据单元/fift文件、功能合约和测试,以便toncli检测并使用它们。
测试合约

测试在合约开发过程中非常重要,它可以确保合约的安全性,防止意外事件发生。运行测试:
这个命令会运行 project.yaml
文件中指定合约的所有测试。

你可以通过传递 -c
参数来测试某个特定的合约。
部署合约

你可以使用以下命令将合约部署到主网或测试网:
如果你没有钱包,它将为你创建一个,并要求你发送一些TON到钱包中,以便支付部署合约的费用。
更多详细说明请查阅 [toncli's docs](<https://github.com/disintar/toncli/tree/master/docs>)。
ton-contract-executor

注意:这个库依赖于
ton-compiler
,该编译器在撰写本文时只支持macOS
,如果你不是macOS用户,你将无法使用这个库,直到支持被添加。
ton-contract-executor
允许你在本地运行TVM 和执行合约,可以帮助你在将合约部署到网络之前编写、调试和全面测试合约。
你可以按以下步骤设置:
1. 安装 [Node.js](<https://nodejs.org/en/download/>)
2. 安装 yarn
包管理器:
3. 创建一个代表你的项目根目录的目录,并初始化:
4. 安装 ton-contract-executor
和 ton
:
5. 创建内容文件 contract.js
:
6. 成功执行后,你将看到结果正确的控制台日志。
这仅仅是一个基础的示例,你可以开发脚本来读取合约文件的代码,执行并测试其中的方法。更多示例可以查阅 主资源库。
tonstarter-contracts

这个项目是在TON上开发aApp的起始模版,它目前包含了合约开发的代码,未来还将包含与合约交互的前端和telegram机器人模版。
按以下步骤设置:
1. 安装最新版本的 [Node.js](<https://nodejs.org/en/download/>)
。
2. 确定已完成 TON Binaries
步骤并将二进制文件增加到 PATH
环境变量。(fift
和 func
必须可以被检测到)
3. 复制资源库:
4. 安装依赖包:
5. 配置完成。
写代码

合约存放在 contracts/
目录下,每个子文件夹的行为以及文件夹的扩展结构如下:
contracts/*.fc
:独立的根合约contracts/imports/*.fc
:合约间共享导入文件contracts/imports/<contract>/*.fc
:特定合约导入——非共享contracts/<contract>.tld
:用于数据和消息操作的可选 TL-B 方案contracts/<contract>.ts
:编码数据和消息操作的可选typescript文件
构建代码

在资源根目录下运行 npm run build
来创建合约,如果出现任何错误,它们都将显示出来;如果没有出现错误,生成的文件如下所示:
<contract>.merged.fc
- 合并并扁平化所有导入的 FunC 源代码文件<contract>.fif
- 按Fift汇编文件编译的合约<contract>.cell
- 编译合约的二进制代码单元(用于部署)
测试

在进行测试之前,你必须先构建代码。使用 npm run test
运行测试,该测试是由TVM使用 ton-contract-executor
运行的。
注意:如前所述,在撰写本文时,
ton-contract-executor
由于其依赖性只能在macOS上运行,因此如果您不使用macOS将无法运行测试。
部署

首先,先创建合约,每个要部署的合约应该要有一个 build/<contract>.deploy.ts
的脚本来返回它的初始数据单元。
可以通过在 .env
文件中的 DEPLOYER_MNEMONIC
变量来配置部署钱包,你要在 .env
中提供24个助记词,比如:
运行 npm run deploy
在主网部署,运行 npm run deploy:testnet
在测试网部署,然后按照屏幕上的提示进行操作。
更多细节可以查阅 主资源库(<https://github.com/ton-defi-org/tonstarter-contracts>)。
MyLocalTON

MyLocalTON
是一个跨平台的本地TON区块链。它以 .jar
文件的形式作为独立应用程序使用。
它可以用于简化测试和检查区块链的状态,无需使用和部署到 testnet
。
设置 MyLocalTON
:
1. 确保安装了OpenJDK17,如果你已经安装了,请跳过此步骤。
如有需要,以下是安装OpenJDK的一些指导:
Ubuntu(<https://techviewleo.com/install-java-openjdk-on-ubuntu-linux/>)
Windows(<https://java.tutorials24x7.com/blog/how-to-install-openjdk-17-on-windows>)
MacOS(<https://knasmueller.net/how-to-install-java-openjdk-17-on-macos-big-sur>)
2. 进入 MyLocalTON
里的 Auto Builds(<https://github.com/neodiX42/MyLocalTon/actions>),打开最新成功构建的代码,从生成的构建文件中下载 MyLocalTon
。


3. 解压下载的文件并用java运行:
4. 你将看到如下屏幕,它将花费一点时间来初始化TON区块链:

5. 成功初始化之后,区块链就准备好了:


关于Hacker Dōjō
由Hacker共建的加密、Web3前沿技术开源知识社区。Dōjō 会以直播/音频/文字等形式定期组织分享session, 分享主题主要覆盖L1和L2的共识算法,架构,GitHub repo相关内容,包括不限于以下话题:Scroll / Polygon zkEVM、 Eigen的混合证明系统、Starkware、azTec、 Optimism、Zecrey、Aptos、 Move、密码学(零知识证明、公钥加密、哈希函数、格密码) 、 分布式系统、 以太坊协议栈、 量子计算和量子信息、卫星通信系统和航天器系统设计等。
✨Bounty详情及认领进度详情:https://innovative-laser af4.notion.site/174922df15884848b6ac8b57cb4f2fae?v=612e13dc6b9d44dd8197f755abb9fe9c
✨加入 Dōjō 中文社区微信联系:@HackerDojo0
有关DoraHacks
DoraHacks 是一个全球范围内的极客运动,全球黑客马拉松组织者,也是全球最活跃的多链 Web3 开发者平台之一。DoraHacks.io平台使得世界各地的Hacker和开源开发者可以参与黑客马拉松、Bounty、Grant、Grant DAO,以及公共物品质押等加密原生协议和基础设施进行协作并获得资助。到目前为止,DoraHacks 社区的 4000 多个项目已经获得了来自全球行业支持者超过 3000 万美元的资助。大量开源社区、DAO 和 超过50个主要区块链生态系统正在积极使用 Dora 的基础设(DoraHacks.io)进行开源融资和社区治理。
官网:https://dorahacks.io/