Dev Update November 2018 (+ Open Sourcing the Marketplace)

Streamr project members from Devs, Comms and Labs at DevCon4

Welcome to November’s Dev Update!

For anyone who counts themselves part of the Ethereum community, Devcon is the highlight of the year. Well, we found ourselves so (re-)inspired by the brilliantly dedicated people in the space that we wrote a blog post about the ways in which we’ll strengthen our commitment to living decentralized.

That beefed up commitment now includes opening our code as early as possible, even if the code is still raw and a work-in-progress. Even if it causes us to cringe as we push the publish button because it is all less than perfect. Even if, to cope with the underlying sense of embarrassment, we’re telling ourselves that no piece of code is ever immaculate. So today we have published three new repositories. This makes all our Marketplace-related code now fully open source.

Streamr Platform

This repository contains not just the Marketplace frontend app, but also the upcoming parts of the new Streamr frontend. You’ll actually be able to take a sneak peek into this new development, which is one of the last remaining Engine & Editor related tasks in Milestone 1.

So what’s all that about? The new frontend will be a SPA (single page app/dapp) and a complete React/Redux rewrite of the the old frontend located in the engine-and-editor repository. As you may have noticed, the current Editor webapp isn’t as fresh as the Marketplace, website, and other newer resources. This update will definitely fix many usability and aesthetic issues in addition to making the code much cleaner and more maintainable. This paves the way for future development work, as well as community collaboration.

Marketplace Contracts

The Marketplace consists of three main components and some glue in between. Those three parts are the frontend app (above), Ethereum smart contracts, and a backend API. The smart contracts, written in Solidity and using the Truffle framework, live in this repository. The source code of the contract has always been public and verified on Etherscan, but now you get a more complete view including the surrounding bits and pieces. Future development includes integrations with on-chain exchanges such as Bancor, as well as Community Products osf course, which we’ll be discussing in-depth a bit further down the road.

Streamr Ethereum Watcher

This is the aforementioned “glue” which informs the backend API (part of the engine-and-editor repository) about what happens on-chain. For example, when you undertake an Ethereum transaction to change the price of your product on the Marketplace, the watcher will pick up this change and the new value will be cached in a traditional database. The ground truth about product prices and beneficiaries are securely on-chain, but in order to maintain a quickly functioning app and a good user experience, information cached in a more traditional database can be used to display it.

So that is our Marketplace Code dealt with. Below is our usual list of developer updates by team member.

Eric

  • Network: remove central leader nodes; migrate to a simpler model where all nodes are equal and numbering of messages is the responsibility of clients.
  • Network: exchange peer identities when connection established.
  • Network: use peer ids instead of network addresses in logic layer, thereby increasing abstraction. Translate ids to network addresses on lower, protocol layer.
  • Network: move peer type checking to protocol layer from logic layer.
  • Fix Docker runtimes of Engine-and-Editor and Data-API.
  • Engine-and-Editor: Modify CORS rules for login-related endpoints.
  • Engine-and-Editor: Canvas list API endpoint didn’t return correct results with parameter adhoc=false.

Tim

  • Add support for variadic inputs to editor modules.
  • Add support for Resizable modules.
  • Implement history/realtime state handling, toggles & inputs.
  • Implement Delete Canvas button.
  • Update minimum version of React from 16.2.0 to 16.6.0.
  • Track unused files in webpack build. Remove unused files.
  • Attach diagnostic function as global.streamr.info().
  • Start/stop canvases.
Our Cold Chain tutorial

Tuomas

  • Implement feature to automatically close publish/unpublished dialogs after the tx has been confirmed.
  • Refactor Canvas data to use shared entities in user pages.
  • Add a new dialog to show when user has insufficient DATA balance.

Matthew

  • Mobile view styling/bug fixes.
  • Product details editor styling.
  • Prod details hero style.
  • Button state colour fixes.

Aapeli

  • Create a Storybook for the Streamr frontend application.
  • Do some refactoring.

Juuso

  • Working on Community Project and MonoPlasma release.

Mikhael

  • Trimmed Engine and Editor docker image, which was a bit heavy and slow to startup. This will improve development experience and testing speed.
  • CORS issue with marketplace.
  • Fixed streamr-client tests that would fail on TravisCI

Juha

  • Prototype implementation for transaction listing in user pages.
  • Fix profile link.
  • Update Readme file, review comments.
  • Start styling user profile, make shared TOC page component.
  • Update transaction listing to get purchases and payments through the token contract.
  • Profile settings page, shared select input.

Kare

  • Working on client side timestamps.