‘Hello, World!’ from Wetonomy Toolkit

Maya Mateva
6 min readSep 13, 2018

--

Wetonomy is a set of applications and templates built on top of AragonOS that streamlines the creation of DAOs (Decentralized Autonomous Organization), allowing teams, companies, and organizations to collaborate, share profits, finance ideas and award contributions.

All in all, Wetonomy is a DAO aiming to make the participants in an organization care about its future, benefit from it and strive for its best together. Wetonomy is the way to start working with each other, not for one another.

You can find more in-depth info about the idea behind Wetonomy, its ideology and the way it works as a proof of concept in our Comrade Cooperative in those two blog posts — ‘The road to building a working DAO’ — part 1 and part 2.

Wetonomy Toolkit

Now, let’s deep dive into the architecture of Wetonomy.

It’s built on top of Aragon. I will have a separate blog post elaborating more about why we chose it, but for the sake of this post — Aragon is a great basis for creating decentralized organizations and provides easy-to-assemble pieces for developing your own DAO on the Ethereum blockchain. It comprises aragonOS (smart contract framework), aragon.js (lib for interacting with the state of the dapp) and aragonUI (components for building the UI of the dapp).

The current state of Wetonomy (as it is work-in-progress) consists of a couple of Aragon apps that can be used either together for a fully functional Wetonomy or separately as single apps — Tasks, Time Tracking, Members, Token Manager App.

Wetonomy Structure

The front end of the apps is built with react+redux as well as the Aragon UI components. The main components of each app are:

  1. contracts folder — contains the smart contracts and the required interfaces
  2. app folder — contains the code for the React part of the app
  • ConnectedApp.js — the entry point that loads the components once the wrapper message is ‘ready’
  • contractWorker.js (available for apps with UI) — the connection between the wrapper and the components

Tasks App

The Task App is the assembly point of the tasks in the organization. This is the place where each member can follow the activities inside the DAO, get a task or reward it. The dashboard contains separate screens:

News Feed

The place to follow all recent activities and act on them. The app will enable each member to track what is happening in the organization, what tasks are added to the board, vote for a task, thus making it more important, accept a task and follow its progress.

Newsfeed Screen of Tasks App

Board

A Trello-like visualization of the status of all tasks in the organization. Tasks are separated into columns — unassigned (all tasks in the organization that are not yet owned by a particular member), assigned, in progress and done.

Board Screen of Tasks App

Each task can be either accepted (saying — -I’ll do it), rewarded with various amounts of tokens (saying — ok, let’s boost the attractiveness of this item as it seems to be important) or transferred through the columns thus updating its status from unassigned to accepted, in progress and in review.

Time Tracking App

A calendar-like view for managing the tasks each member has. He/she will be able to add new tasks to the project, update them and track the hours spent on it. The more time is spent on it, the larger is the block on a corresponding day.

Once the hours are tracked (pushed to the blockchain), the inflation for them is generated.

Time Tracking App

Members App

This section is meant to visualize the members inside the organization. A user can add a new member by setting its name, account address, and level and signing the transaction with his account. Each member’s pay rate is set based on his/her seniority.

All members of an organization will be listed in the table and their properties might be editable by a user based on his permissions. The reputation is gained based on everyone’s performance.

Members App

Token Rewards Manager App

It handles the distribution of the tokens based on the inflation generated by each member. Once a user tracks her/his hours, the inflation is generated and then spread to the others in the organization. Each member will get tokens based on her/his reputation that can be awarded to tasks afterward.

Currently, this app does not have a UI, but rather just smart contracts for handling the logic for rewarding and claiming tokens based on the generated inflation.

Further dev-like notes on the project

Scripts

The scripts used in Wetonomy so far are:

  1. In the main package.json file of the Wetonomy:
  • bootstrap — the command runs the lerna command, i.e. bootstrap the packages in the current lerna repo. Installs all of their dependencies and links any cross-dependencies. The lerna.json file is the one that specifies which files/folders will participate during the process.
  • compile — compiles the contracts and run a linter (solhint) for them
  • devchain — starts a local devchain with a hard-coded mnemonic
  • start:kit — executes the aragon run command specifying the WetonomyKit as the starting point for the process
  • start — runs the kit and publishes it

2. Scripts in each of the apps:

  • start — executes the aragon run command, i.e. run locally the app in the current directory
  • test — executes the custom script from truffle-test.sh — runs local devchain/ganache and counts on ‘truffle test’ command
  • build — compiles and builds the aragon and the react apps
  • publish — executes aragon apm publish command — publishes a new version of the app

Import account for MetaMask

Once you run the app (no matter if it is the whole Wetonomy or a single app), Aragon makes your life easier and exposes an account that you can use with the MetaMask without the effort to request test $ from Rinkeby or any other way for receiving free ones. What you will see in your console is:

npm run start:kit

Then all you need to do is copy the address of the account and import it in Metamask. Afterwards, you can use the free test $ to execute the transactions of the apps and test the functionality (just remember to be on the localhost: 8545 — that is the default one and work with the imported account in the MetaMask).

In case Wetonomy grabbed your attention, take a look at our GitHub repo and be more than welcome to share any thoughts, feedback, concerns. And stay tuned for the upcoming series of the Wetonomy Dev Diary and the challenges we meet on the way. Next one will be about the tools/libs/technologies used in the project.

So, from now on, let’s start working with each other, not for one another.

--

--