Privacy is a Feature, Not a Product

CKB Weekly #13

Hello, welcome to issue #13 of the CKB Weekly, a newsletter about the Nervos Common Knowledge Base blockchain and related technology. 

No one could probably argue against the importance of privacy in financial transactions. 

The developers that value privacy above all other features built protocols that support it natively. Privacy coins like Zcash, Monero and Grin make various trade-offs between functionality and usability to ensure that privacy is a core value proposition of the underlying blockchains.

However, is privacy a feature of valuable cryptocurrencies, or a product itself? An essay written in 2019 by Multicoin’s Ryan Gentry and Matt Shapiro argues that “the most valuable blockchains will win out over a range of different technology trade-offs, and that users and businesses will find novel ways to bring privacy to these networks, rather than allowing network participants to choose native privacy protocols for which they take balance sheet risk.”

Let’s take a look at how different blockchains achieve privacy in transactions:

(both Dandelion and Kovri are IP-obscuring tools)

Four types of private information can be leaked in a cryptocurrency transaction: the sender, the receiver, the amount of the transaction and the IP address. Complete privacy can be achieved in a transaction if all the four types of information can be successfully hidden from any third-party observer.

General platforms like Bitcoin and Ethereum (which prioritized solving issues such as scaling and user experience first) already offer sufficient privacy guarantees - the transactions can be obscured with the help from coin mixers - enough for most users to never need niche privacy-focused blockchains.

The coin mixer falls into the great hidden design idea of making it difficult for an observer to identify the actual sender, receiver, or specific amount of money by hiding the transaction in a large number of similar transactions. The more transactions that follow the same rules, the more participants there are, and the harder it is for the observer to identify them.

The transactions on Bitcoin and Ethereum can be obscured with coin mixers, which for examples are CoinJoin on BTC, Hopper, Heiswap, Tornado and Aztec Protocol on Ethereum.

Privacy is a switchable feature on CKB

CKB follows the tradition of Bitcoin, with the priority to create a native asset that can store value based on security, decentralization and longevity, while privacy is an add-on feature.

This combination of MimbleWimble and Drago (a decentralized coin-mixer) offers a new experience.

MimbleWimble will be implemented as a smart contract-like presence on CKB. The users can use Drago to hide one transaction among others, and attach the MimbleWimble type script to the output asset, then they will be able to enjoy the functionality of private transactions. When users need to opt out of the privacy feature, they can simply un-reference the MimbleWimble contract and revert to their current normal trading on CKB.

Privacy can be implemented as a switchable feature on CKB for its native assets and user defined tokens.



  • Nervos Nation Podcast (New!) features Dylan Carter, a solo miner in its latest episode

Technical Updates


Nervos applies the RFC (Request for Comments) process for implementing every building block of the protocol. There were 24 Previous RFCs that can be found here

If you are curious about why a design in CKB is what it is now, please post your questions in this repository.


  • CKB

    • (#2178) add `generate_block` rpc to IntegrationTest module

    • (#2134) update proposal table after chain reorg

    • (#2185) bump rocksdb 0.14.1

    • (#2183) separate logger service into a standalone crate

    • (#2182) take full control of main logger filter via RPC

    • (#2175) support multiple file loggers

  • Dev Tools

    • Lumos [JavaScript/TypeScript based dapp framework] 

    • Polyjuice [an Ethereum on CKB solution] 

    • Capsule [development framework for creating smart contract scripts in Rust for CKB] 

      • Released v0.1.4

      • Fix deployment InsufficientCellCapacity error

      • Create a completed snapshot after a successful deployment

  • Neuron

  • CKB Explorer

    • (#711) Update issue templates

    • (#708) Fix some bugs

Layer 2

  • Muta [layer2 framework on CKB] 

    • (#376) Add global panic hook

    • (#365) Use inner call instead of service dispatcher

  • SECBIT Labs [Zero knowledge proof toolkit for CKB] 

    • (#13) Add basic gadgets: boolean / fr / multieq / uint32 / sha256 / blake2s / mimc / lookup / merkletree


  • Lay2 [pw-sdk, build dApp on CKB and run them everywhere] 

  • Obsidian Labs[developer IDE] 

    • Released v0.6.2

    • Add Github Actions

  • Synapse [browser wallet and keyper agency] 

  • BlockABC [onchain CKB and web auth] 

  • GrowFi [token swap functionality]

  • Obsidian Systems [CKB integration with ledger wallets] - github

  • Summa One [BTC/CKB interoperability] - github

    • (#174) Adds several typed views to prevent accidental type confusion in C parsing

  • LeapDAO[EVM-compatible sidechain framework for Nervos] - link

  • New Grants Proposal - N/A

The Nervos Foundation currently runs a grants program for builders. check out the scope and how to apply.


CKB Weekly is curated by a group of people who witnessed Lina’s birth and started this to record her growth. Any views expressed are personal and do not represent an official position of the Nervos project. Got updates or articles you would like to include? Any feedback or other suggestions? Let us know by replying to the email. 

If you are interested in contributing, welcome to join the review group on TG.