8 min read

THORExploration

THORExploration
Photo by Kristijan Arsov / Unsplash

I did some more DeFi. Not the degenerate kind with lots of zeroes. Still pretty cool, though: I provided liquidity for Bitcoin on THORChain. Really decentralized. Earning yield on BTC.

THORChain calls itself a decentralized liquidity network. Like other decentralized exchanges, it is more an ecosystem than a single component you interact with. It has its own blockchain with nodes; it has apps that let regular human people interact with the blockchain component and a community of traders, liquidity providers, and node operators. In this article, I will walk you through the steps I took as a liquidity provider. But I also swapped some bitcoin for another currency, so you could say that I played two of the three existing roles. Node operators have a more involved duty: running the THORChain blockchain and running other blockchains - like Bitcoin or Ethereum - to natively bridge between them. This is a major feature of THORChain: swaps happen between native coins.

As established, three roles:

  1. Traders are the ultimate end users of THORChain. They come to it to exchange their coin or token with another coin or token. You can swap BTC for Coinbase's stablecoin USDC. You can swap THORChain's native coin $RUNE for ETH, etc.
  2. Liquidity providers ensure that the above swapping is done at a consistent enticing rate. They do this by committing funds that are used for trades in exchange for a reward.
  3. Node operators maintain the infrastructure this all runs on. Without them, traders and liquidity providers would have no playground, no locus for their activity.

What follows is my journey in tactical details. For a more zoomed-out perspective, Erik Voorhees wrote a wonderful intro to THORChain, which goes into the fundamentals of the project, and I strongly recommend you read it.

My first step was to find a user interface, a client, if you will. A way for me to use the exchange. I found THORSwap, and it looks like this:

The THORSwap interface, one of the apps to use THORChain

THORSwap offers both a web app and a desktop app. Both seem to have the same feature set. Let's break its interface down.

Criss-crossing arrows! Such clear, so explanation...

The first thing I did was to understand how to bring my Bitcoin to THORChain. I headed over to the Wallet section.

It looks pretty barren. I clicked on Connect.

Lots of options. I like.

I didn't feel like connecting a hardware wallet, so I created a keystore. A keystore is a password-protected file that holds the information necessary to access wallets on the THORChain-supported blockchains. Quite a mouthful. It is one file that suffices to let you transact in Bitcoin, Ethereum, etc. At first, I was a little skeptical and wondered, "what if I send funds to these wallets but, for some reason, THORSwap stops functioning, and I lose money?". Worry not; once you've created a keystore, THORSwap lets you see the 12-word seed for each blockchain. Pretty neat! This mechanism allows you to restore a THORSwap wallet in the alternative wallet software/hardware/solution of your choice.

Yes, this is my 12 word seed. I use it for all my accounts.

Now that I had a destination for my funds, I sent my THORSwap wallet some bitcoin.

I then looked into providing this as liquidity and getting that sweet yield. The THORChain approach to liquidity is that liquidity providers bring forth not one cryptocurrency but a pair thereof. RUNE + ETH or RUNE + BNB. This is better explained in this video by GrassRootsCrypto. Now, you can still come to offer liquidity with a single cryptocurrency, but THORChain will turn it into half your crypto + half RUNE behind the scenes.

I am pretty bullish on the THORChain-native RUNE coin. I think this project serves a very important need: the ability to exchange one crypto for another, natively, without a single point of capture/seizure/fuckery. I am convinced it will grow. So, I swapped some bitcoin for RUNE. It wasn't instantaneous like you would expect on a non-decentralized exchange a la Coinbase. It took about 10 minutes.

RUNE plays a critical role in THORChain, and Erik explains it clearly in the intro I linked earlier in this article. It is designed to grow in value as more people come to use THORChain.

Offering liquidity was easy: Click on deposit and just indicate how much you are willing to lock. At the time of my transaction, BTC APY was 12%, but it changed to 10% over the following two days. The reward you get for providing liquidity is meant to vary over time. Liquidity rewards are balanced with node operating rewards.

Here are some other yields I saw:

  • 15% APY for ETH
  • LTC 34%
  • and BCH 18%

I saw APY up to 390%: the THORChain coin - known as RUNE - as represented on the Ethereum blockchain as an ERC20 token).

