Series;Verified / Carsten Munk

Truebit Protocol
Jun 22 · 6 min read

Welcome to Series;Verified, presenting features and interviews in both written and video form that highlight contributors and projects developing on Truebit. Following the ethos of the protocol, these sessions invite developers, researchers, and people associated with the project whose rigorous work has advanced the Truebit ecosystem and community.

We are excited to present today our first guest, Carsten Munk, a prolific developer who has made a powerful impact on our growing community post-mainnet launch. Carsten is deep into the Truebit code and is an inspirational leader for developers beginning to understand the protocol. We want to use this opportunity to invite Carsten to share his experience and findings and to answer questions with a follow up Reddit AMA on Thursday June 24 2021 at 12pm EST. Hope to see you there!

Who is Carsten Munk and why has Truebit captivated your focused attention? What’s the most impactful part of Truebit and/or what aspect of Truebit do you think is most important to the community?

I’m the CTO of Zippie, a computer scientist by trade and have been dabbling in the Ethereum space for a number of years. One of my key frustrations that has persisted over the years is the lack of ability to do any kind of computation at scale with the Ethereum blockchain — where even simple and straightforward use-cases of blockchain became unreasonably expensive even on a small scale.

Our focus in Zippie has been emerging markets such as sub-Saharan Africa, where people already know digital money quite well through the adoption of mobile money (M-PESA, for example) — and how to bring Web3.0 to those markets at scale, on mobile browsers primarily. Our long term goal is simple — if we don’t make Web3.0 technologies approachable, available and understandable by the masses, we won’t make the impact that the technology and end-users deserve.

When you start seeing your Ethereum usage through the lens of 17+ million people active within the protocol, it changes your perspective. Real despair started kicking in when I began a habit of multiplying every single gas price and gas spending of potential solutions at that scale to simulate the economics of bringing a real user segment into our solutions.

That scalability despair is what led me to Truebit after checking out other solutions in the scaling space.

Truebit is a ‘simpler’ mental model than many of the other scalability solutions. If there’s a disagreement in the result, a solver and a verifier basically repeat the computation until a chosen mid-point step of a range of computation is identified and the exact point of disagreement of the computation is found. From there, the Ethereum blockchain determines who has made the correct computation.

Many of the other solutions are restricted in their expressibility, suited specifically for completing token transactions or limited smart contract behavior, for example; and using quite advanced proof structures.

Zippie team observing the use of their mobile wallet by Maasai on their 4G smartphones in Amboseli National Park, Kenya

Tell us a bit about Zippie and how is Truebit solving problems in the Zippie’s architecture?

It’s still early days for our usage of Truebit, but right now we are using it as an element in a few prototypes.

Our plan is to use it more extensively in our upcoming Zippie ID product which deals with decentralized identities for the masses. You can join Zippie’s Telegram if you’d like to hear more.

My contribution has been mostly to build out the pieces that aren’t already ported to Truebit’s open source toolchain, such as BLS12–381 signature validation libraries, or JavaScript interpreters such as QuickJS- https://github.com/zippiehq/quickjs-truebit

My Truebit-related efforts have been mostly centered around easing development for the rest of my team, removing their hurdles to use blockchain at scale.

From interacting with the Truebit OS, what are the two or three most important tips you can highlight for the community to learn from?

The most important thing to understand is that Truebit is a building block. It alone doesn’t solve transaction costs and it knows nothing about rollups or even token transactions, but the fact that you can have computation made, or get a computation result verified in a reliable and exact manner, enables Web3.0 applications to build off-chain scaling for their purpose a lot easier.

Truebit allows to significantly extend Ethereum’s ability to act as a ‘judge’ of results or validating proofs — easily taking in data from IPFS and doing computation at a much cheaper price than if done completely on-chain and within the EVM.

As a new developer using Truebit, it’s also good to understand that Truebit in the current version was put out as an ‘early access’ mainnet and there are some of gaps in documentation.

Thankfully, Jason and the rest of the Truebit team are very responsive to any issues that have appeared so far. It’s a matter of time until better documentation gets written.

Are there any difficulties with your interaction with the OS that you have solved that may be of use to others?

It’s a bit of a leap to jump from JavaScript and Solidity to WASM. Many web developers don’t know how to code C/C++/Rust or to start thinking in terms of leveraging Truebit, not to mention dealing with toolchains such as Emscripten. Developers and users not needing to leap too far away from how they currently code is probably a benefit of other solutions to some extent.

Part of that challenge has been that it’s not easy to become familiar with Emscripten and its quirks, as their target for deployment are WASM inside web browsers. I’ve been working on a prototype WASI based environment that makes it easier to understand the limitations of the Truebit environment and make it work a bit more coherently for more complicated tasks. You can see it here: https://github.com/zippiehq/wasi-truebit

We’ve also been investigating running Go using TinyGo and JavaScript with QuickJS in Truebit as a way to lessen the leap for developers.

That said, there is plenty of documentation out there on how to deal with simple compilation on Linux so it’s not a major blocker if you have a clear objective on what to offload.

What would you recommend for projects interested in getting started on Truebit to easily get hands-on building?

To properly ‘get’ Truebit you need to see it as a means to get a computation result (output) based on certain input in an asynchronous manner. This is different from your previous synchronous way that many blockchain contracts are built today, where you call another smart contract directly and get a response back during the transaction execution — talking to other smart contracts in a synchronous manner.

Start modeling your off-chain computation in Rust/C/C++ which takes in data from files and writes an output to certain files. This model is essentially what becomes your Truebit task description. Then understand how that input and output makes its way to the task — that’s your on-chain smart contract and software which needs to be implemented, which speaks to the Truebit Filesystem.

Then develop on Goerli testnet for Truebit before going live on mainnet to save your Ether.

Finally, check the questions in the Truebit official Reddit channel. I hosted an AMA on Thursday, June 24 at 12:00pm EDT to continue the conversation sparked by this piece. If you were not able to join us you can see the AMA answers here!

Truebit

Scalable, trustless computation