district0x Dev Update - August 20th, 2019

Development progress and product changes from district0x

In our last update, we expected a new deployment for Meme Factory by the time of this development update. Unfortunately, after a few speed bumps encountered during testing and implementing fixes, this deployment is still pending for later this week. However, despite this, we’ve been progressing not only towards this most immediate update, but also with future updates for Meme Factory, and we’re still progressing with other applications. After spending some time with a group of recent vulnerability reports, we’ve also implemented wide array of supporting updates for our backing infrastructure.

As we wrap up the remaining work on the District Registry, we’re seeking experience solidity developers to perform security audits on our smart contract suite. If you’re interested please check out our job posting on Ethlance, and email your qualifications to talent@district0x.io

Meme Factory

Meme Factory has seen a lot of forward development as we work out kinks in pending changes. We’ve also addressed some bugs that were still present in the live Mainnet version.

Among new feature work is a highly requested addition to allow users to download vote secrets stored in the browser, and import/upload them on a different browser or device. This should assist users who like to vote and reveal across platforms. This was mostly complete in previous weeks, but has been polished and had a few edge cases corrected.

Additionally, the big feature of the pending deployment is the parameter change page. This allows users to vote and challenge on the exact numeric parameters of the DANK registry — things like vote percentages and rewards, or vote and challenge timing. This is by far the largest change we’ve introduced to Meme Factory since launch, and in the past two weeks we’ve reviewed everything from copy and text ordering to bring this up to standard. We’ve also made core improvements to how the client auto updates the states of parameter change votes and challenges — essentially, when a vote timer ends, users will no longer be required to refresh the page to get an accurate client state, instead this will happen automatically. In the future, we’ll expand upon this and bring this feature to Meme challenges and votes as well.

Extensive testing of the parameters page revealed some issues that needed to be corrected on our QA instance before deployment. This included a now fixed problem with IPFS where new images on QA weren’t linking and rendering correctly. There was also an unexpected regression in our QA instance that was failing to ship smart contracts ABI correctly within our Javascript bundle, causing all transactions to fail and revert. Not only did we fix this, but we’ve improved this entire process which should improve first-load times on the Mainnet instance once live.

Two additional issues plaguing our Mainnet instance have been or are currently being addressed. The first is an elusive issue with vote counts that was not only hard to find, but was blocked on our fix by secondary problems like being unable to sync the production blockchain on local quickly (and therefore requiring extra time just to confirm our fix). Our production Parity instance is fragile, and would frequently kill our event filters during the syncing process. By reconfiguring some timeout logic, we’re able to fix this completely. This will go live in the coming weeks, and after a single resync, should correct any mislabeled vote or challenge history in the Meme Factory interface.

The other issue we’ve addressed is regarding the faucet — which unfortunately has not been dispensing DANK in the past few weeks. We’ve made some involved changes here, such as hashing stored numbers along with the country code to prevent certain clashes. And now that the faucet is back on, we’ve added a ton of new monitoring to our Oracalize calls so we’re no longer blind to what’s happening on chain once our event flow finishes. This will take some testing, and should land on Mainnet in a future deployment.

Last but certainly not least, after scrapping our previous live chat implementation, we’ve proceeded with a much preferred Discord chat integration that will allow users to chat directly in the district0x Discord without leaving the Meme Factory app.

District Registry

The District Registry is rapidly nearing completion. We’ve finished writing all tests for smart contracts, and commented out solidity code ahead of our expected audit. Along the way, we managed to fix some minor solidity bugs.

We prepared copy and a github issue for auditors, as well as a user story checklist for future testing routines. We also conferred with the Aragon team to receive guidance on our implementation of DAOKit. This was a very fruitful discussion, and we’re excited to say we only needed to make a few very minor changes on their recommendations.

Among more user-facing fixes, we’ve shored up the historical staking charts after a sanity check showed the mathematical logic, while coded correctly, was not yielding what we expected. Additionally, we’ve put in-browser image size verification to enforce the resolution and size limits for the district application process.

The past two weeks have certainly revealed some unexpected problems in development. However, nothing we encountered is anything more than a minor setback, and almost all of the problems revealed led to a much more robust fix in the end. Development for new features on Meme Factory is bleeding over with benefits to our other applications, and the District Registry is steamrolling ahead towards an Mainnet deployment.