Solana is a high performance blockchain with 400ms blocks and a flexible runtime that allows computation to scale with validator hardware. On current iterations of the Solana Testnet, a network of 200 physically distinct nodes supports a sustained throughput of more than 50,000 transactions per second when running with GPUs. We believe it to be the most performant blockchain in the world.
Facebook’s Libra project is notable for a number of reasons that have been already discussed by the blockchain community in some depth: It’s a blockbuster project built by some of the brightest minds in technology, backed by some of the largest businesses in the world, and will likely be a major boon for adoption of blockchain technology. But for the Solana team in particular, we noted that Libra’s bespoke Move smart contract language separates shared data from the smart contract code that would modify it.
We found this factor particularly interesting because the Solana team made the same design decision in our runtime—Pipeline. We recognized immediately that Move is a smart contracts language that could not only scale, but share compatibility with Solana. This suggested to us that Move code could be utilized on Solana, and take further advantage of the highly optimized environment of the Solana network.
Just two weeks later, Solana co-founder Stephen Akridge posted that he was able to execute Libra’s peer-to-peer payment transactions on Solana:
A few days later, we got to work on integration and benchmarking, and through a combination of great language design from the Libra team and meticulous optimization from the Solana team, we are proud to announce support for the Move VM on Solana. What this means is that projects and applications built with Move are compatible with Solana, while being able to utilize the exceptional transactional speed and capacity of the Solana network.
Move VM Bottlenecks
Pipeline, the Solana transaction processing runtime, allows for parallel execution of transactions across horizontally scaled compute and storage. We suspected that the main difference between executing Move and native Solana transactions will be the additional overhead of interpreting Move bytecode in the Move VM running on Solana.
Below is the benchmarking for the Move VM on Solana:
As you can see, the total execute time is 684us, and 605us of that is spent in the `vm_execute` function, which handles the bytecode interpreter. This confirmed our expectations. We consider the results of this benchmarking to be truly remarkable, because Pipeline can scale parallel execution of transactions across as many CPU cores as are available to the validator.
Solana native programs take 1us `execute::vm_execute,` since the instructions are native x86. MoveVM is nearly 700x slower than our native solana programs, and at this speed we are able to demonstrate how well Pipeline handles CPUs horizontal scaling.
Increasing the CPU count scales throughput linearly. We have no doubt that the initial VM performance can be dramatically improved with a JIT, or an LLVM front end to allow for direct compilation to a native instruction set.
Move Raw TPS
These benchmarks are run on our testnet with 400ms block times:
Setup 4 nodes GCP n1-standard-32 with 2x P100
|CPU bank threads||Mean TPS||Max TPS|
Libra’s Move VM will be utilized by a huge amount of developers all over the world as the project attempts to funnel much of Facebook’s huge market towards cryptocurrency and blockchain applications. That Move is so readily compatible with Solana, and capable of achieving outstanding degrees of further optimization when utilizing the core innovations of the Solana Network, is a highly encouraging sign. It suggests that projects building with Move can be relatively simply ported to Solana, and reap the benefits of speed and transactional throughput.
This proves that although the Move VM runtime is not optimized today, it can be integrated relatively easily into Solana’s chain, where parallel performance can be extracted. We look forward to giving developers a choice of Move environments so they are not locked into a single vendor. We believe that the result will be a more robust and functional blockchain ecosystem.
If you’re a web developer or working on blockchain and smart contracts, the Move programming language has a lot to offer. You can check out Solana’s Move SDK example here, and run benchmarking for the Move VM on Solana here. If you’d like to learn more about Solana and the core innovations that make it the world’s first web-scale blockchain, this blog post is a great place to start.