思想
由 @gmaxwell 在 CoinJoin: Bitcoin privacy for the real world 一文提出. 核心思想就是利用比特币的一笔交易中可以有多个输入以及多个输出这一点, 将多笔交易合并, 使得让人难以分辨哪笔输入对应哪笔输出, 进而达到难以追踪某个地址的资金的来源或去向的目的.
CoinJoin 思想的通俗实践是, 当你想要转账时, 可以找到另外一些也想转账的人, 你们分别签名自己的输入共同创建一笔交易. 这就需要掺入一点点中心化来支持, 对于个人钱包来说并不太好实践, 但对于具有中心服务的 web 钱包提供商来说比较容易, web 钱包可以很容易的将多个用户的转账请求合并, 作为一笔交易广播出去, 比如 blockchain.info.
CoinJoin 不需要更改比特币固有协议, 后续的许多旨在提高交易私密性的技术都是基于 CoinJoin 的思想.
实现
前面说 blockchain.info 有采用了 CoinJoin, 实际上 blockchain.info 实现的是 Shared Coin --- 一个对 CoinJoin 思想的最简单的实现, 当我们在 blockchain.info 上创建交易时, blockchain.info 会自动将其与其他人发起的交易合并成为一笔.
不过 Shared Coin 后来被研究出交易中的记录仍然是可追溯的, 因此 blockchain.info 下线了 Shared Coin 技术: https://www.coindesk.com/blockchains-sharedcoin-users-can-identified-says-security-expert/
其他对 CoinJoin 思想的实现技术还有 Dark Wallet, CoinShuffle, 达世币中的 PrivateSend 等等.
后记
了解到 CoinJoin 是在达世币的白皮书, 后面有机会扒一扒达世币的 PrivateSend 技术, 看看它是如何扩展改进 CoinJoin 的.
其它文章
数字货币
- 关于 Tether 丢币事件的观察
- 什么是比特币的链上 (on-chain) 与链下 (off-chain) 交易, 以及往交易所充币后发生了什么
- 为何留在 steemit?
- 说一说重放, 重放保护, 以及分叉期间我们该怎么做
- 闲聊即将到来的 segwit2x 分叉
- electrum 钱包的 sweep 功能小记
- 浅读 Steemit 的设计与规则
- bitshares 中的账户与权限个人理解
- 比特币地址, 公钥与私钥的格式以及如何保证比特币不丢失
数据分析
编程系列
- 关于 Python 中的 time 与 datetime 模块
- FreeRTOS 的链表 vListInsertEnd() 方法笔记
- PHP 包管理工具 PEAR 与 PECL 介绍
- 关于 steem-python 库的 AttibuteError 异常分析
- 如何使用 C 语言中的 volatile 关键字?
- 通俗地解释 CGI, FastCGI, php-fpm 之间的关系
- Linux C 程序中如何正确的判断一个文件/目录文件是否存在
- 深入解读同步/异步 IO 编程模型
- upvote robot simple implementation / 点赞机器人简易实现
- 用迭代方式精确模拟二叉树的递归遍历
- solidity 的编译器们