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

Loading player…

Build verifiable offchain apps powered by stake and Symbiotic!

ETHGlobalTue, Dec 9, 2025, 12:00 AM

Join Ivan Kotelnikov from Symbiotic for a workshop titled "Build verifiable off chain apps powered by stake!", featured at ETHGlobal Buenos Aires 2025! _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🇦🇷 *ETHGlobal Buenos Aires* This workshop is specifically for ETHGlobal Buenos Aires, a 3-day hackathon held November 21-23 at the Centro de Convenciones Buenos Aires, 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 New Delhi 2025 playlist here: https://www.youtube.com/playlist?list=PLXzKMXK2aHh76O7FfAHPJkZcqTIfYpoyf _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ✅ *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

So my name is Ivan. I'm from Symbiotic and uh for this hackathon we prepared something like unique. It is called relay SDK and uh today I will tell you what problems does it solve, how it works on a high level and then we will go through the like sample project implementation. um that we actually like hacked it today's morning. So but but it it it does work all good.

So we hacked it to ensure that you can also hack it during the weekend. So [clears throat] yeah. So let's start like with simple stuff like what's symbiotic relay and to answer this question we need to first like get back to fundamentals. So what is staking? uh right we all know like this simple mechanics you stake and get rewards but there is something important that that that happens when when you stake.

So basically when you stake you uh elect the the you elect the operators who will run the the actual the network and you elect them with uh with real value real assets. So when you put some money into the staking vault, this this this money sits here and uh ensures that uh network operates properly. And how does it how does your money ensures it? In two ways. First way is that uh when you stake to some operator you delegate uh your asset to the operator and imagine like everybody is doing the same like everybody's picking operators to delegate.

So that uh then you end up with so-called operator staking table or or we call it validator set and basically uh with with your stake you vote who will be included in that set uh and effectively ensuring the the network votes uh the network works properly. Uh the second way how how the capital works here is that optionally it can be slashed. So uh the slashing means that like all right we have an operator with stake but let's imagine it oper it's it it misbehaves it operates in in an improper way for example it signs duplicate blocks or it signs just wrong blocks it tries to hijack uh users transactions or do something improperly. So after that like in case of that uh once once other like users of the system prove that [snorts] that some somebody misbehaves uh they can slap them. So this is these are two two ways how how uh stake secures such such network like applications [snorts] and uh like this is the the core fundamental like concept that we have implemented within the symbiotic core.

So what symbiotic core product provides it basically it provides these vaults that are optionally slashable. So the vault deployer can decide like if it is slashable or not. And then these vaults uh are of of different types. Some of them uh can only delegate stake to one operator. Some of them can delegate it to multiple operator in some proportions or some of them even can uh reuse the stake across different different networks and that what we call restaking and uh but vaults are vaults are good but the integration journey for the developers to integrate with this vault was poor um like all the time and um Like currently we have like I think 15 or or 20 different network products integrated with Symbiotic and the integration journey for all of them were really frustrating because they they need to figure out how to get the the the staking information from the vaults and then like build the staking table themselves.

And then like when you like I have a diagram to explain that. So let let me uh uh where is the present presenter mode? I'm not sure. Uh tools tools extension slide format insert view mode viewing. Yeah.

All right. Let let's just Yeah. Can Can you see it? Okay. Yeah, you can see it.

Nice. So let's imagine like we have a network we have uh different nodes like there are four of them on the diagram and they are all uh they all want to know if they are like if if they have right to stake right and for that they need to implement simple logic. They need to go to each of the vaults that are connected to this network. They need to to to see like figure out if if they have enough stake to to participate in the network and then once they figured out uh that they are in the validator set basically they need to start working uh like for example build blocks or approve some bridging trans transactions or like do some Oracle work work like get some like price feeds and then submit them but uh to to function properly all these nodes need to sort of uh sign some common piece of data so that this data is attested by the whole network and for that they need to exchange this data via P2P right so and and signed it with some cryptography so there are a lot of like algorithms involved in that process like starting from like deriving the stake uh uh deriving the voting power from stake which is like you have this arrow from stake to VP uh this is represented on diagram then you need to figure out if you are in the validator set then you need to sort of like calculate price and build some blocks and then you need to coordinate with other network participants to sort of compose this the the so-called quatistation which means like all the network nodes agree on something and u uh each time like each time we integrated some networks to symbiotic they had like a developer journey of implementing all of that. Um, and with relay we're changing it in a way that we provide uh the green components and you just need to implement the blue component.

