By the time you read this, Spacemesh genesis has occurred and the network is live. Some hundreds or thousands of miners around the world are in the process of initializing their storage during this extended four week genesis period, after which the network will begin to produce blocks and issue rewards. This is obviously a very unique, special moment in the life of the Spacemesh project so I feel like I can’t not write about Spacemesh this week. I want to share a few thoughts on where we’re coming from and on what the road to this point looked like, and on where we go from here.
Thing #1: Where We Should Be
Spacemesh raised money from investors with the understanding that it would use that money to deliver a working, production network. That money is mostly spent, and the network is now live and working. There’s an enormous amount of work still to be done, and other things equal I wish we had gotten to this point a year ago, but we’re here now and that’s what matters (and there are also some benefits to having taken our time!). We’re more or less where we ought to be, when we ought to be there.
Looking back over the past few years, it’s been a long, arduous process to get this far. From the beginning I sort of knew that launching a blockchain, any blockchain, from scratch would be a huge endeavor. That’s true even for an off-the-shelf clone of an existing technology, as most blockchains are. But for something on the order of the technical complexity of Spacemesh the challenge is even greater, and it’s become an endeavor bigger and longer than even I anticipated. We not only wrote every line of code ourselves, we also designed and implemented not one but a whole bundle of novel primitives, components, and sub-protocols. I really feel like we’ve built something of similar complexity to a jet airplane, and we’re about to take our maiden flight and see if the thing actually flies. (Everyone likes the rocket ship metaphor, and maybe we’ll get there someday, but we’re closer to the complexity of a jet at this stage!)
We’ve made plenty of mistakes. We’ve updated the design many times. We’ve had dozens of testnets, most of which didn’t live for very long. We spent tens of millions of dollars, and including early team and investors around 100 people have contributed along the way. Including the broader community that number is on the order of 1000. That’s truly something remarkable, especially given that everything up to this point has only been design, building, and testing.
While that may sound like a lot of people, I actually think it’s remarkable how much we’ve accomplished with relatively few resources. Most blockchain projects with a similar scope raised and spent at least 10x what we did, and had a team 10x the size. A team of anything less than superheroes wouldn’t have been able to pull it off. It sounds cliche but it’s very, very true and I mean it from the bottom of my heart: I couldn’t be more impressed with the work done by the Spacemesh team and I couldn’t be more honored to be able to work alongside these incredible dreamers and builders every day.
When I left Ethereum and began working on Spacemesh four years ago I had a vision for building a better Ethereum along some critical lines including governance, economics, VM, and decentralization. At the time I didn’t know if it was possible. A year ago I still didn’t know if it was possible. Heck, six months ago I still didn’t know if it was possible. Today, I know that we’ve delivered that and more. We’ve proven that these ideas work and that it’s possible to assemble them into a working blockchain that is better than anything that currently exists. Of course Spacemesh is still in its infancy. There are many missing parts and much remains to be built and proven. But there’s a critical moment after you design and build the first version of something when you try to stand it up for the first time to see if the design is sound—and Spacemesh is now standing. The rest is easy!
Speaking of things that still need to be done, that takes us to the next thing.
Thing #2: Embarrassing
They say that when you start a startup and ship a product you should be embarrassed by your first release, and if you’re not then you’ve done something wrong. Well, I don’t quite feel embarrassed about the form Spacemesh is in, but I’m definitely frustrated about the number of corners we’ve had to cut to ship it in time.
A lot of this is down to complexity. We expected it would take two or three years to build Spacemesh. In the event it took closer to five. This project is more complex than anyone could’ve imagined. It has a lot of moving pieces. It’s not really one protocol, it’s actually a big bundle of sub-protocols. We had to redesign and rebuild certain parts of it several times. And since almost everything is bespoke we couldn’t simply pull off the shelf components: consensus mechanisms, proofs, etc.
I wrote previously about some of the difficult decisions we’ve had to make along the way. We want Spacmesh to have a full VM: not a limited VM like Bitcoin, not just EVM, but a best in class smart contract VM. We had to leave the VM out of the initial release and to launch with just a small number of hardcoded, “precompiled” smart contracts instead. Our VM design is coming along and it’s one of the first things we plan to add after genesis, but designing a smart contract VM in 2023 is no easy task given how quickly the landscape is changing and how the goalposts are moving. It’s not entirely clear what “best in class” means and there are many tradeoffs, but I’m excited about this next phase of Spacemesh development.
We also want Spacemesh to run on as many different devices as possible. The original vision is that you download and install the Spacemesh app (“Smapp”), it takes two minutes to set up, then you minimize it and forget it and you’re off to the races, and start earning coins shortly thereafter. We’re not quite there yet in terms of simplicity, ease of use, and resource requirements. You need a GPU to initialize your storage for economic reasons, GPUs are finicky and hard to work with, and many devices don’t have powerful GPUs. (We can work around this by allowing the initialization work to happen remotely.) As another example the Hare protocol is quite bandwidth-hungry in its present form. We have a plan and are well on the way to rewriting Hare to be much more efficient, but that’s still at least a few weeks away. And our PoST proof mechanism also requires more resources than we’d like: if you run Spacemesh on a very old or very slow system and attach a lot of storage it’ll take a long time to generate proofs. We have ideas about how to address this, too. My goal is to get Spacemesh working on even a smartphone, and there’s no fundamental reason this won’t work, but it will take some time to get there.
Finally, there’s everything else that’s still missing, all the bits and bobs, the tooling, the usability of everything. Smapp is solid and it’s the easiest onboarding experience ever to native L1 cryptocurrency mining, but it could be even easier. We’ll streamline the UX over time, and we also need to improve the tooling to make it easier to build things on top of Spacemesh. We have to finish our Ledger hardware wallet app. We have to audit and penetration test everything. We have to finish documenting things. We have work to do on the governance front. We have our work cut out for us!
In its present form Spacemesh is like Bitcoin but better in some key ways: it can do most of the things that Bitcoin can do, and anyone, anywhere can mine it from home profitably and sustainably. While I’m frustrated about the number of things we couldn’t manage to fit into genesis, I’m very proud of what we have accomplished so far. That’s already quite an accomplishment.
Thing #3: Just the Beginning
Launching Spacemesh feels like the end of a very long journey. A few months ago I began saying there’s a light at the end of the tunnel. And yet I find it very interesting that this culmination is called “genesis,” which literally means a beginning! It’s very similar to a graduation ceremony, also the culmination of a long journey, which we call “commencement.” It’s a good name indeed, because while genesis does mark the end of a few things, it’s the beginning of many more.
What’s ending? Well, up to now Spacemesh has been a toy of sorts, or a hobby. It’s a fun, toy-like thing that a group of like-minded people have been hacking away on in a corner for a few years. That will probably change. Succeed or fail, Spacemesh will be a much more public thing than it has been. And given the number of regular people who will be mining and earning coins for themselves, which has the potential to be orders of magnitude more than existing chains, over time Spacemesh may become quite “public” indeed. That’s the point, after all. But there’s a huge difference between working in private and working in public. (To be clear, our code is and always has been open source but no one was paying much attention before!) There’s an even bigger difference between working on something that only impacts you and your team vs. something that impacts the world, even in some small way: in the latter case people sit up and start paying attention. Oh, and they complain a lot. So, yes, the serenity and relative quietude is probably ending.
What’s beginning? A lot of things. The Spacemesh production network itself, most obviously. The community, too. Yes, our community has been with us for many years already, but it will grow and should take on a life of its own—which is also by design. (The day I’ll be able to say “Spacemesh succeeded” will be the day that community members organize an event that I wasn’t even aware of.) By extension, governance will also begin soon in earnest: we’ve obviously designed and built nearly all of Spacemesh “in house” over the past few years, but genesis is the time to begin thinking about how to ultimately hand full control over the project to a much bigger group of stakeholders. (Strictly speaking that’s not true, you should be thinking about it way before genesis, and we have been, but it all becomes much realer and more actionable after genesis.)
It’s also the beginning of the “Spacemesh 2.0” roadmap, which is quite exciting. As I wrote above, I’m not entirely embarrassed by Spacemesh 1.0, but it’s clear which things need to improve and I’m keen to start work on that (after a short holiday, maybe!). Expect to see more on this topic soon.
Most fundamentally it’s the start of Spacemesh as an entity in the world that’s beyond our ken and outside of our control. Sure, we’re releasing the code and setting some of the parameters and providing some of the initial infrastructure, but we’re not operating the network. We’re not the ones mining blocks, the community is. And I suspect before too long even the limited infrastructure we’re operating will no longer be needed, as the community will take over that, too (and do a better job of it than we could!). A thing cannot be said to truly exist independently in the world if it’s not viable on its own; as of the genesis moment, Spacemesh truly exists in the world. Even if I and the rest of the early team disappeared tomorrow Spacemesh would continue to exist and I have no doubt that others would step up to guide it to its destiny, whatever that may be.
Bitcoin has been continuously and tirelessly producing one block after another, every ten minutes, for the past 14 years. When the Spacemesh genesis phase finishes in a few weeks it’ll also start producing blocks in the same fashion—it’ll also have its own heartbeat, so to speak. Spacemesh is a thing alive in the world, a network entity. Like good parents, it’s time to let it grow up and find its own way in the world. Of course we’re not going anywhere anytime soon and we’ll stick around to guide it as long as necessary, but eventually it’ll find its own destiny independent of us.
Nice! I hope Spacemesh will go successfully. I am with you since more than 2 years were I was observing your progress and it's something amazing. Something new, better and more complex than any other cryptocurrency.