Taking part in these liquidity pools comes down to risk appetite and what cryptocurrency you want to lock. You should also know that THORChain offers some measure of protection against impermanent loss. I'm not perfectly researched on this, but I understand impermanent loss occurs when the funds you've locked are impacted by a negative change in their currency's exchange rate. I am very happy that THORChain provides this protection but:

  1. I don't know how it works.
  2. Impermanent loss protection hasn't been around for too long; it might not be as battle-tested as other primitives like liquidity pooling and staking.

One more thing: It's early days for THORChain. Risky days. On November 12th, THORChain lost consensus and halted. Activity resumed ~5 days later. THORChain suffered an $8M hack in July. On November 26th, THORChain Midgard and THORSwap Midgard went down. These services act like read-only mirrors, providing layer 2 real-time data and analytics. This meant that no data was shown in THORSwap. At the time of this writing, there is still no data in the THORSwap desktop app. The webapp app.thorwap.finance is fine.

These are growing pains.

Alright.

At this point, you know as much as I do about using THORChain via THORSwap. Good job! You can go back to your regular schedule.

...

Or you can read on and discover how I shot myself in the foot something pretty.

Yeah?

Here we go. One interesting fact about the USD stablecoins on THORChain is that there are 3 of them, for now, and they all sport a different APY.

Look at this juicy 60%

Seeing this, greedy ol' me thought, "the hell with Gemini and their measly 8%, I'm going all THOR all the time". I figured I'd just move some of my personal savings and get a better APY. I didn't own any of these stablecoins at the time, but I learned that you can trade Gemini USD for Coinbase USD 1:1 for free on BlockFi. Handy! BlockFi also allows for one free withdrawal per month. Taking advantage of this was nice, but it obfuscated a certain fact of life from me: fees. More on this later.

Once my USDC was in my THORSwap wallet, I thought I'd offer liquidity with it. Maybe half USDC and half BUSD just to get some of this crazy Binance Smart Chain stablecoin yield. But, as I was about to place liquidity, I realized that doing so would cost me around $350. Three hundred and fifty dollars in Ethereum gas just to offer liquidity! This is not a THORChain problem; it is a problem with Ethereum. Some Ethereum folks might even say it's not a problem. This was a shock to me, though. I decided I didn't want to provide liquidity in USDC on THORChain. I didn't want to be at the mercy of these giant Ethereum fees.

For a minute there, I felt like I'd been bamboozled. I was also spooked about my little savings money being stuck forever. That's right: USDC is a token on the Ethereum blockchain. In order to transfer any Ethereum-borne token, you have to have ETH. Bringing USDC from BlockFi to my THORSwap wallet had been a "free" transfer, courtesy of BlockFi. But this THORSwap wallet of mine had no Ethereum at all. Stuck, I tell you.

Embarrassing

I did save my own butt in the end. The way I did it was by

  1. sniping some really low fees and
  2. using this neat 12-word seed feature that THORSwap has.

I downloaded an Ethereum gas price alert app on my phone to let me know when it'd be a good time for me to move my USDC again. I also downloaded an Ethereum-compatible software wallet and restored the 12-word seed there. Then I sent it a small amount of ETH so as to allow a USDC exodus.

Salvage underway

Unfortunately, I hadn't thought about this well enough, and when I tried to get my USDC balance out, the amount of ETH was not enough. I ended up sending myself more ETH at the cost of more Ethereum gas in order to be able to make a "USDC out" transaction with enough Ethereum gas :( Going through this rigamarole, I probably wasted any potential APY I'd have earned...

Live and learn

Don't do what I did, friends. Think ahead 😬

Takeaways

  • THORChain is KYC-free. No need to provide identity
  • The user interface is pretty easy to maneuver
  • Cool keystore concept that allows restoring native wallets
  • Designed to shield you from impermanent loss

Watch out for:

  • often-changing yields
  • ETH fees, including for stablecoins
  • The relative immaturity of the whole system. It breaks here and there.
  • Swapping takes longer

Parting thoughts

  1. You can program this. Meaning you could devise software that plugs into THORChain and trades these coins/tokens automatically based on some clever algorithm. No KYC, no human needed.
  2. I'll update you on my liquidity-providing results in a couple of months.
    After a couple of weeks, I'm being told by thoryield.com, when I share my trade with their website, that I'm better off having provided BTC-RUNE liquidity than having held the equivalent amount of BTC. About 0.14% better off.
    Bear in mind BTC has lost 18% during the same period.

Credits: @THORNoobs and @therealunicoin on Twitter