使用钱包智能合约的工作
👋 介绍
在开始智能合约开发之前,学习 TON 上的钱包和交易如何工作是必不可少的。这些知识将帮助开发者了解钱包、交易和智能合约之间的交互,以实现特定的开发任务。
建议在阅读本教程之前先熟悉一下 钱包合约类型 一文。
在本节中,我们将学习如何创建操作,而不使用预配置的函数,以了解开发工作流程。本教程的所有必要参考资料都位于参考章节。
💡 必要条件
本教程要求掌握 JavaScript 和 TypeScript 或 Golang 的基本知识。此外,还 需要持有至少 3 TON(可以存储在交易所账户、非托管钱包或使用 Telegram 机器人钱包)。要理解本教程,需要对 cell、address in TON、blockchain of blockchains有基本了解。
在 TON 测试网上工作往往会导致部署错误、难以跟踪交易以及不稳定的网络功能。因此,完成大部分开发工作时间可能好处是建议在 TON Mainnet 上完成,以避免这些问题,这可能需要减少交易数量,从而可能减小费用。
源代码
本教程中使用的所有代码示例都可以在以下 GitHub 存储库 中找到。
✍️ 您开始所需的内容
- 确保 NodeJS 已安装。
- 需要特定的 Ton 库,包括:@ton/ton 13.5.1+、@ton/core 0.49.2+ 和 @ton/crypto 3.2.0+。
** 可选**:如果您喜欢使用 Go 而不是 JS,则必须安装 tonutils-go 库和 GoLand IDE 才能在 TON 上进行开发。本教程将在 GO 版本中使用该库。
- JavaScript
- Golang
npm i --save @ton/ton @ton/core @ton/crypto
go get github.com/xssnick/tonutils-go
go get github.com/xssnick/tonutils-go/adnl
go get github.com/xssnick/tonutils-go/address
⚙ 设置您的环境
为了创建一个 TypeScript 项目,必须按照以下步骤进行操作:
- 创建一个空文件夹(我们将其命名为 WalletsTutorial)。
- 使用 CLI 打开项目文件夹。
- 使用以下命令来设置项目:
npm init -y
npm install typescript @types/node ts-node nodemon --save-dev
npx tsc --init --rootDir src --outDir build \ --esModuleInterop --target es2020 --resolveJsonModule --lib es6 \ --module commonjs --allowJs true --noImplicitAny false --allowSyntheticDefaultImports true --strict false
为了帮助我们完成下一个流程,我们使用了 ts-node
来直接执行 TypeScript 代码,而无需预编译。当检测到目录中的文件更改时,nodemon
会自动重新启动节点应用程序。
"files": [
"\\",
"\\"
]
- 然后,在项目根目录中创建
nodemon.json
配置文件,内容如下:
{
"watch": ["src"],
"ext": ".ts,.js",
"ignore": [],
"exec": "npx ts-node ./src/index.ts"
}
- 在
package.json
中添加以下脚本到 "test" 脚本的位置:
"start:dev": "npx nodemon"
- 在项目根目录中创建
src
文件夹,然后在该文件夹中创建index.ts
文件。 - 接下来,添加以下代码:
async function main() {
console.log("Hello, TON!");
}
main().finally(() => console.log("Exiting..."));
- 使用终端运行以下代码:
npm run start:dev
- 最后,控制台将输出以下内容。
TON 社区创建了一个优秀的工具来自动化所有开发过程(部署、合约编写、测试)称为 Blueprint。然而,我们在本教程中不需要这么强大的工具,所以建议遵循上述说明。
可选: 当使用 Golang 时,请按照以下说明进行操作:
- 安装 GoLand IDE。
- 使用以下内容创建项目文件夹和
go.mod
文件(如果使用的当前版本已过时,则可能需要更改 Go 版本):
module main
go 1.20
- 在终端中输入以下命令:
go get github.com/xssnick/tonutils-go
- 在项目根目录中创建
main.go
文件,内容如下:
package main
import (
"log"
)
func main() {
log.Println("Hello, TON!")
}
- 将
go.mod
中的模块名称更改为main
。 - 运行上述代码,直到在终端中显示输出。
也可以使用其他 IDE,因为 GoLand 不是免费的,但建议使用 GoLand。
另外,下面的每个新部分将指定每个新部分所需的特定代码部分,并且需要将新的导入与旧导入合并起来。\
🚀 让我们开始!
我们的主要任务是使用 @ton/ton、@ton/core、@ton/crypto 的各种对象和函数构建交易,以了解大规模交易是怎样的。为了完成这个过程,我们将使用两个主要的钱包版本(v3 和 v4),因为交易所、非托管钱包和大多数用户仅使用这些特定版本。
我们的主要任务是使用 @ton/ton、@ton/core、@ton/crypto(ExternalMessage、InternalMessage、Signing 等)的各种对象和函数构建消息,以了解消息在更大范围内的样子。为了完成这一过程,我们将使用两个主要的钱包版本(v3 和 v4),因为事实上交易所、非托管钱包和大多数用户都只使用这些特定版本。