启动和使用虚拟机
在完成 Mount、Build 和 Module 上传 后,你就可以真正让你的虚拟机在 HyMatrix 网络上「上线」,并通过官方提供的 SDK 与它交互。下面分为两个部分介绍:如何启动(Spawn)一个虚拟机实例,以及如何使用 HyMatrix SDK 发送消息,例如转账或节点质押。
启动虚拟机
在 HyMatrix 中,启动一个虚拟机的动作叫做 Spawn。用户或开发者只需要发送一个 Process 类型的交易,指定 Module ID(之前上传到 Arweave 的虚拟机模板)和 Scheduler(期望在哪个节点上调度执行)。
官方提供的 Golang SDK 可以非常简单地调用。下面是一个最小可用的 Go 示例:
package main
import (
"fmt"
"github.com/hymatrix/hymx/sdk"
goarSchema "github.com/permadao/goar/schema"
)
func main() {
// 初始化 SDK 客户端
s := sdk.New("http://127.0.0.1:8080", "../test_keyfile.json")
// 调用 Spawn 方法
res, err := s.Spawn(
"LSjhdzBjyWuyUPe-g6PUzt8t1PUlw2FZ9SM3_hCh2Is", // Module ID
"0x972AeD684D6f817e1b58AF70933dF1b4a75bfA51", // Scheduler (节点 AccId)
[]goarSchema.Tag{},
)
fmt.Printf("res: %#v, err: %v\n", res, err)
}
这里的核心参数解释:
- Module ID:你在「创建 Module」步骤中上传到 Arweave 后获得的
item.Id,唯一标识你的虚拟机模板。 - Scheduler:期望分配执行的节点 AccId(可以是你自己的节点,也可以是其他提供服务的节点)。
- Tags:可选扩展参数。
执行这个调用后,网络会生成一条不可篡改的 Process 交易记录,节点会根据 Module ID 在本地加载并实例化出对应的虚拟机实例,保证日志可验证、可重放。
使用 HyMatrix 发送消息
HyMatrix 的官方 Golang SDK 不只是用于 Spawn,还支持调用任何已部署的虚拟机,包括转账代币(例如 tAX)或者向网络注册节点、质押代币等操作。
以下是两个常见用例的示例代码:
1️⃣ tAX 代币转账
package main
import (
"math/big"
"github.com/hymatrix/hymx/sdk"
"github.com/permadao/goar/schema"
)
func transfer(from *sdk.SDK, token, to string, amt *big.Int) error {
_, err := from.SendMessageAndWait(token, "",
[]schema.Tag{
{Name: "Action", Value: "Transfer"},
{Name: "Recipient", Value: to},
{Name: "Quantity", Value: amt.String()},
},
)
return err
}
这里:
- token 是 tAX 代币的虚拟机地址。
- to 是接收方地址。
- amt 是转账数量。
调用后会在网络上产生一条标准化、可验证的交易记录。
2️⃣ 节点质押(Stake)
func stake(from *sdk.SDK, amt *big.Int) {
info, _ := from.Client.Info()
from.SendMessage(info.Hm, "",
[]schema.Tag{
{Name: "Action", Value: "Stake"},
{Name: "Quantity", Value: amt.String()},
{Name: "Registry", Value: info.Registry},
{Name: "Acc-Id", Value: from.GetAddress()},
{Name: "Name", Value: "stakeNode"},
{Name: "Desc", Value: "This is stake node"},
{Name: "URL", Value: "http://127.0.0.1:8081"},
},
)
}
这里展示了如何调用 Hymatrix 的注册/质押接口,将节点信息上链并锁定代币以参与网络执行和经济激励。
通过这些标准化的调用模式,开发者可以轻松构建自己的 dApp 前端或后端逻辑,和 HyMatrix 上的任何虚拟机进行交互,完成 Spawn、转账、质押、调用自定义函数等去中心化计算任务。