在这篇文章中,我们将介绍如何建立一个完整的 TON 生态系统开发环境。将讨论这些工具:
- TON二进制文件(
lite-clienttonlibfuncfift...
) - toncli
- ton-contract-executor
- tonstarter 合約
- 我的本地 TON
TON 二进制文件
注意:完成此步骤对于在 TON 区块链上进行开发至关重要。
为了在 TON 区块链上进行开发并与之交互,您需要拥有编译器、客户端、节点等所需的二进制文件。有两种选择可以获取它们:
- 从源代码编译
- 从自动构建中获取二进制文件
我们需要继续使用前一个选项,因为自动构建不适用于我们的目标分支。此外,官方 TON 二进制文件可以从 ton 存储库Auto Builds下载。但我们将使用 TON 的分叉,它提供稍后需要的测试功能。要构建,请按照下列步骤操作:
- 安装最新版本:
make
cmake >= 3.0.2
g++
或clang
(或另一个 C++ 14 兼容编译器)- OpenSSL(带 C 标头)>= 1.1.1
- 克隆SpyChesses 的 TON并切换到
toncli-local
分支:
git clone https://github.com/SpyCheese/ton
git checkout toncli-local
- 在任意位置创建一个构建目录,我们将其称为
<ton-build>
. 另外,我们假设您已在终端中ton
克隆了, :<ton-rep>
cd <ton-build>
cmake <ton-rep>
- 构建每个目标:
cmake --build . --target lite-client
cmake --build . --target func
cmake --build . --target fift
- 这些步骤需要一些时间,请等待完成。二进制文件将在以下位置提供:
fift: <ton-build>/crypto/fift
func: <ton-build>/crypto/func
lite-client: <ton-build>/lite-client/lite-client
您可以将它们复制到一个特殊目录并将它们添加到您的PATH
. 6. TON 二进制文件已构建并准备就绪!
通克利
toncli
是 TON 的跨平台 cli,它使智能合约操作以及与区块链的交互变得更加容易。
toncli
我们将使用一个带有新测试框架的分叉,因此需要分叉的 TON 二进制文件。要安装,您必须按照以下步骤操作:
- 确保完成
TON Binaries
部分。 >=3.9
从官方网站在您的系统上安装 python( ) 。
注意 1:如果您使用的是 Windows,请勿使用 Microsoft Store 版本。
注意 2:确保将 python 添加到PATH(在 Windows 上只需勾选该Add Python 3.xx to PATH选项)
toncli
使用此命令安装:
git clone https://github.com/AminRezaei0x443/toncli
cd toncli
git checkout dev
python setup.py develop
注意:如果您看到WARNING: The script toncli is installed in '.../Python/3.X/bin' which is not on PATH.将提到的地址添加到您的PATH环境变量中。
- 转到 TON 二进制文件的文件夹,然后在该文件夹中打开终端。然后,
toncli
在终端中运行命令。您应该看到它自动检测二进制文件并设置它们。如果由于任何原因它找不到二进制文件,只需按要求提供二进制文件的抽象路径即可。成功检测后,您将看到如下输出:
如您所见,toncli 附带了几个有助于智能合约开发和交互的命令。这些命令都有详细记录,但我们将在这里介绍它们的用法。
设置项目
要设置项目,我们可以使用start
命令从示例项目创建新项目。目前有 4 个选项:wallet
、external_data
、external_code
、simple_storage
。我们将继续选择simple_storage
:
toncli start simple_storage
您可以看到合约是如何在 中实现的simple_storage/func/
以及测试是如何在 中实现的simple_storage/tests/
。
项目yaml文件
该project.yaml
文件包含项目的结构和元数据。您可以指定合约及其数据单元/fift 文件、func 合约和测试,以便 toncli 检测并使用它们。
测试合同
在合约开发过程中,测试至关重要,以确保合约的安全性并防止意外行为。运行测试:
toncli run_tests
这将运行文件中指定的合约的所有测试project.yaml
。
您可以通过传递参数来测试一份特殊的合约-c
。
toncli run_tests -c contract
部署合约
您可以使用以下命令轻松将合约部署到主网或测试网:
toncli deploy -n testnet -wc 0
如果您不存在,它会为您创建一个钱包,并要求您向其发送一些 TON,因此合约部署费用已包含在内。
更详细的描述,可以查看toncli 的 docs。
TON 合約执行者
注意:在撰写本文时,该库仅取决于ton-compiler哪个支持。macOS因此,如果您不是 macOS 用户,在添加支持之前您将无法使用此库。
ton-contract-executor
允许您在本地运行 TVM 并执行合约,从而在将合约启动到网络之前简化编写、调试和全面测试合约的工作。
要进行设置,您需要:
- 安装
Node.js
- 安装
yarn
包管理器:
npm install --global yarn
- 创建一个代表项目根目录的目录,并初始化它:
yarn init
- 安装
ton-contract-executor
和ton
yarn add ton-contract-executor
yarn add ton
- 创建
contract.js
内容的文件:
let {SmartContract} = require("ton-contract-executor");
let { Cell } = require("ton");
async function main() {
const source = `
() main() {
;; noop
}
int sum(int a, int b) method_id {
return a + b;
}
`
let contract = await SmartContract.fromFuncSource(source, new Cell())
let res = await contract.invokeGetMethod('sum', [
// argument a
{ type: 'int', value: '1' },
// argument b
{ type: 'int', value: '2' },
])
console.log('1 + 2 = ', res.result[0])
};
main().then(()=>{});
- 成功执行后,您将看到带有正确结果的控制台日志。
这只是一个基本示例,您可以开发脚本来从合约文件中读取代码,并执行和测试其方法。主存储库中提供了更多示例。
tonstarter 合約
该项目是在 TON 上开发去中心化应用程序 (dApp) 的入门模板。它目前包含用于合约开发的代码,但将来它将包含用于与合约交互的前端和电报机器人模板。
开始:
- 安装现代版本的
Node.js
- 确保完成
TON Binaries
步骤并将二进制文件添加到PATH
环境变量中。(fift
并且func
必须是可检测到的) - 克隆存储库:
git clone https://github.com/ton-defi-org/tonstarter-contracts
- 安装依赖项:
npm install
- 你已经准备好了!
编写代码
合约存在于 中contracts/
,文件夹结构中每个子文件夹和扩展的行为如下:
contracts/*.fc
:独立的根合约contracts/imports/*.fc
:合约之间共享导入contracts/imports/<contract>/*.fc
:合同特定的进口 - 不共享contracts/<contract>.tld
:用于数据和消息操作的可选TL-B架构contracts/<contract>.ts
:可选的打字稿文件,用于编码数据和消息操作
建筑规范
在存储库根目录中,运行npm run build
以构建合约。如果发生任何错误,它们将被显示,否则生成的文件是:
<contract>.merged.fc
将 FunC 源代码与所有导入合并并扁平化<contract>.fif
将合约编译为 Five 汇编文件<contract>.cell
已编译合约的二进制代码单元(用于部署)
测试
您必须在继续测试之前构建代码。使用运行测试npm run test
。测试由 TVM 使用ton-contract-executor
。
注意:如前所述,在撰写本文时,ton-contract-executor由于其依赖性,仅在 macOS 上运行。因此,如果您不在 macOS 上,您将无法运行测试
部署
首先,建立你的合同。每个要部署的合约都应该有一个脚本build/<contract>.deploy.ts
来返回其初始化数据单元。
部署钱包可以通过文件DEPLOYER_MNEMONIC
中的变量进行配置.env
。您应该提供 24 个密码,如下所示.env
:
DEPLOYER_MNEMONIC="tumble degree cousin sand ..."
运行npm run deploy
以在主网和npm run deploy:testnet
测试网上进行部署,然后按照屏幕上的说明进行操作。
更多详细信息可在主存储库中找到。
我的本地TON
MyLocalTON
是一个跨平台的本地 TON 区块链。它作为文件形式的独立应用程序出现.jar
。
它可用于简化测试和检查区块链的状态,而无需在testnet
。
设置MyLocalTON
:
- 确保已安装OpenJDK17,如果已经安装,请跳过此步骤。
如果需要的话,这些是一些安装 OpenJDK 的指南:
- 继续自动构建,
MyLocalTON
打开最新的成功构建MyLocalTon
并从生成的工件中下载。
- 解压下载的文件并用java执行:
java -jar MyLocalTon.jar
- 您将看到以下屏幕,初始化 TON 区块链需要一些时间:
- 初始化成功后,区块链将准备就绪:
本站所提供的所有资讯均仅供读者参考。这些资讯不代表任何投资建议、提供、邀请或推荐。读者在使用这些资讯时,应当考虑自己的个人需求、投资目标和财务状况。所有投资都伴随着一定的风险,在做出任何投资决策之前请多加留意。