SummerCrypto: proving something in a smart contract without revealing the secret

Co-authored paper on zk-SNARK, ZoKrates and Solidity: proving membership in a Merkle tree, and exactly what stays public.

SummerCrypto cover

At SummerCrypto 2025 I took part in the joint work “Zero-knowledge proof protocol in smart contracts”, published in the proceedings of the summer school-conference “Cryptography and Information Security”, pp. 250–258. I am listed among the authors as G. M. Zaitsev, SUAI. It is a team result, supervised by Dmitry Kondyrev of Novosibirsk State University.

The research problem

On a public blockchain, a transaction’s inputs and results are visible to the network. If an ordinary contract receives a secret together with proof of the right to act, the secret becomes part of the open exchange.

We explored another way: confirming knowledge of data belonging to a Merkle tree with a zk-SNARK. The prover knows private data and the path; the contract receives a proof and agreed public inputs.

The privacy boundary matters: the public root, the leaf hash and the verification result stay visible. Zero knowledge applies to the hidden witness; it does not make the whole blockchain private.

How the scheme works

StageWhat happens
PreparationThe circuit fixes the statement to be proved
SetupProving and verification keys are created
ProvingZoKrates uses private data and the Merkle path to build a proof
VerificationA Solidity contract checks the proof against public inputs
ResultThe check returns whether the proof passed

Limits

This approach needs a trusted initial setup, and security also depends on handling its secret parameters. The paper also considers the cost of proving and on-chain verification.

My main takeaway: privacy has to be described through concrete inputs and the statement being checked. The word ZKP alone does not say what is hidden, from whom and under what assumptions.

Paper in the official proceedings, printed pp. 250–258.

← All projects

Contacts