StellarKit
与 Stellar 区块链网络交互的框架。StellarKit 与 Horizon 节点进行通信。
概念
账户
Stellar 使用 ED25519
密钥对表示账户。公钥代表网络上的账户,而密钥仅用于签名交易。
公钥的文本表示格式如下
G<base32 representation of key + 2 byte CRC>
示例: GCDXVSRN7TORSWS6N3FEHV3KUKGK4F74ZJDRENEAKVDWXIEFR5BOKMGK
资产
资产代表可转让的单位。Stellar 使用一种本地单位,称为 卢umen,用于支付交易费和账户维护。网络还支持非原生资产,称为 用户定义的资产,通过代码和发行者进行标识。
资产发行者是已信任发行资产账户。
信任
为了接收非原生资产,账户必须信任发行人。这允许具有相同代码的多个资产共存。
设计
StellarKit公开了Stellar
,它是一个无状态结构体,具有静态方法。除了方法特定的参数外,每个方法还接受一个类型为Stellar.Node
的参数node
。
Stellar.Node
struct Node {
let baseURL: URL
let networkId: NetworkId
}
baseURL
是Horizon节点的URL。用于构造Horizon API端点的URL。networkId
标识Horizon节点所属的Stellar网络。
NetworkId
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 算法实现。
承诺(Promises)
大多数 Stellar
方法返回一个 Promise
,这是一个异步过程的抽象,允许链式执行操作。《StellarKit》使用由 KinUtil 提供的最小实现,以避免第三方依赖。
功能
目前,《StellarKit》支持以下操作:
- 进行支付
- 检索余额
- 信任非原生资产
- 检索账户详情
- 观察变化
内联文档描述了如何使用每个方法。
入门指南
Stellar 网络旨在用于非原生资产。本节描述了如何准备一个账户以发送和接收此类资产。