ZK/SEC Research notes from zkSecurity
All posts
educative · zk

Unveiling the Magic Behind Starknet: A Deep Dive into New Specifications

In our partnership with Starknet, we have performed a number of security audits on some of the network's cryptographic components.

One challenge we encountered was the lack of comprehensive specifications – a common hurdle in the ZKP space. To navigate this, we had to reverse-engineer the protocol, piecing together its logic from various sources and observations.

In this quest to understand the true protocol being implemented, we wrote and published draft specifications for a number of the protocols that we looked at. You can find them here.

starknet rfcs

The specifications are still work-in-progress, and with the support of the community, we aim to refine and enhance them in the near future.

We wrote 4 specifications in total:

Starknet Channels for Fiat-Shamir Instantiation and Starknet Merkle Tree Polynomial Commitments . Both specifications can be seen as self-contained components, building blocks used by the other Starknet schemes.

Starknet FRI Verifier. This document specifies the verification of FRI proofs in the Starknet ecosystem. It builds on top of both of the previous specifications.

Starknet STARK Verifier. This document specifies the verification of STARK proofs in the Starknet ecosystem. It builds on top of all previous specifications, instantiating the FRI specification.

webpage

Feel free to open PRs or issues on the RFCs repository in order to help us improve these specifications.

Keep reading
More to explore

noname 3.0: Native Hints, Standard Library, Compiler Visualizer, And More!

We're super excited to introduce noname 3.0, our zk programming language inspired by Rust and Golang, now achieving full feature parity with Circom. This update brings native hints, a standard library, debugging features, and a lot more to enhance developer experience. Dive into how hint functions work with an 'unsafe' keyword to balance innovation and security, explore our new stdlib modules, and see how the compiler pipeline visualizer can help you understand the compiling process. Plus, check out our next steps and how you can contribute to shaping noname's future.

ZK/SEC · November 13, 2024

Stay in Range: Deeper Into Bulletproofs

This article breaks down how Bulletproofs enable range proofs: proofs that a hidden value lies within a range without revealing it. Starting from bit decomposition, it shows how to express and combine constraints into a single inner product, then make the proof zero-knowledge with blinding polynomials and commitments. By the end, you’ll understand how systems like Monero’s confidential transactions prove valid amounts while keeping values private.

teddav · November 12, 2025

Beyond L2s Maturity: A Formal Approach to Building Secure Blockchain Rollups

In our latest blog post, we dig into the fascinating world of blockchain rollups, focusing on their security and how they help Ethereum scale while maintaining its core values of decentralization. We'll break down the concepts of Optimistic and ZK-Rollups, discuss the importance of projects like L2BEAT in assessing rollup maturity, and introduce our formal model for ensuring rollup security. If you're curious about how forced transactions, safe blacklisting, and upgradeability are shaping the future of Ethereum, this is a read you won't want to miss.

Stefanos Chaliasos · February 18, 2025