# CI & CD in web3  — ​Nenad Vitorovic | Tenderly

- Channel: [ETH Belgrade Community](https://streameth.org/eth-belgrade-community)
- Date: 2025-10-09
- Duration: 14:48
- Topics: People & Blogs
- Watch: https://streameth.org/watch/yt-zPjXn62fdJw
- YouTube: https://www.youtube.com/watch?v=zPjXn62fdJw

## Description

Recording from ETH Belgrade Meetup #16

## Transcript

okay we're on hi everybody so today um I'm going to talk about this again uh if you've been to eth Belgrade you probably uh might have dropped by and saw the first version of this and of course how much is it 8 10 months later of course we did we did some more work so so there's new stuff that I want to show so my name is nanad I'm Lee derel at tenderly this is my Twitter uh and telegram hook so um if you want to get in touch go ahead and uh before I jump into the actual topic uh everybody here familiar with tenderly yeah okay some hands not okay I'll just go briefly about what we do and uh what we're actually building so we are the company that builds uh development tooling and infrastructure for various phases of development of of daps and the first uh chunk is stuff for develop M and staging so that means that we have infrastructure forking infrastructure of public networks called virtual test Nets we got the visual debugger that's what we started with we got the transaction uh very very detailed transaction overview for analysis so that's the first bucket let's say the second bucket is security and monitoring and we have couple of things there the first thing is proactive security I like to call it that simulations allowing you to get predictions of what transactions would do if they touch touch the network without them touching it and the second bit are alerts and web three actions which are like reactive measures alerts will send you a ping uh on telegram or pager Duty or or trigger a web hook even if something happens on chain let's say an event was emitted and the third parameter is greater than 500 of something so you get that sort of thing and uh web three actions well same but it runs code in response to something happening on chain and the last bit we're also a note provider so everything that you see in the UI you also get uh through RPC so that's standard RPC methods but also the simulation RPC methods gas estimations um some sort of gas predictions um there's 4X directory for decoding undecoded stuff from chain and and so on and so on so a bunch of things in there but let's get to to the topic and the topic is CI uh this is a really slow CI raise your hands familiar with CI Full House okay uh do you think it's valuable Full House is it easy I see in web 3 oh okay okay there was one hand shy and then it shied away okay okay so so it is it is something useful but you know how can we get it but let's uh move it up how about continuous deployment and staging in web 3 does that work do you do you feel it's valuable for for the stuff we do I see yeah okay five s six cents okay cool is it easy I don't think so um but why do that there's this thing they say integrate early integrate often uh if you want to avoid integration hell because if you wait for the Big Bang it's going to be a really big big bang and especially it sort of with without doing these things U some stuff get slower uh compared to having them um and at the balcony over the cigarette we had a little conversation and uh Natasha said the industry is maturing and there was another big word but I'm not going to mention it now uh yeah consolidating that was the word but anyhow as the industry matures and innovates like what are how do we mature and innovate the way we approach building daps so so there's a couple of areas where that needs to happen that's methods and approaches we have then there's infrastructure what do we use to do that kind of stuff and lastly the tools that uh are necessary for that and for for the methods well there's composability of blockchain that we all love so we can integrate third party protocols fairly hope we need to integrate them uh actually fairly easily but uh that's not super easy especially when developing those contracts uh staging and beta testing that's also a big thing and cicd so you can sanely uh push your stuff and not worry something breaks but also build on top of the stuff that others have built when it comes to infrastructure sure so the the maturity that we seeing here is well we we have a lot of rollups now but how do we replicate all those rollups if we if we need uh to have them included how do we get exact gas estimation and how do we make it Team friendly so it doesn't slow down the team because that's what we want and the tools well you need stuff apparently for debugging apparently for simulating and at some point you need pseudo mod mode you need to go in and change everything single thing something that you cannot really do on an actual network but When developing you want to shake things uh on on a deeper level so when when we think about that let's just check another check out another thing and that's the the flow of work that's happening as as we look at these different components so we have Smart contracts and they're pretty much first class citizens let's say so so this is where the core logic is but to reach the user there there we need to have a bunch of other layers in between so so the UI gets the uh the uh this this end over here and everything sort of flows into into the UI into uh the thing that our users will be using so to build that of course we need to have all that work sort of visible and integr here and U everything propagates from left to right apparently and it this sort of shows how difficult this problem is of course there's a little bit here there are bridges but they're they make things even more complex so CI and CD aren't easy for for these reasons precisely so for this we need right infra and right easy setup and of course coming from tenderly I will suggest to use Virtual test Nets for this and when it comes to infra um I'll just briefly uh talk about virtual test Nets here so if this is mayet and I want to make a fork so I can do some work uh but I also want to have uh access to the entire State that's available on mayet that's sort of easy and you can do that like locally with your hardhead or or Foundry nodes uh probably Foundry but then comes the question how the other people in the team build on top of those smart contracts and the idea here is that you would stage your smart contracts for other developers so they could access that and um simply this becomes like a shared infrastructure for your entire team but if I'm building a UI then you will see a lot of stupid transactions of me trying to make something work and if you're building subgraph well you will not like me at all for that reason because there will be a lot of uh crappy data in there so one very simple take on that is you can Fork to Fork so that's staged but let's make some isolation between each other so we don't you know throw throw garbage around and uh make each other's lives harder so in that way this sort of helps the team collaboration aspect and again this is infrastructure so it's not really doing anything but serving uh as as infrastructure and this is like the the the more important question for me and that's the easy setup so how can we make all of these things work so we built a little GitHub action that GitHub acual module how how do they call it uh it's on the marketplace and it's the thing that we're hoping to make the setup easier and this is the easier setup uh so this is a little part of uh a yl file describing a GitHub workflow and yes here we have it's using that tender vet GitHub action at version 105 and what this thing provides us with well here's a couple of thing it's easy foring and maina data access so this is the thing that I need to add so I can get uh Forks of mainnet and base mainnet so ethereum mayet base mainnet and it's an array so in a single step of your workflow you can get uh Forks of 50 networks provisioned uh for your workflow now the next thing you need uh to fund accounts to be able to do stuff so of course and when I said we need pseudo mode we need to be able to do U all sorts of things well we would like to set balances to uh various accounts and this becomes pretty easy uh with a little shells uh fixture that we added so it's a little function you give it the RPC URL you give it the wallet you want to fund and you say how much you want and there you go you get it um in the background it's actually using a custom pseudo mode RPC let's say that virtual test nets come with so this is pretty much a cheat code that lets you fund a wallet with a desired amount of eth so there's that and there's also if we want to Stage it for some sort of testing we need to have some sort of public Explorer available and this becomes pretty easy with you can control if you want a public Explorer or not with one flag but you can also say I want all my source code to be visible or just the ABI so interfaces of Errors functions and logs or you can say none and nobody sees anything everything is uh obscured so with the public Explorer you get this you get a transaction listing actually anybody who's testing your daap can access that you don't need they don't need to have an account uh it's it's sort of like um let's say slim down version of ether scan or our transaction overview so there's that and the last thing that's super important is artifact collection so if I'm deploying 50 contracts how do I propagate those addresses to the UI to the back end to uh to the subgraphs and so on and so on well it's uh it's files so that's built in and if uh you you want that the plugin can do that for you just push and complete true and it will collect all the hard head or All The Foundry artifacts with addresses pointing to where it is and it will do a little commit here and you can see the infrastructure and it's a big file so so it didn't fit all of that but there's also individual contracts recorded as well and this thing is available on ghub actions Market if you want to give it a go um and that would be it are there any questions do you have any questions yeah are there some docs or videos showing how like different use cases for people who think it's interesting but want to see like how they can apply it uh docks yes there's a there's a doc with like basic step-by-step guides and all this was released yesterday so there there are no videos yet this is the first video about it so yeah do we need to have some paid tenderly account or it is available as a free tire yeah I'll just repeat for for the video do we need to have a paid account or it's available as a free tier well for something like this you would need to have uh a paid account because on the free tier test Nets can take up to uh 30 blocks or something and then then you would need to have uh a paid account so there is option to try and yes yes there's a free trial as well yeah should developers delete the old like Forks after they finish the like work features so so the question is should developers delete old old Forks uh I think there's also a limit to the number of running Forks that you have and there's also an API to pause the the test so the RPC shuts down you can keep the the data of course historical data if you need it for some reason uh and uh you have like a quot of I don't know how many networks Forks you can have and this is actually interesting for if if you if you're using hardhead and if you want to use this for CI so just for running tests uh then in that case after running tests it will be automatically paused if you're doing a deployment if you're doing staging well it has to be running right okay any other questions all right thank you very much
