Skip to content

[zklogin] add support for v2 vk#937

Open
joyqvq wants to merge 3 commits into
mainfrom
joy/add-zklogin-v2
Open

[zklogin] add support for v2 vk#937
joyqvq wants to merge 3 commits into
mainfrom
joy/add-zklogin-v2

Conversation

@joyqvq
Copy link
Copy Markdown
Collaborator

@joyqvq joyqvq commented Mar 31, 2026

 
  ┌─────────────────────────────────────┬───────────┬───────────┐
  │              Benchmark              │    V1     │    V2     │
  ├─────────────────────────────────────┼───────────┼───────────┤
  │ as_arkworks                         │ 317.60 µs │ 309.44 µs │
  ├─────────────────────────────────────┼───────────┼───────────┤
  │ calculate_all_inputs_hash           │ 257.37 µs │ 535.72 µs │
  ├─────────────────────────────────────┼───────────┼───────────┤
  │ verify_zk_login_proof_with_fixed_vk │ 912.33 µs │ 931.25 µs │
  ├─────────────────────────────────────┼───────────┼───────────┤
  │ Total (verify_zk_login)             │ 3.13 ms   │ 1.87 ms   │
  └─────────────────────────────────────┴───────────┴───────────┘

calculate_all_inputs_hash performance increase comes from hash_to_field for the modulus: The RSA modulus bits are packed into 248-bit field elements.

  • V1 (2048-bit): ceil(2048/248) = 9 field elements → 1 Poseidon hash (fits in 16)
  • V2 (8192-bit): ceil(8192/248) = 34 field elements → chunks of 16 → 3 leaf hashes + 1
    root hash = 4 Poseidon calls

@joyqvq joyqvq force-pushed the joy/add-zklogin-v2 branch from 0ef7119 to 9f6b184 Compare April 1, 2026 12:33
@joyqvq joyqvq force-pushed the joy/add-zklogin-v2 branch 4 times, most recently from fc8c0a1 to f95035a Compare April 8, 2026 21:37
@joyqvq joyqvq marked this pull request as ready for review April 8, 2026 21:37
@joyqvq joyqvq requested review from benr-ml, mskd12 and mystenmark April 8, 2026 21:37
@joyqvq joyqvq force-pushed the joy/add-zklogin-v2 branch from f95035a to a902b6e Compare April 8, 2026 21:42
@joyqvq joyqvq force-pushed the joy/add-zklogin-v2 branch from 2d62b18 to 0b69f73 Compare April 9, 2026 01:15
@joyqvq joyqvq force-pushed the joy/add-zklogin-v2 branch from 6faf21e to d109a5c Compare April 9, 2026 15:20
@joyqvq
Copy link
Copy Markdown
Collaborator Author

joyqvq commented Apr 14, 2026

@mskd12 see latest comment for caching change. the speed up for calculate_all_inputs_hash alone (on a cold cache) is 546 µs → 200µs (warm, 63% faster)

overall

 ┌───────────────┬──────────┬──────────┬───────────────────────┐
  │    Variant    │   Cold   │   Warm   │        Speedup        │
  ├───────────────┼──────────┼──────────┼───────────────────────┤
  │ V1 (2048-bit) │ 256.0 µs │ 190.2 µs │ 1.35× (~66 µs saved)  │
  ├───────────────┼──────────┼──────────┼───────────────────────┤
  │ V2 (8192-bit) │ 536.9 µs │ 198.3 µs │ 2.71× (~339 µs saved) │
  └───────────────┴──────────┴──────────┴───────────────────────┘

@joyqvq joyqvq force-pushed the joy/add-zklogin-v2 branch from 06e2013 to 9594c19 Compare April 14, 2026 18:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant