8 超级链开放网络
基于百度完全自主研发的开源技术搭建的区块链基础服务网络,由分布在全国的超级联盟节点组成,符合中国标准,为用户提供区块链应用快速部署和运行的环境,以及计算和存储等资源的弹性付费能力,直接降低用户部署和运维成本,让信任链接更加便利。
开放网络需要经过实名认证,目前支持C++和Solidity合约,不支持合约升级不支持合约内获取时间戳,交易需要经过背书服务。

- 合约实现 code.Contract 接囗
- 通过结构体方法来定义合约方法
- 用 drverserve 启动合约
- 调用 ctx 上的方法完成功能
- ctx.GetObject 读取数据
- ctx.PutObject 写入数据
- ctx.Args 获取调用参数
- code.OK 返回结果
- code.Error 返回错误

9 XuperIDE使用
- 创建密钥对
- 启动节点
- 区块浏览器
- 创建智能合约账户
- 创建智能合约项目
- 编译智能合约项目
- 部署智能合约项目
- 调用合约
10 SDK调用合约

- 加载Account私钥
- 设置合约账户
- 初始化客户端
- 调用Increase方法
- Invoke调用Ge方法
- Query调用Get方法
- 解析返回值
go
func main() {
// 从明文文件中获取账户信息,路径为"F:/keys/"
acc, err := account.GetAccountFromPlainFile("F:/keys/")
if err != nil {
fmt.Println("Failed to get account:", err)
return
}
// 注释掉设置合约账户的代码
// acc.SetContractAccount("XC11111111111111@xuper")
// 打印账户地址
fmt.Println(acc.Address)
// 节点地址
node := "192.168.1.111:37101"
// 创建节点客户端
xclient, err := xuper.New(node)
if err != nil {
fmt.Println("Failed to create xclient:", err)
return
}
// 创建参数map
args := make(map[string]string)
args["key"] = "stones"
// 调用合约方法--->Increase
tx, err := xclient.InvokeNativeContract(acc, "counter", "Increase", args)
if err != nil {
fmt.Println("Failed to invoke Increase method:", err)
return
}
// 打印交易ID的十六进制编码
fmt.Println(hex.EncodeToString(tx.Tx.Ixid))
// 调用合约方法--->Get
tx, err = xclient.QueryNativeContract(acc, "counter", "Get", args)
if err != nil {
fmt.Println("Failed to query Get method:", err)
return
}
// 打印合约响应体
fmt.Println(string(tx.ContractResponse.Body))
// 关闭客户端连接
xclient.Close()
// EVM 合约返回值
var returnData map[string]interface{}
// 解析合约响应体为JSON
err = json.Unmarshal(tx.ContractResponse.Body, &returnData)
if err != nil {
fmt.Println("Failed to unmarshal JSON:", err)
return
}
// 转换返回值为uint64类型
value, ok := returnData["key"].(string)
if !ok {
fmt.Println("Invalid JSON structure")
return
}
u, err := strconv.ParseUint(value, 10, 64)
if err != nil {
fmt.Println("Failed to parse uint:", err)
return
}
// 返回u的值
fmt.Println("Parsed value:", u)
}
环境和依赖项
-
Go 语言环境 :确保你已经安装了 Go 语言,并且配置好了
GOPATH和GOROOT环境变量。你可以通过运行go version来检查是否安装成功。 -
依赖管理工具 :推荐
go mod管理依赖项。在项目根目录运行go mod init来初始化一个新的模块,再用go mod tidy下载所需依赖项 -
XuperChain SDK:这段代码使用了 XuperChain 的 SDK。你需要确保已经安装了 XuperChain 的 Go SDK。可以通过以下命令来获取:
go get github.com/xuperchain/xuper-sdk-go/v2 -
账户和密钥文件 :代码中使用了
account.GetAccountFromPlainFile方法来读取账户信息。你需要确保在F:/keys/目录下有相应的账户和密钥文件。 -
XuperChain 节点 :代码中连接到了一个 XuperChain 节点(
192.168.1.111:37101)。你需要确保该节点正在运行,并且可以从你的开发环境访问。