The Runes protocol is a token standard for issuing fungible tokens on Bitcoin that seeks to give users a more efficient way of creating fungible tokens.
Runes were launched in April 2024 on block 840,000, coinciding with the Bitcoin halving. Runes as a simple protocol with minimal on-chain footprint and responsible UTXO management. UTXOs (Unspent Transaction Outputs) are individual units of bitcoin value associated with specific addresses on the blockchain, representing funds that have not yet been spent and can be used as inputs in new transactions.
The goal of Runes is to replace the less efficient Ordinals-based BRC-20 token standard, which is complex and not UTXO-based. The latter characteristic causes the BRC-20 token standard to produce excessive junk UTXOs, which congest the Bitcoin network. The Runes protocol also strives to be better than other existing fungible token protocols on Bitcoin like RGB and Taproot Assets. These options rely on off-chain data. Other options like Omni Layer and Counterparty need a native token to operate. Runes exist entirely on chain and require no other token.
The Runes UTXO-based model integrates naturally with Bitcoin, which uses UTXOs. A Rune is assigned to a UTXO through a protocol message that designates the output, ID, and amount. This message is stored using the native bitcoin OP_RETURN function. OP_RETURN is a unique function for data storage on bitcoin. OP_RETURN outputs don't congest the UTXO set since they are provably unspendable.
The ID is a numeric identifier of the Rune, while the output specifies the output index to receive the Rune token. The amount defines how many Rune tokens will be transferred. All rune messages—creating (etching) new runes, minting, or transferring runes—are encoded in a single OP_RETURN output in a transaction. Divisibility, rune name, and other metadata are in the same OP_RETURN in the same transaction.
The token supply of a Rune is contained in a single UTXO. The supply/transfer amount is a 128-bit unsigned integer, so the maximum is 340282366920938463463374607431768211455. Each rune has a "divisibility," which is the number of decimals it can have. The maximum is 38. The human-readable maximum supply also has this many decimals. For example, with 18 decimal places (similar to most ERC-20 tokens), the human-readable max supply is 3402823669209384634633.74607431768211455.
Edicts are messages defining how a rune should be transferred from an input to an output. They contain the output number, the rune’s ID, and the amount. Edicts are specified in OP_RETURN, and any number of edicts can appear in a UTXO.
The Runes protocol allows users to make batch transfers, airdrop runes, and transfer all remaining units of that rune ID. UTXOs are used to track the balances of Runes tokens. The Runes protocol doesn’t link the balance record of a token to a wallet address but holds it within a UTXO. Runes are transferred with a bitcoin transaction with an OP_RETURN output that specifies the amounts of runes from inputs that go to which new UTXOs.
Runes can be transferred on the bitcoin base layer (on-chain) by a process that is essentially the same as transferring BTC. The primary difference is that OP_RETURN must be populated with the updated Runes data to record the change of ownership. Because Runes ownership is represented by UTXOs, Runes are transacted by lot. That is, if a Rune UTXO contains 100 Rune units, the entire 100 must be assigned to an owner in the new UTXO. UTXOs can be combined together to create larger lots, and they can be split into multiple UTXOs at the output of the transaction to create different-size lots assigned to potentially different owners. To track and properly define the information in OP_RETURN, special Runes-aware wallets are required to trade runes on the base layer.
Sovryn’s DEX provides some distinct advantages for buying and selling runes compared to on-chain exchanges like Magic Eden and OKX:
1. Set up wallet: Install MetaMask wallet as a browser extension.
2. Visit the dapp: Go to https://sovryn.app.
3. Add network: If you haven't visited the dapp before, it will notify you that you are on the wrong network. Click Switch. Metamask will prompt you to approve adding a new network (either RSK or BOB). Click Approve and then Switch network.
4. Select network: Select either Rootstock (RSK) or BOB in the network dropdown on the dapp if it is not set to your preference. If you change the network and have never visited that network before in Metamask, it will take you through the same procedure as the previous step to approve the new network.
5. Fund wallet: Fund your wallet with the native asset for gas—RBTC (on Rootstock) or ETH (on BOB). For Rootstock, go to the Transfer Assets dropdown and select BTC. For BOB, go to the BOB bridge and transfer ETH. On BOB you can also transfer BTC from the bitcoin network and get a small amount of ETH for gas in the process by selecting “Top up Gas”.
6. Import tokens: Add the rune token (for example, POWA) to your token list on the MetaMask wallet.
For POWA on Rootstock, enter the address 0xfe8929d36AC789c562008aBD59f5Dd7E1eb1F5b6. For POWA on BOB, enter 0xd0C2f08a873186db5cFB7b767dB62BEF9e495BFF.
For other tokens on Rootstock, you can look up contract addresses using the RSK explorer by searching for the token address. If the search returns more than one, the correct one is usually found at the top and will be listed as an ERC20 token if you visit the link.
On BOB you can look up contract addresses using the BOB explorer and searching for the token address. If the search returns more than one, the correct one is usually found at the top with a green check mark by it and labeled “token”.
7. Purchase runes: Go to the “Convert” tab, choose RBTC (or ETH on BOB) and POWA (or other runes), input the specified amount, and proceed with the exchange.
8. Bridge tokens out (optional): See below if you want to bridge runes out to the bitcoin base layer.
1. Set up wallet: Install MetaMask wallet as a browser extension.
2. Visit the dapp: Go to https://sovryn.app.
3. Add network: If you haven't visited the dapp before, it will notify you that you are on the wrong network. Click Switch. Metamask will prompt you to approve adding a new network (either RSK or BOB). Click Approve and then Switch network.
4. Select network: Select either Rootstock (RSK) or BOB in the network dropdown on the dapp if it is not set to your preference. If you change the network and have never visited that network before in Metamask, it will take you through the same procedure as the previous step to approve the new network.
5. Fund wallet: Fund your wallet with the native asset for gas—RBTC (on Rootstock) or ETH (on BOB). For Rootstock, go to the Transfer Assets dropdown and select BTC. For BOB, go to the BOB bridge and transfer ETH. On BOB you can also transfer BTC from the bitcoin network and get a small amount of ETH for gas in the process by selecting “Top up Gas”.
6. Import tokens: Add the rune token (for example, POWA) to your token list on the MetaMask wallet.
For POWA on Rootstock, enter the address 0xfe8929d36AC789c562008aBD59f5Dd7E1eb1F5b6. For POWA on BOB, enter 0xd0C2f08a873186db5cFB7b767dB62BEF9e495BFF.
For other tokens on Rootstock, you can look up contract addresses using the RSK explorer by searching for the token address. If the search returns more than one, the correct one is usually found at the top and will be listed as an ERC20 token if you visit the link.
On BOB you can look up contract addresses using the BOB explorer and searching for the token address. If the search returns more than one, the correct one is usually found at the top with a green check mark by it and labeled “token”.
7. Bridge tokens in (optional): See below if you need to first bridge runes in from the bitcoin base layer.
8. Sell runes: Go to the “Convert” tab, choose POWA (or other runes) and RBTC (or ETH on BOB), input the specified amount, and proceed with the exchange.
To participate in the advantages of Runes trading on Sovryn, you can bridge runes between Sovryn and the bitcoin base layer for trading. You can only bridge supported runes.
This feature allows you to transfer Runes from your Bitcoin to your Rootstock or BOB address, depending on which chain you choose.
1. Transfer Asset→Runes: On the Transfer Assets dropdown, and select Runes.
Then select Receive and Continue.
2. Send Runes to address: Transfer Rune Tokens to the address shown in the QR code (and below it as a text representation). Use a wallet that supports Runes, such as the Ordinals wallet "ord".
This function enables you to transfer Runes from your Rootstock or BOB address, depending on the chain where they reside, to your Bitcoin address.
1. Transfer Asset→Runes: On the Transfer Assets dropdown, and select Runes.
Then select Send and Continue.
2. Specify order: Select the Rune you want to send using the Select dropdown where the pointer is shown in the graphic below and the amount and then Continue.
3. Specify address: Specify the bitcoin address where you want to send the runes.
4. Confirm the transaction
Before you deposit liquidity, you should familiarize yourself with the risk of divergence loss (impermanent loss). (Here is an in-depth explanation.) Automated market makers (AMMs) use a liquidity pool rather than an order book. As a result, liquidity providers may suffer relative losses compared to buy-and-hold as the relative price between the two assets changes and the value is automatically rebalanced between the two. As the relative price moves, the pool holds less of the asset that is increasing in value and more of the asset that is decreasing in value to maintain a 50/50 balance. This results in relative underperformance compared to simple 50/50 holding of the original assets without rebalancing.
Concentrated liquidity positions magnify the impact of liquidity within a specified range, and that magnifies the fees that position earns. For traders this reduces the slippage at the specified price point. At the same time, the potential divergence loss is magnified for liquidity providers as well. For details on this magnification phenomenon, see Impermanent Loss in Uniswap V3.
0. Set up wallet: If you haven't already set up your wallet, follow the first three steps under How to buy Runes.
1. Access the dapp: Go to https://sovryn.app to access the dapp.
2. Get started: On the top-right dropdown, select the RSK (Rootstock) chain. Then click the Get started button to connect your wallet, and follow the on-screen instructions.
3. Select Earn → Market making: From the top navigation menu, select the Earn tab and then the Market making option.
4. Deposit liquidity and confirm the associated transaction: On the Market making page, select the pool of your choice and click the Deposit button on the right. In the example made for this step, we chose the POWA/BTC option.
0. Set up wallet: If you haven't already set up your wallet, follow the first three steps under How to buy Runes.
1. Access the dapp: Go to https://sovryn.app to access the dapp.
2. Get started: On the top-right dropdown, select the BOB chain. Then click the Get started button to connect your wallet, and follow the on-screen instructions.
3. Select Earn → Market making: From the top navigation menu, select the Earn tab and then the Market making option.
4. Deposit liquidity and confirm the associated transaction: On the Market making page, select the pool of your choice and click the Deposit button on the right. In the example made for this step, we chose the SOV/POWA option.
5a. Deposit full-range balanced liquidity: These instructions are for depositing liquidity that is available over the full range of prices.
5b. Deposit concentrated liquidity: If you want to deposit liquidity that is available over a specified range of prices, you may specify the price range for the first asset.
1. Access the dapp: Go to https://sovryn.app to access the dapp.
2. Connect your wallet: On the right top, connect your wallet by clicking the Get started button.
3. Select Earn → Market making: From the top navigation menu, select the Earn tab and then the Market making option.
4. Withdraw liquidity and confirm the associated transaction: On the Market making page, select the pool of your choice and click the Adjust button on the right. In the example made for this step, we chose the POWA/BTC option.
1. Access the dapp: Go to https://sovryn.app to access the dapp.
2. Connect your wallet: On the right top, connect your wallet by clicking the Get started button.
3. Select Earn → Market making: From the top navigation menu, select the Earn tab and then the Market making option.
4. Claim fees, reposition, or withdraw: On the Market making page, click the bar corresponding to the pool of your choice. It will reveal information and options. This example shows ETH/SOV, but the process is the same for any pair.
a. Claim fees: Click the Claim fees button. This will bring up the following dialogue:
b. Reposition: Click the Reposition button. This will bring up the following dialogue:
c. Withdraw: Click the Reposition button. This will bring up the following dialogue:
5. Confirm the adjustment in your wallet: Congratulations! You have successfully completed the liquidity withdrawal.