Some Challenges of Building Apps That Don’t Have Servers
There are different technical challenges when you build apps that don’t have a server.
How you can trust information?
In traditional apps we handle it by putting the company that runs the server in charge. They enter the data and handle security and as users we’re not responsible for anything. And if they say the weather data came from weather.com we trust their word and that’s the end of it.
In user run applications we have to handle our own security. We’re in charge of writing records to the database and we need to make sure nothing gets written that shouldn’t.
The first way we handle this is by cryptographically signing messages. Every user that writes record to the database has what we call a wallet. It’s just a public/private key pair that identifies a user account.
The public key gets shared with the network.
The private key stays secret.
Each message that goes into the database is signed by the user that writes it. Then when they share it with the network anyone who gets it can run it through the same math formula to verify the record was written by a wallet that they know.
Then in our own databases we only allow records from wallets that we know.
Then means that any user can rely messages for any other user. Each message is as available as it is important.