Day 1
环境搭建与节点连接
初级阶段 · 预计学习时间 2 小时
学习目标
- 安装 Go SDK
- 连接 Aeternity 节点
- 配置 Network ID
- 理解 SDK 包结构
前置要求
| 要求 | 说明 | 检查命令 |
|---|---|---|
| Go 1.16+ | Go 语言环境 | go version |
| Git | 下载依赖 | git --version |
安装 SDK
创建项目
# 创建项目目录
mkdir ae-tutorial && cd ae-tutorial
# 初始化 Go module
go mod init ae-tutorial
# 安装 Aeternity SDK
go get github.com/aeternity/aepp-sdk-go/v9
SDK 核心包
| 包 | 功能 |
|---|---|
naet | 节点连接与 API 调用 (Node Aeternity) |
account | 账户生成与密钥管理 |
transactions | 交易构建、签名、序列化 |
config | 网络 ID、费用配置 |
连接节点
基础连接示例
创建 main.go 文件:
package main
import (
"fmt"
"log"
"github.com/aeternity/aepp-sdk-go/v9/naet"
)
func main() {
// Aeternity Testnet URL
nodeURL := "https://testnet.aeternity.io"
// 创建节点实例
// 第二个参数 debug: true 会打印 HTTP 请求/响应
node := naet.NewNode(nodeURL, false)
if node == nil {
log.Fatal("无法创建节点客户端")
}
fmt.Printf("✅ 成功连接到 %s\n", nodeURL)
// 获取区块高度验证连接
height, err := node.GetHeight()
if err != nil {
log.Fatal("获取区块高度失败:", err)
}
fmt.Printf("📦 当前区块高度: %d\n", height)
}
运行代码
go run main.go
# 预期输出:
# ✅ 成功连接到 https://testnet.aeternity.io
# 📦 当前区块高度: 123456
网络配置
SDK 使用 config 包管理网络设置。Network ID 在签名交易时非常重要,必须与目标网络匹配。
| 网络 | Network ID | 节点 URL |
|---|---|---|
| 主网 (Mainnet) | ae_mainnet |
https://mainnet.aeternity.io |
| 测试网 (Testnet) | ae_uat |
https://testnet.aeternity.io |
设置 Network ID
import "github.com/aeternity/aepp-sdk-go/v9/config"
func main() {
// 设置为测试网
config.Node.NetworkID = "ae_uat"
// 创建节点连接
node := naet.NewNode("https://testnet.aeternity.io", false)
// 现在可以安全地签名和广播交易了
}
重要: 如果 Network ID 设置错误,签名的交易将无法通过验证!
完整示例
package main
import (
"fmt"
"log"
"github.com/aeternity/aepp-sdk-go/v9/config"
"github.com/aeternity/aepp-sdk-go/v9/naet"
)
func main() {
// 1. 配置网络
config.Node.NetworkID = "ae_uat"
nodeURL := "https://testnet.aeternity.io"
// 2. 创建节点客户端
node := naet.NewNode(nodeURL, false)
if node == nil {
log.Fatal("无法创建节点客户端")
}
// 3. 获取链状态
height, err := node.GetHeight()
if err != nil {
log.Fatal("获取区块高度失败:", err)
}
// 4. 显示信息
fmt.Println("=== Aeternity Go SDK 教程 ===")
fmt.Printf("节点: %s\n", nodeURL)
fmt.Printf("网络: %s\n", config.Node.NetworkID)
fmt.Printf("区块高度: %d\n", height)
fmt.Println("✅ 环境配置完成!")
}
知识检查点
完成 Day 1 后,你应该能够: