Examining TandaPay’s architecture to see a specific example where stablecoins change the user experience.
Understanding the specific case to gain insights into the general case
In my previous blog post I stated the following:
Once I’ve (demonstrated the value of building on Ethereum) then we can imagine two versions of the same decentralized application. One version uses a stablecoin and the other uses ETH. By considering the outcomes for users based upon these options, a stablecoin’s value proposition should become obvious.
In this post I use TandaPay as a specific example of how stablecoins change the user experience. You may have felt comfortable reading installment one and two of this series because I was not referencing TandaPay as I provided valuable information about why stablecoins are important. I was not able to address specific user experience details in those posts because I was talking about the need for stablecoins built upon cryptocurrency networks generally.
The point of this post is not to promote TandaPay. The point is to speak about my experience designing decentralized app architecture that needs to use stablecoins to provide the best possible user experience. I want to explain why I feel the average consumer is negatively impacted when forced to pay premiums and receive claim awards in a currency that is foreign to them, namely ETH. This requires me to speak specifically about how to design app architecture and to provide concrete examples by referencing what I’m currently building.
By the end of this post you will know how stablecoins can positively change the TandaPay user experience. You will then be able to apply this knowledge to understand how stablecoins can impact the user experience across other types of decentralized apps generally. If you are ok with me diving into this specific case to get a feel for the general case then this post is for you (if not then not).
WARNING — this post is very long and very technical. If you don’t really care to learn about decentralized architecture you might want to sit this one out. Even if you do care about decentralized architecture I wouldn’t read this entire post in one go as it is very long (4,800 words). Because the argument I’m making is not obvious to many people, reading this post requires careful consideration to understand these concepts.
TandaPay quick review
The TL;DR of TandaPay is below. This is helpful to follow the concepts in this post.
- Friends and mutual acquaintances can form into a group of 50 people
- Everyone pays $20 a month to a smart contract using cryptocurrency
- Now the group has $1000 to pay two $500 deductibles
- The secretary can whitelist a valid claim but is not a custodian of funds
- If any fraud occurs a policyholder can leave with their premium
- Premiums are finalized at the end of the month, after which the smart contract pays the claimant(s) directly.
- After all claims are paid if there are any remaining funds in the smart contract they are returned to policyholders as rebates.
People think in terms of their local currency
Currency exchange isn’t very fun
Consider the last time you were in a foreign place and you needed to convert currency at the airport, withdraw local currency from an ATM, or exchange currency at a hotel. How did you feel about the experience? Did any of the following thoughts cross your mind?
- What is the exchange rate?
- Is this rate better or worse than it was yesterday, last week, last month?
- What fees am I paying for this conversion?
- Could I get a better rate or lower fees if I went somewhere else?
- Is my bank going to charge me excessive fees if I withdraw from this ATM?
- Have any of my friends found a better place to exchange their currency?
- Did I get the right amount paid to me?
If I go on vacation, I want to enjoy it. I try not to let stress about little things ruin it for me, but the stress of knowing that I was taken advantage of is worse than the stress of having to be careful about whom I trust. So unless someone I trust can provide me with a guarantee that I’m being treated fairly when I convert currency, I have to crunch the numbers every time I do a conversion. This may last for the first few days when I’m on a trip. After a few times of trying to convert to local currency I have a sense as to what rate I should expect to receive. This allows me to relax a lot more, stop worrying and start enjoying my vacation.
But, that’s because the exchange rate between the local currency and USD doesn’t fluctuate much (if at all) during my trips. Imagine if halfway through my trip the value of USD relative to the local currency drops by 10%. Now I’m back to crunching the numbers before I complete a transaction. I also feel frustrated that I didn’t budget a 10% swing in conversion rates in advance. Now everything is 10% more expensive for me than I thought it would be. Can I afford every outing I had planned to take now? I’m stressed and I start complaining that I need a vacation from my vacation.
What’s so challenging about using ETH?
Unless you want the users of your decentralized app to have a similar user experience, you should probably find a means to abstract away the negative aspects of currency exchange. Yet, if you do not want to use a stablecoin such as DAI, you have no choice but to train people that they are holding ETH. We don’t want to limit ourselves to a user base composed only of the crypto-community, we want to go mainstream. Yet, our users are savvy enough to learn about new technology at a basic level. Let’s start from the assumption that our user base is flexible enough to learn about ETH and to transact using ETH.
Given that we can bridge people into the world of ETH, how bad could forcing policyholders to transact in ETH be? Until we look at specific instances we might be over exaggerating the negative effect associated with users paying premiums and receiving claims in ETH. When designing our app, some of our major goals should be to:
- Design the user interface to be as intuitive as possible
- Create user stories for each user experience event
- Build support processes that strengthen the group’s ability to function
- Plan an onboarding strategy to acclimate new users within 1 to 3 hours.
Step 1: Interface design — How to denominate funds
When designing the app interface how will you denominate funds? Its important to assume that the majority of TandaPay users will not have used cryptocurrency prior to downloading the TandaPay app. A user always pays the same monthly premium denominated in USD. If we do not use DAI, after paying in USD they then receive ETH to their wallet for the purpose of paying their premium. This gives rise to the following question, how will you display these funds as USD or as ETH?
- If a user expects to see a price in USD and the developers feel that this expectation is reasonable, how can you do this without showing them that the value of their premium fluctuates as it sits in their wallet?
- If a user expects to see a price in USD and the developers feel that this expectation creates issues, how can you force the users to think in a currency (ETH) that is foreign to them?
Remember that for TandaPay the end goal is to cover the cost of a $500 auto insurance deductible. The deductible is priced in dollars not in ETH. The premiums are also priced and initially paid for in dollars not in ETH. Displaying a price in ETH simply forces them to do conversions in their head since all they care about is dollars. That’s cause for a frustrating user experience. Displaying a price in dollars will show that the dollar value of the premium is fluctuating. In times of downward volatility this will have a similar effect to the vacation scenario I described earlier, resulting in a stressful situation. Either choice is cause for a frustrating user experience. So with regard to interface design we are in a lose, lose scenario if we transact in ETH rather than DAI.
Step 2: User stories — Receiving a claim payment
There are many examples I could give of user stories but the most important is paying a claimant for a qualifying claim. TandaPay is covering the cost of a $500 deductible so a users claim is always denominated in dollars. The problem is that without DAI a smart contract always pays the users claim award in ETH, then this award requires conversion from ETH to a payment in USD. When using ETH as a method of awarding a claim two scenarios could potentially play out:
- There isn’t enough ETH in the contract to pay a $500 deductible
- There is more than enough ETH to pay a $500 deductible
Step 2: User stories — Not enough ETH
TandaPay allows for risk sharing pools but it doesn’t guarantee claim payments. Imagine TandaPay as a type of GoFundMe campaign where people pay first and the money is awarded later. The amount people pay is determined up front at the beginning of the month. The exchange rate and the number of valid claims is determined later at the end of the month. This means that the premiums may not be sufficient to pay all the claims. TandaPay using ETH to pay premiums and claims is vulnerable to the downward volatility of ETH in a given month being greater than expected.
Rather than boring you with with an explanation describing how claimants might react to downward volatility, let’s laugh together at the misery of some NPR reporters (Cardiff and Stacy). This is their reaction as they experience the joys of buying a cryptokitty:
THE INDICATOR @ planet money We Buy A Cryptokitty! (start at 3:10 — click play button)
Cardiff: Well we procrastinated a little longer than expected and actually like a week went by and we finally sat down to buy our cryptokitties.
Stacy: This is exciting.
Cardiff: Oh my God. The value of our Ethereum has plummeted.
Stacy: Wait what (gasp)
Cardiff: Oh my God. Our hundred dollars is down to seventy one dollars and twenty three cents.
Stacy: Oh my God.
Cardiff: What fresh hell is this.
Cardiff: Our money’s gone (laughs), it’s gone.
Stacy: it’s not gone, it’s holy… Well maybe the, wow.
Cardiff: Wow that’s astonishing.
Stacy: It’s brutal in the blockchain.
If normal people (not Ethereum maximalists) describe their experience of volatility as, “fresh hell” and “brutal” how long can we expect our app users to stick around if this is their experience?
Step 2: User stories — More than enough ETH
This is the easier of the two stories to deal with but it still can breed resentment among policyholders. This resentment results from the uncertainty tied to the different outcomes of claimants which change from month to month. Because this uncertainty is outside of the policyholder’s control, this makes people feel as if purchasing a policy doesn’t provide them with sufficient coverage. If you are the one who gets a partial claim payment you feel gypped because TandaPay failed to meet your expectations.
But the policyholders who opened claims at other times could have received a full claim payment. Imagine how you would feel if the month you decide to open up a claim you are awarded $400, yet others opening claims in the previous months received $500.Unequal outcomes makes people feel as if the system is applying some standard of unequal treatment. This isn’t true but it doesn’t stop people from holding this opinion even if they can understand that the price of ETH is volatile.
In the end they may feel that having their claim paid in full is simply a matter of luck. This isn’t how purchasing insurance should feel like. Purchasing insurance should feel like you are making a prudent choice to manage your risk. Taking such a responsible action should result in feeling like there is fewer negative consequences resulting from bad luck not more.
Step 2: User stories — Timing the market
A volatile price tends to turn mild mannered policyholders into crazed speculators. Claimants who receive a claim award are not merely trying to mitigate risk but they may also be trying to time the market when they exit. If Ethereum is down maybe if they wait the price will go back up. Is Ethereum on a bull run? if so then don’t convert your ETH now or you’ll loose out on the opportunity to make money.
Their claim award was initially meant to assist in the payment of a deductible but now when claimants receive this money they are trying to decide if they should “let it ride” or “cash out their chips.” As I explained in the first blog in this series:
Volatility makes cryptocurrency networks the Las Vegas of payment systems. Its exciting to go to Vegas, but its not always fun.
What’s worse is that they are not relying on a typical cryptocurrency exchange to convert from ETH to dollars but instead they are relying on the leader of their group to perform this conversion. This creates cash flow issues by placing an undue burden that such a facilitator would always have cash on hand to convert ETH to dollars. With stablecoins the facilitator is performing conversions at a set time but with ETH these conversions are subject to the whims of the claimant and may be unpredictable. This could result in both parties feeling that the other party is not serving their own best interests.
As we will see in step 3: support processes it is critical that claimants convert to cash immediately once they receive their award. If claimants want to hold ETH for the purposes of speculation they would be required to purchase it themselves. It is impossible to permit claimants to hold onto the ETH awarded to them by the smart contract. This is because a secretary isn’t holding sufficient liquidity to accommodate everyone by allowing them to convert ETH whenever they want. It is unreasonable to expect that the system could operate otherwise given that the secretary is not an institutional organization. The secretary is only an individual with the capacity to serve a small group.
Step 2: User stories — Conclusion
Using ETH to pay claims leaves claimants vulnerable to uncertainty, resentment and may put undue stress on group facilitators who perform currency conversion for the members of their group. The more time is spent consumed with these types of issues around ETH price the less time is spent on things that are really important. Group members should focus on:
- Validating the details of legitimate claims
- Helping one another recover from accidents
- Building a community around P2P insurance
Step 3: Support Processes — Dollars to Crypto
WARNING — This is the most technical section and you should not read it if you don’t want to have to think carefully about TandaPay’s architecture. Thank you for getting 2,000 words deep into the article. Your effort is appreciated, you’re the real MVP. If you are up for the challenge, then I say go for it!
Step 3: Support Processes — Conversion
Lets focus on one feature that is integral to TandaPay and analyze how using a stablecoin changes things. A secretary is a leader of a TandaPay group. They function as the hub of the group and fulfill many roles, one of which being the conversion of dollars to cryptocurrency and cryptocurrency back to dollars. In this respect they are a walking ATM. In the previous section we saw how volatility could impact the value of ETH paid as premiums by policyholders. This is because the funds sit within a smart contract for the duration of one month. In this section we see how volatility impacts the value of ETH located outside of a smart contract.
Its important to remember that secretaries never hold other peoples money. They do however hold a subset of their own funds which are earmarked to help policyholders and claimants. These funds provide liquidity to the community. The community is relying on these “liquidity funds” the same way that you rely on the ATM at the airport to be stocked with cash. If there is no cash at that ATM it doesn’t mean that your money is gone, but it does mean that you can’t get cash before getting on your plane.
Similarly, if these liquidity funds are spent by the secretary on personal expenses this does not constitute misappropriation of funds, since these funds were his to begin with. This does however frustrate the community and make them unable to rely on the secretary (just like you can’t rely on an ATM that has no cash). Not maintaining a separate subset of funds for conversions results in the group being unable to function. If something isn’t done quickly to remedy the situation then the policyholders may not be able to pay their premiums, which may result in a lapse of coverage.
The below infographic illustrates what I call the “liquidity funds problem.” For a normal business (a business that does not rely on blockchain) what I describe as a problem they would simply see as a requirement of doing business. By the end of this section you will either be convinced that:
- I’m totally wrong, I’m trying to use blockchain for something unnecessary. We already have good mechanisms for creating and registering businesses. These businesses can then open up business banking accounts to hold funds. Any person who would run a TandaPay group and not want to run it as a formal business is stupid.
- Creating a business to help a group of 50 friends is an unreasonable expectation. This is incredibly onerous given the groups small size and the informal nature of the service. Creating a business entity doesn’t even provide better guarantees for policyholders, only less liability for a secretary. Why create a business just to acquire a business banking account when we can get better guarantees by tracking funds on the blockchain? The entire process of acquiring a business bank account is costly, burdensome, and unnecessary.
I will refer back to this infographic several times:
What the infographic can teach us:
- Periods have overlap, this is due to the fact that people pay premiums prior to the start of the month and claims are paid after the end of the month.
- During the pay premiums stage policyholders want to exchange their $$ for ETH so that they can pay their premiums to the smart contract.
- During the pay claims stage claimants want to exchange their ETH for $$ after the smart contract has awarded them with ETH.
- The gap of time where the secretary holds $$ from policyholders (from period 2) before he pays out $$ to claimants (in period 1) is relatively short (approximately 3 to 5 days).
- The gap of time where the secretary holds ETH from claimants (in period 1) before he sells ETH to Policyholders (in period 3) is relatively long (approximately 25 to 27 days).
- This period exposes the secretary to volatility risk. To mitigate this risk he would need to convert ETH to $$ at the start of the period and $$ to ETH at the end of the period.
- If he doesn’t open a business bank account these “liquidity funds” are sitting in his personal account.
My problem with architecture that uses ETH:
- If the secretary screws up even one time and spends the community’s liquidity funds then the community will need to be rescued.
- Using TandaPay for currency conversion requires TandaPay to perform AML / KYC on all policyholders in a group. This allows them to purchase or sell DAI through the TandaPay website and is problematic because:
* It is expensive to TandaPay
* Absorbing these costs are unreasonable
* Passing these costs on to policyholders would upset them
* TandaPay as a protocol is more centralized if secretaries are unreliable
- Anytime the secretary holds funds off of the blockchain there is no way to validate that liquidity funds are kept separate from personal funds
- If these funds were DAI they could be placed into a time lock contract and all these problems would go away.
Why TandaPay must use DAI:
- Volatility of policyholder premiums (ETH) sitting inside of the smart contract creates risk and uncertainly for claimants.
- Volatility of liquidity funds (ETH) which need to be held by the secretary for the majority of a month force the secretary to temporarily convert these funds to dollars.
- Dollars cannot be tracked easily thus the policyholders are not provided with good guarantees that liquidity funds will be kept separate from personal funds.
- This opens up the potential risk that these funds will be mismanaged and the community will need to be rescued. This makes the protocol less reliable
- If the architecture used DAI it could guarantee that a secretary’s personal funds are kept separate from a community’s liquidity funds.
Step 3: Support Processes — Conclusion
A secretary must retain a certain level of liquidity for the purpose of:
- Converting cash to cryptocurrency before the start of each month
- Converting cryptocurrency to claim payments after the end of each month
Without this service policyholders would be unable to pay their premiums and claimants would be unable to cash out their claim awards. Using stablecoins, such as DAI, allows secretaries to put liquidity funds in a time lock contract for the majority of the month. This creates a greater level of transparency and offers better guarantees that the secretary has the funds to keep the system operating. Most importantly it keeps liquidity funds separate from the secretary’s personal finances. The blockchain provides this service at a much lower cost than obtaining a business bank account.
If you do not use a stablecoin and instead use ETH to pay premiums and claims this exposes the secretary to volatility when they hold liquidity funds as ETH. To mitigate this risk a secretary must convert ETH into $$ and later in the month $$ back to ETH. This requires that he store these $$ in a bank account for the majority of the month. This creates less transparency and offers fewer guarantees that the secretary has the funds to keep the system operating. Most importantly it doesn’t ensure that liquidity funds are kept separate from the secretary’s personal finances. In addition banks provide business banking accounts at a much higher costs than using a smart contract to hold DAI on the blockchain.
Using DAI in the architecture makes the system simpler and more reliable, it provides better guarantees for policyholders and exposes everyone to less risk.
Step 4: onboarding strategy
Explaining ETH volatility is technical, and that’s bad
The secretary is not a portfolio manager or an investment adviser. They are not telling people to buy ETH as an investment strategy. Secretaries need policyholders to purchase ETH because peer-to-peer insurance requires censorship resistant payments and escrows free from custodial liability. If we are forced to teach people about Ethereum’s volatility as an asset then this will distract people.
Its very difficult for people to understand that Ethereum has unique features that other payment networks do not have. Our policyholders have only known one payment network their entire life, the banking system. Trying to tell them that there are other types of payment networks is likely to generate the following response, “OK so what, why should I care, why are you telling me this?” You can continue to explain that, “to gain greater fraud protections and to lower the cost of overhead imposed by government regulations, a new payment system is needed. This new payment system has more features but the trade-off is accepting that ETH is a volatile asset. TandaPay requires policyholders to transact using ETH and this exposes policyholders to volatility risk.” The expected response is still, “OK so what does this have to do with me?”
Put yourself in their shoes, most of what you are being told is technical. Policyholders are being told that the below three things, which seem totally unrelated, are somehow connected:
- TandaPay provides greater protections from fraud and misappropriation of funds
- TandaPay allows users to avoid costly government regulations. This lowers operating costs and passes savings on to policyholders.
- TandaPay requires users to accept the price volatility of Ether
Try as much as you like, but getting people to understand that using TandaPay must expose them to volatility risk doesn’t make that much sense. If I was a potential policyholder, I would respond with, “I don’t really understand but if you think I should invest in ETH then I’ll invest in ETH. Otherwise if you can just give me coverage without price volatility then I’ll take that option.”
Trying to teach facebook users about how packet routing and IP addresses work is a bad idea. Trying to teach Windows users how to fix BSOD problems on their own is definitely a bad idea. Trying to teach TandaPay users about cryptocurrency payment features and price volatility is also an equally bad idea. We shouldn’t expect users to understand the technical workings of a technology to benefit from its use.
Innovative technologies mature over time. As a technology matures, less technical skill is required to benefit from the use of a technology. Cryptocurrency networks without stablecoins are at the same level of maturity that the internet was in 1994 because they force people to understand how the technology works to benefit from its use. Cryptocurrency networks with stablecoins can abstract away the technical details of how Ethereum, as a payment network, functions. This is similar to how DNS can abstract away the need for users to remember IP addresses on the internet.
With DAI no explanation of volatility is needed, and that’s good
If TandaPay uses DAI then cryptocurrency is completely abstracted. We don’t need to teach policyholders about cryptocurrency or its volatility. As far as they know the app allows them to hold dollars. This makes perfect sense because:
- They pay premiums in dollars
- Funds in the app are denominated in dollars
- Claims are paid out in dollars
Now our policyholders get the benefits of cryptocurrency as a technology without having to learn how the technology works. All mature technologies provide benefits to users without requiring them to understand how the technology functions. We drive cars but 95% of drivers have only the vaguest idea about how a car turns gasoline into forward motion. We use computers but 95% of users have no idea how they work. Cars did not always require so little technical knowledge and neither did computers, but they do now because they have become mature technologies.
Using DAI = less time spent onboarding
Using DAI means that all time spent onboarding TandaPay users is spent explaining how coverage is provided. We can focus on teaching people about the privileges TandaPay groups provide and their associated responsibilities. DAI allows us to spend 100% our onboarding time teaching people about how coverage works. Learning about Ethereum, and its inner workings, is not required to onboard users when we use DAI. This is because DAI completely abstracts away Ethereum as a payment network with its features and its volatility.
Stablecoins convert the exciting world of cryptocurrency into a boring payment network with some fancy features. This allows less technical people to benefit from its use. Stablecoins will become a necessary facilitator allowing mainstream consumers to use apps built atop of cryptocurrency. The service stablecoins provide will be the key driver which will lead to the increased adoption of new types of financial services, hopefully P2P insurance is one of them. These new applications will use stablecoins in a way that is completely inconspicuous. Users will not realize that they are using stablecoins and by implication they will not realize that they are using cryptocurrency. In this way cryptocurrency as a technology will become mature and start offering users services where all of the technical details are abstracted away. The most important of these technical details is the price of the underlying token on which the network is built.
Conversely if your altcoin platform doesn’t have a stablecoin integrated into it then the following will also be true:
- The majority of your platform’s users will continue to care about the price of your token
- The apps on your platform will not abstract away the technical details of using cryptocurrency
- No applications running on your platform will use cryptocurrency inconspicuously
- Apps built on your platform will require users to have a technical knowledge of cryptocurrency
- No one will view your platform as a mature technology
- Your platform will not see adoption from mainstream consumers
- Usage of your platform will decline until only the most die-hard of users remain
- Your platform will, given enough time, eventually die (unless you are Bitcoin)
UNQUALIFIED PREDICTION: If your cryptocurrency platform doesn’t have a stablecoin integrated into it in less than 2 years from now the chance of it having a market-cap above 100 million dollars 4 years from now is less than 95%.
As Clint ETHwood might say
You’ve Got To Ask Yourself One Question: ‘Do I Feel Lucky?’ Well, Do Ya, Punk?