Blog Article

Soroban is Feature Complete


Justin Rice

Publishing date

About a year ago, Preview Release 1 introduced Soroban to the world, and since then, there's been a steady drumbeat of successive preview releases marking progress in the march towards Mainnet launch. In the past three months alone, some of the most crucial design decisions were implemented — Preview Release 9, which came out in May, introduced a fee structure fine-tuned for efficiency and fairness; Preview Release 10, which came out in July, introduced a novel approach to data storage that solves for unbounded state growth — and at this point, Soroban has all of its core functionality in place. It is, in other words, feature complete.

There's still work to be done auditing and hardening the code, and there's still work to be done downstream on tools, on the RPC, on SDKs, and on documentation, but if you're building on Futurenet today, you're pretty much building on Soroban v1. It's amazing how much came together, ex nihilo, in a year.

…it has been developed in public…

What's especially amazing is that Soroban has been — and continues to be — developed entirely in the open. Ten public preview releases! Throughout them all, any and all comers encouraged to play with the code, to participate in its evolution, to tinker and build and lend it shape! Every line of code is public, every design doc is public, and every important development discussion is public. Have an opinion? Want to see what's happening? Just join the Stellar Dev Discord. It's all there, laid bare for you to see.

There have been so many ideas, so many contributions, and so much feedback coming from so many different voices, and even though that level of democratic access is inherently messy, it has been a wonderful thing to watch, and the result is much, much better and came way, way faster than if a core group of engineers tried to build something like this in a silo.

…and it was built in parallel with key ecosystem projects.

In addition, because Soroban has been built in the open, and because ecosystem devs have been hacking away throughout all 10 preview releases, something else remarkable has happened: a viable ecosystem of smart contracts projects has come together alongside the platform itself. At this moment, there are over 70 projects building in the Soroban sandbox that I personally know about, and there are likely many more that I don't. Many of those projects create fundamental building blocks that stack together to allow for the creation of end-to-end use cases, and a lot of them will be ready on or around mainnet launch. Those projects include:

  • Oracles, Indexers, block explorers, and data analytics tools
  • Developer tools including IDEs, SDKs, and RPC services
  • DAOs and the tools to build DAOS
  • Defi primitives like AMMs and lending and borrowing protocols
  • And wallets that range from general purpose transaction signers to bespoke interfaces

For each of those categories, and for several others, there are actually multiple projects building on Soroban, which means that the fundamentals for a robust ecosystem are in place, in duplicate, triplicate, sometimes even in quadruplicate. If you're a developer, you don't need to wait for building blocks to get started: they're here, now, ready for you. 

There were some sharp edges…

Sharing preview releases also meant that people had their hands on bleeding edge code, and there were still some sharp edges to sand down. "Please test Soroban out," the docs encouraged, "see what you can do, and let us know what you think." But also, "Keep in mind a lot will change between now and the production release, so expect your code to break, and prepare for updates to shift things. Experiment, but don't build to last just yet."

And indeed, there were breaking changes throughout the previews that required developers to adapt and rewrite code. The authorization model changed, type definitions changed, the token interface changed. Preview Release 10 proved especially challenging because it introduced state expiration, a new concept for most, if not all, blockchain developers. Ledger entries don't persist indefinitely! They can, and do, expire! For the first time, devs were required to specify the type of storage their contracts use. And because Futurenet was initially configured with a 6-hour expiration, pretty much everyone building on Soroban had to figure out how to bump ledger entries to keep them from expiring, and how to restore them when they do. How did they do it? At first, there wasn't much in the way of tooling or guidance, but then people started tinkering, testing things out, and sharing workarounds. They persevered, helped each other out, and gave invaluable feedback to Soroban engineers. If you're one of those people, thank you! We are all — everyone in the Stellar ecosystem — super grateful, forever in your debt.

…but now, we're closing in on a stable a release candidate, and focusing on developer experience.

And based on that feedback, Soroban engineers got to work improving tooling to handle state expiration, and creating clearer documentation to explain it. A few key pull requests laid the groundwork for a new version of the CLI that makes it easier to restore contract code without manually grabbing values from an XDR. Some blockers around XDR generation are getting fixed as we speak, which will resolve some errors with typescript bindings, and new Javascript examples are also in the works. These challenges are the exact kinds of things the preview release process is designed to surface: by sharing early and encouraging experimentation, the goal is to identify pain points so Soroban engineers can focus on fixing them now, before Soroban is live in a production environment. And the timing feels right: now that the core of Soroban is pretty much complete, it's time to assess developers' needs, to build out downstream systems, and to improve documentation and tooling. It's time to focus on developer experience. 

As part of that, we want to continue to encourage developers to keep tinkering, building, and working on end-to-end user experiences, and so we're launching new programs to encourage and support dapp development. The first, Sorobounty Spectacular, a content bounty designed to award the creation of Soroban tutorials, is up and running now. If you're interested in documenting your dapp-building experiences, getting into the nuts and bolts of what you're building, and growing the overall knowledge base to help onboard more devs and jumpstart the ecosystem, it's the program for you. The second, Sorobanathon: Road to Mainnet, a virtual hackathon designed to give devs structure to learn the basics and build Soroban dapps, kicks off next week. It's an opportunity to work alongside a vibrant community of devs, and to quickly ideate, code, and ship a project, and it's open to devs of all levels of experience. If you're interested in finding out more about those, or any of the other Soroban developer engagement programs, check out the newly updated Developer's Guide to Soroban Adoption Fund Programs.

And if you're interested in dapp development, and want to ask questions, provide feedback, or just keep up with ongoing efforts to improve Soroban developer experience, make sure to check out the new #dapp-devx channel in the Stellar Dev Discord.

It's an exciting time to be a part of the Stellar ecosystem, and it has been amazing to see how much life there has been in preview. Onwards, upwards, and thank you.