Menlo One Announces Block Overflow — A blockchain Stack Overflow that pays for answers

Matthew Nolan
Menlo One Blog
Published in
6 min readOct 1, 2018

--

We’re big fans of Stack Overflow here at Menlo One. We don’t know where we would be without it. However, with new technologies like blockchain, there are very few developers out there with both the knowledge and spare time to field questions. Questions could take days or week to be answered. Although it’s great that Stack Overflow is free, sometimes I’d be willing to pay money to have help solving a problem a little faster than waiting around for someone to come across my question on Stack Overflow.

We thought there must be a better way.

We’re proud to present Block Overflow. It’s a forum for people to get help solving technical challenges and collaborate to solve tough problems in blockchain. It’s of course highly inspired by Stack Overflow. However there’s a twist, the person who replies with the peer reviewed correct answer gets paid in Menlo’s ONE token. A 24h countdown starts the moment the question is asked, so people are incentivized to answer quickly. It’s a little like a cross between Stack Overflow and Jeopardy.

What Block Overflow is, and how it’s used

  • A user posts a question, they get to offer a bounty in ONE for the solution.
  • One or more users respond to the question with their solutions, they are also required to pay a small amount of ONE to post.
  • All of these tokens go into a pool.
  • Community users vote on which answer is correct.
  • The user who contributed the answer with the highest number of votes gets the payout from the pool.

Payouts happen after 24 hours of non-activity on the thread. When a question is posted, it starts a timer which starts counting down 24 hours. Every time a user replies, it resets the counter. After 24 hours of non-activity on the thread, the smart contract pays the pool of ONE to the winner. If there are no replies, the initial poster is refunded their ONE tokens.

It’s completely decentralized

While Block Overflow might look and feel like a regular website, literally everything about Block Overflow is decentralized. All of the messages are being saved to IPFS and Ethereum. The voting mechanics all happen on Ethereum and, of course, so do all the payments . All of the data on the site is immutable and hypothetically will live on forever.

Decentralization in this example provides a tremendous benefit over a traditional system. One of the dangers of trusting an intermediary as the sole owner of a dataset is that it’s possible for them to one day stop providing it. It’s entirely possible that Stack Overflow might one day go out of business and the years of contributions might be lost forever. Most of us have experienced this with our old MySpace or Friendster accounts. While most people would prefer the social media footprint of their “emo phase” doesn’t live on forever, losing the data on sites like Stack Overflow, Quora, or Wikipedia would be a disaster.

The primary goal of Block Overflow is simply to provide our community with a resource and solution orientated place to work on blockchain projects. I hope it also inspires people to start thinking about building stronger, more resilient web apps, and hopefully we’re providing useful tools to help developers accomplish that.

Our first use of a pre-alpha Content Node

Even though the data is read and written to a large public blockchain, Block Overflow will demonstrate how fast and responsive a dApp can be. This is our first public usage of a Menlo One Content Node (CN). Our Content Nodes are designed to provide users with the same experience of using a centralized app without compromising the benefits provided by blockchain technology.

How reading from Block Overflow works

When you load the page with your web browser, the Content Node is serving you the data it’s cached from Ethereum and IPFS which is stored in a traditional database. This allows users who do not have web3 set up to read the application, as well as allows crawlers like Google to index the data. This also allows users to read content on the site without having to download the entire Ethereum blockchain, which is already larger than many laptop hard drives.

You might already be thinking “that’s not decentralized” but content nodes are decentralized — they can be run by anybody much like Ethereum nodes. To make sure nobody interferes with the content delivered, we are also the debuting our “validation” feature.

If the user has a connection to a web3 provider, they can validate that the data provided to them by the Content Node is in fact what the author of that content intended them to see. When the CN provides the data to the user, it signs the transaction with its public key. The user also signs the transactions and submits it to a smart contract deployed by the author.

If the hash of the data payload matches the hash of what the author saved in the smart contract, the smart contract rewards the user and CN with a payout in ONE tokens.

The idea is that the user is not solely trusting the CN. They’re confirming that the data they receive from the CN is indeed what the author intended, while leveraging the CN to perform operations with far greater speed and efficiency than the user can on their own. Right now this is just a pre-alpha CN and there is only one CN for this application. However in a beta release we’re going to support multiple CN’s, which all cache and serve the same data. This removes the risk of having a single point of failure as in a traditional web stack.

How writing to Block Overflow works

For a user to post, vote, or perform any other write function, they need a few things: An Ethereum Web3 provider in their browser (MetaMask will do), some ETH for GAS, and some ONE tokens.

When the user posts, they’re actually sending three transactions:

1. The content of the post which is sent to IPFS,

2. The hash of that post which is sent to Ethereum,

3. An HTTP POST request to the Content Node with the other two things.

In the future, the Content Node will gossip the new post to other CN’s and their users for real time updates without forcing users to wait for a block confirmation. In this version the CN just propagates this update to other users currently connected.

We rely solely on the users’ Ethereum key pair as a form of authentication. We use metamask message signing as a way of proving the user owns their web3 account and create a server signed JWT token for server authentication. It is, of course, possible for users to use Block Overflow totally pseudonymously if all they are doing is reading the content.

Fork our code

Block Overflow is released as an open source project. It’s currently in a pre-alpha stage. Block Overflow is intended to test drive our framework in production, and to provide our community with a incentivized place to discuss development of our products. There will most likely be some bumps along the road as we work our way towards a beta release. We’re very much open to your thoughts and feedback. If you notice any bugs or if you have any questions, Block Overflow would be a great place to leave them. Thank you!

--

--