Difference between revisions of "Enigma"

From CloakCoin Wiki
Jump to: navigation, search
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<!--T:1-->
+
<languages/>
[[File:enigma_rotate.gif|200px|thumb|rigth|The Enigma Logo]]
+
[[File:cloak_logo_new.png|200px|thumb|rigth|The Enigma Logo 2017]]
  
  
<!--T:2-->
 
The inspiration for the name comes from the meaning of the original greek word – riddle, puzzle, mystery – and describes best what Cloakcoin’s Enigma is all about: guaranteed private, secure, untraceable and decentralized transactions.
 
  
ENIGMA in cooperation with [[CloakShield]] makes it impossible for any outside observers to trace payments done with CLOAKCOIN.
+
<translate><!--T:11--> The inspiration for the name comes from the meaning of the original greek word – riddle, puzzle, mystery – and describes Cloakcoin’s Enigma: private, secure, untraceable and decentralized transactions.</translate>
  
<!--T:3-->
 
==Enigma Overview==
 
<ol>
 
<li>Alice wishes to send a 100% private currency transaction.To do this she uses the wallet to enable Enigma alongside CloakShield to supply an extra layer of encryption which elects a series of decentralized ENIGMA nodes to add an additional, untraceable layer of privacy.</li>
 
  
<li>Alice's Cloak wallet then automatically sends a request to the network for other Cloak wallets who have been elected to become ENIGMA mixer nodes to ofuscate her transaction. All of this is done privately and securely throughout with no identities or true IP addresses revealed.</li>
+
<translate><!--T:12--> Enigma in cooperation with </translate>[[Cloakshield]] <translate><!--T:13--> makes it impossible for any outside observers to trace payments done with CLOAKCOIN.</translate>
  
<li>Bob has cloaking mode enabled in his wallet and the wallet generates a secure CloakShield encryption channel for communications with Alice's wallet. bob's wallet sends Alice a secure connection, containing encrypted inputs and outputs to commence the transaction.</li>
+
==<translate><!--T:14--> Enigma - Transaction Process</translate>==
  
<li>With this confirmed, Alice, with full privacy, creates an encrypted Enigma Transaction containing her true inputs and outputs and Bob's cloaking (ofuscated) inputs and outputs. Bob and Alice both sign the enigma transaction before it is submited to the network for inclusion into a PoS block.</li>
 
<li>The transaction rewards Bob with his Enigma cloaking fee and outputs payment to Alice's intended recipient. All participants remain fully anonymous and the entire process takes place without need for interaction from any wallet holders - only using participants who have elected to do so in order to earn additional Enigma rewards.</li>
 
</ol>
 
  
 +
<translate><!--T:24--> When a node sends funds via Enigma to an stealth address, the following happens:</translate>
  
