nanocurrency / nano-node

Nano is digital currency. Its ticker is: XNO and its currency symbol is: Ӿ
https://nano.org
BSD 3-Clause "New" or "Revised" License
3.48k stars 786 forks source link

[Feature] Anonymous Transactions #1103

Closed asdfghjz closed 6 years ago

asdfghjz commented 6 years ago

Feature: Fully Decentralized Opt-In Anonymous Transactions

rkeene commented 6 years ago

Let's move this discussion into #1101 which is regarding a similar feature.

asdfghjz commented 5 years ago

@rkeene It actually, isn't. #1101 is specific to zk-snarks this is in general opt-in privacy transactions. I would appreciate if this issue could be reopened. :)

jmmcgee commented 5 years ago

I haven't fully thought it through, but I also think that conditional payments as proposed in #1670 could allow for something like a CoinJoin in Nano. I'm not sure how useful this would be in increasing privacy since Nano is account-based and coin-join's don't change who controls an account, but maybe the added edges could obfuscate analysis?

The basic idea is to have a ring of conditional payments (through accounts 1,2,...,N,1) that commit atomically. I don't really have the scheme fully flushed out, but the beginning of the idea is something like hashlocks for routing payments through intermediaries in Bitcoin LN.

I haven't yet figured out how to modify this scheme to ensure that account N also pays account 1. I think it might require some public key / multisig / schnorr magic and that's not my expertise so I wanted to expose the thought to smarter people than me.


It's an offshoot of #1670 but since I haven't quite figured out how to do it and I think it might need to use a completely different scheme, involving multisig and in which conditonal payments possibly plays a much more minor role, I don't think it really belongs there. It really seems like this issue should be reopened as a place to discuss various intersecting privacy technologies on Nano.

But if it's more appropriate to either move this elsewhere or create a new issue (possibly per specific technical feature) I guess that'd be OK. Just let me know.