DApps are often held up as the future but full decentralization is far more extreme than most real-world apps actually need and it's not likely to be the bridge to mainstream usage anyway. How can app creators use blockchain for what it's best at while taking everything else off chain? How can -- and when should -- you integrate blockchain with an existing application?
More broadly, what does blockchain actually give you and what use cases fit it best?
In this meetup, we'll walk through the high level use cases for blockchains in the context of apps that aren't fully decentralized. It's intended for an audience of mixed backgrounds, meaning that anyone from designers to entrepreneurs to product people to developers will get value from it. We'll use plain English to provide the conceptual models and then dig a bit deeper into the technical side.
We assume you know what a blockchain is and have a high-level overview of what a decentralized application looks like (the subject of the previous meetup).
**About the Blockchain Onramp Series**
Blockchain Onramp is a series of events covering the full spectrum of knowledge necessary to operate effectively within the blockchain ecosystem as a designer, developer or product person. After participating in these events, you should be able to take your functional expertise in any of these areas and apply them to blockchain projects.
We are doing this to provide a key -- and currently missing -- plain-English onramp for people of all functional experience who are interested in building real businesses on this new technology.
The format of each event may differ slightly but they will be a combination of expert talks and discussions with industry practitioners.
The rough Blockchain Onramp Series roadmap is:
+ Product Series: Ecosystem, DApps and Strategy
+ Design Series: Onboarding UX, Best Practices
+ Development Series: Developer stack, Building on TestNets, Security, Best Practices
+ Startup Series: Marketing, Business Models, and Fundraising
3. Blockchain Product Design and Development
About Me
I’m Erik Trautman and I run operations at NEAR Protocol, a
scalable, developer-friendly blockchain on a mission to bring the
technology to a billion devices around the world.
I also care deeply about creating great products, educating people
and building rich ecosystems.
My background is in markets, open-source software development,
startup leadership and education. And general nerdery.
Learn more about NEAR at http://www.nearprotocol.com
3
4. Blockchain Product Design and Development
Roadmap
4
1. The Decentralization Spectrum
2. Primitive Use Cases
3. Wallet Use Cases
4. Tying it All Together
5. Blockchain Product Design and Development
Roadmap
5
1. The Decentralization Spectrum
2. Primitive Use Cases
3. Wallet Use Cases
4. Tying it All Together
6. Blockchain Product Design and Development
What is a “regular” app?
6
Today’s web and mobile apps are generally controlled
by single companies and accessed via a web browser
or mobile app.
The developers of these apps can continuously change
them and you never really know what’s going on behind
the scenes.
Browser
Server
Database
7. Blockchain Product Design and Development
How a “regular” app works
7
1. The front end (what you see) of the app is served
from a server controlled by a particular developer or
company. It’s probably cloud-hosted today.
2. Requests from front end are run on ONE server.
3. The data from that server and all your interactions
with it flow to the company’s ONE database.
The server and/or database might be distributed across
multiple data centers or the cloud but it’s still run once
and controlled by one individual or company.
Browser
Server
Database
8. Blockchain Product Design and Development
What is a “decentralized” app?
8
1. The application still needs the same
front-end stuff (HTML/CSS/JS) served
from somewhere, eg. a cloud or a
static hosting site or P2P network.
2. The front end talks to the Smart
Contract using its API (via wallet).
3. The Smart Contract runs code and
stores data on the blockchain network.
This data is generally stored on behalf of
the user.
Browser
Hosting
Blockchain
Network
Smart
Contract
9. Blockchain Product Design and Development
What is a “decentralized” app?
9
A decentralized app runs almost
completely independently on the
blockchain. It is (generally) accessed via a
blockchain-based browser or by using an
extension for your browser.
Developers deploy the app and then
generally give up control of it forever (they
cannot change its back end).
Browser
Hosting
Blockchain
Network
Smart
Contract
10. Blockchain Product Design and Development
(...yes)
Can you use blockchain in a “regular” app???
10
+
11. Blockchain Product Design and Development
Centralized
+ Facebook
+ Google
+ Uber
+ Amazon
+ Etc...
Decentralization is a spectrum
...and most “decentralized” apps aren’t fully decentralized anyway [Infura!]
11
Decentralized
+ Augur
+ CryptoKitties
+ FOMO
+ Dexes
+ Etc...
12. Blockchain Product Design and Development
Centralized
+ Facebook
+ Google
+ Uber
+ Amazon
+ Etc...
The middle ground is massive
12
Decentralized
+ Augur
+ CryptoKitties
+ FOMO
+ Dexes
+ Etc...
13. Blockchain Product Design and Development
A rough scale of decentralization and blockchain usage
13
1. Fully Centralized (no blockchain)
2. ...also uses blockchain as a database or log
3. ...also uses a few blockchain features (eg cryptographic primitives)
4. ...also interfaces with wallets (to store tokens or items or data)
5. ...also uses some smart contracts and token economies in main app flows
6. Fully Decentralized (all logic is in smart contracts)
Note that we’ve assumed blockchain is analogous to decentralization which isn’t
true but is a useful simplification for now.
14. Blockchain Product Design and Development
Let’s see what’s actually possible with these blockchains
14
15. Blockchain Product Design and Development
Roadmap
15
1. The Decentralization Spectrum
2. Primitive Use Cases
3. Wallet Use Cases
4. Tying it All Together
16. Blockchain Product Design and Development
1. Identity: Everyone gets an account which gives
them a bucket of stuff to hold onto, sort of like a
safety deposit box that lives on the chain.
2. Transactions: The idea of transferring tangible
and intangible goods is fundamental to
blockchains.
3. Cryptography: Chains only exist because of
cryptography and they expose it to anyone’s use.
Blockchain primitives (aka “what it gives you for free”)
16
17. Blockchain Product Design and Development
Everything on the chain gets assigned to an account.
1. Accounts: Accounts can represent a person,
company, app or even a thing (eg refrigerator).
2. Ownership: That account has total control of its
money, its digital goods and its data (which can
represent real-world things like identification)
3. Login/Reputation: Every account’s transaction
history gives it reputation which you can tap into.
In today’s web, developers have to custom code these.
Blockchain IDENTITY primitives
17
18. Blockchain Product Design and Development
Everything on the chain gets assigned to an account.
1. Direct: Anything can transfer directly between
accounts without a central authority (allowing
peer-to-peer marketplaces or transfers)
2. Instant: Financial and digital-good transactions
have near-instant finality.
3. Micro: Negligible fees make high frequency
and/or small amounts okay.
4. Conditional: It’s easy to add logic like escrow.
Blockchain TRANSACTION primitives
18
19. Blockchain Product Design and Development
Cryptographic primitives give anyone easy ability to:
1. Verify Activity: Did you do a specific thing or
have specific data on a specific date? Eg supply
chains, ad activity, transfers.
2. Verify Process Integrity: Is this “random”
algorithm actually fair?
3. Privacy: All of this can be done privately.
This is because it’s easy for anyone to use their
account’s private key to “sign” transactions or data.
Blockchain CRYPTOGRAPHY primitives
19
20. Blockchain Product Design and Development
Let’s start with the simplest cases
The most basic cases just use blockchain’s primitives for a single specific task
1. Blockchain as an immutable ledger
2. Verification of activity
3. Verification of process integrity
4. Instant transactions
End users don’t actually have to know there is a blockchain back there at all.
20
21. Blockchain Product Design and Development
Example: Blockchain as an immutable ledger
21
Primitive Shipping Group gets audited by the US Customs office so, to lower their
accounting and insurance costs, they decide to save the logs of their cross-border
activity to the blockchain (but otherwise change nothing). They submit the logs to
an API which writes to the chain on their behalf.
This allows their auditor to guarantee that one fraud vector -- changing records --
is addressed.
Primitive(s) used: Blockchain as an immutable ledger.
22. Blockchain Product Design and Development
Example: Verify activity
22
Primitive Ad Network is part of a consortium of networks who are trying to
coordinate who shows which ads to which users to avoid bidding wars. It’s a
game theory problem that only works if they’re *all* being honest.
They take a snapshot of their logs every minute and save a hash of this to the
blockchain (which is timestamped) so later random audits can prove the logs
weren’t modified in the time between. This is called checkpointing.
Primitive(s) used: Cryptographic verification of activity
23. Blockchain Product Design and Development
Example: Verify process integrity
23
Primitive Lotteries runs a state-level lottery where people choose their numbers
and buy tickets at local stores. They want to prove that their lottery is actually fair
by running it using the blockchain.
The winning numbers are chosen after all numbers have been added to an
independent smart contract, which randomly chooses among them. Each ticket
holder can verify that their ticket serial number matches their numbers and the
algorithm can be independently certified true.
Primitive(s) used: Cryptographic verification of process integrity
24. Blockchain Product Design and Development
Example: Instant transactions
24
Bestern Union suddenly slashes their costs for cross-border remittances from the
US to Colombia from 5% to 0.1% and allow for instant pickup by the recipient
because they integrate a simple stable coin as an intermediary behind the scenes.
Primitive(s) used: Instant transactions
25. Blockchain Product Design and Development
Roadmap
25
1. The Decentralization Spectrum
2. Primitive Use Cases
3. Wallet Use Cases
4. Tying it All Together
26. Blockchain Product Design and Development
Adding wallets
Everything more involved requires an account with a “wallet” (public/private
keypair) for the user to handle their own tokens, items or data.
1. Universal login
2. Item ownership
3. Peer-to-peer transactions
4. Micro transactions
This is definitely a bigger hurdle for adoption since it requires users to think/learn.
26
27. Blockchain Product Design and Development
Example: Universal login
27
You land on the website for a new social network for people with beards and
decide to sign up. They provide you with 3 options: “Sign up using Facebook”,
“Sign up using Google”, or “Sign up using NEARwallet”.
All of these function using the same principle -- you login using your existing
account on that service. But only the last one gives you full control of what
information is read and modified and the ability to own future items.
Primitive(s) used: Universal login
28. Blockchain Product Design and Development
Example: Item ownership
The mobile game Kandy Krush decides they want to do a promotion where
everyone receives a unique prize after completing the last level. A notification
informs one user they have been given a Special Kandy called the Butter Block.
They can click the button to “cash out” their Special Kandy, which asks them
which wallet they want to link to their account.
Primitive(s) used: Accounts, Item ownership
28
29. Blockchain Product Design and Development
Example: Peer-to-peer transactions
29
You just finished a great book on your Kindle e-reader. You’re talking about it with
your friend and she says she wants to read it too. You pull up the book on your
phone’s wallet app, tap it to their phone, and it’s transferred fully over so they can
read it on their Nook e-reader.
Primitive(s) used: Accounts, item ownership, peer-to-peer transactions
30. Blockchain Product Design and Development
Example: Micro transactions
30
You load up your cell phone with a pay-as-you-go plan which works across
carriers. As you drive to work and pass multiple towers, your phone pays fractions
of a cent per minute to each of the tower owners and network providers.
Primitive(s) used: Accounts, wealth ownership, peer-to-peer transactions, micro
transactions
31. Blockchain Product Design and Development
Roadmap
31
1. The Decentralization Spectrum
2. Primitive Use Cases
3. Wallet Use Cases
4. Tying it All Together
32. Blockchain Product Design and Development
Example: Tying many together
32
You go to the NEARkat Madness website and use your wallet to log in. You play
the game for awhile and unlock the Kung Fu NEARkat, congratulations! You
‘bump’ it over to your friend by touching phones. The friend gets tired of looking at
Kung Fu NEARkat and sells it in an auction on the NEARkat markeplace to the
winning user directly.
Primitive(s) used: Accounts, Item ownership, peer-to-peer transactions,
conditional transactions, instant transactions
33. Blockchain Product Design and Development
The wallet is usually the dividing line
33
The simplest use cases either use the most basic pieces of blockchain (eg its
ledger or cryptography) or use it as a medium of exchange behind the scenes to
avoid interfacing with cumbersome financial infrastructure.
The more complex use cases generally require the user to actually interface with
the blockchain by setting up an account themselves (using a wallet).
34. Blockchain Product Design and Development
More about the wallet
34
A user’s “Wallet” contains the cryptographic key
which allows them to sign (verify permission for)
transactions for a particular account (or accounts).
The wallet typically then propagates that
transaction to the blockchain network (usually by
either running its own node or using a trusted node.
...So every time we have a transaction that needs
permission, it must go through a wallet.
Wallet
Smart
Contract
35. Blockchain Product Design and Development
Wallets unlock accounts not just money
35
Remember -- accounts contain ANYTHING.
The wallet could contain token balances but
also crypto collectibles, identity data or
anything else that’s linked to your account ID.
Any time we want to get something unique
from the user, we need their permission to
access that data from the blockchain on their
behalf.
36. Blockchain Product Design and Development
The rub
36
None of the use cases above were decentralized.
They added blockchain to regular businesses and
apps. Some more than others.
This is what we’ll most likely see to drive actual
adoption on blockchain.
Users probably aren’t ready for a fully
decentralized system but can benefit from
blockchain *today*. Be ready for this path!
38. Blockchain Product Design and Development
A vision of blockchain-based services
38
Browser
Server
Database
Smart Contract
Services
Accessed via API calls
like any other service
but are verifiably better
(uncensorable, use
blockchain primitives)