Deep Dive: Port Finance
A suite of money market products built on Solana
Today we’re going to deep-dive into Port finance.
In their own words - “Port Finance is a non-custodial money market protocol on Solana. Its goals are to bring a whole suite of interest rate product including: variable rate lending, fixed rate lending and interest rate swap to the Solana blockchain.”
In this post we’ll understand the suite of products Port plans to offer and try out their variable rate lending product which recently went live. If you’re new to DeFi it would be a good idea to go through the first half of this post to get context.
Port is building a lending protocol to serve the rapidly growing Solana DeFi ecosystem. As per a tweet from Solanians on 11th Oct, there’s about $10bn locked into different DeFi products on Solana, with a TVL of $280-320mn at the time of writing, Port has quickly grown close to the top 10 DeFi protocols
For any lending protocol, the primary goals are capital efficiency and liquidity,
As a lender:
If I temporarily have excess funds I should be able to “put them to work” (i.e. earn interest)
I should be able to withdraw them whenever I need them
As a borrower:
I should be able to access a particular market (in this case token) by providing equivalent assets (collateral) for a market fee
I should be able to redeem my original collateral by paying down my debt
Implicit in #2 across both user groups is risk management. As a lender I want to be sure that borrowers are depositing enough collateral to make good on their promise. As a borrower I want to make sure I can actually get my original collateral back when I repay.
There are 2 things lending protocols do to ensure this,
Loan to Value (LTV) ratio: The amount you can borrow is always less than the collateral you deposit. This way if the market value of your collateral changes, the protocol has some buffer before it is at risk of going insolvent and needs to liquidate your position. If you deposit a volatile asset (SOL) your LTV will be lower than if you deposit a stablecoin (USDC). That is to say that you can borrow more for depositing $100 in USDC vs $100 in SOL.
Incentivising deposits: This is done through a combination of setting the right interest rates, staking rewards and security of the pool. More on this in the rest of the post.
There are two key products that Port has available today:
Variable Rate loans
You can deposit collateral and withdraw the token you need.
You’ll earn interest on the token you deposit and pay interest on the one you borrow.
To ensure token pools have sufficient liquidity, the interest you earn for depositing will increase drastically if the utilisation rate of a token pool goes beyond a threshold.
You can see the utilisation rate for any token pool by clicking on it from the markets tab
USDC Token pool
SOL token pool
From the screenshots above you can see that the utilisation rate of SOL is ~25% whereas that of USDC is much higher at 78%.
This makes sense because one of the most common use cases presumably is to deposit a volatile token you’re bullish about (i.e. purchased and expecting it will increase in value over time hence don’t want to spend) and then withdraw USDC (stable coin, always 1 USDC) for spending.
Applying the principle of variable rates based on utilisation ratio we should expect the return for depositing USDC into the pool to be much higher than SOL. And that is indeed the case. You can get ~5% + 8% PORT staking rewards for depositing USDC as compared to 0.45% + 2.65% PORT staking rewards for depositing SOL.
This makes sense from a RoI perspective too, you could earn capital appreciation from SOL just by holding it in a wallet because the price of the token moves based on demand and supply, unlike USDC which is pegged to 1$. So earning interest by depositing it to be lent out is a logical use case.
You can find the underlying mathematics of the interest rate curve and specific token pools in their official docs
Cross Collateral Support
This is a great feature which makes it loans more flexible and accessible to borrowers:
There is a minimum amount of collateral you need to deposit based on how much you want to borrow.
This depends on how much the price of your collateral could fluctuate (its volatility). So you’ll need to deposit relatively lesser in USDC (stablecoin) than you would in SOL to borrow the same amount
By allowing multiple tokens to pool towards your collateral, Port makes it easier and more flexible to meet collateral requirements (e.g. instead of depositing 10 SOL, I could deposit 5 SOL + 750 USDC)
You can currently pick from 10 different tokens to deposit collateral, including synthetics like mSOL, pSOL or stablecoins like PAI, USDC.
As you can see in the “Deposited Amount” column I’ve deposited into both USDC and SOL, the amount I can borrow is derived from the combined collateral I’ve deposited.
Let’s look at my “borrowing power” based on my collateral
Here’s what the borrowing power looks like based on my deposits.
To clarify, this means I can borrow ~$12.85 worth of any token supported by PORT.
Let’s try it out. Here is what the screen looks like when I attempt to borrow Saber
Hold on, why does it say $7.7 “remaining borrow” ? Rekt? No, That’s because I’ve already borrowed $5 in USDC, so it is adjusted against my collateral - here’s the updated graphic (there’s a decimal place error in the final borrowing power because I’ve rounded in a few places and these screenshots were taken at different times so the price of SOL in $ is slightly different across these)
Thankfully Port has a useful widget upfront that gives you this info so you don’t need to make these tables.
Because the product supports multiple token deposits you can also specify which ones you want to “exclude” from being used as collateral by unchecking the toggle shown in the image below. By default everything will be used. This ensures that you can continue earning interest and borrowing but have more control over what is at risk of liquidation.
The yellow “!” next to the toggle under “Use as collateral” basically means I can’t uncheck this now because I’ve already borrowed against this token.
You can read more about the workings here
Now let’s look at some of the products the Port team plans to launch soon.
Fixed Rate Lending
This is currently the next product on their roadmap.
This is a great post from the team explaining their vision behind this product and its mechanics. I'll share a few key points about the market design here, do checkout the post for specifics.
Let’s start by understanding - what is a fixed rate loan?
At the time of borrowing you need to specify when you’ll pay it back and your interest rate changes based on whether you pay back sooner (more) or later (less).
In the same way lenders and liquidity providers also lock in their deposits for a fixed time period and a fixed rate.
This is different from protocols like Aave, Compound, Marinade, Parrot etc where you can deposit and withdraw at will and your yield is computed depending on liquidity dynamics of the market. More on that here.
Here’s what it looks like to borrow from Notional
The insight shared in their post on fixed rate lending is this,
In the ethereum markets protocols like Aave and Compound have ~$20bn TVL whereas fixed rate lending products like Notional and Yield have a TVL of ~$100mn.
They believe this is because we’re so early in DeFi that staking yields are so high that people are happy to participate in these markets. This will change as the ecosystem matures, more sophisticated institutions and money comes in.
Not only does the team want to get a headstart in building these products for Solana but they also want to make them better. Here’s how they claim to do that
Existing fixed rate lending protocols on Ethereum use an AMM, not an order book. Using an AMM means they keep on pooling demand and supply and match it automatically - so as a borrower or lender you can’t be sure of the exact rate you will get or pay (i.e. slippage)
Their belief is that while small fluctuations in interest rates don’t matter right now, they will as the ecosystem matures. A mature DeFi ecosystem will have enough liquidity and an order book based model will work better in solving for predictability
You can read more on AMMs and order books here
These are collateral free loans to enable “risk-free” arbitrage, i.e. if you notice SOL is trading at a higher price on exchange 1 vs exchange 2 - you can quickly
Deposit USDC & Borrow SOL on exchange 2 (where it is cheaper)
Sell SOL for USDC on exchange 1 (where it is more expensive)
Payback what you borrowed on exchange 2 and pocket the profit (the difference)
This is a critical demand-supply matching mechanism to ensure an asset is priced consistently across exchanges. The “risk” of course is that you are ngmi if
the price of SOL drops on exchange before you can complete step 2
Or the price of SOL increases on Symmetry before you complete step 3
More on flash loans here
Increased Collateral Support
Referring to the section on cross-collateral support, the team wants to increase the number of tokens accepted as collateral to make it even more flexible for a borrower to meet collateral requirements or a lender to supply liquidity.
To find out which tokens are next on their roadmap, join their discord and ping on the feedback or support channels.
Apart from these, there will be a whole suite of interest rate products the team launches, e.g. swaps. Follow their twitter or join their discord to be fully glued in.
Now that we’ve understood the product suite and the underlying concepts, try out their variable lending product.
You’ll need a SOL wallet (e.g. phantom) + some tokens to try out (or even access) the main product. Or you can try out the testnet by switching the toggle at the top right
Step 1: Deposit collateral. You’ll need to do this before you can borrow. These are currently 2 different steps - automated loan swaps aren’t yet supported.
Go to the “supply tab” , select the token you want to deposit and authorise the transaction on your wallet.
This is the screen that confirms your deposit and presents other relevant metrics like how much you can borrow, at what point will you get liquidated etc.
This supply dashboard will show you the final status after your deposit is completed. Here you can see that 0.1 SOL has been deposited.
It also shows you the number of open positions and the amount in USDC you can borrow against this collateral.
Now, to borrow against the deposited collateral - go to the borrow tab and select the token you wish to borrow.
Click on the token and you’ll see a similar screen like you did while depositing with specifics of how much you can borrow and how risky your position is. Here, risky basically means - what % change in your collateral will result in your position being liquidated
Once you do this the borrow section will reflect your updated balance
Their dashboard gives you a snapshot of your overall positions along with borrowing power, rewards and other key metrics.
Important: While going through their discord I came across a bug report which said something to the effect that if you have more than 2/3 active borrowing positions you won’t be able to withdraw collateral even if the remainder is sufficient to cover you. This is a bug which the team is working to fix. DYOR, join their discord - the team is very responsive. At these early stages, it is important to be in touch with the community of the product you’re using.
At times the Solana ecosystem feels like one massive startup incubator with many projects running together. Teams consistently collaborate with other projects to build awareness and usage. Here’s what Port finance has done so far and why you should care.
Grape x PORT
Grape is a token gated community trying to revolutionise gig work and social networks by using the power of the Solana blockchain. They were featured in an earlier superteam post
By holding 20 PORT you can get access to a token gated Port community on the grape discord. This is great because you know that everyone on the chat with you has demonstrated proof of stake.
Read more about it here
The Port team rewarded members who helped spread the word or create good docs, memes, videos, and translation to grow awareness and make their products more accessible. Read more about it here
This is now standard practice across DeFi apps where users are rewarded with project tokens (for port finance the token is PORT) in addition to the yield generated from the underlying asset. This is done to incentivise more deposits and increase liquidity. You can see these rewards in your dashboard and against each token as well. You can read more about their staking programs here & here
DeFi products are attempting to do through code what banks do through an institution of researchers, quants and an elaborate operation - it is possible that things go wrong.
Without going into technical details, there was an error in the Port protocol which allowed some users to withdraw more than they should have and when they corrected this other users’ accounts were affected because of incorrect withdrawals.
To the credit of the team,
They have published a post acknowledging and explaining the issue, while they haven’t disclosed the exact amount of funds lost
They have also allowed users to apply for compensation from the Port treasury if they lost funds through this form or their discord.
The key takeaways for me from this incident are:
We’re still early, mistakes can happen. How teams communicate and deal with it will define who gmi. The port team handled it pretty well imo.
We’re still early, I'm sure web3 products will get amazon level customer service soon but for now if you want to use a product, get a feel of their community, join their discord, follow their social media - you’ll be more plugged in when things break.
We’re still early, mistakes can happen with the best of intentions - DYOR, invest what you can lose & be careful. This post is not investment advice. Your keys, your money is more a statement of responsibility than power.
We’re still early, …
Currently the project is run by a small team working together with an informal off-chain community on discord. The team has said that they do plan to form a DAO to formalise their governance, PORT will be the governance token. Apart from everything else the DAO will also vote on setting protocol risk parameters.
Currently the main product for Port finance is their variable lending product, so in essence they compete with all other DeFi liquidity providers like Parrot, Marinade, Mercurial etc etc. Superteam has done an in-depth review of Parrot here. As their product suite expands to other interest focused products this will change depending on how the ecosystem evolves.
Here are a two ways Port is different
2 step Borrowing: Like we said earlier, this is a two step process on Port where you first need to deposit collateral and then borrow against it. On other providers like Parrot, you can do an instant loan swap. This feels like a small UX niggle but it threw me off so much that I literally had to ping their discord and confirm that I wasn’t missing something. The team is consistently super responsive - I cannot stress this enough - do this first, especially if you’re new to DeFi. I hope they build this feature soon though.
Cross token collateral deposits : This is a place where Port does better than competition. They provide more flexibility to borrowers by allowing multiple tokens to count towards the collateral. We’d covered this in an earlier section. Apart from Port currently only Mercurial finance supports this in their liquidity pools.
The team at Port has consistently attempted to find ways they can differentiate themselves from other protocols, cross collateral support is one way they’ve done this. But more than that the team is betting on the future needs of the Solana DeFi ecosystem and building products they think will be important for a highly liquid, sophisticated and mature money market on Solana.
I don’t know if or when that will happen, but these are super exciting times.