Skip to content

应用场景

zk-message

项目地址

类似于在zkp的框架下实现群签名,证明某条消息是在某个小组内发送的。

circom证明组件
js
component: 
    public input hashes[n]; // 群成员的哈希列表
    public input msg; // 要发布的哈希

    private input s; 

    (hash(s)-hashes[1])*(hash(s)-hashes[2])... === 0

// prover
prove {s, hasher[n], msg}

添加nullifier

在某些应用中,如tornado.cash和semaphore,为了防止双重使用(double-spending)或重复提交,通常会引入一个称为“nullifier”的概念。Nullifier 是一个唯一标识符,用于标记某个特定的操作或状态已经被使用过,从而防止同一操作被多次执行。

tornado cash 的 withDraw 代码

如下图,tornado就是一个混币器,支持四个档位的存入,然后会生成一个提取证明作为凭据。

而在提取时,只需输入提取凭据和账户地址即可:

由于在一个混币器中,多个用户的输入是相同的,输出也是相同的,故而外界难以分辨到底是谁提取了谁的资金。

zk-maid

取代DKIM

Dark-Forest

项目地址

通过zk实现战争迷雾,外部可见的只有操作哈希,但是不知道具体操作。对于玩家来说自己的坐标(x,y)是私密的,其他玩家无法获知。

ESCROW

假设Alice要向Bob出售一个哈希原像 Hash(x,y)(x,y)Hash(x,y) \rightarrow (x,y),但是要如何确保Aice不会发送错误的原像以及Alice会收到钱后不付款,这时候可以创建一个智能合约,具体流程如下: