- 理解理念:为什么Aptos和Move值得你投入时间学习?
- 搭建厨房:配置专业的开发环境,准备好所有工具。
- 制作第一道菜:编写、部署并调用你的第一个Move合约。
1.1 为什么选择Aptos和Move?
当你面对众多区块链平台和智能合约语言时,一个合理的问题是:为什么要选择Aptos和Move? 让我们从三个维度来回答这个问题。Aptos的高性能特性:Block-STM并发引擎详解
想象一个餐厅只有一位厨师,即使他技艺高超,一次也只能服务一桌客人。这是许多传统区块链的工作方式——顺序处理交易。 Aptos采用了不同的策略——Block-STM(软件事务内存并行执行): Block-STM的核心思想:- 先乐观执行:假设大多数交易不冲突,让它们并行处理
- 再验证解决:如果发现冲突(比如两个交易同时修改同一数据),只重新执行冲突的部分
- 保持顺序性:最终结果与按顺序执行完全一致
- 传统区块链(如以太坊):约15-45笔交易/秒
- Aptos Block-STM:理论可达16万笔交易/秒(测试网实测数千笔/秒)
Move语言的核心哲学:资产即资源编程
如果说Block-STM是Aptos的”引擎”,那么Move语言就是它的”设计哲学”。Move的核心理念是:数字资产应该像现实世界的资产一样被对待。 现实世界资产的三大特性:- 不可复制:你不能凭空复制一张百元钞票
- 不可丢弃:你不能让钞票从世界上”消失”
- 所有权明确:钞票要么在你口袋里,要么在别人口袋里
BankNote(钞票)没有copy能力 → 无法复制BankNote没有drop能力 → 无法丢弃BankNote只能move(移动)→ 必须明确转移所有权
生态定位:Aptos与Sui的差异
你可能会问:Sui也使用Move语言,它们有什么区别?| 方面 | Aptos | Sui |
|---|---|---|
| Move方言 | 更接近原始Move | 有较多自定义语法 |
| 对象模型 | 可选项(兼容传统) | 强制使用(一切都是对象) |
| 共识机制 | 拜占庭容错(BFT) | 拜占庭一致广播 |
| 开发体验 | 渐进式学习曲线 | 需要一开始就理解对象 |
| 生态成熟度 | 较高(主网运行更久) | 较新但增长迅速 |
- 如果你想要平滑的学习曲线和更成熟的生态,选择Aptos
- 如果你的应用天然适合对象模型(如游戏资产),可以考虑Sui
1.2 搭建你的开发厨房(The Workbench)
请严格按照步骤操作,确保每一步都成功后再继续。 踏上Aptos Move开发之旅的第一步,就是搭建一个稳定高效的开发环境。如同厨师在烧制丰盛大餐前需要准备好各种厨房工具,Move开发者也需要配置好必要的工具链。本章将引导您完成从零开始的环境搭建过程,确保您能够顺利编写、测试和部署 Move 智能合约。安装与配置Aptos CLI
Aptos CLI是你的主厨刀——最核心的工具,它集成了账户管理、合约编译、部署、调试等核心功能。 Windows用户:配置IDE:VS Code + Move on Aptos插件
IDE是你的料理台,一个舒适的开发环境至关重要。 步骤:- 安装VS Code:官网下载
- 安装
Move on Aptos插件:- 打开VS Code
- 点击左侧扩展图标(或按
Ctrl+Shift+X) - 搜索”Move on Aptos”
- 安装由Aptos Labs发布的插件
- 配置插件(可选但推荐):
创建并设置Aptos钱包
钱包是你的保险柜,保管着你的资产和身份。 推荐钱包:Petra(Aptos官方钱包) 安装步骤:- 访问 Petra官网
- 根据浏览器选择安装:
- Chrome: Chrome Web Store
- Firefox: Add-ons for Firefox
- 点击”Add to Chrome/Firefox”安装
- 绝不截图助记词
- 绝不分享给任何人
- 手写备份在纸上,存放在安全处
- 助记词丢失 = 资产永久丢失
0x开头的地址。复制这个地址,我们马上要用。
获取测试代币:Faucet获取指南
测试代币是你的练习食材,用于在测试网免费练习。 方法一:通过Petra钱包(最简单)- 确保Petra网络切换到”Testnet”
- 点击”Receive”按钮
- 选择”Testnet Faucet”
- 点击”Claim”领取10000测试APT
- 访问 Aptos Faucet
- 输入你的钱包地址
- 点击”Fund Account”
🍳 厨师提示:开发网络选择策略
Aptos提供多种网络环境,就像不同的厨房:| 网络 | 用途 | Gas代币 | 特点 |
|---|---|---|---|
| 本地节点 | 深度调试 | 免费生成 | 完全控制,重启清零 |
| 开发网 | 功能测试 | Faucet领取 | 频繁重置,最新功能 |
| 测试网 | 集成测试 | Faucet领取 | 稳定,模拟主网 |
| 主网 | 生产环境 | 真实APT | 真实资产,不可逆 |
- 第1-2章:在测试网练习
- 第3-5章:结合本地节点深度调试
- 项目实战:回到测试网完整测试
- 最终部署:主网发布
1.3 你的第一道Move菜品
现在,让我们开始真正的烹饪!我们将创建、部署并调用一个简单的Hello World合约。项目初始化:详解aptos move init
首先,创建一个干净的工作目录:
编写Hello World模块
在sources/目录下创建hello.move文件:
module hello_move::hello:定义模块,hello_move来自Move.toml中的命名地址use std::debug:导入标准库的调试模块const GREETING:定义常量,b"..."表示字节字符串public entry fun:入口函数,可从外部交易调用public fun:公共函数,可被其他模块调用
编译、发布到Testnet
步骤一:编译检查- 打开Petra钱包
- 点击右上角设置图标 → Developer Settings
- 点击”Show Private Key”
- 小心复制(以0x开头的一长串字符)
- 仅在测试网使用此私钥
- 绝不分享给任何人
- 练习结束后可创建新钱包
- 交易哈希:这次发布的唯一ID,可以在浏览器查看详情
- Gas用量:执行交易消耗的计算资源(测试网免费)
在Aptos Explorer上验证合约
让我们在区块链浏览器上查看刚刚发布的合约:- 打开Aptos Explorer:explorer.aptoslabs.com
- 输入交易哈希:粘贴刚才得到的哈希值(0x1234…abcd格式)
- 查看交易详情:
- 状态:Success ✅
- 发送者:你的钱包地址
- Gas用量:1024
- 时间戳:发布时间
- 点击”Module”标签:查看合约源代码
完整工作流:发布后立即调用
现在调用我们刚刚发布的函数:debug::print只在特定模式下显示。查看完整输出:
实战练习:修改Hello World
现在,请尝试修改代码,完成以下练习: 基础任务:- 修改
GREETING常量为你自己的问候语 - 重新编译和发布
- 再次调用查看新输出
-
添加带参数的函数:
调用命令:
-
创建返回值的函数:
- 是否保存了文件?
- 编译是否通过?
aptos move compile - 是否使用正确的函数ID格式?
- 钱包是否有足够的测试代币?
📝 本章总结
恭喜!你已经完成了: ✅ 理解核心理念:Aptos的并行性能和Move的资源模型✅ 搭建完整环境:CLI + IDE + 钱包 + 测试代币
✅ 完成第一个合约:编写→编译→发布→调用完整流程 关键收获:
- Move将资产视为资源,这从根本上改变了智能合约的编写方式
- 开发环境一次性配置,后续可以专注于编码
- 完整的工作流:本地编码 → 链上部署 → 调用验证
- 回顾本节的具体步骤
- 检查附录B的常见错误
- 在本书的GitHub仓库提交Issue
- 休息一下,明天再试
👨🍳 厨师笔记:
我仍然记得自己第一次成功部署合约时的兴奋。那是一个简单的计数器合约,但看到它真的在区块链上运行,感觉就像魔法。记住这一刻——这是你成为Aptos Move开发者的起点。
环境配置可能是最繁琐的部分,但也是最重要的。就像厨师必须保持刀具锋利、灶台清洁一样,好的开发环境能让你事半功倍。如果今天只完成环境搭建,你已经成功了80%。现在,休息一下,喝杯咖啡,准备进入第二章的学习。你已经迈出了最重要的一步! 🎉