<!--T:4-->
+
#<translate><!--T:25--> Sender generates inputs to cover amount sent, enigma reward (sent * (.2-1)%) and network fee (unknown at present, so ample reserved).</translate>
If you look at an ENIGMA transaction with the [https://explorer.cloakcoin.com/ Blockexplorer] you will see there are lots of inputs (on the left) and outputs (on the right), the number depends on how many cloakers were used. If you use 5 cloakers/mixers, there will be 5 matching outputs on the right and also 5 times as many inputs on the left. Only the sender and recipient know who the real sender is.  
+
#<translate><!--T:26--> Sender generates a CloakingRequest object (containing unique stealth nonce for this request).</translate>
So, in essence, 4 other people pretended to also send coins, but really sent them back to themselves.
+
#<translate><!--T:27--> Sender generates 2 or 3 one-time stealth payment addresses using the recipients stealth address and splits the sent amount randomly between the addresses.</translate>
 +
#<translate><!--T:28--> Sender onion routes CloakRequest to network. The request contains the 'send amount' so that Cloakers know how much to reserve.</translate>
 +
#<translate><!--T:29--> Cloaker picks up CloakRequest and decides to participate.</translate>
 +
#<translate><!--T:30--> Cloaker supplies X inputs to sender and a stealth address and stealth hash (for their change).</translate>
 +
#<translate><!--T:31--> Cloaker sends CloakingAcceptResponse to Sender. This contains stealth address, stealth nonce and TX inputs.</translate>
 +
#<translate><!--T:32--> Sender waits until enough Cloakers have accepted.</translate>
 +
#<translate><!--T:33--> Sender creates Enigma transaction using own inputs and Cloaker inputs. Inputs are shuffled.</translate>
 +
#<translate><!--T:34--> Sender creates TX ouputs for all Cloakers. The outputs randomly split their change and return it to them. This also allocates the cloaking reward to Cloakers.</translate>
 +
#<translate><!--T:35--> Sender creates their own change returns for the Enigma TX. These are one-time stealth payment addresses.</translate>
 +
#<translate><!--T:36--> The Sender calculates the network TX fee and subtracts this from their own change return.</translate>
 +
#<translate><!--T:37--> The Sender sends the Enigma TX to the Cloakers for signing.</translate>
 +
#<translate><!--T:38--> Cloakers check the TX to ensure their inputs are present and correct and that there are one-time payment addresses linked to one of thier stealth addresses with payment that exceeds the input amount.</translate>
 +
#<translate><!--T:39--> Cloakers sign or reject the TX and send signatures to Sender.</translate>
 +
#<translate><!--T:40--> Sender collates the signatures and transmits the finalized, signed TX to the network.</translate>
 +
#<translate><!--T:41--> Nodes scan incoming transactions for stealth payments and Enigma payments and detect any payments or change. Keypairs and addresses are generated for any matching payments and generated keys/addresses are saved to the local wallet.</translate>
 +
 
 +
 
 +
==<translate><!--T:42--> How are stealth and Enigma transactions detected/received?</translate>==
 +
 
 +
 
 +
*<translate><!--T:43--> All incoming transactions are scanned. Stealth transactions are scanned for first (using the default ephemeral pubkey contained in a random OP_RETURN TX output). After this, Enigma transactions are then scanned for. Enigma transactions also use the standard ephemeral pubkey, but payments use an additional step involving a further derived key. Enigma outputs are generated using a hash of the ephemeral pubkey, a private stealth address hash and the output index.</translate>
 +
 
 +
 
 +
*<translate><!--T:44--> When scanning for Enigma transactions, the zero-index payment addresses are generated for each owned stealth address [HASH(ephemeral_pubkey, hash_stealth_secret, 0)]. If a match is found for the zero-index of a stealth address, additional addresses are generated for the remaining indexes [num_tx_outputs] and these are scanned against to detect payments. See FindEnigmaTransactions in wallet.cpp for more info.</translate>
 +
 
 +
 
 +
*<translate><!--T:45--> A similar scanning method is employed by Cloakers prior to signing an Enigma TX to ensure they are getting reimbursed correctly. See GetEnigmaOutputsAmounts in wallet.cpp for more info.</translate>
 +
 
 +
 
 +
[[File:enigmatx.png|200px|thumb|left|Enigma Transaction]]
 +
 
 +
 
 +
<translate><!--T:20--> Analyzing a ENIGMA transaction with the </translate>[https://explorer.cloakcoin.com/ Blockexplorer]<translate> <!--T:21-->
 +
the inputs are located on the left and outputs on the right, the number depends on how many cloakers were used. If 21 cloakers/mixers are used, there will be 21 matching outputs on the right and also 21 times as many inputs on the left. Only the sender and recipient know who the real sender is.  
 +
So, in essence, 20 other people pretended to also send coins, but really sent them back to themselves.</translate>
 +
 
 +
 
 +
 
 +
 
 +
[[File:C0.png|center]]
 +
<div style="text-align: center;"><translate><!--T:23--> Free of Copyright Restrictions. </translate></div>

Latest revision as of 22:35, 27 December 2018

Other languages:
English • ‎Tiếng Việt • ‎Türkçe • ‎español • ‎português • ‎中文(中国大陆)‎
The Enigma Logo 2017


The inspiration for the name comes from the meaning of the original greek word – riddle, puzzle, mystery – and describes Cloakcoin’s Enigma: private, secure, untraceable and decentralized transactions.


Enigma in cooperation with Cloakshield makes it impossible for any outside observers to trace payments done with CLOAKCOIN.

Enigma - Transaction Process

When a node sends funds via Enigma to an stealth address, the following happens:

  1. Sender generates inputs to cover amount sent, enigma reward (sent * (.2-1)%) and network fee (unknown at present, so ample reserved).
  2. Sender generates a CloakingRequest object (containing unique stealth nonce for this request).
  3. Sender generates 2 or 3 one-time stealth payment addresses using the recipients stealth address and splits the sent amount randomly between the addresses.
  4. Sender onion routes CloakRequest to network. The request contains the 'send amount' so that Cloakers know how much to reserve.
  5. Cloaker picks up CloakRequest and decides to participate.
  6. Cloaker supplies X inputs to sender and a stealth address and stealth hash (for their change).
  7. Cloaker sends CloakingAcceptResponse to Sender. This contains stealth address, stealth nonce and TX inputs.
  8. Sender waits until enough Cloakers have accepted.
  9. Sender creates Enigma transaction using own inputs and Cloaker inputs. Inputs are shuffled.
  10. Sender creates TX ouputs for all Cloakers. The outputs randomly split their change and return it to them. This also allocates the cloaking reward to Cloakers.
  11. Sender creates their own change returns for the Enigma TX. These are one-time stealth payment addresses.
  12. The Sender calculates the network TX fee and subtracts this from their own change return.
  13. The Sender sends the Enigma TX to the Cloakers for signing.
  14. Cloakers check the TX to ensure their inputs are present and correct and that there are one-time payment addresses linked to one of thier stealth addresses with payment that exceeds the input amount.
  15. Cloakers sign or reject the TX and send signatures to Sender.
  16. Sender collates the signatures and transmits the finalized, signed TX to the network.
  17. Nodes scan incoming transactions for stealth payments and Enigma payments and detect any payments or change. Keypairs and addresses are generated for any matching payments and generated keys/addresses are saved to the local wallet.


How are stealth and Enigma transactions detected/received?

  • All incoming transactions are scanned. Stealth transactions are scanned for first (using the default ephemeral pubkey contained in a random OP_RETURN TX output). After this, Enigma transactions are then scanned for. Enigma transactions also use the standard ephemeral pubkey, but payments use an additional step involving a further derived key. Enigma outputs are generated using a hash of the ephemeral pubkey, a private stealth address hash and the output index.


  • When scanning for Enigma transactions, the zero-index payment addresses are generated for each owned stealth address [HASH(ephemeral_pubkey, hash_stealth_secret, 0)]. If a match is found for the zero-index of a stealth address, additional addresses are generated for the remaining indexes [num_tx_outputs] and these are scanned against to detect payments. See FindEnigmaTransactions in wallet.cpp for more info.


  • A similar scanning method is employed by Cloakers prior to signing an Enigma TX to ensure they are getting reimbursed correctly. See GetEnigmaOutputsAmounts in wallet.cpp for more info.


Enigma Transaction


Analyzing a ENIGMA transaction with the Blockexplorer the inputs are located on the left and outputs on the right, the number depends on how many cloakers were used. If 21 cloakers/mixers are used, there will be 21 matching outputs on the right and also 21 times as many inputs on the left. Only the sender and recipient know who the real sender is. So, in essence, 20 other people pretended to also send coins, but really sent them back to themselves.



C0.png
Free of Copyright Restrictions.