Skip to main content
Try out the RareSkills ZK AI Tutor!

Blog

The technical content top engineers rely on to level up.

6 min read

Reducing the number of equality checks (constraints) through random linear combinations

Reducing the number of equality checks (constraints) through random linear combinations Random linear combinations are a common trick in zero knowledge proof algorithms to enable $m$ equality checks...

Last updated onNov 13, 2024
Read Article

4 min read

Inner Product Algebra

Inner Product Algebra In this article, we give some useful algebraic tricks for inner products that will be useful in deriving range proofs (and encoding circuits as inner products) later. Each rule...

Last updated onDec 19, 2024
Read Article

6 min read

Bulletproofs ZKP: Zero Knowledge and Succinct Proofs for Inner Products

Bulletproofs ZKP: Zero Knowledge and Succinct Proofs for Inner Products Bulletproofs ZKPs allow a prover to prove knowledge of an inner product with a logarithmic-sized proof. Bulletproofs do not...

Last updated onMay 15, 2026
Read Article

9 min read

Logarithmic sized proofs of commitment

Logarithmic sized proofs of commitment In a previous chapter, we showed that multiplying the sums of elements of the vectors $\mathbf{a}$ and $\mathbf{G}$ computes the sum of the outer product terms,...

Last updated onMay 15, 2026
Read Article

18 min read

Succinct proofs of a vector commitment

Succinct proofs of a vector commitment If we have a Pedersen vector commitment $A$ which contains a commitment to a vector $\mathbf{a}$ as $A = a_1G_1 + a_2G_2+\dots + a_nG_n$ we can prove we know...

Last updated onJan 31, 2026
Read Article

8 min read

A Zero Knowledge Proof for the Inner Product

A Zero Knowledge Proof for the Inner Product An inner product argument is a proof that the prover carried out the inner product computation correctly. This chapter shows how to construct a zero...

Last updated onNov 13, 2024
Read Article

10 min read

Introduction to ZK Bulletproofs

Introduction to ZK Bulletproofs Bulletproofs are a zero knowledge inner product argument, which enable a prover to convince a verifier that they correctly computed an inner product. That is, the...

Last updated onNov 4, 2024
Read Article

22 min read

Storage Slots of Dynamic Types (Mappings, Arrays, Strings, Bytes)

Storage Slots of Dynamic Types (Mappings, Arrays, Strings, Bytes) Dynamic-sized types in Solidity (sometimes referred to as complex types) are data types with variable size. They include mappings,...

Last updated onMar 22, 2026
Read Article

16 min read

Assembly revert

Assembly revert Reverting transactions using inline assembly can be more gas-efficient than using the high-level Solidity or statement. In this guide, we’ll explore how the different types of reverts...

Last updated onAug 20, 2025
Read Article

9 min read

get_D() and get_y() in Curve StableSwap

get_D() and get_y() in Curve StableSwap This article shows algebraically step-by-step how the code for and are derived from the StableSwap invariant. Given the StableSwap Invariant: $$ An^n\sum x_i...

Last updated onAug 20, 2025
Read Article

15 min read

Smart Contract Foundry Upgrades with the OpenZeppelin Plugin

Smart Contract Foundry Upgrades with the OpenZeppelin Plugin Upgrading a smart contract is a multistep and error-prone process, so to minimize the chances of human error, it is desirable to use a...

Last updated onSep 25, 2024
Read Article

12 min read

UUPS: Universal Upgradeable Proxy Standard (ERC-1822)

UUPS: Universal Upgradeable Proxy Standard (ERC-1822) The UUPS pattern is a proxy pattern where the upgrade function resides in the implementation contract, but changes the implementation address...

Last updated onSep 23, 2024
Read Article