rapidsnark 0.0.1-alpha.4

rapidsnark 0.0.1-alpha.4

Yaroslav Moriademonsh 维护。



rapidsnark 0.0.1-alpha.4

  • Yaroslav Moria

rapidsnark


此库是 Rapidsnark 的 Swift 封装。它允许在 iOS 环境中生成交证的特定电路。

平台支持

iOS:与任何 64 位架构的 iOS 设备兼容。

模拟器版本未经汇编优化构建,性能较慢。

macOS:尚未支持。

要求

  • iOS 12.0+

安装

rapidsnark 通过 CocoaPodsSPM 可用。要安装它,只需将以下行添加到您的 Podfile

pod 'rapidsnark'

或将其添加到 XCode 中项目的 SPM 依赖项。

用法

groth16ProveWithZKeyFilePath

该函数接收 .zkey 文件路径和见证文件(作为 base64 编码的字符串)的路径,并返回证明和公共信号。

直接从文件系统中读取 .zkey 文件。

import rapidsnark

// ...

let zkeyPath = "path/to/zkey";
let wtns = PackageManager.default.contents(atPath: "path/to/wtns")?.base64EncodedString(options: .endLineWithLineFeed);

let (proof, publicSignals) = groth16ProveWithZKeyFilePath(zkeyPath, wtns);

groth16Verify

验证证明和公共信号是否与验证密钥匹配。

import rapidsnark

// ...

let zkey = PackageManager.default.contents(atPath: "path/to/zkey")?.base64EncodedString(options: .endLineWithLineFeed);
let wtns = PackageManager.default.contents(atPath: "path/to/wtns")?.base64EncodedString(options: .endLineWithLineFeed);
let verificationKey = PackageManager.default.contents(atPath: "path/to/verification_key")?.base64EncodedString(options: .endLineWithLineFeed);

let (proof, publicSignals) = await groth16Prove(zkey, wtns);

let proofValid = groth16Verify(proof, publicSignals, verificationKey);

groth16Prove

接收 zkey 和 witness 文件编码为 base64。

proofpublicSignals 是 base64 编码的字符串。

大型电路可能导致 OOM。请谨慎使用。

import rapidsnark

// ...

let zkey = PackageManager.default.contents(atPath: "path/to/zkey")?.base64EncodedString(options: .endLineWithLineFeed);
let wtns = PackageManager.default.contents(atPath: "path/to/wtns")?.base64EncodedString(options: .endLineWithLineFeed);

let (proof, publicSignals) = await groth16Prove(zkey, wtns);

groth16PublicSizeForZkeyFile

为指定的 zkey 计算公共缓冲区大小。

import rapidsnark

// ...

let publicBufferSize = await groth16PublicSizeForZkeyFile("path/to/zkey");

公共缓冲区大小

groth16Provegroth16ProveWithZKeyFilePath 都有可选的 proofBufferSizepublicBufferSizeerrorBufferSize 参数。如果 publicBufferSize 太小,则库将自动计算。

这些参数用于设置用于存储证明、公共信号和错误的缓冲区的大小。

如果有嵌入式电路在应用中,建议一次计算公共缓冲区大小并重复使用。要计算公共缓冲区的大小,请调用 groth16PublicSizeForZkeyFile

示例

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install。然后,在 XCode 中打开 rapidsnark.xcworkspace 文件,并在 iOS 设备或模拟器上运行它。

许可协议

react-native-rapidsnark 是 iden3 项目 0KIMS 协会的部分。请参阅 COPYING 文件以获取更多详细信息。