作者kugwa (闇黑圣饥魔)
看板DigiCurrency
标题[闲聊] 以太坊怎麽混币?
时间Mon Jun 25 16:40:30 2018
https://github.com/ethereum/wiki/wiki/Design-Rationale#accounts-and-not-utxos
Ethereum 的 Design Rationale 列举了 UTXO 和 account 的优劣
并解释为何 Ethereum 采用 account model
不过他下面这一句
if people really do care about privacy then mixers and coinjoin can be built
via signed-data-packet protocols inside of contracts.
我没有很懂耶
mixer 和 coinjoin 应该是指混币没错吧
但混币不是只有 UTXO model 的区块链才有的观念吗?
account model 要怎麽混币 并且为何能够增强隐私呢?
附个混币解释
字面意思就是 一群想要传钱的人
都先把自己的钱交出来
全部混一混然後才发送到各自的目标地址
让金流以及地址背後的持有者更难被追踪
实际做法就是 一群想要传钱的人凑在一起
人数可多可少 可以只有两个人 也可以数不清的人
当然人越多隐私效果越好
这些人共同创建一个交易
然後各自把想要传的钱贡献到交易input
并且也开出各自的目标地址放到交易output
大家都做好各自的input/output之後交易就可以送出了
由於每个input都要用各自的私钥来签过整个交易
所以并不会有钱被偷的疑虑
混币这种行为
打破了「一个交易里的所有input属於同一个人」的通则
使得地址更难被关联起来
https://en.bitcoin.it/wiki/CoinJoin
========更新========
https://blog.ethereum.org/2016/01/15/privacy-on-the-blockchain/
看到 Vitalik 写的这篇
有讲 Ethereum 上的 CoinJoin 协定怎麽做
大概弄懂了
总之差不多就是:
所有委托人的目标地址和要转的金额都先写进合约
但不记录目标地址跟委托人的对应关系
确认无误的委托人就会转钱进去合约里 发现错误的委托人就不会转钱进去
钱到齐之後合约就把钱分配到目标地址 没到齐就退款
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.232.231
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1529916033.A.45A.html
1F:推 darkdixen: 写个会mixer的智能合约 收工 06/25 16:58
2F:推 foolstack: 搜寻Ethereum Mixer就能找到相关solidity 06/25 17:30
我觉得应该可以白话解释耶
用不着直接去K源码实作
3F:推 qxxrbull: 还是好奇跟DASH的有什麽差别? 06/25 17:49
混币是一种行为啦
不是某种币
4F:推 tcn1john: 全部交到一个帐号 然後分别转帐给收钱那方这样吗? 06/25 18:28
我还没看前几楼说的合约源码
但我猜那些合约应该就是实做成你说的这种方式
可是这种方式应该没用
因为你请中介帐户代替你转帐到目标帐户
终究要把你的目标帐户告诉中介帐户
如果中介帐户是写成合约的形式
那麽合约一定要记录你指定的目标帐户
使得大家都可以看到你指定了哪个目标帐户
就失去意义了
如果中介帐户是人在操作
那变成你把钱转给中介帐户 再私下告诉他目标地址委托他代转(目标地址不上链)
但就要信任这个人不会拿了你的钱就闪人
无法免除对第三方的信任
5F:→ tcn1john: Coinjoin应该有一样的问题 谁来负责收集需求产生转帐 06/25 18:46
比特币用 coinjoin 的情况
是所有参与该次混币的人们 都先把各自的input/output先列进混币交易里
等所有人都列完之後 才用各自的私钥去签这个交易 所以不会有骗钱的问题
或许这些参与者在当下可以看出哪些input/output是由同一个人写上去的
但之後的人光看这个混币交易根本看不出来
所以比特币用 coinjoin 的确有达成更好的隐私
但以太坊的情况
则是要特地生一个交易来委托中介帐户代转多少钱给目标帐户
之後的人光看这个交易就可以查到 你委托中介帐户 转多少钱 到哪个目标帐户
所以就没什麽意义
6F:推 darkdixen: 白话解释就是你可以用solidity写出coinjoin功能 06/25 19:01
7F:推 darkdixen: 是说在zksnark加入以太後也不用自己写coinjoin就是惹 06/25 19:03
有了zksnark的话我就没什麽疑问
但我不认为目前的以太坊合约可以实作出 不用信任第三方又达到隐私的coinjoin
我觉得是account model先天的限制
========回覆更新========
错ㄌ 还真的可以
8F:推 qxxrbull: 我的意思就是说跟DASH交给master node做混币来达成匿踪 06/25 19:24
9F:→ qxxrbull: 交易的差别 06/25 19:24
拍谢误会
那可能意思差不多吧
不过混币这个动作按 Bitcoin Wiki 的解释 应该是可以不需要第三方的吧?
为啥 DASH 需要有 master node
10F:→ tcn1john: coinjoin是第三方产生转帐资讯的不是吗?以太写个第三方 06/25 19:26
11F:→ tcn1john: 负责又不能卷款的合约就能达到一样效果,问题是有没有办 06/25 19:26
12F:→ tcn1john: 法达到无人负责的coinjoin 06/25 19:26
看完 Bitcoin Wiki 解释 CoinJoin
我的理解是不用第三方耶
只要所有参与者之间互通有无就够了
每个参与者都先广播自己要写上的 input/output
等列表凑齐之後
每个参与者再广播自己的签名
这样大家做出来的交易就一致
不会有问题
当然这是 UTXO model 才可以做到
13F:→ tcn1john: 这样参与者都知道对方的output了吧? 06/25 19:41
没错
但是只有参与者知道而已
哪些input/output是同一个人的
事後光看交易是看不出来的
链上看不出来就是没有证据
========回覆更新========
刚看了一下 Bitcoin Wiki CoinJoin 那篇的 FAQ
把实作搞复杂一点 可以做到让参与者也不清楚input/output是谁的
14F:推 tcn1john: 以太的话,应该可以建立一个会退钱的智能合约,钱収满 06/25 20:53
15F:→ tcn1john: 转入指定地址,链上也看不出来 06/25 20:53
16F:→ tcn1john: faq提到透过第三方的coinjoin应该是实用性比较高的做法 06/25 20:56
你的指定地址 指的是委托人指定的目标地址吗
合约有记录目标地址的话 大家也都知道是委托人指定的吧
17F:推 tcn1john: 所有人目标地址都放进合约这样...到齐後一起转 06/25 21:15
链上看的出委托人跟目标地址的对应关系 -> 大家都看的到 没意义
链上看不出对应关系 -> 合约的操作者一定有办法假造目标地址 必须相信他是好人
想来想去还是觉得两条路都行不通吧
========回覆更新========
拍谢 好像还真的可以
所有委托人的目标地址和要转的金额都先写进合约
但不记录目标地址跟委托人的对应关系
确认无误的委托人就会转钱进去合约里 发现错误的委托人就不会转钱进去
钱到齐之後合约就把钱分配到目标地址 没到齐就退款
这方法应该也是不需要信任第三方
18F:推 Ayukawayen: 以太智能合约混币应该做得到,套无金额遮罩的XMR就差 06/25 21:47
19F:→ Ayukawayen: 不多了,付款者们把资金切成多笔相同金额的输出,每笔 06/25 21:47
20F:→ Ayukawayen: 都用隐匿性地址当公钥,收款者拿自己私钥算隐匿性私钥 06/25 21:47
21F:→ Ayukawayen: ,用环签名提款,其他人不会晓得环签名用的是哪把私钥 06/25 21:48
22F:→ Ayukawayen: 无法将提款者和付款者连结,然後用金钥映像防多重提款 06/25 21:48
所以这个是有用到 zero knowledge proof 或是 ring signature 之类的技术吗
拍谢对这个不熟ˊˋ
如果是的话那我接受啦
但我好奇的是没有这两种技术的情况下做的到吗
像比特币就可以
24F:→ darkdixen: 已经上Rinkeby 大家可以回家惹 06/25 22:01
欸~不行降啊
我是想厘清盲点
直接丢code太硬了
25F:推 Ayukawayen: 想了一下 环签放的地方不同 所以或许不能说是套XMR吧 06/25 22:02
26F:推 darkdixen: 就想成以太1.0能用智能合约模拟比特币的混币 在加入zk 06/25 22:15
27F:→ darkdixen: 功能後也不用模拟惹 就直接走zk 大guy4john 06/25 22:15
28F:推 Ayukawayen: XMR有用ring signature,要看XMR技术可以看这两篇: 06/25 23:06
3Q
31F:推 justben: 这样手续费会变贵吗? XDD 06/25 23:37
其实我也觉得以太坊 coinjoin 这样做的话的确会花比较多钱
毕竟这种用合约代转到不同目标地址的机制
要多好几道交易 跑code也要花gas 常常做感觉很花钱
而比特币的 coinjoin 只要大家分摊一个超大交易的手续费就好了
跟平常自己发交易花的手续费应该一样多 所以做几次都没差
32F:推 qxxrbull: 说真的,没有全网强制做匿踪,再强的Zn-Shark还是一样会 06/25 23:57
33F:→ qxxrbull: 有可能因为非匿踪交易而被关连到 06/25 23:57
34F:→ qxxrbull: Zn-Snark算是目前最强的匿踪方式,先不讨论可能自己印钞 06/25 23:59
35F:→ qxxrbull: 而不被抓包的前提下 06/25 23:59
Zn-Shark...是梗ㄇ
???
@_@
???
36F:推 qxxrbull: 打错喇 zn-snark 06/26 00:14
※ 编辑: kugwa (140.112.232.231), 06/26/2018 01:54:09
37F:推 DarkerDuck: 491字 * 7星 = 3437 PCH 07/12 21:05