Zcash iOS框架
这是一个针对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目标,测试将会构建和运行,但目前并不完全按预期工作。
存在三个测试目标,根据外部要求分组
OfflineTests
- 无外部要求。
NetworkTests
- 需要活跃的互联网连接。
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)
}
要启用日志记录,您需要执行两个简单的步骤
- 让一个类遵循
Logger
协议 - 在创建
Initializer
时注入该日志器
有关更多详情,请查看样本应用的 AppDelegate
代码。
Swiftlint
我们不喜欢单打独斗,所以我们优雅地从AirBnB借用了一些Swift lint规则,我们发现它们既酷又合理。
版本控制
此项目遵循使用预发布版本的语义版本控制。一个有效的版本号示例是 1.0.4-alpha11
,表示 1.0.4
版本预发布版本的 第11次迭代
。稳定的版本,如 1.0.4
不会包含任何预发布标识符。预发布按照稳定性顺序包括:alpha
、beta
、rc
。版本号提供了对构建名称的数值表示,并且始终增加。前六个显著数字代表主版本、次要版本和修补版本(每个两位数字)和最后三位显著数字代表预发布标识符。标识符的第一个数字表示构建类型。最后,每个新的构建都具有比所有先前构建更高的版本号。以下表格对此进行了分解
构建类型
类型 | 目的 | 稳定性 | 受众 | 标识符 | 示例版本 |
---|---|---|---|---|---|
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