EOS - Development platform first!
What on earth is EOS, really?
I've recently got very interested in developing an app on the blockchain and of course, my research brought me to EOS. I notice something peculiar though: many people are looking at this project from the crypto point of view, through the lenses of previous experience with blockchains, altcoins, myriad ICOs, etc. Not that it's wrong but from my point of view, EOS is something completely different.
I am coming in as a developer first and this is how I see EOS:It is powerful development platform with all the benefits of the blockchain. I believe that EOS will be a tool to really bring blockchain to the masses and the reason is that it's just the natural endpoint for any dev looking to do something useful with this technology. In this post I'll share how I reached this conclusion and what I plan to do in the future.
I was looking into building a new project recently. My target audience is mobile app users that expect a free product with perhaps some in app purchase option. It's not groundbreaking but I think I can do better than what is already out there. A friend of mine hears the idea and says to me "you know blockchain would be really good for this". Hmm... yes it would actually! I have in app currency (call it gold coins, zoo dollars, tokens or whatever), digital assets that can be shared and would be perfect on a blockchain. So let's look into this then. Given that he is a steemian he tells me to start with graphene and work my way up as needed. And that's how it starts...
I'm thinking: Spin up my own chain. I look into that for a bit. So the platform is very cool. It's fast and proven and open, so far so good. There would be however a lot of development to customize it to do what I need, seems like a waste to do that just for my app. Also a lot of hustle to get the network started, get people to "mine" for the network, distribute the initial currency to get the ball rolling. Simply too big of a challenge that I can't possibly take on. I need something else. The next step follows:
What about this DAPS that I keep hearing about all the time popping up on ETH?
Let's build the app on ETH. Sounds great. Touring complete blockchain. Looks well documented and a lot of resources for getting started. Promising so far.
I take a look around to see what other people has built so far. Tokens, tokens, tokens, obscure hedging contract, digital asset management, token for paying content publishers. Most seem to revolve around money in some way or another and can't seem to find many that are actually built and running yet. It's still fresh I guess so people had not had a chance to get there yet. That's ok. I don't mind it, but I'm not in it for the ICO and creating a token for the sake of it. I need to see if it WORKS.
I dig deeper architecting my future app. I want my users to be able to use it for free. But the network wants to charge them for everything they do. Well that's not ok. Would my users want to pay for so much, even if I tell them it's not me who charges them? I don't think so, they expect this to be "free".
So let's see what I can do.
Ok so I can seed them a little money for gas when I sign them up. That seems to be fairly straight. But they will use it up. So I need my contract to keep replenishing them after every transaction they make with me. Wait that's not good. That will cost me a fortune in gas. So I need to keep an eye on each of my users and replenish them from time to time to be more efficient. But I only want to give them what they use for transactions with me. I can do that. I also need to make sure I'm not getting flooded by bots signing up and scamming me out of ETH. At this point this is starting to be tedious. But I have my developer hat on I'm spitting solutions left and right. Nothing that can't be overcome. I'll do it! [ oh, the enthusiasm of beginnings :D ]
Next problem was login details. I really don't want my users to have to think about public and private keys. Random character strings and all that. I could get them in via secret passphrase only although it will be hard for my users to remember this and not be able to change it! And I do want them to have a human friendly name. I really don't know if that is possible on ETH (I might be wrong). Also if they forget their password that's it (unless they've saved the private key somewhere, again with the PKs!).
Next I'm looking at performance. Three transactions per second, that I need to share with all the ICOs. By this point I kind of understand why I can't find any actual apps built on ETH. But I guess there are works in progress to speed things up so there is hope for this to get better by the time I have my app live.
The drop that really filled my developer bucket was the immutable code. After I implement all the hacks to get my user to kinda be able to use my app for free and in a kinda crypto transparent manner but God help me if I make a mistake in all that code. I would need to pray for a hardfork to get me out of the jam ( heh ), but lets face it, I'm not going to be any DAO so that's not happening. Actually that's good, if every dapp out there would be a DAO there wouldn't be much to ETH.
But anyway, I'll need to build MORE code to somehow be able to migrate from one contract to a newer one. Does that mean I need to transfer the my whole database over to a new contract? Probably... How long is that going to take?
OMG how much gas will I need to pay?!
Vitalik, you a genius but come on, bro. The gas price is too damn high!!
By this point in the story I am DONE with considering ETH as my platform. And after a look at other general purpose blockchains out there I'm back to my friends suggestion of building it on Graphene. Daunting task ahead of me. Am I really good enough to build my own blockchain? Probably not:(
I am disheartened and considering that maybe, this won't happen as I thought but then...
...a ray of hope! Rumors start to spread out. Dan, yes out very own @dantheman, is working on something big. Then the announcements go out, and the conferences, and the interviews. And now I have hope that my app will actually see daylight. All the things I need to actually build a functional app, EOS has thought of already.
I get the named accounts.
I get the free transactions.
I get the account recovery and security.
I get the speed I need.
I can now upgrade my code if I make a mistake (AND I WILL!!).
And I even get a relational database with indexes for my data store!
Vitalik, step out, there's a new genius in town!
I get a complete platform to build and run an app that a HUMAN can use. A human who thinks like a human and not like code. And on top of all that I get all the extra benefit of running on the blockchain!
That's when I have my EUREKA moment: this is the way more people should start looking at EOS: app development platform first! With the added benefits of running on the blockchain. Good luck to all who want to build apps not tokens!
[ I sound smart here? It's mostly because I say a lot of what Dan already said. Oh well...]
So here I am. An EOS Maximalist even though eos is not yet out. But I have great faith..and realistically speaking, this is the only way to build my app on blockchain right now, so if I sound irational is because I'm forced to be. ( but i'm not :D )
I plan to continue to post on developing for EOS. Next up I will write about my experience in building the EOS code, running a node etc. I will also be playing with with the test ICO and writing about my experience with that on the test net. If you are a developer and plan to get into EOS hit me up to exchange ideas and opinions. I am Andrei Nadejde (@93773717 (Andrei)) on Telegram and @nadejde on slack.
See you on the flip side!