So in simple words uh we have we already have volts. Okay. Uh so uh we provide so-called network middleware which allows to like which has like all necessary template code that you can customize slightly to uh to derive voting power from stake. So for example what can be there like for example you have USDT volt and Ethereum vault. So how do you calculate voting power here?

Like you will need uh like I think you will need some price oracle to convert if price to USDT and then denominate everything in USDT. This is one way or you can uh use another basket of assets for for your staking like for example if you're using only ETH like ETH like assets like say you have ETH if WST ETH vault and I don't know air ETH vault like different draft ETH world so you the these assets all are all denominated then the logic of of converting stake to voting power would be like just one to one because it is all the same asset. So you can just calculate proportional voting power. Uh so for different cases there will be different different stake to VP functions but anyways like we have a template for it. Second what we have here is the so so-called relay side current architecture.

So it is represented by the pair of u pair of uh rectangles blue and and green uh for each operator. So what does it mean? Like previously we had just like one network node per operator and here we introduced like slightly different architecture where we uh ask operators to run this relay component. Uh and this component is standalone. It is it is responsible for answering the basic question like am I a validator?

uh so do I do I have enough stake to validate and second they implement all this uh all this uh communication sort of P2P code uh to uh to aggregate like the the common signature from this like individual like quorum attestations so let's say let's say we're building an oracle network and we want to sub uh to to submit like the offchain like price feeds to onchain and uh let's say like current price is like 42. So we have a number 42 and each network app which is a blue rectangle sees this 42 price 42 then it asks a relay site card to please sign this data with my signature and uh imagine all all operators do it. So everybody sees price 42. Every four all four nodes will agree on this price by just asking the relay to sign this. And eventually like when three out of four of them or or depending on the quorum threshold uh will like will start generating this signature.

Eventually the quorum signature will will be generated. We call it a quorum atistation proof. And uh this like proof uh basically means that some data in our case number 42 was signed by the quorum of operators backed by a stake in the vaults. So that means uh potentially if something goes wrong we can slash the operators and get stake out of them so that they cannot participate in the consensus anymore. Uh so answering the the the first question what is relay?

Basically the relay is a framework for building networks and implementing the proof of stake within that networks. So we simplify it to to as simple as just like follow our uh setup, follow our sort of template uh template setup and the only thing you need to implement a network now is just implement this blue rectangle which is a network like a relay app and uh the paradigm for relay apps is that they can be built with any language. You can use TypeScript, Rust, Go or any other language. And uh they should implement like a simple like integration with a relay sidecar which provides like useful gRPC API to answer this questions like basic questions am I a validator and I need to sign something with my key and once everyone s signed the the signatures are aggregated and then become verifiable offchain or they can be verifiable on any chain so that you can implement like different multi to change use cases with that. So the stake here never leaves the vaults uh and uh only like so stake stake is sort of immutable.

It never leaves the vault. It is secure but like it is used to actually secures uh the network itself and its computations. [snorts] And uh moving to the next part of it. So we are going to like I'm not going to live code to be honest because uh we have limited time like I have only 5 minutes left I believe. But I will demo an app that we created this morning with my colleague Andre and uh so what is the app?

What it does? It is a flight insurance app. uh you can buy insurance for a given flight for for for five imaginary USD and if your flight is canceled or scheduled or delayed you get 50 USD compensation. So here we have insurance underwriters who secure the flights by providing some uh uh some capital and uh they earn from successful flights. Basically if flights if if everything is okay with the flight uh you just spend money on insurance and get nothing back.

