StellarErrors 0.4.1

StellarErrors 0.4.1

Avi ShevinCorey Werner维护。



  • Kin 基金会

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 支持以下操作

  • 发起付款
  • 检索余额
  • 信任非本地资产
  • 检索账户详情
  • 观察变化

内联文档描述了如何使用每个方法。

入门

星际网络旨在使用非本地资产。本节描述如何准备账户来发送和接收此类资产。

  1. 在网络上创建账户

    此操作需要一个资金账户,该账户有足够的Lumen来提供所需的储备金。通常还会提供额外的储备金,以便账户支付交易费用。此操作通常由服务执行,且不属于本框架的范围。

  2. 信任资产.

    此操作由 Stellar.trust(...) 执行。

    public static func trust(asset: Asset,
                             account: Account,
                             configuration: Configuration) -> Promise<String>