0xhhh Profile picture
Mar 7 21 tweets 4 min read
1/n

privacy-pools原理解析:

Tornado Cash的新版本出来了,昨天@ameensol(TC早期开发者)宣称privacy-pools已经在Optimism上部署

privacy-pools是TC的升级版本,可以支持用户在从混币器中提款的时候,附带一个提款证明,证明自己要提款的资金不是黑客部署在混币器中的资金。

#privacypools #zk
2/n
我怀着好奇的心思跑去他们的github仓库看了下他们的代码, 然后"牛逼"!

I like the pretty cool code for privacy-pools!Awesome work!@ameensol

以下是具体的原理介绍:
3/n

首先你可能需要先了解下TC原来的运行原理,如果你还不了解的话:
4/n
(privacy-poos 以下用PP表示)
PP使用来证明取款的金额是"干净"的资金的方法,其实v神在之前提到过
5/n
用vitalik的原话来说:
make a zero-proof to prove that this withdrawal is not part of one of the sets of deposits or this withdrawal is part of one of this subset of deposits
6/n
也就是说:

可以用一个zk-proof去证明取款的金额在是在合法的存款的金额集合之内的,或者是表面取款的金额是在不合法取款的金额集合之外的
7/n

PP也是按照这个想法来实现的,在PP的推特上写到了很感谢vitalik提供的idea.

在之前的Thread也介绍了deposit资金到混币器中的时候,会添加一个commitment叶子节点到deposit树中
8/n

我们以一个实际例子来理解PP是怎么运作的:

1)现在有黑客想要将一笔illegal funds通过PP混币,于是他调用deposit方法将资金放入到PP中.
(我们假设原先已经有3个用户将前deposit到PP中了)

2)这个时候,deposit tree会发生以下变化.
9/n

3)所有人都可以通过链上信息知道黑客将illegal funds被存储在deposit tree中index=3的叶子节点了。

4) 此时用户A想要取走index=0的资金,但是他又想证明自己去走的不是黑客的资金.(假设用户A知道index=0的叶子节点的secret)
10/n

5) 用户A需要再构造另外一颗树 allow tree, 这颗树跟deposit tree是对应的;

在这个case里,可以看到所有在deposit tree里的legal funds的叶子节点在对应的allow tree的叶子节点里都会被标注为"allow",而illegal funds对应的叶子节点会被标注为"blocked"
11/n

6) 然后用户A开始构造自己的withdrawal证明
private input包含:
- allow tree对应的path(绿色节点)
- deposit tree 对应的path(绿色节点)
- deposit tree上要退款的节点对应在allow tree上的叶子节点值必须为 "allowed"(绿色连线)

public input包含:
- allow_tree_root
- deposit_tree_root
12/n
其中private input意味着这部分的信息最后会被隐藏在证明内,没有可以从我提交的withdraw交易中知道这些信息。

于是用户A成功完成了withdraw,把自己index=0的叶子节点的资金取了出来
13/n

如果是黑客要取这笔钱呢?

它只能构造allow tree的index=3的叶子节点值为“allowed“的allow tree, 而且给出对应的allow_tree_root;

又因为allow_tree_root我们可以从withdraw交易中的input 知道,所以可以知道取的这笔钱构造的allow_tree是没有将index=3排除在外的
14/n
于是我们成功标记了黑客的withdraw交易,也就意味着黑客想通过混币交易洗钱的目的失效了。
15/n
写在最后:
很喜欢@ameensol写的两段话:

- when you make privacy criminal, then **only** criminals have privacy.

- This is an opportunity to prove the ingenuity of the crypto community to self regulate and to showcase the awesome power of zero knowledge proofs!
16/n
希望我们能用更有好的技术,做更有意义的事情

大家有兴趣也可以看看PP的github,不过这个PP的完成度还不是很高,所以大家可以持续关注关注

github.com/ameensol/priva…
附加一个vitalik之前对TC改进的视频
youtube.com/clip/Ugkx7LeQP…
额外在总结一下:
- 只有allow-tree设置为allowed的节点可以退款
- 黑客不得不将自己所在的allow tree那个节点(index=3)变成allowed
- 正常用户会将 黑客所在的那个allow tree的节点(index=3)设置成blocked
- 所以可以通过在withdraw的时候黑客给的allow tree(将非法节点设置为了allow)来标记黑客
额外总结一下:
- 只有allow-tree设置为allowed的节点可以退款
- 黑客不得不将自己所在的allow tree那个节点(index=3)变成allowed
- 正常用户会将 黑客所在的那个allow tree的节点(index=3)设置成blocked
- 所以可以通过在withdraw的时候黑客给的allow tree(将非法节点设置为了allow)来标记黑客
需要有兴趣也可以看看这个PP demo的视频

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 0xhhh

0xhhh Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @hhh69251498

Mar 5
1/n

白话介绍下 TC:
(吐槽:没办法打全称Torn...Cash,不然Tweet)

在ZK很火热的今天,考古下TC是很有意义的,毕竟它在我眼里是区块链领域第一个成功将ZK用于有效解决实际问题的协议!

TC是一个混币协议,顾名思义,你把token存入到TC中,再取出来的时候就很难追踪它的来源了(“洗钱”);
#zk #ZKP
2/n

实际用途:

由于区块链账户在链上做的所有操作,以及账户余额都是公开的,所以基本没有隐私可言;
而TC可以让你实现一笔加密转账,这笔转账除了发送和接收账户,其他人都无法通过链上信息破译这笔交易。
3/n

具体实现:

TC 通过两个方法来实现加密转账,第一个是deposit ,第二个方法是 withdraw.

TC的加密转账实际上需要执行两步,先deposit到Tornado Cash合约中,然后隔一段时间后用另外一个账户从合约中取出来,来完成一笔加密转账
Read 18 tweets
Mar 4
1/n
Arbitrum 提出了一种新的 Sequencer 交易排序策略介绍:

Arbitrum 目前使用的交易排序的方式是FCFS(先进先出),用通俗的话解释就是Sequencer先处理它先接收到的交易(optimism 也是用的相同的策略)。

但是这种方式有一个缺点,就是会造成"延迟竞争"(latency racing)。
#Arbitrum #MEV
2/n
“延迟竞争“指的是,在当前Arbi的Sequencer的排序策略下,用户希望自己的交易比其他人的交易更快被Sequencer接收,并且打包到L1的方法,就是向一个与Sequencer连接并且网络延迟最低的fullnode发送交易。
3/n

Arbitrum 为了避免大家为了成为延迟最低的fullnode互相卷,而导致物理资源浪费提出了一种time boost机制,你可以通过额外的手续费,让你的交易可以更快被处理(类似 bid for position)
Read 12 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(