Runes

a new paradigm for sh*t coins on Bitcoin

--

DISCLAIMER: the author has no affiliation to any projects built on or related to Bitcoin network (at the time of publication). All the information below is not intended as and shall not be understood as financial advice.

At 8:09 p.m. ET on Friday, April 19, 2024, the Bitcoin network marked its fourth block reward halving at block height 840,000. The same exact moment Runes protocol was launched. The protocol has quickly become a major contributor to Bitcoin network transactions and fee activity.

Ancient Scandinavians wrote encrypted messages in runes 1500 years ago | New Scientist

In this article, I will present an overview of the technical aspects of the Runes protocol together with an exploration of its history and impact in the setting of the Bitcoin network.

Author

Vladislav Lenskii, 12th generation of Decipher
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed By Seongheon Shin

Table of Contents

  1. Background
  2. General Overview of Runes Protocol
  3. General Knowledge Prerequirements
  4. Runes Vocabulary
  5. How Runes Work
  6. How to Access Runes
  7. Conclusions
  8. Resources

Background:

Bitcoin, a trillion-dollar asset, holds the strongest claim to be money among cryptocurrencies. However, Bitcoin’s limited programmability is often highlighted as one of its core limitations, especially when compared to platforms like Ethereum which offer full Turing-complete smart contract capabilities. While it is widely regarded as the most secure and popular chain, for a long time it didn’t have a way to issue various tokens like most of the other chains did.
The network was primarily designed as a peer-to-peer digital currency system. Its scripting language, Bitcoin Script, is intentionally limited and non-Turing-complete. This design choice was made to maintain simplicity and security but limits the complexity of the applications that can be built directly on the blockchain (Bitcoin’s community has often prioritized stability and security over feature richness).

Bitcoin as an alternative to traditional financial assets (GETTY)

To solve the lack of token-related functionality on the Bitcoin network solutions like Ordinals and Inscriptions (late January 2023) and BRC-20 (March 2023) were introduced.

Ordinals is a protocol that introduces a novel way of utilizing the Bitcoin blockchain by inscribing arbitrary data onto individual satoshis, the smallest unit of Bitcoin (1 Bitcoin = 10 ^ 8 satoshis). This data can include images, text, HTML, and more, effectively allowing each satoshi to carry unique information and thus creating a form of non-fungible token (NFT) directly on the Bitcoin network. The protocol was designed by Casey Rodamor (@rodarmor).

BRC-20 tokens use an experimental standard to create fungible tokens natively on Bitcoin. The BRC-20 standard does not use smart contracts like popular token standards on EVM blockchains, instead, it enables users to store a script file on Bitcoin and use that to attribute tokens to individual satoshis. (embed JSON data into ordinal inscriptions to allow users to deploy, mint, and transfer tokens)

In September 2023 the BRC-20 tokens reached their peak values in daily Inscriptions (further in the fall, they will repeatedly reach the same levels of daily number of transactions). That was the moment when Casey Rodamor proposed the Runes protocol.

“I’m not sure creating a new fungible token protocol for Bitcoin is a good idea. Fungible tokens are 99.9% scams and memes. However, they don’t appear to be going away any time soon…
…Creating a good fungible token protocol for Bitcoin might bring significant transaction fee revenue, developer mindshare, and users to Bitcoin.” — Casey Rodamor in his blog.

The main goal of the developer was to create alternatives to the extremely ineffective BRC-20 format (including the need for multiple transactions to mint, transfer, or claim tokens, the creation of excessive UTXOs (Unspent Transaction Outputs), and the ability to transfer only one token at a time), which was beaten after Ordinal Theory was broken by Super Testnet.

Daily Inscriptions by Type https://dune.com/queries/2135473/3504842

Runes Protocol

General Overview

The Runes protocol is a token standard for issuing fungible tokens on Bitcoin.
The introduction of Runes leverages Bitcoin’s robust security features and its UTXO model. Now anyone can launch their own token on Bitcoin.

The main principles of the Runes protocol are generally in the realm of Bitcoin maximalist values. With the exception of the main feature of issuing tokens on Bitcoin, they clearly follow the unspoken rules of the community. The principles include:

  • Simplicity
  • Ease of use
  • UTXO State model (minimizing the set of UTXOs)
  • Keeping Bitcoin as the main token
