一个用于与 Stellar 区块链网络交互的框架。StellarKit 与 Horizon 节点通信。
Stellar 将账户表示为 ED25519
密钥对。公钥代表网络上的账户,而私钥仅用于签署交易。
公钥的文本表示使用以下格式
G<密钥的 base32 表示 + 2 字节 CRC>
示例: GCDXVSRN7TORSWS6N3FEHV3KUKGK4F74ZJDRENEAKVDWXIEFR5BOKMGK
资产代表可转移的单位。Stellar 使用一种原生单位,称为 Lumen,用于支付交易费用和账户维护。该网络还支持非原生或用户定义的资产,这些资产通过代码和发行者进行标识。
资产发行者是被信任可以发行资产的账户。
为了接收非原生资产,账户必须信任发行者。这允许多个具有相同代码的资产共存。
StellarKit 公开了 Stellar
,这是一个无状态的结构体,带有静态方法。除了特定于方法参数外,每个方法都接受一个名为 node
的参数,其类型为 Stellar.Node
。
struct Node {
let baseURL: URL
let networkId: NetworkId
}
baseURL
是 Horizon 节点的 URL。它用于构建 Horizon API 端点的 URL。networkId
标识 Horizon 节点所属的 Stellar 网络。enum NetworkId {
case test
case main
case custom(String)
}
Stellar 通过预定义的字符串标识网络。Stellar 发展基金会运行着两个公共网络。一个是主网,另一个用于测试。开发者可以使用自己的标识符建立私有网络。
test
代表 Stellar 基金会的测试网络。main
代表 Stellar 基金会的公共(主)网络。custom
允许提供用户定义的标识符,用于私有网络。public protocol Account {
var publicKey: String? { get }
var sign: (([UInt8]) throws -> [UInt8])? { get }
}
StellarKit
不包含账户概念的实现。相反,它依赖于 Account
协议来提供所需的功能。
publicKey
是账户公钥的字符串表示形式,如 概念 部分所述。sign
是一个闭包,它接受要签名的 Data 对象,并返回签名。这种设计允许 StellarKit
在加密实现和账户存储机制方面保持不可知。它也避免了第三方依赖,因为 iOS(和 macOS)没有 ED25519 算法的原生实现。
大多数 Stellar
方法返回一个 Promise
,它是对异步过程的抽象,允许链式操作。StellarKit
使用 KinUtil 提供的最小实现,以避免第三方依赖。
目前,StellarKit
支持以下操作
内联文档描述了如何使用每个方法。
Stellar 网络是为使用非原生资产而设计的。本节介绍如何准备一个账户来发送和接收此类资产。