This is a network of simple text posting boards on the Ethereum blockchain.
This was a fun experimental side project I built mostly to learn. The experience was interesting, so I want to share my thoughts here.
I was interested in decentralized apps and cryptocurrencies, but I wanted to find out what potential there really is in the space for someone like myself.
For me the best (and most fun) way to learn is to build!
These decentralized app companies need to hire, so I decided to build a dead simple job board just for them. The existing ones seemed too complex. I wanted to make something simple like remoteok.io, but on Ethereum.
(This now exists at decentralizedjobs.com!)
I priced it at .25 ETH per post. If I sell a handful, I paid for the dev time. If I sell none... oh well I still had fun and learned :D
Quicky I saw when I started building what it *feels* like to build a decentralized app given the current limitations of the Ethereum platform.
Counterintuitively (and this is my main point), writing an app that uses decentralized infrastructure makes you want to build the most centralized app EVER.
What? No, a dapp is decentralized, right?
Writing a Dapp
You're really hamstrung by the platform, but you also can kind of just write whatever rules you want. You often want to make yourself the dictator, have all the money go to you, and put yourself in charge of all the moderation. Almost every single dapp in existence today works exactly like this.
That's the opposite of why I was interested in this. I was only drawn to dapps as a possible alternative to the way technology works today. We have all these silos... Google, Facebook, Apple, Microsoft, Amazon, etc. and and none of them work together. I was hoping dapps would be a new tool in our belt to help us work together instead of against each other.
How do I make this open? How do I work within the constraints of this system to build something more in line with my values?
It was when I started to explore the possibilities in this vein that I realized more what writing a decentralized app really feels like.
Writing a decentralized app feels like each line of code you write is a moral decision.
You can't change the contract once it's live. You can't patch.
You can't be Instagram and say, "Hey, everybody can see everybody's pictures here!" and then the next day decide you'll make more profit if none of the posts are in order anymore and if you want people to see them people have to pay you and if people don't like it... well it's closed so nobody else can make an Instagram client. You just write your app, and the decisions you make writing it are how it works. That makes the decisions you make as you build feel like bigger decisions.
Who gets the money? What's the incentive structure? Who governs it? What rights do users have? How portable is the data? How extensible is it? What rules are in place? How is it moderated?
This is why so many people get so religious about what blockchain and dapps are and aren't. Dapps are a mirror. Everybody looks at the opportunities presented here and sees the ability to realize and enforce how they think things should work. I've seen people with *extremely* different political and moral views from my own express that dapps are obviously going to finally unlock the world to work in the way that they want. I looked at it and for me it felt like they were going to bring about the exact opposite.
When I looked at this and asked, is this a way to make it so the future of technology isn't just more Facebooks? I obviously found shades of an answer of yes because *it's a mirror*. If the way something like Facebook operates goes against your morality, then yes, you can write an application that embodies different values.
And that's what I did.
So welcome to the Federated Network of Decentralized Posts!
In the Federated Network of Decentralized Posts, everybody can have their own board with its own rules and be in charge. There is a root platform all the boards live on, but you're more incentivized to start a board within the existing platform than to start a whole new platform yourself.
That's because the platform has a hard cap of how much money it can make, while boards within the platform can make unlimited money (through paid posting or tips). I set the platform cap at 100 ETH/year, and this increases with compound interest each year. I picked that amount because it was round and kind of similar in value at the time to the average American income per year. It would be like enough to pay a single maintainer a reasonable salary.
When users post on any board they can pay a voluntary tax of a few cents to the platform. The closer the pot gets to the cap, the lower the tax gets.
Individuals who post on boards also have uncapped income. They can make unlimited money through tips.
Anybody can pull the posts from anybody else's board like an API.
Is this perfect? No! The value of ETH fluctuates. The visual design and code of this are pretty funny how bad they are. I didn't trust the code or structure of it enough to not make myself the contract owner (I'd be surprised if the contract is bug-free). This is just a sketch of what I think is a new possible combination of a bunch of old ideas that are cool. I'm not so sure this precise combination (federation on top of decentralization with a constrained incentive structure) was possible before the advent of dapps, but it's an interesting combo worth exploring.
I'm also not saying this is how things should work. Most people building dapps today would probably think a lot of how I made this work is silly. Actually storing the posts on the blockchain alone is probably impossibly impractical in most people's eyes (it makes posting super expensive). I just didn't want to compromise on the decentralization or fall back to ipfs. This is what a 100% raw Ethereum platform app looks like and costs.
With federation on top of centralization like Mastodon or email, if the server you're using disappears or does something you don't agree with... well tough luck. In contrast, federation on top of decentralization has some interesting possibilities.
I don't think the time for mass use of something like this is anywhere near yet (a decade away if ever?), but there are dangers here to be considering as long as we're playing with fire.
What if everything costs money, so poor people can't participate at all and lose a voice completely?
What if the rules that are so unchangeable actually are harmful to users and can't be fixed?
What if the decentralized network is recentralized and people's trust comes back to bite them?
What if we never find a way to effectively moderate content, and it becomes a cryptographically uncleanable cesspool?
What if the clients aren't trustworthy and they start doing bad things outside of the architecture of the dapp?
What if the incentive systems stay strong and we never go away from proof of work and Ethereum/Bitcoin keep wasting obscene amounts of energy?
What if we can't think now of the most dangerous thing about all this?
Regardless, I just think it's time to start thinking about the bigger picture of the apps you choose to use and build and decide for yourself what aligns with your values. Technology is crazy powerful, and you can make a meaningful vote with your presence (or lack thereof).
And this was the only way to build my simple job board that felt like it was in keeping with the spirit of what sparked my interest :D
Similar to how what I built is a sketch, after building on Ethereum I see that it is itself only a rough sketch bigger ideas of what kind of platform could be possible in the future. Can't wait to see what lies ahead.
Happy posting, happy building!
Created by kevinflo