Web3-Conf-India / Hack-Web3Conf

13 stars 12 forks source link

Submission: Cosmy Wasmy #43

Open spoo-bar opened 2 years ago

spoo-bar commented 2 years ago

Team Name

Spoorthi

Team members (if changed)

Member #1 Name: Spoorthi Satheesha Email: s.spoorti@gmail.com Twitter handle: @spoo_bar Discord ID (with #tag); spoo_bar#0747

Project Name

Cosmy Wasmy

Contact Details

s.spoorti@gmail.com

Project Track

All Things Devs

Sponsor Bounties

Gitopia

Link to project GitHub public repo

https://github.com/spoo-bar/cosmy-wasmy.git

Link to project website

https://marketplace.visualstudio.com/items?itemName=spoorthi.cosmy-wasmy

Link to demo video

https://youtu.be/C7zGGoJYM4Y

Contract address

No response

Inspiration

I work in the Cosmos ecosystem and here the smart contracts are written in a framework called Cosmwasm. The contracts are written in Rust as opposed to Solidity. When I wanted to learn to write Cosmwasm based smart contracts, I noticed that unlike for Solidity, there weren’t any tools like Remix which would allow new devs to easily build and interact with smart contracts.

I believe good developer experience is critical to be able to onboard new developers. Developers should be busy building and be less worried on how-to set up build environment. As a developer who already had prior experience building dev tooling on vscode before, I decided to build a vscode extension to make it a seamless process for new devs to build, test and deploy new smart contracts.

What it does

The project is a vscode extension which handles a bunch of behind-the-scenes configuration for the user. It provides easy and simple way to generate temporary wallets for testing. It has built in integration such that users can request for funds from a faucet in one click.

The extension can connect to any Cosmos chain which has Cosmwasm integration. It allows users to import existing contracts, modify its properties like root admin. And obviously, it also has integration to query as well as execute transactions on any contract with any test wallets. For ease of devs, it also keeps the last few queries and txs in local history so that devs can re-execute any historical query with easily. The extension also helps in contract migration as well. Any compiled contract can be uploaded on chain and instantiated all within the extension.

The extension also works on gitpod and is compatible with openVSIX standard such that any code editor which implements the standard, the extension automatically works.

Challenges you ran into

The biggest challenge while working on this project was working with the vscode extension API. I wanted to implement live unit test debugging on the contracts from within vscode. But due to the way cargo handles unit tests and the exposed vscode APIs for debugging did not sync. It was a feature I was excited to implement but could not due to mismatch in requirements by the two components I needed to work with.

Another challenge was in setting up the CI/CD pipeline for automatically publishing the extension. Having little experience in devops before, setting up the auto-deployment scripts were challenging and especially more so due to lack of documentation. However, I was able to solve this for the publishing to OpenVSIX registry and haven’t yet been able to do it for vscode marketplace and still rely on manual deployment.

Anything else?

I published an alpha version of the extension a little while back to receive user feedback and to be able to learn what more would be need by the developers. The alpha preview was a major success with over 150 users using it as their daily driver for smart contract development. Below, I have attached couple of the feedback given by the users.

image image