While I am writing the whitepaper, I think instead of publishing it all at once when I finish, I will post it in parts, every 2-3 days, so community will get more details about the algorithm we use and logistics behind it. It is also an education process so people will understand what is a trustless system and why we need it. So expect 3 parts to be posted in this thread. I will prepare a pdf file with all parts together (the formal whitepaper).
All questions are welcomed, though I may not have time to answer all the questions. Because I still need to do testing on the code and fix bugs, and add bells and whistles etc.
Below is the first part on the SuperSend Trustless system. I will try to publish the next part in 2-3 days, maybe Monday/Tuesday time frame. Next parts will describe the overview and details of the algorithm.
==
SuperSend Trustless is an advanced p2p completely decentralized anonymous system. It belongs to Coinjoin category of the anonymous wallet. In this system all nodes (clients) are equal; there are no centralized or special nodes that hold more info than others. The coin transfer happens with the help of middle nodes that are randomly chosen. Mini-escrow is used with multisig address and transactions to ensure all the parties behave according to the transfer rules. This is a complete trustless system. The system is designed in a forceful way for all parties to behave correctly. If any party tries to cheat, he will lose more than his gain in the cheat.
Among all the online coin clients, if some minimum requirements are met (e.g. with minimum amount of coins in the balance, and with minimum 2 addresses in the wallet, etc), the node will advertise itself as a service node. Other nodes receiving the advertisement will add it to their service node list. There’s a limit in the service node list for each client (currently limited at 30). Any client can turn off the advertisement, if it does not want to be a service node. To turn off the service node advertisement, user just need to put a line in the config file. A service node will receive certain fee for each service it performs. Node not want to be service node can still receive other node’s advertisement and use the anonymous service, as long as it pays the service fee.
SuperSend Trustless makes heavy use of multisig technology. The sender of the coin will choose randomly 2 middle service nodes from his service node list to help the anonymous transfer. Among the two nodes chosen, one provides mix service, and another provides guarantee service. Why need 2 nodes? Because if there are any disputes between sender and mixer, it is up to guarantor to make a final judgment and then distribute the fund in the escrow accordingly.
Mixer is the node to mix the coins with his own, and send to destination. It is possible to have multiple mixer nodes, so to further obfuscate the transfer. At the current implementation, we use a single mixer node.
Guarantor is the one who will make the final judgment if any dispute between sender and mixer. If everything goes on well, Guarantor’s job is just to create multisig address and multisig transactions. It will not be involved in the signing processes of the multisig transactions in normal cases. But if there are disputes, the Guarantor will decide, based on the facts of the existing transactions, the outcome of escrow distribution. Of course, Guarantor cannot decide alone, he has to coordinate with another party (see below for the signing of multisig transactions).
We use a 2-of-3 multisig address for escrow. What is a 2-of-3 multisig address? It is an address that is created based on 3 public keys, each from Sender, Mixer and Guarantor, respectively. Remember, Sender, Mixer and Guarantor each hold the corresponding private key of the public key. Anyone is free to deposit coins to the 2-of-3 address. But in order to spend any fund from the address (i.e. send to another address), the transaction needs to be signed using at least 2 out of 3 private keys. Since the private keys are in different nodes, different nodes must willing to sign the same transaction before it becomes valid. In another words, the coins in that address cannot be spent by anyone alone, at least two of them should agree before the money can be spent.
==
WOW, nice one super dev
. I can't wait for this to come out of test and into general use. I'll be able to earn super via the multipool, PoS and as a mixer
One question, will both of the addresses in the wallet have to have sufficient funds in them for the escrow to work or is it taken as a total over all of the addresses?