diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index ffea400..c148734 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -89,3 +89,21 @@ Replace `YOUR_GITHUB_USERNAME`, `Your Name`, `YOUR_X_HANDLE`, and the role/proje - **Reviewer** — Rated and reviewed submitted projects - **Developer** — Contributed code to the platform - **Maintainer** — Core team maintaining the project +$content = Get-Content CONTRIBUTORS.md -Raw +$newEntry = @' + +
+ +'@ +$content = $content -replace '', "$newEntry" +Set-Content CONTRIBUTORS.md $content \ No newline at end of file diff --git a/research/soroban-zk-std-submission.md b/research/soroban-zk-std-submission.md new file mode 100644 index 0000000..e5c150f --- /dev/null +++ b/research/soroban-zk-std-submission.md @@ -0,0 +1,126 @@ +# Soroban-ZK-Std — Stellar Wave Research Submission + +## Project Selected + +- **Project:** Soroban-ZK-Std +- **Wave source:** `georgegoldman/Soroban-ZK-Std` — Stellar Wave Program repository +- **Domain:** ZK Cryptography / Infrastructure / Developer Tooling +- **Repository:** https://github.com/georgegoldman/Soroban-ZK-Std +- **Category:** Infrastructure + +## Why This Project + +Soroban-ZK-Std is one of the most technically ambitious projects in the Stellar Wave +ecosystem. While Stellar Protocol 25 ("X-Ray") introduced native host functions for +BN254 pairing checks and Poseidon hashing, no developer-friendly SDK existed to +actually use them. Soroban-ZK-Std fills that gap — making Stellar the premier home +for Zero Knowledge proof systems. This is foundational infrastructure that unlocks +private stablecoins, shielded RWA transfers, ZK-voting, and trustless governance +directly on Stellar. + +## What The Project Does + +Soroban-ZK-Std is a high-performance, modular, no_std cryptographic standard library +optimized specifically for the Soroban Virtual Machine on Stellar. It provides the +mathematical primitives required to build and verify Zero Knowledge proofs on-chain, +including Groth16 proof verification — the most widely used ZK proof system in +production blockchain applications today. + +The library is structured into three distinct layers: + +1. **zk-core** — Pure mathematics. Elliptic curve logic for the BN254 curve, + field arithmetic over both the base field (Fp) and scalar field (Fr), constant-time + modular operations, 512-bit schoolbook multiplication, Fermat-based inversion, + and scalar multiplication via the double-and-add algorithm. All operations are + constant-time to prevent side-channel attacks — a hard requirement for any + production cryptographic library. + +2. **zk-soroban** — Stellar integration. Traits that extend the Soroban environment, + host-function mappings for the native `bn254_multi_pairing_check` and + `poseidon2_permutation` host functions introduced in Protocol 25, and XDR + conversion utilities. + +3. **verifier-sample** — Integration testing. A sample Soroban contract used to verify + WASM binary size and gas costs against the 64KB WASM limit and 400M instruction + budget enforced by the Soroban VM. + +## Technical Approach and Stellar Integration + +The project directly leverages two Protocol 25 (CAP-0075) host functions: + +- **`bn254_multi_pairing_check`** — Native BN254 pairing verification, used in Groth16 + proof verification for linear combinations of G1 points. +- **`poseidon2_permutation`** — Native Poseidon2 hash function, 47% faster than + software-only alternatives, used in ZK circuit commitment schemes. + +By calling these as host functions rather than implementing them in WASM, the library +achieves dramatic gas savings — keeping complex ZK verifiers well within the 400M +instruction budget. The use of `ethnum` for assembly-optimized 256-bit arithmetic +reduces WASM binary size by approximately 22KB, saving roughly 30% of the total +64KB contract space budget. + +The scalar multiplication implementation (G1 double-and-add over 254 bits) runs at +approximately 17M instructions — leaving ample headroom for full Groth16 verification +pipelines. The library is strictly `no_std`, uses no panics, and returns `Result