StellarKit 0.4.1

StellarKit 0.4.1

Elaz - Kin FoundationAvi ShevinCorey Werner 维护。



 
依赖
KinUtil= 0.1.0
StellarErrors= 0.4.1
 

  • Kin

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 网络旨在用于非原生资产。本节描述了如何准备一个账户以发送和接收此类资产。

  1. 在网络中创建账户

    此操作需要一个有足够 Lumens 维持必要储备金的资金账户。通常提供额外的 Lumens 以允许账户支付交易费。此操作通常由服务执行,且超出本框架的范围。

  2. 信任资产.

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

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