SOLANA Crypto Primitives · Visual Hands-on
00 / WHY

Solana just got new cryptographic tools

Across 2025 and 2026, four cryptographic features landed in the Solana runtime — one is still only a proposal. All of them exist to make calculations that were previously too expensive finish in an instant. Let's start with why they were needed.

🤔 Predict first

You need to verify a document signed by 1,000 people. What's the cheapest way to do it on-chain?

DEMO

Compute meter: hand-rolled vs syscall

Every Solana transaction has a ceiling on the compute (CU) it may spend. Run the same cryptographic operation two ways — written by hand inside your program, or called through a syscall the runtime provides — and watch the meters.

Hand-rolled in the program curve math written as SBF code
Calling the syscall native implementation in the runtime
≈ 15,800 CU (BN254 G2 scalar-mul)
Honesty note: the top bar is illustrative. It stages the point that hand-rolled math doesn't fit under the ceiling; no specific figure is claimed. The ~15,800 CU below is a measured figure published in the official repository.
💡

A syscall is a dedicated chip slotted into the runtime. The same operation costs orders of magnitude more when a program assembles it instruction by instruction than when the runtime runs an optimized implementation in one shot.

MAP

Where the four actually sit

These four are not siblings. Two on the left are compute chips for pairing curves (syscalls); the one on the right is a dedicated program that verifies proofs; below is an empty slot on the hash shelf. Getting this distinction straight is the map for every chapter that follows.

← swipe sideways to see more → Where the four actually sit PAIRING CURVE SYSCALLS NATIVE PROGRAM HASH SYSCALL SHELF Solana runtime where programs execute (SVM) AGAVE 4.0 BN254 G2 add & scalar-mul added BLS12-381 G1/G2 add, sub, scalar-mul ZK ElGamal a dedicated proof verifier ZkE1Gama1Proof111… sha256 live keccak256 live blake3 live sha512 reserved (proposed)

👆 Tap a chip or program to see what it does

SELECT

Pick a part

The two on the left, the one on the right, and the shelf below all behave differently. Try them in order.

This is the easiest thing to get wrong: ZK ElGamal is sometimes listed alongside the curves, but it is a native program working with cryptography over curve25519 — a different lineage from the pairing curves (BN254 / BLS12-381).
MINI

In one go: what is a pairing?

It's a machine: put in two points, get out one number. It has exactly one useful property — multiplying the left point or multiplying the right one gives you the same number either way. That unassuming property is, on its own, how you check whether a signature is real. Let's walk through it.

1Pick one secret number

3

You alone know this number. This is what 'multiply by' actually meant. From it, two things get built.

Signature

3 × the message point

the secret number applied to the message side

Public key

3 × the reference point

the secret number applied to the reference point (this one you hand out)

The same secret number, applied to two different partners — that's the whole trick

2Feed them in and see whether they balance

[signature] and [reference point] the secret number is applied on the left

3

[message point] and [public key] the secret number is applied on the right

3
✓ Applied in different places, yet the same number came out — the signature is real
Here's the remarkable part: the person checking never learns what the secret number is, and never needs to. They only look at whether both sides produced the same number.
Honesty note: the squares are a teaching analogy. A real machine returns an astronomically large number that nobody counts. What is exactly the same is the property: enlarge one input and the result changes by the same factor.
💡

Apply the secret on the left, or apply it on the right. Being able to move it freely between the two is what a pairing really is. Chapter 01 draws the same idea as a balance scale and goes a step further, alongside adding points and the one-way property.

MINI

So what was missing in 'G2 arithmetic'?

A pairing needs one point from each of two collections with different properties. Those two are G1 and G2. Solana could already do pairings and G1-side arithmetic — but it could not add points inside G2. Flip the switch and compare.

The G stands for Group. A group here just means a collection of points you can add together. The 1 and 2 are plain serial numbers: the first collection is G1, the second is G2. Both come from the same curve but behave differently, and a G2 point takes twice the bytes.

G164 bytes / BN254

= the collection where signatures live

The lighter collection. Signatures can be added together into one.

add ✓ multiply ✓
signature ① + signature ②
① + ② (one signature)

This side was already available.

G2128 bytes / BN254

= the collection where public keys live

The heavier collection. If public keys can be added, everyone's folds into one.

add ✗ multiply ✗
public key ① 🚫 public key ②
① + ② (one key)

Public keys couldn't be added together — so folding everyone into one was impossible.

💡

What was missing wasn't pairing — it was addition on G2. Only once public keys can be folded does checking 1,000 people in a single verification become possible. Filling that gap is what makes chapter 02's multisig work.

A note: in BLS signatures, whether the public key sits in G1 or G2 is a design choice, and the opposite convention also exists. The official demo this site follows puts public keys in G2.
TIMELINE

When each became usable

New Solana features switch on through feature gates: at a chosen epoch (roughly a two-to-three-day window) they become active across the network at once.

epoch 731
ZK ElGamal
proof verification program
epoch 985
BN254 G2
SIMD-0302
epoch 986
BLS12-381
SIMD-0388
TBD
SHA-512
SIMD-0512 · proposed
💡

Always separate what runs today from what doesn't. Throughout this site the three live features are green and the proposed SHA-512 is amber.