New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Build Private and Verifiable Off Chain Apps With ROFL I Bernhard Ruf

ETHGlobalThu, Oct 9, 2025, 12:00 AM

Bernhard Ruf from Oasis Protocol Foundation presents a workshop on building private and verifiable off-chain applications using ROFL (Runtime Offchain Logic). He introduces the blockchain dilemma—scalability, cost, speed, and especially privacy—and explains how Oasis addresses these with its confidential EVM chain, Sapphire, and TEEs (Trusted Execution Environments). ROFL enables developers to dockerize apps in any language, run them in TEEs for confidentiality, and access off-chain data or APIs verifiably. The workshop covers deploying apps using the Oasis CLI, registering and managing apps on-chain, and leveraging new CLI features for logs and machine management. A live demo shows deploying a Telegram bot with a private LLM inference in a TEE, emphasizing privacy and verifiable compute. Use cases include oracles, cross-chain apps, and private AI. The session concludes with resources and support for developers. 00:00 Introduction 00:51 Agenda Overview 01:18 Blockchain Dilemma & Privacy Challenges 02:29 Oasis Protocol & Sapphire Recap 03:36 Sapphire Features & Cross-chain Capabilities 04:00 Introduction to ROFL (Runtime Offchain Logic) 05:04 ROFL Architecture & Use Cases 06:25 Network Structure & TEEs 07:24 Cross-chain & External API Access 08:00 Dockerization & App Registration 09:19 App Deployment Process 10:25 CLI Tools & raw.app Platform 11:06 Live Demo: Private LLM Telegram Bot 12:14 Docker Compose & Secrets Management 13:06 Step-by-step App Deployment 14:12 Machine Sizing & Validation 15:34 On-chain Registration & Test Tokens 16:35 Building & Deploying the App 17:22 Platform-specific Build Notes 19:10 Final Deployment Steps 20:01 CLI Improvements & Troubleshooting 20:32 Documentation & Support 21:00 Conclusion _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🇫🇷 *ETHGlobal Cannes* This workshop is specifically for ETHGlobal Cannes, a 3-day hackathon held July 4-6, bringing together the most skilled web3 developers, designers and product builders from all around the globe for a weekend-long adventure to advance the Ethereum ecosystem! Watch the full ETHGlobal Cannes 2025 playlist here: https://youtube.com/playlist?list=PLXzKMXK2aHh5N2DCwhcEshNW9C8knZ1T-&si=Lc-WOyfkAVP2--R4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ✅ *Follow Oasis Protocol* X: https://x.com/OasisProtocol ✅ *Follow ETHGlobal* X: https://x.com/ETHGlobal​ Warpcast: https://warpcast.com/ethglobal Website: https://ethglobal.com YouTube: https://www.youtube.com/c/ETHGlobal _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Are you interested in Ethereum development and entrepreneurship?_ 👉 Sign up for the next ETHGlobal event: https://ethglobal.com/events 🎁 Get exclusive access and perks with ETHGlobal Plus! https://ethglobal.com/plus 📣 Want us to throw an event in your city? Tell us where! https://ethglobal.com/city _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Transcript

[Music] Hello guys. Um I will start now. So please take a seat.

Um yeah, I'm uh with Oasis Protocol Foundation. I'm a solution engineer there and I will walk you through a workshop about building private and verifiable offchain apps with ROF. the small agenda u what we will discuss now um like I will quickly go over like the blockchain dilemma and more and like why like why we build stuff what we built uh make a quick intro about oasis for for the people for didn't hear about us before or like um like need a quick reminder um and also make a quick refresh on on Sapphire or our EVM uh chain um then I will go on to what is ruffle, our ruffle highlights, how you ruffleize your apps. Um make a quick demo of that. Um um also demonstrate the new CLI commands which are probably the most interesting for people already attending um this year other workshops from us.

Um and also we'll like talk then about use cases and advanced feature what what you can build and maybe give your ideas if you didn't have already one. And uh and then we'll wrap wrap up uh um you can scan then also our cheat sheet have a QR code for that and uh yeah if you have questions if I'm fast enough then yes so quick uh back I mean like the blockchain dilemma everyone knows uh with scale costs and uh speed and stuff like that um we still like have like what we also like see still as problems is like it's expensive sure like we have layer twos Um that's is what obviously um helps with that um slow like you still like yeah you have now like with um with the newest newest change you have millisecond block times but like finality sometimes is also still not there and but like also like the biggest stuff is still everything is public. So uh especially like if you want to have more privacy um onchain or also like on on compute and verify that uh that's especially what we focus and want to tackle.

Uh what is Oasis? A quick recap. Um we are own blockchain. Uh we run a small consensus layer and then we have multiple um execution environments. We call them paradigms.

Um the one we focus on mainly at the moment is the Sapphire paradigm. uh which is a confidential EVM. Additionally, we have like verifiable compute also running in TEES and uh I will come to that later. For a quick uh recap uh what you can do in Sapphire, I still want to remind the people um if you really want to use privacy uh yeah use uh the private variables um how that that's how you can really make things private. If you have the public variables, you have public getters and like everyone can read that.

