StellarKit
一个用于与Stellar 区块链网络交互的框架。StellarKit 与 Horizon 节点进行通信。
概念
账户
Stellar 将账户表示为 ED25519
密钥对。公钥代表网络上的账户,私钥仅用于签名交易。
公钥的文本表示形式如下所示
G<base32 representation of key + 2 byte CRC>
示例: GCDXVSRN7TORSWS6N3FEHV3KUKGK4F74ZJDRENEAKVDWXIEFR5BOKMGK
资产
资产代表一个可转让的单位。Stellar 使用一个本地单位,称为 Lumen,用于支付交易费和账户维护。该网络还支持非本地或用户定义的资产,通过一个代码和一个发行人进行标识。
资产发行人是一个被信赖以发行资产的账户。
信任
为了接收非原生资产,账户必须信任发行者。这允许多个具有相同代码的资产共存。
设计
StellarKit公开了Stellar
,它是一个无状态的struct,具有静态方法。除了特定于方法的参数外,每个方法还接受一个名为node
的参数,其类型为Stellar.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
是一个接受要签名的数据对象并返回签名的闭包。
这种设计使得StellarKit
对加密实现和账户存储机制保持中立。它还避免了第三方依赖,因为iOS(和macos)没有原生的ED25519算法实现。
承诺
大多数 Stellar
方法返回一个 Promise
,它是对异步过程的抽象,可以用于链式调用操作。StellarKit
使用来自 KinUtil 的最小实现,以避免第三方依赖。
功能
目前,StellarKit
支持以下操作
- 发起付款
- 检索余额
- 信任非本地资产
- 检索账户详情
- 观察变化
内联文档描述了如何使用每个方法。
入门
星际网络旨在使用非本地资产。本节描述如何准备账户来发送和接收此类资产。