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 后,你应该能够: