Hi all! Asked this question on telegram and was redirected here. I don’t understand Enigma’s decision to move off of eth, and I’m not sure it’s in the best interest of the project to do so. I read on the telegram that Enigma aims to be plasma-compatible by 2020 (the target date for the migration) - in this case, there’s no scalability issue with eth, and the ethereum ecosystem offers easy enigma integration for a wide variety of projects. Most importantly, I think, is consideration for projects that will have incorporated the Enigma protocol before 2020. These projects will have deployed contracts reliant on the existing node structure of Enigma, and wouldn’t necessarily be able to migrate as freely. In any case, even if scalability is the issue, I can’t imagine that the solution would be just to move to an independent chain, compromising the security provided by ethereum’s node structure (unless you’re using something like using komodo’s dPOW but that’s outside the scope of this question and still doesn’t resolve the first problem).
I believe the decision to move to an independent blockchain allows Enigma to become blockchain agnostic, such that any dapp can utilize Enigma’s secure multi-party computation and trusted execution environments— whether it’s built on Ethereum, EOS, or another platform.
My understanding is that the Enigma protocol aims to be a second layer solution for a variety of blockchains. Moving off Ethereum allows a wider variety of dapps to utilize Enigma’s protocol, regardless of which base chain they are built upon.
Someone please correct me if I am wrong
Why wouldn’t that still be possible if using the ethereum network for transactional throughput? Is the only reason to be “second layer”? If so, and they’re already working on building a plasma scaling structure, isn’t that a much better second layer than just forming a new chain that might be faster but just because it has fewer nodes?
Also, and probably most importantly, what about projects that have already built secret contracts on-chain? If enigma nodes migrate to the new chain, there’s no incentive for the existing nodes to continue carrying out smpc on those contracts, and if they already have users, the original projects won’t necessarily be able to redeploy everything on enigma’s new chain - so why would a dev team want to build on enigma between now and 2020 knowing that’s going to happen to their contracts?
For one thing Plasma data remains public. These means that any node performing computations on plasma data has complete access to view and store the data on the Ethereum blockchain. Though plasma may help to scale the Ethereum network, it continues to allow public access to all computations performed.
For enterprise applications this is completely impractical. Hospitals, law firms, investment companies etc will not be able to utilize plasma due to privacy law.
To address your second concern regarding dapps built prior to Enigma’s chain independence — Enigma will utilize solidity. This is the same programming language used on Ethereum. It shouldn’t present any major issues when Enigma moves to it’s own blockchain.
I am not a dev, so someone please correct me if I am wrong: this is my understanding of the issues you inquired about.
Hmm I’m not an expert on plasma, but I imagine that in a plasma implementation, the compute would still run through the enigma network the same way it does on main-chain, with only the validated output signed on the plasma chain for security.
As far as migration of existing secret contracts, it’s not a matter of the difficulty of recreating existing contracts on a new network; the issue deals more with backwards-compatibility in retaining the integrations of those contracts. For example, let’s say there’s an on-chain lending platform that allows users to provide associated data to request loans. The computation to see if they meet the criteria for the loan goes through the enigma network on ethereum, and the output confirms to the lending party that the user meets the criteria, so they approve the user for the loan. The contract is coded in such a way that when a user is approved for a loan, they can give allowance for a token withdrawal from their wallet, meaning the loan gets withdrawn in monthly payments from their wallet automatically as long as they continue to remain in good standing (good standing computed by enigma network), and the loan agreement is terminated if those terms are violated. Suddenly, the enigma network stops computing the borrower’s criteria, freezing the automatic loan repayments. Even if the contract itself is copy and pasted into a new network and executes the same way, the infrastructure built on top of the contract is not. Also any APIs that are coded to query secret contract output and use it to drive business logic wouldn’t be backwards compatible with the new network.
The reason why Enigma should move away from Ethereum are a couple reasons in my honest opinion…
Enigma, while not having to leave Ethereum to be agnostic to other blockchains, it will allow DApp platforms to have the option to move to Enigma completely, and only pay for transactions with the Enigma “gas” instead of using Ethereum as well.
The main reason Enigma will want to be on their own chain, is because DApps can launch tokens on the Enigma platform that are completely private. Enigma will be doing private ICO’s by the end of this year most likely on Ethereums chain, so the distribution of tokens will remain private… however… the tokens themselves will not after distribution.
This is why Enigma is definitely heading in the right direction… DApps using gas costs strictly on Enigma, while remaining completely agnostic if they so choose, and their DApp platforms can migrate over to Enigma while retaining data privacy if they so choose. And their tokens can be private as an option if the DApp developer chooses for the token to be private.
Thanks, yeah that makes sense I suppose, and a native enigma would be useful; but it still doesn’t resolve the issue of what happens to secret contracts that are already built and deployed on the existing ethereum infrastructure and have users relying on those computations?
In this case, the Public contracts on Ethereum would call out to Enigma’s DHT network for the requested information.
I believe this question actually has two parts:
Why have your own chain at all (this could be a plasma chain - which is our plan for 2019)?
Why move from a plasma chain to an independent chain?
The answer to #1 is simple. Despite best intentions, the Ethereum chain (and any other existing chain) was not built with privacy-preserving computations in mind. Moreover, current blockchains are not designed with the mindset of separating computation from validation (consensus). For example, Ethereum cannot verify enclave quotes (mTLS has to go through oracles and RSA would be extremely expensive for proper key sizes). Similarly, we can’t efficiently optimize cryptographic verification techniques for MPC (implementing zkSNARKs in a way that circumvents the EVM required a hardfork. It’s likely that Enigma will use different techniques that would require their own optimization).
What’s even more important is the cost. Moving across chains is expensive and often suboptimal. It ruins the user experience and in many cases, makes applications unusable.
The same reasoning applies to remaining a plasma chain. At the end of the day, disputes and commitments would have to occur on the main chain, which would run into the same issues described above. It makes sense to create some Plasma chain connection with potentially limited exit conditions - until the Enigma blockchain can stand on its own and be secure enough, but once that’s possible - the most elegant solution would be to run the Enigma chain independently.
As to interoperability and backwards-compatibility - having our own chain won’t break that. We’re already working on future iterations of our network and are keeping that in mind. Basically, there will be a bridge that allows calling an Ethereum smart contract from a secret contract - and that is independent of whether we have our own chain. We also hope that other projects would use this to create bridges to their own chains. However, it’s important to mention that this kind of interoperability is different from tightly locking the Enigma network and chain to Ethereum.
TL;DR: If we focus on staying interoperable with Ethereum, we can’t make the right design choices for Enigma.
Ah, that perfectly sums it up - glad you’re keeping a bridge to call pre-existing contracts in mind