Delphi Digital Comparison Cheat Sheet

Runes’ simple rules allow them to be present in any wallet after minor modifications.
Runes protocol contains functionality, that gives mechanisms for long-term growth and expansion of ecosystem support (at least until the next halving). Such as Rune names’ unlock connected to the Bitcoin block time (more details below).

Runes protocol contains functionality, that gives mechanisms for long-term growth and expansion of ecosystem support (at least until the next halving). Such as Rune names’ unlock connected to the Bitcoin block time (more details below).

Knowledge Prerequirements

(skip if you are familiar)

UTXO:

UTXO stands for Unspent Transaction Output. In the context of Bitcoin, every transaction starts with sources used to fund it and ends with values that are redistributed as transaction outputs. These outputs can then be used as inputs for new transactions. A UTXO is, simply put, an output from one transaction that hasn’t yet been spent as an input in another transaction.

Inputs:
Inputs are references to previous transaction outputs that prove the sender has bitcoins to spend.

It includes Previous Transaction Hash — the ID of the transaction that included the UTXO being spent, Output Index — the position of the UTXO in the previous transaction (since one transaction can have multiple outputs), ScriptSig — the script that provides the cryptographic signatures necessary to unlock the bitcoins for spending. It contains a digital signature and a public key that corresponds to the Bitcoin address from which the funds are coming.

Outputs:
Outputs are components that specify how many bitcoins are being sent and to which addresses they are allocated. They contain Value — the amount of bitcoin to be sent to the specified address, and ScriptPubKey — a locking script that sets the conditions under which the output can be spent. Typically, it requires that the next input must provide the correct digital signature that matches the specified Bitcoin address.
Example of ScriptPubKey:

6a [OP_RETURN] 4c [PUSHDATA1] 10 [data length in hex] 48656c6c6f2c20776f726c6421 [data in hex]

(here and below I use the “C” language marker for Bitcoin Scripts as the one most similar; Medium doesn’t provide a “Bitcoin Script” code type)

Locktime:
An optional component specifies if there is a time or block height constraint before which the transaction cannot be included in a block (can be used for opening payment channels or timed releases of funds).

Transaction ID (TxID):
Each transaction is identified by a unique hash, which is calculated using the transaction’s contents. This ID is used throughout the network to track transactions.

Varint(variable integers):
Integers with a variable number of bytes. (Smaller numbers take a smaller number of bytes) A method of serializing integers using one or more bytes. If the most significant bit (the high bit) is set to 1, it means there is another byte following.

P2PKH (Pay to Public Key Hash):
The most common form of Bitcoin transaction, where outputs require a signature from a specific public key to be spent (a special type of ScriptPubKey)
Example:

OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Segregated Witness:
An update to the Bitcoin protocol that changes the way data is stored and transmitted on the blockchain. Specifically, it separates (or segregates) the digital signature (the “witness” information) from the transaction data.

Witness Data (SegWit):
Transactions that utilize Segregated Witness (SegWit), have an additional component called the witness, which is used to store the signatures separately from the transaction data.

OP_RETURN:
The use of OP_RETURN in a transaction output immediately cancels the ability of that output to be spent. This is because OP_RETURN effectively tells the network sth like: "This output cannot be used to transfer value." It serves as a method to insert data into the blockchain while ensuring that the output is not part of the UTXO set. This helps in maintaining blockchain efficiency and has several useful applications such as timestamped proof that certain data existed at the time the block was mined, issuance and management of assets, and embedding arbitrary messages in the blockchain.

A full list of Bitcoin Script OpCodes can be found here and here.

So far, we have discussed the essential details about Bitcoin. Now, let’s look at the Runes Protocol again.

Runes Vocabulary:

  • Runestones — messages in the Runes protocol. Essentially they are pieces of structured data, stored in the Bitcoin transaction outputs. Below is the Abstract structure of the Runestone.
struct Runestone {
edicts: Vec<Edict>,
etching: Option<Etching>,
mint: Option<RuneId>,
pointer: Option<u32>,
}
  • Edict — a transaction command or script that specifically handles the transfer of Runes.
