Arcjet - A Decentralized Application Server Platform

in apps •  7 years ago  (edited)

arcjet-header.jpg

I'd like to announce to the community an idea I've been developing for a while, and my intention to develop it as an open source project and as a community.

I haven't begun development yet because I wanted to flesh out the idea more and I wanted to bring the idea to the community for public comment and participation.

I've got a proposal live here: https://github.com/arcjet/proposal, but I'll summarize here.

As an application developer that's learned to value decentralization, I've identified an opportunity for disrupting the current ecosystem of cloud providers. I think it could lead to a scalable system for deploying web applications in a way that allows application developers to pay their users for serving their own content, as well as the content of others, instead of paying top-tier cloud providers such as Amazon or Google.

For application development, the blockchain is insufficient. It would cost millions to store gigabytes of information on most major blockchains. Further, it's expensive to develop on and deploy DApps. It is very useful for maintaining ledgers and cryptocurrency, but not for running applications of any sufficient degree of complexity. The largest issue I have with this idea is that there's no way to "pay your bill"-- it's paid in advance, and subsidized by subsequent owners of the cryptocurrency. You cannot remove data from major blockchains, it's stored there forever in an immutable data-structure that has a replication factor of n, the number of users of the network. This is entirely unsustainable and unscalable for application development.

In designing the Arcjet Network, I wanted to solve these problems for the future, to provide for decentralization mechanisms, and even allow people to run local copies of the web apps they use. One reason I called it "Arcjet" have a space theme is that I want to make it feasible to run local copies of entire applications even in remote locations, such as Deep Space, the Moon, or Mars. I also want to allow people to take back their data, track it and manage it.

As an experienced application developer, I come at the "Decentralized App" question from a more practical UX angle. One aspect of Blockstack I dislike is their approach to solving the identity issue. They ask for money (in BTC) to establish an identity on their network. Sure, it's a solution for Zooko's triangle and increases the difficulty / expense of Sybil attacks, but it's also a substantial roadblock to put in front of users.

That said, implementing a Blockstack-like solution to identity might be more feasible on a network that pays its users to serve data. It could use a more traditional OAuth approach. However, there should be many identity providers on such a decentralized network, otherwise you're centralizing around one particular organization. In a truly decentralized system, everything must be open and forkable. It's the most responsible way.

I'd eventually like to provide for decentralized alternatives to services, such as databases, bulk object storage, geographic maps, advertising, analytics, video streaming, image processing, logging, messaging, certificate and secrets management, and even inbound and outbound email for decentralize applications. DApps don't have solutions for most of these things, and must rely on centralized networks of some variety, which can incur additional expense and complexity and can increase the barrier to entry to developers trying to make apps. Ideally our services would be so useful, reliable, and inexpensive, even users with apps running outside the network would want to use Arcjet Network services.

The economics of such a network would be very complex. Users might run the desktop application, but they don't have to. Application developers pay network fees. Applications can charge for their services and deny users service if they don't pay. Payments would be transacted in AJC, or Arcjet Coins, which will be traded on a decentralized exchange. Users get priority serving their own content, so they can earn more by participating in apps. Further, there would need to be a cap to prices so people don't just run servers on AWS. It must be dramatically competitive with top-tier cloud providers and not "feed the beast". That said, participants should be able to earn a lot of money collectively as the network grows. They won't get much from a single application developer, but if they have a lot of apps installed and they have much of their resources allocated to servers, they should be able to make enough money to make it worthwhile for paying their bandwidth bills and to grow their hardware collection. Users might start investing in NASes, SANs, and server racks, etc.

To protect the network, application developers could also pay for rotating offline backups. Their backups would be held for many days, and brought online and offline at certain times in order to save power and to prevent overwriting backups during an attack.

Further, users can protect the network from abuse by opting into independently-maintained blacklists, and by only installing apps they trust and use and support. Further, they can opt out of serving certain types of content, such as controversial content or pornographic content, but they will lose money by doing so. One major point of decentralization is to prevent censorship, but users should also be able to have a choice of what sort of data is stored on their systems.

There's still a lot of unanswered questions, and I could definitely write a lot more. This will be a long journey, but I think it could be very rewarding and could make the internet better for everyone.

If any of this interests you, please get involved:

Join me on Slack here: Arcjet Community Slack
Also, see our live proposal, and create issues here: https://github.com/arcjet/proposal

Remember, development hasn't yet started, but will very soon! I'm currently working on an social network called Props4Crops, the development of which led to a lot of these ideas. Props to Will Bowditch for coming up with that world-changing idea. I want more ideas like it to flourish and thrive on decentralized networks, which is why I'm so passionate about working on this. Development on an idea like these are bigger than any one person, it should be able to be continued and vetted by an involved community, which is one reason why decentralization is so important.

Suggestions, Steem, and comments also welcomed!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

"I will give you my prediction. Within 5 years, a distributed blockchain world brain will arise that will bury Amazon, Google, Facebook, Twitter, and YouTube." - Robert David Steele, Sep 2 2017

Where Steele is wrong is that the distributed world brain won't be built on blockchain. I'm sure it will include blockchain as a technology. But, as @cryptoquick correctly points out, you can't use blockchain as the basis for an application deployment platform, because storing data on blockchain is too expensive.

Arcjet is a proposal for a central and fundamental component of a decentralized world brain. It's an application deployment platform. I think it's a brilliant idea. Good thinking @crytoquick!

Of course! And don't misunderstand, this is still using a blockchain, just to manage payments and record proof that transactions have taken place. That's using a tool for what it's made for. The major reason storing bulk application data on the blockchain is too expensive is because the blockchain is immutable. If someone doesn't pay their bill, there's no way to prune their data from the network. It will always be there. I intend to implement a rolling backup strategy to help prevent and inspect tampering, but I don't intend there to be a "forever-store". Thats simply data storage that's subsidized by new users.

The highly centralized way we run our economy today means the world is controlled by evil puppet masters. Some of the worst people in society have the most influence. I think to get out of this primarily we need to change our thinking. But we also need to change our engineering. This kind of technology can accelerate the move away from economic centralization.

I conjecture that with modern hardware, there is no way to prevent the owner of a computer from inspecting any data that resides in the computer's RAM.

This means in essence that in Arcjet, on modern hardware, you can't hide anything from the owners of the servers.

It's one thing to trust a large corporation with your data. It's another thing to trust a massive decentralized network of people with your data. If an application requires confidential data to be stored and processed in cleartext on the server, then people might not trust this system to host it.

There are some important applications that don't process confidential data. Example: 4chan. Most applications process at least a bit of confidential data, such as passwords.

You can use Arcjet to host apps with confidential data if you can keep the confidential data from being processed in cleartext on the server side. That means you process all confidential data on the client side. It also means if you store confidential data on the server side, then you store it encrypted.

I conjecture that with new hardware, you could make it possible for data on the servers to be hidden from the owner, even when in cleartext in RAM. You'd need some kind of compartmentalization mechanisms built into the hardware, in such a way that the owners of the hardware couldn't crack the compartmentalization (at least not without advanced, specialized, expensive hardware that wouldn't exist at first).

I've been thinking of this too. I've got another post coming up that will detail how I'm going to deal with this very issue. Also, feel free to call me if you ever want to chat. And thanks for being so involved! :D