And also reminder, we have pre-ompile. So you can create random numbers, you can create private keys. Uh you can also use our signing directly pre-ompile. So you can actually sign uh bitcoin transactions. You can generate bitcoin keys or like also for substrate or for salana.

We have different signing curves. So like you can use that for for crosschain uh stuff. Um and yeah, if you want to get know more about like our blockchain and features um like we have multiple uh workshops about that uh please go on uh YouTube uh and look for Oasis Foundation. We have a lot of workshops about Sapphire. Um but what I want to talk in this workshop is more about Ruffle.

Um like we built uh a lot of stuff this around this year. Uh raffle is our runtime offchain logic. Um yeah it's uh actually it's it's funny but uh it's actually very confidential secure verifiable because like it runs all in the tees um and like it's actually managed also by our um Sapphire chain. So like you have attestations on there you have secret management which is on the blockchain. So you have this private through Sapphire and like also have this redundant um yeah you don't lose that.

So like you have kind of private storage because like a normal tees it's all mirao and like if the server goes down every data goes down. Um we uh intended extended our raffle stuff since last year that you can use tdx and uh can just deploy docker container that means like you can actually use uh more or less all languages you know to use and just dockerize uh your app. Um you have to that obviously then uh you can build oracles or like access any API external API and have like a verifiable access to this API and push this then onchain or use it in your app and you don't have to deploy this on the whole nodes from Sapphire like yeah you can run it on one node but maybe you actually want to run it on multiple nodes you have a bit more decentralized uh and we manage this all under the hood at the moment you probably for the hackathon you you don't need to have like multiple nodes deployed or like have it deployed on multiple nodes. Uh but just like as a reminder like this is not like you're running a a single TE like with our network you can at the end like have this decentralized and like if one not down and another is still up like yeah you can have that and what you can do with that is obviously you can run with that like more intensive jobs. You can even get offchain data, can build oracles and like you can actually build games in the TEES like because it can get direct feedback and can just build like post like like the results of a game or something on chain.

Yes. How does this look like? Um uh here you can see uh we we have like the the consensus layer and the sapphire. I don't know if you see my you don't see my um mouse. So yeah um on the top you see like this is actually the Oasis network that's a blockchain this our sapphire chain um and you have the nodes like the Oasis nodes which run um in TES and you will they will run actually the Sapphire client but also they will run the raffle apps and like this you can actually for like especially also for Sapphire you can get offchain data over the raffle over the apps which run in a um and get chain data on chain And like this is really tight coupled.

So like you can actually authenticate onchain if the data came from the right raffle app. Um this is uh very specific for for sapphire. This helps a lot. Um but this does you should not be limited only to build with with the sapphire chain like with the as I said like you can go outside world means also you can talk to other blockchains. Um this means like you can in the simple case if you trust RPCs you can just call RPCs in the ruffle TE and make like this crosschain um transactions.

Um obviously if you want to go more forward you would implement some light client directly in raffle to to Bitcoin or Salana or like other chains. Um as I was saying before like this apps like in channel you will dockerize your apps but then we will also roize your apps afterwards. So like you push your docker container like or more or less you actually push a a docker contain a docker file to to your um OCI. So means like to Docker Hub or like to GitHub GHCR um and have it publicly available because like we don't like uh want that you when you deploy like always deploy like your full image. Uh it makes sense that you have like repus or like if you want to deploy it then later on multiple nodes like you don't want to push it to every single node.

No, you want to have it pushed available to download that every node can actually download then your image. Um but yeah this is for docker stuff for the rawization that actually it can run on our network um you have to register the app um you will need some for test net you need some test tokens for that on mainet you also yeah need rose token for that um like it's around 100 at the moment um then you have to register the app um which gives you then a ruffle app ID which is like a neoffle app ID which is is a UID which doesn't change if If you run the app on multiple nodes like it's still the same ID. So like this is the part. Um then you will build the stuff which is actually using your docker compose file. Um and then you have to register like the updated build onchain and then you can deploy and uh in uh in the former times like you had to actually have your own node.

Um now with the with our CLI you can just uh make a Oasis raw deploy and we have at the moment for for the test net we have a default provider uh like for the mainet we have also a default provider uh but in future we we open will open this up also as a marketplace that other uh providers can give you other offers because like this at the end like is a is then like a cloud system or like um or we call it like where you actually get compute power like you don't need to run your own TE machine. Uh you can rent the compute of the TEES. Uh and we try to make it as easy as possible. Um one part is the CLI. Um but as we also released this week, we have like raw.

app for domains where you can then actually access and even deploy some templates we we have accessible there. Then yeah, let's let's dive in and I I will show you directly like how you would um deploy an app on raw. So I open up here uh VS code. Um and I have prepared a repo here. Um in this uh demo app I will have um telegram bot which uh is connected to our app in the TE and in the TE we run also a local LLM.

