SuperblocksHQ / ethereum-studio

Official Ethereum Studio project repository. And IDE specially tailored to make it as simple as possible to onboard new users into the Ethereum ecosystem
https://ethereum.org/build/
GNU General Public License v3.0
186 stars 103 forks source link

Add Vyper #270

Open fubuloubu opened 4 years ago

fubuloubu commented 4 years ago

Summary

Add the Vyper smart contracting language to Ethereum Studio

Motivation

The Vyper compiler is meant to be an easy-to-use, safety-first compiler for Ethereum smart contracts that is friendly to newcomers. Ethereum Studio is a beautiful browser IDE that a lot of newcomers may first explore Ethereum with. Seems like a match made in heaven!

Describe alternatives you've considered

N/A

Additional context

As far as I can tell, this may be difficult to do until we add an emscripten release process: https://github.com/vyperlang/vyper/issues/1953. This front end appears to be fully client-side, so would be difficult to integrate otherwise without leveraging Docker. I could be wrong though, please correct me!

However, how this would be integrated in a user-friendly way ("there are options for smart contracts???") may be another issue to resolve. Based on file extension? Configurable setting? Ask the user which they like the look of better on their first visit?

javier-tarazaga commented 4 years ago

Hi @fubuloubu,

Thanks for the suggestion! Yes, you are right that all code it is currently compiled in the client. Long time ago, we started with remote execution environments using docker but is something we never finished (not even close), as we were also thinking to provide coding environments for Truffle, etc.

I had a quick glance at how Remix implemented this but I could not get the remote environment to compile the example ballot.vy and Remix is not giving any clues on why 🤷‍♂️

Do you have any timeline for https://github.com/vyperlang/vyper/issues/1953? I think could be a great addition but implementing this will also carry a few extra work. @samajammin any thoughts?

Apart from adding support in the tool itself, this will require to create examples using Vyper. Most of them are really simple though except the NFT which is a bit more complicated.

fubuloubu commented 4 years ago

We have examples, including an NFT one, so hopefully that would help.

Pretty sure Remix just had a server that would make calls using vyper-json, so definitely not going to work here.

I don't have an explicit timeline for vyperlang/vyper#1953 because it's a project outside of a bunch of maintenance work that needs to get done, but the ultimate plan there is to build something and release it on NPM, which should make integrating much more trivial here.