Edict format (structure)
  • Etching (sometimes called Engraving)— the process of generating a rune token, where all its attributes are defined. The token supply is linked to a specific UTXO, allowing it to hold any amount of any number of Runes. Same as “Engraving”.
Etching message format (structure)
  • Minting — after etching, the next step is minting, where actual tokens are distributed based on predefined terms.
  • Pointer — field in the Runestone that contains the index of the output to which runes unallocated by processed edicts should be transferred. If the Pointer field is absent, unallocated runes are transferred to the first non-OP_RETURN output.
  • Cenotaphs malformed (incorrectly formed or shaped) runestones. If a minting transaction includes a cenotaph, the associated Runes will be burned. Runes etched in a cenotaph will be set as unmintable.
  • Rune ID — the block in which the Rune was engraved (etched), and the index of the etching transaction in that block, represented in text form as BLOCK:TX.
    For example, 500:20.

How Runes work:

There is a tiny amount of detailed materials about Runes; for the sake of creating this guide, I used the Ordinals HandBook and Casey Rodarmor’s Blog (in cases of controversy I refer to the first one as more up-to-date).

A transaction contains a Rune protocol message if it contains an output whose ScriptPubKey contains an OP_RETURN (“6a” in hex format) followed by a data push (“4c” or the PUSHDATA1 opcode + the length of the data that is being pushed onto the stack, expressed in hexadecimal format) of the ASCII uppercase letter R”. The protocol message is all data pushed after the first “R” (“52" in hex format).

6a [OP_RETURN] 4c [PUSHDATA1] XX [data length in hex] 52 [ASCII 'R'] XX...XX [Rune protocol message]

Integers are encoded as prefix varints, where the number of leading ones in a varint determines its length in bytes.

The Runes protocol was activated on block 840,000. Runestones in earlier blocks are ignored.

Transfer

Runes are transmitted by “edicts” and this is the simplest function of the protocol. The remainder of the runes from any transaction or all the runes that belong to the UTXO can be transferred to the wallet’s default change(return) address. If a token (Rune) owner wants to transfer some runes to another owner, he can do so with a small amount of bitcoins (they are needed as a fee to complete the transaction itself).
The first data push in a protocol message (Runestone) is decoded as a sequence of integers. These integers are interpreted as a sequence of (ID, OUTPUT, AMOUNT) tuples.

If the number of decoded integers is not a multiple of three, the protocol message is considered invalid.

  • ID is the numeric identifier of the Rune
  • OUTPUT is the index of the output where tokens are transferred (transaction can have many outputs)
  • AMOUNT is the number of runes that are transferred

Rune IDs’ block heights and transaction indices are encoded as deltas (differences) from the first one. This allows multiple assignments of the same rune to avoid repeating the full rune ID (it slightly optimizes storage for large numbers). An amount of 0 means “all remaining runes”.
For example, the tuples:

[(1412, 5, 19), (0, 4, 3), (3, 4, 0)]

are interpreted like this:

  • ID 1412, sent to exit 5, with the amount of 19runes,
  • ID 1412, to exit 4, 3 runes,
  • ID 1415 (1412 + 3), to exit 4, all remaining runes (of ID 1415).
Edicts simplified https://www.decentralised.co/p/let-the-rune-games-begin

After all tuples have been processed, unassigned runes are sent to the first output that does not have OP_RETURN.

In the example above there might be up to 3 different recipients (according to the number of outputs) and a single presumed one (included into 3) — the sender, who will have unspent runes if the delivery address is the first.

Any transaction that contains extra (excess) rune transfers, will be ignored. Runes that were input to a transaction with an invalid protocol message (cenotaph) are burned.

Etching(Issuing) and Minting

The moment of minting and issuing runes must be separated.
@rodarmor did this to counter the front-running rune release. After engraving the rune, it is impossible to determine which address produced the runic signature (“hidden” in the Taproot tree).

Taproot is a Bitcoin protocol upgrade that improves privacy by making all transactions appear the same to external observers. It uses a technique called Merkelized Abstract Syntax Tree (MAST) to hide the complexity of a Bitcoin transaction script. Therefore, it becomes known only during the subsequent release of tokens. However, the name-pin transaction must be in the same block as the rune creation runestone, otherwise, the engraving will be ignored.

Runes have a unique mechanic: shorter character Rune names will be unlocked later, avoiding frontrunning more attractive “names”. Initially, all rune names of thirteen or more characters in length are unlocked, except the first reserved rune name “UNCOMMON•GOODS”, the rune was hardcoded (hardcoding here means pre-creating rune tokens before the 840000 block), and it has ID = 0. Notice that it has 13 characters (excluding the dot).

https://twitter.com/ord_io/status/1784462958598230174

All the Runes currently have 13+ characters, and Runes with fewer characters will be gradually available. The logic is that until the next halving (210,000 blocks or 4 years), 1 character Runes should be available. To do it, Rune names with one less character will be available every 17,500 blocks (~4 months). So, Runes with 12 characters will be available ~ 4 months from the halving (April 19).
The number 17500*12 = 210,000 is the interval until the next halving.

If the protocol message has a second data push (PUSH_DATA opcode), it is an issuance transaction. The second data push is decoded as two integers, SYMBOL and DECIMALS. If additional integers persist, the protocol message is invalid.

An engraving transaction may create any amount up to2^128 - 1 of the issued rune, using the ID 0 in assignment tuples.

SYMBOL is a base 26-encoded human-readable symbol, similar to that used in sat “names” in Ordinals. The only valid characters are A through Z.

DECIMALS is the number of digits after the decimal point that should be used when displaying the issued rune.

If SYMBOL has not yet been assigned, it is assigned to the issued rune, and the issued rune receives the next available numeric rune ID, starting with one. If SYMBOL has already been assigned or is BITCOIN, BTC, or XBT, a new rune is not created (engraved).

Transfer edicts using rune ID 0 are ignored, but other transfers are still processed if there were any in the transaction.

How to access Runes:

Users need a Bitcoin network wallet that supports Runes to store and transact tokens. As it’s a new protocol, the number of wallets is relatively limited. Here are some of the most commonly used names include UniSat Wallet, XVerse Wallet, Ordinals Wallet, Magic Eden Wallet, OKX Wallet.

Users can explore the Runes market through platforms like RuneScan, Rune Alpha, RunesTerminal, SatScreener, RuneMine, BTCTool.Pr, etc.

These tools facilitate searching and querying Runes transactions, providing crucial metrics such as supply, trading volume, market capitalization, total transactions, etc., for users to comprehensively grasp information about Runes.

Users can now trade Runes on Magic Eden NFT Marketplace, Ord.io, OKX NFT Marketplace, UniSat Marketplace, and others(DYOR).

Minting and Etching Runes. The process of creating Runes can be done through platforms such as Rune Bitcoin, Luminex, UniSat Wallet, RuniGun

Among them, Luminex and UniSwat Wallet allow users to mint multiple Runes simultaneously through UTXO splitting, increasing opportunities without waiting for confirmation from the mempool.

For all of the actions above users will have to spend bitcoins in amounts, depending on the network congestion (traffic).

To see the live statistics and data (including transaction prices) about the Bitcoin network, I recommend visiting Mempool.Space website.

https://twitter.com/CoinMarketCap/status/1781276808467366309

Conclusions

“Runes are a protocol for making fungible tokens… … not a token themselves”; “I am not creating a shitcoin, I am creating a venue for people to create shitcoins…” — Casey Rodamor.

The launch of Runes unquestionably lived up to expectations, community interest, the neat technology and the perfect timing (going live right at the time of halving) were the stepping stones for the Runes ecosystem to flourish. Various projects are using Ordinals (NFTs) to distribute their Runes ‘fairly’. Runestone, RSIC, and Rune Pups (they actually switched from BRC-20 to Runes) were among the most popular ordinals that launched Runes this way.

Right after launch (halving) Runes overtook the Bitcoin transaction dominance (over 81% of transactions on 23.04) from simple BTC transactions and BRC-20 transfers (BRC-20 Market Cap is currently over $2 billion).

At the time of research (26th of April), the most popular Rune by market cap was RSIC•GENESIS•RUNE (reported by CoinGecko) with a market cap of over $325 million.

https://dune.com/cryptokoryo/runes

Although the project has the potential to dramatically expand the BTC network, bringing many new useful applications to the largest blockchain in the market (for example, allowing you to create payment channels based on UTXO with Runes), its future impact is unclear.

Provenance (history and origin) has always mattered in crypto. So, as many traders rushed to mint and etch Runes right after the launch fees on the Bitcoin blockchain increased dramatically. The increase in transaction fees (a record of average transaction fees reaching over $127), generated by a large volume of transactions, caused volume to decrease very rapidly. In situations like these, volume is expected to gradually return to the norm after a significant spike and subsequent cool-off.

https://dune.com/cryptokoryo/runes#runes-overview

Transaction volume restoration to the norm will also be supported by shorter name unlocks.

“…Runes are setting up for a run until the next halving. It’s a long time. There will be at least one Bear Market…” — Ilya Evdokimov, founder of the SatsBridge, commenting on the internal mechanics that can support hype within the community and its drawbacks.

Some of the Runes activity is not that sustainable, though. For example, the degen trend to etch Punk Nfts as Runes with a max supply of 1 doesn’t look long-lasting. Since the Runes with names like “PUNK FOUR THREE SIX” will more likely be rekt (the price will drop to almost zero) by Runes with shorter names (sth like “PUNK IV III VI” or “PUNK CDXXXVI”) after the shorter names will be unlocked.

https://twitter.com/rodarmor/status/1784034582209368073

Another interesting effect is the emergence of similar ideas, trying to compete in hype with Runes, on other blockchains. Namely, Heroglyphs, a new protocol on the Ethereum blockchain was created for Complete Validators to create (or mint) their special coins, and only them being able to do it. A validator that is randomly chosen to propose a block can “inscribe” (just as in the case of Runes/Ordinals) some short data into the block (up to 32 bytes).

Overall, I believe that we will be able to adequately estimate the viability of the protocol after the next set of names (with 12 characters) is unlocked and we can observe the transaction volumes again. This will happen around mid-late August later this year.

“Should such a thing exist? I don’t know. It’s about as simple as possible, does not rely on off-chain data, does not have a native token, and fits nicely into Bitcoin’s native UTXO model. Such a scheme might draw users from other schemes with worse on-chain footprints, and bring developer and user mindshare to Bitcoin, encouraging them to adopt Bitcoin itself.”

“On the other hand, the world of fungible tokens is a near totally irredeemable pit of deceit and avarice, so it might be a wash.” — Casey Rodamor in the blog announcing Runes protocol.

Resources:

Ordinal Theory and the Rise of Bitcoin Inscriptions https://insights.glassnode.com/ordinal-theory-and-the-rise-of-inscriptions/

What are BRC-20 tokens?
https://www.coinbase.com/learn/crypto-glossary/what-are-brc-20-tokens#:~:text=BRC%2D20%20token%3F-,BRC%2D20%20tokens%20are%20a%20development%20in%20the%20cryptocurrency%20space,individual%20fractions%20of%20a%20Bitcoin

A Frenzy Over Bitcoin Ordinals & Runes
https://members.delphidigital.io/reports/a-frenzy-over-bitcoin-ordinals-runes#runes--native-fungible-tokens-on-bitcoin-7bf0

Bitcoin Black Magic: Runes (written in Russian) https://teletype.in/@hypecoinnews/scC9zy9XZmI

Decentralised.co: Let the Rune Games Begin
https://www.decentralised.co/p/let-the-rune-games-begin

Three Sigma thread about Runes: https://twitter.com/threesigmaxyz/status/1783240150153318516

Casey Rodamor announces Runes
https://www.youtube.com/watch?v=ysoxbnqiCgQ&ab_channel=HellMoneyPodcast

What are Bitcoin Runes? Bringing Memecoins to Bitcoin
https://www.coingecko.com/learn/what-are-bitcoin-runes#:~:text=RUNE%2C%20with%20a%20market%20cap%20of%20over%20%24325%20million.

Runes Dune dashboard by cryptokoryo:
https://dune.com/cryptokoryo/runes

--

--