So means like this you can have a private inference uh with with the TE which you run locally. So you don't need to trust open AI that they use their data. Um which is um yeah for us a big use case. Um many people trust OpenAI and Tropic and stuff with with a lot of secrets uh and like personal details make terror appear about it over it and uh yeah we think this should be more private and we think like TERS are a good solution for that especially um when they then connected with H100s and you can actually run bigger models with that. Um at the moment like yes uh on the test net on our test provider we don't have the CPU support.

So like don't expect you can run very big uh local models. I I just here was for the test have the smallest deepseek model here uh running. Um and as you can see here in the docker compose file like I I have um service and then I have kind of the yeah connection telegram bot with a telegram API running. Um interesting here maybe is that uh yeah I have also like the token as an environment variable uh which is set as a secret. Um for the Mac users, you should always uh be careful to uh use uh the platform parameter and like this here like the volume stuff is actually for the demo I have here not relevant.

But uh if you actually want to use like uh more advanced feature with raffle means like you want to create new private keys uh if you want to send transactions which are verifiable on sapphire um you would uh actually integrate the volume because like with that you will have the rest API uh which which we build and you can see this all features for the rest API in our docs. Yes. Um yeah. And how to start like I will just try to show it as as as live demo. Um how you would uh now from scratch deploy this.

I one one obviously I still also have to mention uh I already uh pushed the image. Um I don't know if this would be feasible doing now like with the internet here to actually push the push the image. Um so I I I will skip the step of building and pushing the image to um to my um kind of Docker Hub or like the GHCR and we'll do just the Oasis stuff. It means I will actually use the Oasis CLI and we'll init the project. So this this will then create the raffle YAML file.

Um you can give that any name you want. Um what you should look at is u actually uh what machine sizes you actually configure. At the moment, we we still have like a very small um uh default size, but like if you want to build bigger stuff, you you want to ramp up the memory. And like also like our default um provider um will support like um two or uh four um uh gigabyte of uh RAM. Um I will also use C2 CPUs.

And you also want to up the size of of of your machine. Um we will have in the CLI if you will deploy uh your app with uh not the correct size we actually will have a validation to to look like that at least like the docker file you want to build then on the node uh will fit in the size. So like before we had another heritton like people put very small uh ruffle sizes and uh didn't notice that it was too small. So like we actually have validation now for that but like I I mentioned this already here that uh you don't uh um run on deploy only in that but you already see that then here so I adapted that uh so this is the in it. Then the next thing is the create.

The create will actually register your app then onchain. That means like in this moment you need the 100 test uh to register this onchain. And if you actually want to later kind of remove that because you don't want to get always to the faucet or like the faucet is overloaded, you can actually also uh remove your your your Oasis deployments and you will get back your Honda test. So like if you want to restart and want to get another uh a raw app going like you can get back the 100 test and do it again. So now we see like the the app went through.

I got now my e my raffle app ID which also got updated in the in the raffle yl. This will yeah your e app ID which we also use uh like for checking in the in the smart contract. Then the next thing is uh you need to build that uh if you're on Linux uh you can just use the Oasis raffle um matching the human body. Yeah, for uh for Mac you need to use our u docker uh CLI uh to actually use the ruffle build. The the part is like that there are some libraries we we use for for ruffle building which are not uh directly available on Linux on on Mac but they are on Linux.

So but yeah it's it's it's just one line command. It's also in the docs um which helps you for building it. This will build the doc or file. Um this is uh like if you have your own node you can just push this or file then and uh start the server with this or file in your config. Um this uh is um will be like done like that or like if you deploy this or file will actually be be deployed.

This should be done in a second. inspiration. Go back here and in the meanwhile do something else. Um, I need a a demo to I need a token from from Telegram. So, uh, I already created a new bot.

Um, I can just use uh this token from Telegram and I will use this token.

Yes.

Set this as a environment variable. do Oasis raw update with it. And then the last step is deploy.

This deploys now uh to our default provider the the app and we can maybe do this in the other again. So at the moment like there's no machine yet because it's not deployed. As soon as it's deployed uh I will get a machine here.

Okay, that's probably was a slow internet. I will um then skip that and go quickly back to the slides for the last uh two slides.

The answer is no because yes.

So as I said like you should have our OC live for that. Uh you should have docker installed for doing that and you should go to the faucet and get test token. If the faucet doesn't work, come to our booth or or tell us in discord then we can send you some test tokens. Um and to the new uh CLI commands uh like many people are complaining that they cannot get logs and see if they deployed something. So you can do now with Oasis machine logs you get the get the newest logs.

You can also then if something uh broke you can stop or restart the machine. Um also like if the uh you need some test to keep the machine running. So um like uh if you need to then top up the machine you can use the command.

I think I'm uh on time limit. So uh I will just put the documentation uh that you can scan the our cheat sheet. Um so uh and then it is it [Music]

Automatic transcript — names and jargon may be misspelled.