ZK证明代码示例精讲:用最小电路演示币安智能链上的隐私转账
初学者最常问的问题是:能不能给我一份完整可跑的 ZK 证明代码示例?本文围绕一个最小化的隐私转账场景,给出电路、prover、verifier 三层的代码骨架,并展示如何把它接入 Binance 智能链。
场景假设
假设我们有一个 ERC-20 代币,希望让用户在不暴露金额的前提下完成转账。设计上由用户在链下生成一个证明,证明自己拥有某个 commitment、并且新生成的 commitment 总额等于旧 commitment 总额减去手续费。本场景在 B安 智能链上的稳定币转账中很常见。
Circom 电路骨架
template Transfer() {
signal input oldNote;
signal input newNote;
signal input amount;
signal output nullifier;
// 余额守恒约束
newNote === oldNote - amount;
// 计算 nullifier
nullifier <== poseidon([oldNote, amount]);
}
component main = Transfer();
电路只做两件事:余额守恒、nullifier 唯一性。实际生产环境会更复杂,但这份骨架足以让你理解 必安 智能链上隐私应用的思想脉络。