Fees and value storage


When Enigma is going to the main net, in which coin do we need to pay the contract fees? ENG? or ETH?
If I would like to create an application where the clients need the opportunity to pay, how does the do it? With the ENG on their address?

For example an anonymous donating system. Anyone can send money to a campaign, but no one should have the permissions to see the amount or the persons who donated. For this, it is necessary to link a sort of value in the enigma contract.

If the value is the ENG Coin, the transactions aren’t really private, or do they? This is a simple ERC20 Coin on the etherium chain, so it is visible for everyone when I put money into my enigma address?

Is there a way, for example, to combine enigma with monero, where these transactions would be also hidden?

Sorry for my bad English, I hope you could understand my question. :slight_smile:


Enigma will be on mainnet in 2019. The contract fees will be paid in ENG. That said with integration to on-chain DEX smart contracts like Kyber, the user can create a task with ETH and the conversion can take please under the hood without the user realizing it

The donation example is a bit misleading b/c we primarily focus on computations and the donation use case looks more like a transaction. With the upcoming testnet, one can send an ERC20 to the Enigma Registry contract on Ethereum and those ERC20s can be used for any secret contract in Enigma network. The TXs in the Enigma network do remain anonymous.

I suggest you take a look at Guy’s presentation from Devcon 4: https://www.pscp.tv/w/1LyGByezgbyKN


Thanks for your answer!

It is not my project, only an example to better describe my problem…

So there is no way to put anonymous value into the enigma network? Back to my example: If I want to donate money, I have to send ENGs to the address of the donation service (for all visible). Want the service (smart contract) is doing with it is hidden. Is this right?


It would be much easier if you can tell us what you exactly want to achieve and need. Going over an example that’s not a super accurate use-case for the network + not your use case is very hard.

You can put in private values to a contract in Enigma network. However if there’s an ERC20 token transfer that’s triggered that currently takes place on Ethereum. For example let’s think about secret voting. Your votes come to the Enigma network in an encrypted way. Say after the voting there’s a reward b/c you sided with the winning vote, that ERC20 transfer currently take place on Ethereum


Sorry, I am not allowed to share it :roll_eyes:

Thanks for the example! But then everybody notices that you got tokens from the contract of the voting system. As soon as it gets public that this contact is a voting service, you can guess that outgoing tokens are winner rewards. Right?

If this is right, my final question is how to send the winner his reward secretly. For example via a monero transaction. Do we need chain independency for this?


You can guess it if the rewards are sent to the voter address but there are ways you can go around it:

  • Do periodic reward payments that batches multiple voting results -> this way we can obfuscate which reward payment corresponds to which voting
  • Use a coinmixer (https://www.youtube.com/watch?v=67pwZRGGR70) to mix addresses for the rewards (this would be most helpful if the voting weights are standardized)

All the accounting can be done on Enigma and settlement on Ethereum


But that’s also not 90 - 100% hidden :smiley:

I will play a little bit with the testnet, and follow up with more questions later on. Thanks for your help!


Ahh, one more question right away…
If I deploy an application, after the mainnet launch. Will it be able to run forever, or will it be broken with the next release of enigma?


Our goal is to have backwards compatibility with subsequent releases.