So they earn uh but if you your flight is canled you are covered. So they spend some money in this exceptional situations when flights are are cancelled [snorts] and u yeah just type this to get access to the code. it is public and it demonstrates it demonstrates two use cases in in in a single application. So the first part of this application is like an Oracle network that testing the fly flight statuses. So we have like mock API but and uh we sort of have uh some some some network of of of independent operators backed by stake that uh attesting this this flight statuses so that like we have stake secured stationation of flight status for example it it gets canled.

So like independent like Oracle operators like a test for this flights and uh we have like insurance underwriting mechanism uh implemented with symbiotic vaults and this is the second part of the project. They're kind of independent. So let's uh run it. Actually I already have all my containers running and uh this repository has a simple read me that that if you followed these steps you will get the same result. And uh we have a front end simple UI for it.

So, uh I have two pages here. First, first is provide coverage and second is buy coverage. So, let's first ensure that we have uh some coverage in our vaults. Um I have three airline companies and uh for each of them I need to to provide some some capital basically to uh to be able to uh repay the the these insuranceances [snorts] and uh if we will get lucky enough uh I will now all right so I need to fill up all all of these vaults. So this is done once uh for for all users and now we are we are uh switching to the user mode.

Uh so now let's imagine I'm a user and uh I have this flights table. Uh most of them are already departed. Let let me let me search for oops I need to approve uh USDC. All right. So I need to search for some uh flights for for which I can buy insurance but I'm not sure if they are there.

Oh yeah. So I can buy for example for this one. I need to hurry up because it closes in 20 seconds. And uh let's see like there is a like we set up everything in a way that there is a 40% probability that flights get canled or delayed. So with 40% probability I will get my payout.

But uh we need to wait like a few seconds for for for the result to come out. Um,

so this one is going to depart. I'm unlucky. Uh this is fun because uh I need to wait and and gamble a little bit and I'm not sure like uh we have only five or four minutes left for demo and uh yeah I will buy the like I right now I need to buy like all tickets to to increase the probability that some of them will get delayed and I can demo basically if in some case I will not demo it then um you do it on your own. Just launch it and and play with it. So, basically, go go and buy everything.

So, I purchased this. I purchased this uh and yeah, I'm just I'm just waiting for some flights to be delayed now so I can get my insurance. [snorts] That that can take time. Um yeah. So while while we are waiting I can tell you a few words about like how this entrance is implemented.

So basically we have a separate vault uh for uh each uh airline company and uh uh the the people who stake in this vault are called underwriters. So they are like would it be airline company or would it be like an insurance provider who puts some stake and then like this these vaults are with using a relay uh SDK they are connected to this Oracle network that that I spoken before. Oracle network is also implemented with relay and uh so basically the glue code connects everything together so that when flight gets delayed the oracle tells about it in a blockchain in in this in the in this insurance smart contract and then like once we have attestation of of uh some flight delayed then we sort of run insurance logic and uh u and um repay pay a user and allow him to claim his uh his premium and um yeah uh for now I don't see claim buttons yet so that mean this is unlucky demo so we notice like demo effect live but uh I still I still have 2 minutes so I hope some of the some of the flights will be cancelled yeah this one is departed unfortunately ly five 4 seconds and I will know if this will depart or not. For some reason like you see like some of the flights are delayed but I didn't buy insurance for it. So I cannot claim my premium unfortunately.

[laughter and gasps]

Yeah we again we have built this up like in three or four hours but it demonstrates how fast you can integrate with relay. Uh these are mock flights. This Yes, [laughter] these are mock flights and not Oh, I will buy this one. Anyways,

yeah. Yes. Yes. All right. Yeah, we are lucky.

One I have 1 minute left for a demo. But there is a flight called Beta 465. It is It is delayed, but I bought insurance for it. So now uh like let's see I have I'm a millionaire. I have 996k [clears throat] of of dollars.

Uh so almost 997 and let's claim. So I'm going to claim this one. And let's see how much it will increase my balance. Yeah, I get $50 back. So I spent five on insurance but my flight was delayed.

I get 50 back. This is a use case. Yeah, that's all. Thank you.

Automatic transcript — names and jargon may be misspelled.