In Westeros, the Great Houses battle it out for the Iron Throne to have control over the Seven Kingdoms. The world of Crypto has a different setting — cryptocurrency technologies are the Houses spread across the land. The heirs — the blockchains built on the technologies — fight to be the head of the House… and eventually win the seat on the Chain Throne.
In this series, we will explore the blockchain technology kingdoms — learn about their origin stories, understand the technicalities that characterize them, and explore the conflicts and alliances between (and within) the Houses.
Origins of House Move
By 2017, using cryptocurrencies for online transactions was mainstream, but no large corporation completely embraced them. David Marcus, head of Facebook’s Messenger, pondered creating a global digital currency that can be used by Facebook users to purchase goods. He teamed up with former a16z partner Morgan Beller to incubate an open-source currency backed by a bundle of assets and independently developed — they codenamed the project Libra. From the inception until its launch, Libra was a top secret project developed on the fringes of the company’s headquarters and was accessed only by employees with a special pass. Within a year, the team rapidly expanded and began pulling in experts — economists, cryptographers, research scientists, engineers — from across the company to help build Marcus and Beller’s grand vision.
One of the scientists pulled in was Sam Blackshear, who had previously been working at Facebook on building tools to ensure engineers wrote and shipped bug free code. After a few years in that role, he realized that he was band-aiding pitfalls in existing programming languages and wondered how language designers can create novel frameworks that allow programmers to leverage automated reasoning and program verification. He got to solidify his ideas when he joined Libra in 2018 and focused on designing a new smart contract language that superseded the popular EVM.
In the summer of 2019, Blackshear along with other engineers at Facebook released a white paper for Move, a Rust-based programming language meant to be the smart contract language for Libra.
Three years later, burdened by myriad regulatory challenges, Libra was shut down, but the Move programming language, which had always been heralded as the most exciting part of the Libra project, was independently spun-off.
The old employees of House Libra — nicknamed the Libra Mafia — went on to develop independent projects that expanded the functionalities of Move. Sam Blackshear left the project and founded Mysten Labs, a startup that is committed to maintaining Move and building other web3 infrastructure. Ex-Libra employee Mo Shaikh launched Aptos as an L1 blockchain built on Move. Adding to the contention, House Solana recently wed into the Move family and is planning to add compiler-level support for the language, saturating the Move-powered blockchain space and proving to be a worthwhile challenger to the current heirs.
What is Move?
Move is a language of resources. Resources describe certain types of values that cannot be copied or forgotten about; they must always be moved from one place to another.
This is very useful in cryptocurrency when we want to represent things like assets because it means that assets can’t just be lost or duplicated.
So, for example, here is how you would define a coin in Move:
In Move, all structs are resource types by default. (Move makes resources a first-class primitive in the language and enforces many invariants useful for scarce values).
Now, if you want to mint 50 value of the coin, you can do the:
The variable my_coin now holds a Coin resource with a value of 50. Now, what if we do this:
In other programming languages, this would be making a copy, and we might think that we now have two variables, my_coin and my_other_coin, each holding 50, for a total of 100.
But logically, that should not be the case, and Move removes the redundancies. Under the hood, the Move language moved the value from one variable to another. my_coin is gone forever. The fact that resources can’t be copied, only moved, is enforced at the compiler level and is a much more intuitive model for how financial transfers happen.
On the other hand, House Solidity’s assets are encoded as hashmaps that map owner addresses to bytes. To update and transfer an asset, you update the entries in the map. Since there is no type of value representing an asset, an asset cannot be passed as an argument, returned from a function, or stored inside another asset. You just have to keep track of a giant hashmap and monitor it constantly.
In addition to making assets and resources first-class citizens, Move is statically typed and, as a result, much more deterministic and secure than languages like Solidity.
Move implements many functionalities that can be found in traditional programming languages like conditionals, loops, structs, and generics, but it also provides new features that facilitate assets as first-class resources.
Move's unique type system allows users to define how a specific type can be copied, dropped, or stored using abilities. Primitive data types such as integers, vectors, addresses, and booleans have pre-defined abilities and cannot be overloaded. Users can also add constraints using generics to ensure that data types with the appropriate abilities are defined.
Move provides specific operations that allow resources and modules to be written to and read from a tree-based global storage system. By default, structs in Move are not stored in global storage; defining abilities for structs will permit them to be stored globally. Move also has logic to ensure no dangling references for global resources exist.
Move powered Blockchain: Sui
In March 2022, the developers at Mysten Labs gave birth to Sui, a Layer 1 blockchain with high throughput, low latency, and horizontally scalable. Unlike traditional blockchains, almost all activity on Sui involves changing the data associated with specific “objects,” which can be a token, smart contract, or other on-chain entity. Each object on Sui has a list of attributes, including the address of its owner, read/write properties, transferability properties, functionality within a dapp/game, etc. In this design, most simple transfers (e.g., Alice pays Bob) require only one update to the ledger: a change to the “owner” attribute of a specific object.
The main effect of this object-focused data model is that most simple transactions don’t need to have a total ordering imposed on them. If Alice is sending 1 USD to Bob and 1 USD to Cedric, what happens is that two objects representing 1 USD each have their owner changed from Alice to Bob and Cedric. It doesn’t matter which one happened first – they can be committed to the blockchain in parallel. In Sui, simple transactions on these owned objects don’t need to go through consensus.
But what if Alice and Jill want to send 5 USD to a liquidity pool? In this case, because Alice’s and Jill’s transactions interact with the same shared object, they need to be sequenced by validators via the ledger’s mempool and go through consensus protocols.
Another key difference between Sui and other L1s is that Sui validates transactions individually rather than batching them into traditional blocks. The key advantage of this approach is low latency; each successful transaction quickly obtains a certificate of finality that proves to anyone the transaction will be processed by the Sui network. With this low latency, transactions can be easily incorporated into games and other settings that require more time sensitivity.
Enter House Sui Move
During the development of Sui, the architects realized that the initial Move language could be further optimized for the Sui blockchain. The result was Sui Move. Sui Move has unique logic that can parallelize asset generation so creators can distribute special NFTs seamlessly. Additionally, multiple types of assets can be bundled together, and a predetermined ownership hierarchy can be transferred.
For example, a user can define a Car object and have it support external add-ons in the future. The object's owner can choose which add-ons to include and can transfer the accessorized object.
Move-powered Blockchain: Aptos
Sui isn’t the only blockchain to leverage Move. In February 2022, yet another Move-based layer one blockchain was launched – Aptos.
Unlike Sui, Aptos hems to a more traditional “address-oriented” model and orders all transactions before batching them into blocks to be written to the blockchain. This dual process of ordering and batching requires momentarily pausing the state of the universal ledger to record groups (i.e., blocks) of transactions and introduces additional latency; nevertheless, Aptos can achieve up to 170,000 transactions per second by using something called Block-STM.
In Block-STM, transactions are pre-ordered in blocks and divided among processor threads during execution for optimistic execution. Transactions are first executed as though they have no dependencies. All the memory locations modified by the transaction are recorded and verified after execution. During verification, if a transaction is found to have accessed a memory location modified by a previous transaction, the transaction is declared invalid. The transaction result will be refreshed, and the transaction will be re-executed. This process repeats until all transactions in the block have been executed.
To make this more concrete, let’s say both Alice and Jill want to send 5 USD to a liquidity pool. In Aptos, both of these transactions would be optimistically executed. Since they’re both modifying the same memory location (the liquidity pool), one transaction would be marked invalid, refreshed, and re-executed to ensure the final number in the liquidity pool is correct.
Over the past few months, Aptos has welcomed programmers and early enthusiasts to the Aptos Incentivized Testnet (AIT), which tests various facets of the blockchain in return for native tokens. They concluded their third AIT in early September and are currently transitioning to a more sustainable devnet.
The future of Move
House Move has made tremendous progress in the past year. They have created a foundation for two popular blockchains progeny — Sui and Aptos — with more to come. Both companies have raised 8-figure sums from FTX and a16z, with Aptos Labs raising $150 million in July and Mysten Labs procuring $300 million in early September. The prior heirs of Libra are vying for control over the newly formed House Move.
As the Move ecosystem strengthens, it can become a worthwhile adversary to the established and widely popular House Solidity and House Tendermint. The L1 wars are upon us; which House will make the first move? (we know, this last pun is a bit much, but we had to add it! :))