ZcashLightClientKit 0.17.6-beta

ZcashLightClientKit 0.17.6-beta

Pacu Gindre维护。



 
依赖关系
gRPC-Swift~> 1.8.0
SQLite.swift~> 0.13.0
libzcashlc= 0.1.1
 

  • Francisco Gindre和Jack Grigg

Zcash iOS框架

Build Status

这是一个针对iOS的Zcash轻量级客户端SDK。这是一个alpha版,目前正在积极开发中。请注意以下事项

  • 目前,该代码尚未经过外部安全审计员的审计,使用时请自行承担风险
  • 该代码尚未受到Electric Coin Company工程师的彻底审核
  • 我们正在积极更改代码库并在需要时添加功能

🔒安全警告

  • 该Zcash iOS钱包SDK处于实验性开发状态,使用时请自行承担风险。
  • 使用此SDK的开发人员必须熟悉当前的威胁模型,特别是其中描述的已知弱点。

安装

Swift包管理器

在Xcode的GUI中或在您的《Package.swift》文件中添加包含源"https://github.com/zcash/ZcashLightClientKit.git"的包,从版本0.14.0-beta开始。

Xcode项目的Beta版本支持

如果您想在Xcode项目中包含ZCashLightClientKit的Beta版本,例如0.14.0-beta,则需要使用commit sha指定它,因为它看起来Xcode不支持用于swift包的语义版本字符串的'meta data'(截至撰写本文时)。

Cocoapods支持

要将kit添加到目标中,请将该代码添加到目标中:pod "ZcashLightClientKit", ~> "0.14.0-beta"

测试

运行测试的最佳方法是打开Xcode中的"Package.swift"文件,并使用测试面板针对iOS设备进行测试。对于Mac目标,测试将会构建和运行,但目前并不完全按预期工作。

存在三个测试目标,根据外部要求分组

  1. OfflineTests
    • 无外部要求。
  2. NetworkTests
    • 需要活跃的互联网连接。
  3. DarksideTests
    • 需要在运行测试时运行lightwalletd实例,以下是一些设置信息。(Darkside是指lightwalletd中的一个模式,允许其更新以表示/模拟底层区块链的不同状态)

lightwalletd

DarksideTests测试目标依赖于运行在本地(或远程)的lightwalletd服务器实例。为了方便起见,我们添加了一个通用的(Mac)lightwalletd二进制文件(在`Tests/lightwalletd/lightwalletd`中)并且可以使用以下命令在本地运行以供测试使用

Tests/lightwalletd/lightwalletd --no-tls-very-insecure --data-dir /tmp --darkside-very-insecure --log-file /dev/stdout

有关运行lightwalletd的更多信息,请参阅主仓库https://github.com/zcash/lightwalletd

与CD/CI集成

您还可以将环境变量 LIGHTWALLETD_ADDRESS 添加到您选择的 shell 中,然后 xcodebuild 会相应地拾取它。

建议在可能的情况下,在您的 CD/CI 环境中将此值设置为秘密变量。

与日志工具集成

有许多优秀的iOS日志工具可使用。因此,我们将选择权留给您。ZcashLightClientKit依赖于一个简单的协议来将日志推送到客户端应用程序,该协议被称为 Logger(致敬命名创新...)

public protocol Logger {
    
    func debug(_ message: String, file: String, function: String, line: Int)
    
    func info(_ message: String, file: String, function: String, line: Int)
    
    func event(_ message: String, file: String, function: String, line: Int)
    
    func warn(_ message: String, file: String, function: String, line: Int)
    
    func error(_ message: String, file: String, function: String, line: Int)
    
}

要启用日志记录,您需要执行两个简单的步骤

  1. 让一个类遵循 Logger 协议
  2. 在创建 Initializer 时注入该日志器

有关更多详情,请查看样本应用的 AppDelegate 代码。

Swiftlint

我们不喜欢单打独斗,所以我们优雅地从AirBnB借用了一些Swift lint规则,我们发现它们既酷又合理。

版本控制

此项目遵循使用预发布版本的语义版本控制。一个有效的版本号示例是 1.0.4-alpha11,表示 1.0.4 版本预发布版本的 第11次迭代。稳定的版本,如 1.0.4 不会包含任何预发布标识符。预发布按照稳定性顺序包括:alphabetarc。版本号提供了对构建名称的数值表示,并且始终增加。前六个显著数字代表主版本、次要版本和修补版本(每个两位数字)和最后三位显著数字代表预发布标识符。标识符的第一个数字表示构建类型。最后,每个新的构建都具有比所有先前构建更高的版本号。以下表格对此进行了分解

构建类型

类型 目的 稳定性 受众 标识符 示例版本
alpha 沙盒。 开发者用于验证行为和尝试新功能。这里看到的事物可能永远不会进入生产环境。这里的多数错误可以被忽略。 不稳定:预期出现错误 内部开发者 0XX 1.2.3-alpha04 (10203004)
beta 交接。 开发者用于展示完成的功能。这里发现的错误应该被报告并立即解决,如果它们与最近的变化有关。 不稳定:报告错误 内部利益相关者 2XX 1.2.3-beta04 (10203204)
release candidate 加固。 对我们认为可以上线应用的最后测试。这里的重点是回归测试,以确保新更改没有在先前工作正常的地方引入不稳定性。 稳定:寻找错误 外部测试人员 4XX 1.2.3-rc04 (10203404)
生产 交付。 向最终用户交付新功能。这里发现的任何错误都需要优先处理。其中一些需要立即关注,但大多数可以在未来的版本中解决。 稳定:优先处理错误 公众 8XX 1.2.3 (10203800)

示例

该仓库包含此SDK提供的独立功能示例。它们可以在示例文件夹中找到。

示例可以在 示例应用 中找到。

许可

MIT