Welcome to Swift-Bridge, a seamless connector between the Swift programming ecosystem and the noir_rs
Rust library. This bridge is designed to provide Swift developers with easy and efficient access to noir_rs
's zkSNARK proving functionalities, making it highly applicable in iOS, macOS, WatchOS, and other platforms that support Swift.
- Swift Integration: Custom-built for Swift developers, enabling native access to zkSNARK tools within the Swift environment.
- Rust-Swift Bridge: Offers a fluid connection between Swift and Rust, providing a smooth and efficient integration.
- Security Focused: Ensures top-notch security with advanced zkSNARK proof generation and verification capabilities, integral for privacy and scalability in computing.
cargo build
For high confidence in the bridge's reliability, utilize the included test suites:
cargo test
# Transfer noir_swift library to Swift directory
cp target/debug/libnoir_swift.a swift/
cd swift
# Compile Swift project
./build
# Execute the program
./main.run
Swift-Bridge mainly provides two crucial functions:
- Prove in Swift: Create a zkSNARK proof using provided circuit bytecode and initial witness.
- Verify in Swift: Authenticate a zkSNARK proof against its respective circuit and verification key.
struct Proof {
proof: Vec<u8>,
verification_key: Vec<u8>,
}
fn prove_swift(circuit_bytecode: String, initial_witness_vec_raw: Vec<i32>) -> Option<Proof>;
fn verify_swift(circuit_bytecode: String, proof: Proof) -> Option<bool>;
Here's an example using a noir circuit to verify if x is different from y:
let BYTECODE = "<Your Noir Bytecode>"
let witness = RustVec<Int32>()
witness.push(value: 1) // x value
witness.push(value: 2) // y value
guard let proof = prove_swift(BYTECODE, witness) else {
return false
}
let verdict = verify_swift(BYTECODE, proof) ?? false
print(verdict) // Outputs true if successful verification
We are constantly working to improve the Swift-Bridge, focusing on enhancing its compatibility with a broader range of Swift-supported platforms and streamlining its integration into Swift-based projects.
Stay tuned for more updates and advancements in bridging Swift with the world of zkSNARKs!