October 5th. Wait what? Where did September go?

No time for closure here, we are ONLY 2 weeks away from M-0, and September was essentially about preparing surprises for M-0.

PROTOCOL

On the smart contract side, we’ve been iterating upon the latest major release v0.3, fixing bugs, adding some more features, improving wording, refactoring…. you know the story.

2 audits of our smart contracts started in the beginning of September.

We added the option to shut down both versions and funds.

We implemented the functionality to get the reference price from our Datafeed on the Fund contract.

We deployed a microservice whose job is to update the Datafeed contract with prices retrieved from Cryptocompare.

We added a new Risk Management module that allows for making and taking orders based on a reference price provided by the Datafeed previously mentioned.

We worked on Proof Of Embezzlement, which essentially reveals whether embezzlement occurred in a Melon fund.

We added an Exchange Adapter, which allows for interaction between a fund and an exchange in a standardized way.

We introduced the concept of an External Adapter, which is an Exchange Adapter that can be used to allow interaction between a Melon fund and external custodians / centralized exchanges.

We modified the GAV calculations in an effort to account for externally held assets (ie. on external exchange).

We implemented a Participation module that enables white-listing authorized investors in a fund.

We added some LogError events on the Fund contract, to ease the debugging processes.

We started using Dapp as we love simplicity and modularity.

We worked on a custom deployment script better suited to our needs and providing a leaner protocol deployment process.

We worked a lot on testing as usual, and wrote new tests using Jasmine; we aim at writing more challenging tests, in an effort to detect any oddities early on. #failfixrepeat

We close September with the v0.3.6 protocol release.

COMPETITION PREP

We prepared a registration interface for future Melon Managers competitions.

Users will be able to register their fund for competition. We created a Competition contract, that allows for participants registration through cryptographic signature of our terms and conditions.

We implemented a SMS verification system, most of which is on-chain, using Parity’s service.

For fairness purposes, only new funds will be allowed to register.

The oracle checks for all conditions (terms and conditions signed, SMS verification, and new fund) and then attests the registration of the user.

FAUCET

We created a faucet that automatically sends some k-MLN and k-ETH to a user, using reCAPTCHA to prevent spamming.

Intended purpose is for future competitions, but the faucet is already available at faucet.melon.network.

MELON.JS

We adjusted and linked up Melon.js with the latest protocol version v0.3.6.

We introduced the concept of gasBoost, which essentially allows us to perform some gas estimation/manipulation, to make sure our function calls don’t run out of gas, but don’t exceed current block gas limit either. We apply the gasBoost to all our non constant function calls from now on.

We introduced the concept of the Melon Tracker, which enables a more efficient and convenient event listening. It works by parsing the Ethereum blockchain and looking for events related to our contract and relevant for UI updates (eg. order update triggers orderbook reload, price feed update triggers holdings reload and share price calculation). It also formats the retrieved information to deliver it ready-to-use. Check it out, it’s cool!

We implemented pre-flight calls before sending transactions on the contracts, to detect if anything goes wrong before actually sending a transaction (and paying gas). Furthermore, we decided to also ensure that all preconditions of the protocol pass in Melon.js first, before sending any transaction to the contracts — whenever possible. This will allow us to have better error handling, easier debugging and less of that annoying Transaction Execution Error.

We also worked a lot on integration testing. The integration tests that we started designing last month turned out to be a wonderful tool for our transition from protocol v0.2 to v0.3.

We had to adjust unit tests as well, since a lot of function signatures had changed.

Latest stable version of Melon.js is v0.3.2.

PORTAL

As soon as Melon.js was stable, we could start integrating the core functionality into the decentralized-portal ie. setup fund/invest/take order/make order/redeem.

After a few weeks of back and forth between D-portal / Melon.js / Protocol, we close the month with a fully functional decentralized-portal.

In addition to that, we pursued our work on our IPFS plans. We are currently developing tools to test and deploy the decentralized-portal on IPFS. We expect to open source those tools in the next weeks to help on the development, deployment and continuous integration of applications on IPFS. Since IPNS performance is low, we use DNS and a reverse proxy to resolve the melon domains to specific IPFS hashes and an IPFS server to pin the current objects for each domain.

DESIGN

On the design side, we kept preparing M-0 material.

We worked on a new Melon branding, as well as MAMA branding (… stay tuned, M-0 announcements coming soon).

Next steps include (but are not limited to) improving the protocol efficiency and security, start working on the UI/UX of the decentralized-portal (form follows function), having solid and reliable tools for IPFS deployments and finalizing everything for competitions to come.

Now let’s spark up October and make it even better than September!

If you have any feedback/suggestions for us -or just want to chat with us, please join our Gitter channel or Telegram channel.

Also, we are excited to meet some of you later on this month at the M-0 conference in Zug.

-Melon Dev Team ❤ 🍉