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.
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
| Stage | What happens |
|---|---|
| Preparation | The circuit fixes the statement to be proved |
| Setup | Proving and verification keys are created |
| Proving | ZoKrates uses private data and the Merkle path to build a proof |
| Verification | A Solidity contract checks the proof against public inputs |
| Result | The 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.
