Liberate Data Week Hackathon - Day 3 - Bee Day
Swarm·Sat, Oct 9, 2021, 12:00 AM
Liberate Data Week is a Fair Data Society organized hackathon happening from 8–14 February 2021. Ethereum Swarm website: https://swarm.ethereum.org/ Fair Data Society website: https://principles.fairdatasociety.org/ REIMAGINING THE DATA ECONOMY BY CREATING A FAIR, DECENTRALISED DATA LAYER Those who are not yet familiar with the Fair Data Society (FDS) initiative should check out their website, but in short, FDS is an ecosystem initiative working towards a self-sovereign data commons, guided by the community’s ethical principles. As Swarm was once incubated in the Ethereum Foundation, Swarm is supporting Fair data society until it can stand on its own feet. Fair Data Society aims to connect the wider ecosystem and is technology-agnostic, connecting the “tech with social” while facilitating discussion around the ethical shared values of the ecosystem. Liberate Data Week is a hackathon packed with valuable announcements, talks, demos, and presentations. Each hackathon day is dedicated to a specific topic, each relevant to the Fair Data economy. You can expect many practical workshops that will demonstrate how to use Fair Data Society’s FairOS libraries and Fairdrive to build thin dApps on top of Swarm. A lot of focus will also be dedicated to Swarm incentives and tutorials on how to run your own Bee node. CONTRIBUTE YOUR FIRST THIN DAPP VIA FAIRDRIVE The goal of the event is for you to learn how to install and run your own Bee node, discuss fair data-related topics, and understand Swarm incentives and how you can benefit by plugging into the Swarm network in its early stages. The ultimate goal, though, is to bootstrap the use of Fairdrive as the go-to solution when developing thin dApps on Swarm and to build your first one at the event. A jury will vote for the best one and reward the winning team for their efforts. More hackathon rules and guidelines will be given at the start of the event. WHO IS THIS EVENT FOR? Although this is promoted as a hackathon, this event is interesting to a wider audience than just developers and Swarm grant recipients. The topics discussed during the opening morning talks give a comprehensive insight into Swarm and Fair Data Society related topics, and the practical Swarm Bee node workshops present an opportunity for non-tech people to run and install their own nodes too. Everybody is welcome to re-watch the videos of this event.
Transcript
[Music] bye closed frankly not available two three now you guys hear me or not yeah all right all right um i'm sorry for this temporary disruption i was setting up my audio and apparently it didn't work but um here we are um i'm really happy to to host this uh this day today the b day i'm going to talk all about the b note and many more things so let me get started because actually the first speaker on the program is me and i'll give an introduction talk i made some slides so we go into that yep and here we are okay so the opening talk but um before i start talking myself i'm actually really curious to hear maybe from one of you as we are now at halfway through at the hack week how do you experience it so far feel free to unmute anybody to share some experiences [Music] no no everybody too scared to share something all right um well perhaps it comes later at the end of my talk or later in the day you want to share something feel free i plan to make this day interactive [Music] so we go ahead so the opening talk well i was thinking about uh what am i supposed to talk about to open the b day and i thought let's talk about what is b like the most uh simple question you can have about b what is it and uh that's what i'll be talking about right now uh and apart from that um i will of course announce the schedule and i'm very excited about all the speakers we're having today um so about me uh today i'll be the host and also a presenter um but normally actually i'm the product owner of uh of b and i guess that's also already asked me to to host this day so i'm working together with the with the development team and making sure that the things that they are working on are what in the end is going to bring you the most value uh ensuring that they stay on track and then also hearing from you what's what you need so this week is particularly exciting for me because so many people right now i'm working with b and i'm following closely what you're all working on but also after this week if you want to reach out to me because you think something is great or you think something can be improved i'm always happy to interact with you because i believe that we're making together this uh b product right um so that's about me um and now talking about what is b because i actually think that you can answer this question from multiple angles basically b is the client software for the swarm network and if you look at b in this way it's completely different than if you look at b as a layer in the decentralized web stack and even those things i i don't think they cover the content completely because i actually like it most to look at me as a paradigm changer and i will also briefly outline what i think there all right so be as the clients in in client software in a swarm network well you probably all or maybe not everybody but most of you i think installed by now the b software on their computer but b is not the same as microsoft office in the sense that you just run it on your computer and that's it now i think b becomes only powerful when it's connecting to multiple b nodes and what do you get if multiple b nodes starts to communicate with each other then you're getting a swarm network and the swarm network basically has one task i was making the slice and i said one simple task i don't think actually it's very simple but it's definitely one task which is to provide a censorship resistant and privacy preserving data storage layer and this is what we also call the disk so may ask what is the disk so a side note because it has been already explained in different presentations but the disk basically is a distributed immutable store of chunks now chunks are the canonical pieces of data in swarm and they're only 4 000 kilobytes so it's like not too much so if i'm uploading a file or website to swarm this website that's called the website is going to be distributed along many chunks and each of those streams as is others and then with these address um we can afterwards figure out when we are requesting the websites we can figure out where to find all those chunks in its network because each address so each chunk has its natural location in the network yeah so if you look at the goal of swarm to be censorship resistant and privacy preserving then actually this goal is completely contained within the disk um i don't want to talk exactly about how this is working but basically because all those pieces of data are so small the species of data are not linked to the files on the disk level anybody can join anybody can leave there is possibilities for to resist a turn in the network uh so this this is how the disk is fulfilling the goals of being privacy preserving and censorship assistant all right so then if you look as b as the client software for the swarm network what kind of tasks does this b note have well first of all b needs to build up and maintain a healthy connectivity right so we are connecting to all those other b notes but we're doing this in a particular way in such a way that we you know write this yes in such a way that we can basically send messages to and from any place in the network so this is to locate those chunks at the natural location so as a b node you actually need to participate and you help your peers in passing those messages and we do that for facilitating upload and download but you also do that for facilitating sinking and sinking is basically the process of this natural location changing in the network as more nodes come and leave so you can imagine that that this is going to change smokes leaf and we are continuously talking with other peers to ensure that all those trunks stay at the right place so they are retrievable right and then it also has a third task which is basically to provide the incentives to ensure that individually optimal behavior is also optimal for the network so that is b as a client software in the swarm network but the other one is b as a layer in a decentralized way if you look at b from this angle it's a completely different perspective because basically what we want with b so we have this privacy preserving and censorship resistance data storage but you cannot really do a lot with that on its own yet so and i will talk about this later with victor you know presentation that basically we want b to expose a meaningful set of primitives that can be used to create dynamic web applications and really a multitude of those like we saw we've seen sauer developing ferro s we've seen bgs in which you can develop you know react applications with the all those kind of things we won't be to be possible to do i also spoke with people who are developing email client using b and those kind of things is not what b provides but b provides the meaningful primitives so people actually you can start building those things right so from this angle it's a really different product so what are those primitives that we are exposing and i don't mean this list to be exhaustive but basically it's to upload and download web pages we do it via the bzz endpoints its ens is basically the the dns [Music] the dns equivalent in the in the web3 its feeds uh its tags to follow the status of your update its pss for messaging and its spinning for some sense of persistence all right and we expose more endpoints but i don't want to talk about all of those in this talk but just for you to know that b is providing the primitives i listed some and then b as a paradigm changer well i don't have any slide under this because i just want to talk about it myself and this also ties into why i'm so excited about about b because we are really trying something something new here is something that hasn't been tried before and those things that we are trying they have the potential to to shake up uh how we are interacting with our computer computers how we are sharing information with everybody around the world and if you look at b from from that angle you can have hour-long conversations that even go very deep into philosophy about uh what is b and what other potentials will be and what kind of things does we shake up if you look at the world and how we are living basically um so that's me as a paradigm changer and if you like to have these discussions i'm more than happy to have them with you at a later point all right um we came to the end of my presentation um only to talk about the schedule um so the opening talk it's the end right now uh elat is going to talk about the storage incentives and he's not only going to talk about it but i think that is even going to give us a live demo to walk us through that afterwards victor and i will talk about the modes of communication and we're going to talk about those primitives and how those primitives are tying into the dynamic web veronica will talk about the bazaar yvonne will talk about the best practices for node operators i will speak about how to run a node and earn the gbz it do we'll be talking about how to run b with a dot node and i think that cracker told me that it would be too boring at that point after two hours of long talks to also talk about how to run b on a raspberry pi zero but he told me personally that you know if you guys are going to revolt and you really want to have this presentation we can have it um we can have it today but we can also schedule it for another time um so by default we don't have this talk today but if you really want it's still possible and yeah then at five o'clock assuming that we don't do the raspberry pi zero talk there will be an ama and i'll be asking all presenters to join the stage and we can ask uh you can answer any question to us and we'll answer it all right so then um if there are no more questions for me i would like to invite e-lots to the stage ilot are you here yes um okay how can we do the screen sharing okay let's see if your audio is working i was hearing you but not so loud okay give me a second how about now yeah it's good no all right kick it off so how do i script screen share oh yeah there it is okay can you see my screen i know so hi everyone so my name is elad we've been with the swarm team for the last three years now [Music] and alongside with rinke and victor so uh and the rest of the storm team obviously uh which are doing a great job these days so we i am basically coordinating the uh engineering efforts these days and i wanted to give you a brief uh kind of uh entry point in the small tiny demo um now with maybe an open call for contributions also so um basically uh to introduce postage stamps uh for those of you who want uh more in-depth information about this are welcome to scan this qr code to have a look at rinke's talk about uh disformance and incentivization layers um from our last event postage stamps basically they draw heavily uh not just their name but the whole concept draws from the uh real world uh uh postage stamps uh which basically uh uh are the idea is that they are not profitable on their own but the processed end mass they they are profitable for the post services to to actually uh process and deliver so same works in swarm uh they are used for spam protection and to provide storage guarantees on swarm uh i won't go into too much technical details about this uh because i think the rink has talk is much more informative so but any other any questions you might have on this also you could uh direct towards uh victor enrique on the uh ama and fire such uh chats that we have um so basically we have a storage incentives branch on github that's where everything's been happening recently so it's uh being regularly worked on recently so uh you're welcome to track our progress there and uh for those of you brave enough to check it out and try to run it so um you will find uh new api endpoints which are being added and one of them is the following one which is the postage stamps purchase endpoint which is the one which i'm going to demonstrate but not just and basically that is the uh posted the the the api endpoint we will be using to buy postage stamp on swarm so the idea is that every chunk that goes into the network that wants to that should have persistence guarantees should be stamped so once our storage incentives are basically released it means that uh in order for you to um [Music] to have some story the persistence guarantees you must buy a post-it snap and attach it to your uh upload just the same way you would attach a postage stamp to your envelope minus the licking part so basically as you can see so most of you are probably wondering how does this thing even work so basically you buy a postage batch and that batch can stamp a certain amount of chunks so uh an important part to note about poster stamps is that they don't work for small so it's it's not really worth your while to buy small postage stamps with little uh that can cover a small amount of chunks but they are imagined rather as a some sort of like a subscription service that you would purchase in order to guarantee a certain amount of data for a certain amount of time um and you could reuse that across different uploads so when you buy a post-it stamp you would basically supply a uh an amount which is paired chunk and the batch depth which basically means which is used to calculate how many chunks more or less you could fit into that batch so let's dive into that for a second so batch size would be uh 2 to the power of the batch depth and assuming a uniform distribution of chunk addresses and so if you use batch depth 16 so you would get roughly around 260 megs and in in nominal chunk numbers but it does not necessarily reflect how long this content will be persisted when we talk about storage incentives in the long run um and this is used with the uh to to be to with the um actual uh amount per chunk um not to get into the uh calculation of also how um how to calculate uh basically uh uh chunk balance uh over time because it's a bit more complicated but uh just that you understand that the amount that you uh that you query the endpoint with is not the amount per whole batch but paired chunk and that is uh basically if you want to to price that so uh it would be the pair chunk amount times the 2 to the power of the batch depth so this api is expected to be preserved in the long run and contributions for the ui are welcome and you are welcome to hit me up on whatever means you would find uh usually matter most is the best uh um you continue because there's one question from uh lin in the meantime uh so he's writing uh stamps are only there to ensure distributed storage how does this interact with global pinning uh with the letter stamp would be unnecessary question mark unless we want to have some assurance for remote storage as well so how does you know how does the how do these stamps tie in global pinning and persistence uh i actually am uh so it's true that theoretically for postage stamps uh to be persisted with so with global pinning so if somebody requests the chunk you could theoretically deliver it and you could theoretically let's say assume that you could deliver it without a stamp but global pinning is also meant as a kind of a service to uh to support uh re-uploading in a way that uh the the node which is pinning the chunk [Music] would detect that a chunk is missing therefore it would try to resynchronize that chunk into its corresponding place in the network and in order for that chunk to be uh re-synced into the uh its place in the network then it means that the trunk has to have a postage stamp so in the long run um even compounded with global pinning then i would say that you would need chunks to be stamped um yeah with glove opening too so i hope that that answers the question yeah all right thank you so um there is a modest cluster uh modest indeed just five notes which are running here but it will be enough to demonstrate what we want to demonstrate and so uh for those of you checking out this branch uh by the way it will not be compatible with our production cluster so i hope that we can expose a test net for this uh soon so people can actually start interacting with this so stay tuned so one of the changes which are what you're going to see when you run a node with from on this with this version is that it basically so you see here the checkbook deployment that's fine and then you see this updated block height to whatever and there's an off by one problem here but uh so basically what this means is that we are constantly trailing the blockchain state in order to follow uh events from the posted stamp contract so once you buy a posted stamp from the contract you generate an event and the nodes are basically listening for all of these events in order to verify which batches are uh valid and their pending balances and so on so you will be seeing all this stuff in your terminal every now and then so um this is when the node is initially syncing and when the node is initially syncing it will not bootstrap itself so it will just start uh all of the components and services once it's completely synced so bear in mind uh it shouldn't take long about a minute or so um yeah okay so um whoops [Music] i'm seeing a black screen yeah me too uh can you hijack this session somehow and uh whoops stop share whoops now something is happening that was a bit strange let me try again and now now i'm seeing black but yeah this is good [Music] hackers always getting in the way um okay so basically what we wanted to do is to buy a post-it stamp from this new endpoint stamps and that's the way to do it for now it might take a few seconds because it actually waits for the transaction to appear on chain and now another point to note about this is that uh because we trail the blockchain uh tip of the of the most recent block height with a certain uh with a certain delay so uh you basically are advised to not immediately use the uh the batch ids and in the future you will also uh have to keep in mind that if you want to top up a batch um then you have to take into account this delay so uh it's just a few block heights so not not a big issue but you can't wait for the last minute and uh you also cannot use the batch immediately because then some nodes maybe haven't picked up this new batch id and they uh will think that this batch id doesn't exist and then it yeah might be a bit embarrassing so this is our batch id and just recap you're not what you just did you called into the blockchain you sent a transaction via your b node to the blockchain and now you have this batch id and the battery you can use to attach it to upload right correct yeah all right and that's what you're going to do right now yep okay so here we have a small file and i would basically just upload it now and note that um you have to attach this batch id as a header so here comes this a bit of a ui complexity that some of you might already uh feel and so this is why also there is this open call to basically ask for people to help us out with this so it would be nice if we have some some ui where you can actually purchase this stuff and maintain visibility over how much whoops yeah demos live demos so they always work out uh so let's try with the other note i might have exhausted this one [Music] already so yeah the ui complexity is there and then we it would be nice if we can actually get some contributions there to help us out with this yeah so while we're waiting basically what you're asking for right is that the storage system this branch it will expose these primitives where you can purchase batches and we can you can attach them to the uploads and basically what we would need is to have some kind of glue code that would sit on top of me that would purchase the batches uh attach them to uploads kind of manage all of these right yeah and this we would be putting into into uh all sorts of maybe a chrome extension or a companion application and um now we're all seeing error 400. yeah me too [Music] this is strange so what is the difference between 500 and 400 you know 500 is internal server error and the 400 is uh is a bad request but actually this [Music] well okay one more chance okay i tried again maybe with uh with a smaller file okay so now you made a file right creating a verge [Music] and you're uploading via public nodes okay you're setting the batch id of the beds which you just purchased right it's complex now now we got it yeah okay so now you could see that [Music] we are basically so there are all of these chunks with stamps coming into the local store and you could actually also see this on the other nodes [Music] and yeah yes so i think we would have like two or five more minutes he lost yeah i think this is a yeah this is chunks which are coming in from other nodes with postage stamps and so on so um yeah that's the general gist of it i'd say um and uh yeah that's kind of it so pick it away all right um so i saw quite a lot of questions coming in in the chat i understand because this is a completely new feature even though theoretically it was announced before now we're seeing it in real life so let's give it five more minutes for questions yeah [Music] uh let me have a look i made a mess okay i can answer the ask the question of rodrigo he says um he says before he has 500 errors and then 400 like what is the difference like what do you mean that it was exhausted by the notes yeah i think i mean by the yeah by the by the balance that was deposited there so um yeah because we did some deposits to these nodes for the demo but uh i've i've used them earlier a little bit to test this out and i didn't do more uh deposits so uh yeah right so i think um doosan is putting up your hands please feel free to unmute and ask a question [Music] dushan i'm not seeing you on muting so we go to the next question is um from dan could you explain a bit more about the glue codes and what do you mean there well so in the ideal situation is that you would be you would have some sort of a back end in which you could see your existing postage stamps that you can use and how long they would last for and when you need to top them up and so on something like yeah so subscription service that you could monitor all of your ongoing data subscriptions and so on and maybe purchase new ones so uh it would be some sort of like a dashboard so to view this so we're kind of really hoping for a second layer uh solutions here that people can help us out with and that we can hopefully integrate into uh companion apps or uh or upcoming dashboards that we will have and so this is some sort of a constant becoming so we we would like to invite contributors to help us out so we can once this uh coalesces into some tangible project or companion app or extension or whatnot so we can integrate this stuff or you can help us out maybe if you are dashboard savvy let's say so and then the the the very nasty question of course uh do you have a time estimate on when this will be available on the mainnet time estimates are difficult as always so uh i so like we on on mainnet so this uh there's other things that need to happen so we would like to audit this we need to do all sorts of testing and there's still some things that need to be wired in so we need to actually wire in the actual garbage collection logic that would ensure uh the persistence of stamped chunks and the this code is already as it has been written but needs to be slowly shelved into the code business it's going to happen in the upcoming weeks um and so i would i would say best is just have a look at the branch every now and then and see where we stand and you're always also welcome to to ask us on the channel uh so we're there and we're open and transparent so you're more than welcome to ask uh i also saw a question about this um yeah i think actually we are out of time right now so i would propose uh everybody who has questions uh maybe you can write to people how they can reach you and perhaps also that we are this evening in the catholic town so people can ask all their questions um about this in particular yeah yeah so you can see my github and and uh matter most handle here get in touch and i'm happy to discuss anything so all right well thanks a lot for that uh demo a lot it's uh you know looks like you're having something that works thank you and uh i'm very curious to uh to see this uh moving forward thanks a lot yeah all right so our next guest is victor victor are you here victoria one two three i see that you're in the call yeah i mean here anymore i mean i just want to give everybody a bit of a backstory because victor actually kind of sneaked into this day um because yesterday i got a message from from michelle telling me that victor really wanted to talk about something and whether it would please be possible that that victor can have us um so victor you know of course i was actually into agenda i'm curious what is so pressing that you really wanted to uh to talk about as if you didn't know grinke yeah so my sneaky request was to talk a little bit about the different modalities of communication so basically the you can compare the feeds and pss and in general talk about chunk types and these primitives of of communication that you have in swamp and maybe have some clarity around what they are used for and what what what their special features are how they can coalesce into the solution for various communication modalities all right so you know like you say swarm is having those primitives but um what can we do with those primitives okay so so basically so chunk types can become content addressed and can be this is another chunk type which is called a chunk which you can you can basically say that they are context addressed if you want and i again i can explain what it actually means and there's also also a primitive code pss poster service on small and and these these these together constitute like basic primitives of of moving data around and there's a strong claim here that basically from this premier you can build any communication modality that you never need to to ranging from to to organize things like from from twitter to facebook to to likes to instant messaging kinds of things okay so those primitives you say uh just to recap single owner chunks uh bss and and feats i think that's what you said right and from those i can i can make twitter on swarm how that would work like how does how these primitives uh actually are so important that we can build all those things on top of that yeah so so it's just just to make sure we understand so so uh as opposed to the current web where you you basically use location-based addressing so when you when you look up a bit of context and you when you discover something you basically use with the top level domain and maybe a pass and that's that's that's not we call a contextual anchor basically a restful api let's say he's a contextual anchor so let's let's go to like i don't know my my favorite shop.com slash product slash name server basically looks up an ip address which which basically forwards your uh basically allows you to to to wear that query to a particular server that's that's the client of the server architecture in in swamp uh what you what you basically have back from from a from a name service that resolves such such contextual anchors like the dns it's already a is a content address which means that it already gives you integrity guarantees so it it it gives you the the digest that is deterministically taken from the from the content so if you change one by one context without the content and then you you get a completely different hash which means that if there's some authentication uh attached to the to the digest basically through to the dns transaction basically you the owner of dns resolver authenticates that that they they actually want that piece of content to be associated with that context then then you can make sure that there's no there's no more hacking possible so so you can make sure that what you see is what the author author or owner of that context is is intending to show you so what you're saying here is [Music] hey guys is this my computer or uh is this just somebody someone someone unmuted so i don't know maybe you can just disable all right yeah it's very very nice music okay victor i don't know if you're still here but i actually was just about to [Music] do something about this yeah and it's ruining the session yeah okay um okay victor so what you just said um is that we are having the the dns on the web too okay so we have a dns on web too and you say that we have the equivalence of uh ens on on swarm but not just an equivalent but actually better because we're having the content protection right yes degree and integrity protection all right and um takes it one one step further and allow this context to be directly uh addressed in the in the swarm network so basically you can have a convention which says that how do i find for example the latest blog post and there is basically if this contextual anchor can translate into a canonical representation let's say for example that's that's what singular chunks allow clear an off-chain of chain uh mutability that it provides so basic based on the context you you can find you can you can determine the and and you can look up that address and find find the content that the owner put there so basically you know as as as i think then also demonstrated yesterday with the kind of it's it's basically name spaces the the the swarm address space and allows for for certain parts of the address space to be owned by a particular users and these are other chunks and singular chunks is the idea that all kinds of conventions can translate with this contextual uh attributes into deterministic address and the feeds feeds are basically just a special case of that in the case of feeds like the contextual information also specifies that some sort of frequencies or allows allows the specification that that there's a there's a sequence of updates updates or version particular asset or resource so basically uh versions of of a data set or updates to uh to to uh to us like status updates in twitter or or or some something equivalent or basically just uh indexing by time and then the new new b release actually contains an endpoint that allows for feeds to be to be generated and basic basic sequence based feed indexing to to to implement like this this kind of thing so um we're having normal chunks with ens uh and we're having single owner chunks with feeds i think talking about messaging there's like one primitive which is left right yes so so it's a pss which is if you like it's not really even a primitive because it's it's basically just a special case of of a content address chunk which is used for a direct push because how you can use feeds for example for messaging is a is a is a is an interesting question but for example you can use it for for two-way communication by having an outbox method so basically this this contextual language that i said and also specify that this is the this is the way you can find my my next message uh in in in into a communication channel and and therefore uh you know the past in the conversation can generate these addresses and get get the next message in line so that's where you can you can use feeds for for real-time messaging but what what you cannot do needs is is push push me push media basically push notifications so so feeds for feeds you have to have pre-agreed convention and we still have to pull the the chunk to chunk or the content the the descender put the network but with pss you you basically allow the note to directly receive a message uh by uh generating a chunk that falls into their neighborhood and basically use the the same upload protocol that you use for for for normal chance content to to to to to transfer that message to the neighborhood of the recipient and since this institute a cryptographic structure that makes it completely uh indistinguishable from a from an encrypted chunk it's it's kind of zero like messaging so basically you can send you can send a push um a message to a node that that uh wants to accept it wants to receive it and once when they receive a chunk they can try to open it and and then if they find it it's a message for them then they can dispatch it to the to the client that subscribes to the topic to your messages so what is what it basically allows is is uh is unsolicited messaging to a particular party so if you publicize your your uh your listened topics and in your your neighborhood then anyone can send you send you a message so what it allows is basically sending you messages without you knowing the sender or without accepting a particular sender to send you a message so it's basically an inbox which i can open right and everybody can can write to me and this is the push concept which is not possible on feeds and normal chunks right because then i actively need to look for that whereas here i can get a notification right correct and that's why that's my piece this is eminently suitable for to to for initiating contact so basically there's an initial message or handshake to to to start to start a communication channel okay to implement for example the different handshake of the signal protocol for example that and then once you establish this initial contact then you can basically establish a convention to to an indexing convention that allows you to exchange further messages in the communication channel through feeds to sing okay so victor i i hate it so much uh actually to only have a 15 minute conversation with you about this um but i really want to ask this last question which is can you please explain me how you think that that this primitives right we talked about single honor chunks and about content address junks and enos and and feeds and bss how you envision that uh that these primitives actually going to provide the the web that we are accustomed to right so i don't expect to be honest a user to be manually signing pss messages or to even know about feeds right but still a user would want to use twitter thank you for the question i mean it depends on what user of course at the moment is basically targeting savvy developers with with the vibrant uh second solution with these primitives but to answer your question a bit more concretely in the book i envisioned and they described various uh in particular i described how you can use speeds and with the assets together to implement the signal protocol together with the step and shake and show the key exchange and also provide some some extra uh kind of not primitives but there are extra cases where where i use singular chunks and nps's combined to for notifications like this there's push notifications for for certain uh types of uh media and and also right for example envelopes and all kinds of interesting concepts basically notifications and the communication so basically what you're saying is that uh right now we don't envision end users really to be directly consuming this but i think here we are in a call with a lot of hackers and it's probably very important for them and i think that's also why you wanted this conversation is to help people kind of to to let them know you know why these primitives are such in that way so that they're also being used in the correct way right by anything building on top of swarm yes no too close so one is one is that yeah yeah so i wanted some clarity on because it's often again mistakenly assumed that pss is for real-time communication between and feeds are for something different like for example as a sub sub blockchain ens solution but in fact it's it's wrong and those can be used for almost real time of course is influenced communication main difference is that pss unsolicited anonymous initiation of conversation to to a publicly known identity while my feeds can can be used as as as like as as a kind of feat construct or basically construct it translates contextual language to to to addresses in this world and therefore it's kind of they have worse values and the second closing remark is that maybe a more pragmatic one relating to the bday is that that you're asking whether i expect end users to use it i mean i kind of do so so the current feed implementation is maybe a good use case which can already be used by end users and then at the same time it's kind of a relatively small additional uh it has a bit of additional implementation on top of the the the signature primitives physically provides a special feed lookup and sequential hit creation so you can already use it as an end user to to to to basically publish uh subsequent versions or updates to your to your website or that's that's basically maybe in the the most uh the clearest use case for all these fields so so i already uh envisioned end users and well you don't really have end users here i mean you don't talk about end users really but i can not so not so deep into dev people can already use this and this endpoint for something really useful so basically updates to uh to the website without interacting with the blockchain okay um well thanks a lot victor um i hope you have the feeling that you could express right now what you wanted so dearly to to express is there a way how people can reach out to you if you have questions after this uh fireside chat for you personally feel free to shoot any questions [Music] and of course i might be part of the ama so have any questions at the ask me anything part of the end of the day okay imagine there is one right yeah great well then thanks a lot victor and uh it was a pleasure talking to you in this way um then we're going to our next speaker and we are 15 minutes uh after the schedule i think because of the disruptions and and the demo uh it took a bit longer but um i think it's okay uh veronica are you here hey i think you're still muted but um yeah so what are you going to talk about uh cool so uh today i'm gonna be talking about like um the bizarre like the actual buzz token and how it works and how the um actual bonding curve underneath uh it works so i just need to be able to share my screen real quick um and then we can we can get started okay well go ahead stage is yours i can't share my screen which was probably for the best that's okay lovely okay cool i'm gonna share the screen lovely can you guys see this okay perfect um all right cool so today i'm going to be talking to you guys about the uh the bizarre and how it actually works under the hood um as well as the bonding curve and how the whole ecosystem kind of fits together um so we're going to be specifically just going over like what is a bonding curve in case you're not super familiar we're going to go from pretty much scratch uh there's a little bit of math don't get too intimidated by it i promise it's it's most the time not your problem um and then actually going through the interface like how do you actually interact with the bonding curve um as well as the eath broker which is just a wrap up for the bonding curve um and then we're also going to go over the admin permissions and risks and what happens uh in the emergency functionality situation uh just to give you like a real holistic overview of what this ecosystem does and is capable of right so straight into the bonding curves so a bonding curve really is just a mathematical relationship between the supply of tokens and the price of tokens so it can be really anything to keep things simple we're just going to do a simple easy exponential curve so the price is equal to the total supply squared right super super straightforward before we can really talk about a bonding curve we need to have the same terminologies that we're talking about the same stuff right so the bonded token in the case of a bonding curve is the token that the bonding curve is either minting itself or distributing so in swarm's case the bonding curve is just distributing these uh sorry it's minting these tokens and then the collateral token so this is the token you're actually paying for your bonded token with in our case it's going to be die the spot price is the price of the token at a specific um [Music] at a specific supply point so this one supply so it's just for one token the spot price so it's like the current price then the cost is obviously how much collateral token you need to give to buy an amount of tokens so it's the area under the square under the curve for the two supply points that you'll be creating and then the total supply is how much how many tokens are circulating this is different from the supply cap which is like the maximum number of tokens um that the curve can have right so how do we actually work out the cost in a bonding curve so we ah here's our little simple equation right y equals x squared so this is what we've talked about earlier where it's the price is equal to the supply squared so for the first 10 tokens right we're just working out um the definite integral for the price up until the total supply plus 10 because we're going to buy 10 tokens so the price works out to be 3 30. so you can see this area is not that big nice and easy so it gets a little bit more complicated when we're not working out the price from zero right because now we need to work out the area under the curve between so we're going to buy another 10 tokens right so what we actually end up doing is working out the area under the curve to this point which is supply point b right and this point supply point a and then just subtracting them from each other so that's the easiest way to just work out this area under the curve and then the area under the curve is actually the cost that you're going to be paying for these tokens so in our case right this is going to be 2 300 so just to quickly go over the math because obviously it's not super important but it is really helpful to understand so here's our curve um and then if we integrate it we get this beautiful thing you don't need to worry about how to do that it's just some magic math stuff uh and then all we're doing is evaluating the area under the curve at supply a and then at supply b and then subtracting the difference right so here's that equation just like simplified a little bit um through some fun other math stuff all right so it's it's it's really not too bad so all you're working is working out the the supply the area under the curve between the two supply points so just to summarize um the the cost is to to work out the cost to buy tokens and sell tokens you just need to integrate your curve equation uh and then work out the area under the curve between the two points um something really important to keep in mind with solidity is that there are math limitations so you know there's underflow overflow there's no decimals really so there's a lot of stuff you kind of have to work around um so bonding curves can be a little bit complicated don't worry we did the small bonding curve brilliantly danny who is not here with us today um actually wrote the the math for the curve um it's it's a lot more complicated than our very easy example of a exponential but um we're not going to get too much into it it's not necessarily too important for this right so actually interacting with the curve and the broker so when we were designing these smart contracts there were a few key things we wanted to make sure that the ecosystem had from start to finish right which was transparency risk mitigation and security so what we mean when we say transparency is like readability understandability like how easy is it for you to understand what's happening so there's really good documentation around this repo so that you know even if you're not necessarily a super technical person there's like documentation that you could read to understand what the functionality is doing without necessarily having to read the code directly then in terms of risk mitigation this you know smart contracts are immutable so if you want to upgrade them or have any kind of uh elevated permissions functionality you need to have some notion of an owner so with risk mitigation what we're really trying to aim for here is that the owner has there's limited risk that can happen with an owner so just mitigating how how much damage a malicious owner could do really um and then security which is obviously security you know these were written with the the industry standards uh and best practices and all that and also the contracts um have gone for an audit they actually just got back this morning from audit um so very excited to to get that audit pushed through so the contracts are ready for an actual mainnet deployment all right so this is the ecosystem um i'm gonna go a bit slowly here just so that we're all 100 on the same page because it is a little bit confusing initially right so there is the buzz token contract which is the actual like eoc 20 token contract then we have the buzz curve right this is the bazaar and the buzz curve has special permissions on the buzz token to allow it to mint tokens and burn tokens on the buzz contract right but like a general user can't do it um so if you want to buy them you need to go through the buzz curve then we have the eth broker so this pretty much allows you to buy buzz directly with eth so it's a wrapper for the curve that has a uni swap in between so it takes your e swaps it to die and then buys with the curve and it does it all in one transaction so the slippage is limited and that kind of stuff um so yeah so you can interact directly with the broker or with a curve uh and you will end up with some lovely buzz tokens okay great so um the curve has some view functions which are quite important so we're going to start with these so the buy price and sell reward obviously do kind of the same thing in reverse so the buy price you enter the amount of tokens the amount of buzz tokens you want to buy and it will return how much die collateral you need to buy that number of tokens and then the seller reward does the reverse so you enter the number of tokens you want to buy i want to sell buzz tokens you want to sell and it will return the collateral reward you will receive for selling those tokens at the current price obviously these view functions so like your price is not guaranteed until you actually commit and buy or sell the tokens so then next we have is curve active so the curve has emergency uh shutdown functionality which we will get to in a little bit but pretty much is just going to return true or false if the curve has been initialized and is currently active so the initialization is really just like passing across some addresses because again you know deployment can be a bit weird uh and then we have the bonner token and the collateral token which just returns the addresses of these two tokens so abundant token is buzz and our collateral token is die um cool so then next we have the state modifying functions so these are the functions that you're actually going to call to make things happen so first we have the mint which obviously is allowing you to mint it's pretty simple so you enter the amount of tokens that you want to oh sorry that you want to mint uh again this is the amount of buzz tokens you want to mint and then the max collateral span so what this actually is is a slippage guard so you enter here so you want to buy ten tokens at say a price of ten dollars a token right so your total spend is going to be a hundred dollars but now you want say like a two percent slippage so it's going to be 102 cents uh max collateral or hundred and two dollars max commadal that you're going to enter here so this is pretty much just a slippage protection in case someone's transaction comes in while you are busy you know once you've already submitted your transaction to the mempool uh so it's a catch for you and then obviously it just returns um true if it is uh if it's successful so then is active is just the protection so that once the curve has been deactivated obviously um this mint won't work and then the mutex is just a reentrancy guard uh you'll see all the state modifying functions most of them have it the ones that need it have it cool so we have mint 2 which is pretty much exactly the same as mint except you can add a two address so you can mint to a specific address you know so if you want to mint to your node or your your little buzz node um then you know you put the address in here again it's protected by is active and the mutex and then returns true um yeah so then we have redeem which is selling against the curve so it's kind of the same as the burn but in reverse so you enter the number of tokens you want to [Music] sell and then the minimum amount of collateral so die you want to receive for selling this amount of tokens so again we have you know 10 tokens you want to sell lovely sorry give me a second uh yeah so you have 10 tokens you want to sell at a price of 10 that's going to end up being 100 so the the minimum and then you put in your slippage that'll be like 98 dollars is the minimum amount of die you want to receive for selling your tokens um right and then we have the shutdown which is owner protected and then shuts down the entire code but we do go into this in a bit more detail later so don't worry about it too much right so in terms of the interface so just a quick summary you got buy price you enter the amount of tokens returns a collateral needed sell reward same thing in reverse bono tokens just the address collateral tokens the address and is curve active is just a bool of if the code is selected um so we have our state modifying function so we've got mint and mint 2 shutdown and redeem which are just we just went over those so this is just in a little bit more detail yeah so now we get the broker contract so this is the east wrapper for the tokens uh that allows you to buy directly from eth into buzz um so you enter the by the so it's pretty much the same as the curve um but it's returning these results in each right so you enter the buy price so this is how many tokens you want and it's going to return the eth price for that number of tokens same thing with sell reward you enter the amount and it will return the east price that you will get in in return for those tokens um sell reward die you enter the diamond and it returns the amount of eth this really isn't um for the front this is more for the front end sorry than it is for actual functionality get path this is just for the uni swap pool routing um and the get time again is more for the front end than it is for you cool so then we get the state modifying functions so again we have mint mint ii redeem and then a fullback function because obviously you're working in east here so it's almost exactly the same as the curve you enter the number of tokens you want to buy you enter the max amount of die you want to spend on those tokens it is still in die um and then you enter the deadline so this is a uni swap thing it's pretty much like the expiration date for your transaction so if your transaction hasn't executed before the deadline your transaction will just automatically revert if it gets through um yeah then mint two is practically identical except you also enter the address of where you want the tokens to end up going um redeem pretty much the same enter the number of tokens you want to sell as well as the minimum amount of die you want to sell those tokens for and then the deadline of uh sorry you guys can still see this right yeah we're seeing your screen okay cool sorry i just gotta check um and then the deadline um i actually thought my wife went down for a little bit and then the deadline uh which is the same thing for uh uni swap cool so then we have a little fallback function this is just to accept eth from the router it's not for you to send die i mean eve to this contract it will revert um cool so just a quick summary we've got our view function so you get the buy price and the sell reward both in eth the cell reward die which is really just for the front end get path which is just um setting up the routing for the uni swap pools and get time which just returns the current timestamp then we've got our state modifying functions so we've got mint uh mint 2 and redeem which are the standards and then the fallback function which is again just for the uni swap pool cool so these are the important ones uh these are the ones you'll probably be using and they're both on the curve and the broker obviously in their respective currencies cool so now we're going to go into um i'm not sure how i'm doing on time so probably quite quickly uh the admin permissions and risks so um this isn't necessarily you know uh super important to you as hackers but it is super important to like the swarm ecosystem that it is well defined um and easy to understand what's happening on the admin side right so there is the notion of an owner in the buzz ecosystem but obviously as we were talking about risk mitigation earlier we have really tried to keep the owners um you know blow up able status to very low um so yeah so the token itself so this is the buzz token uh has a minter roll so this allows someone to just mint tokens unchecked so at deployment the mental role will be the swarm multi-sig wallet but once the ecosystem is finished deploying because again you know you have to deploy each contract one by one um down solidity uh so once the ecosystem is finished deploying the swarm multisig hands the mid to roll over to the curve and then renounces themselves as mentor so this allows the curve then to mint tokens but we'll get to that so the risks of this is malicious admin convent tokens unchecked this is mitigated by you know a multi-stick wallet there's accountability and there's also a group so it makes it much less likely that something would slip by um accidentally then the admin could not give the curve mineral uh this is mitigated because the curve just won't function if it's not the mentor of the tokens because it needs to be in order to work of course then we get our curve so the curve also has a notion of an owner this is more of an owner than a mentor um and then the owner the only thing the owner is able to do on the curve is um shut down is is called the emergency shutdown which we'll get into now um yeah so the risks is that the owner could renounce ownership which would leave the curve without an owner which means it could never be shut down which isn't necessarily the worst thing that could happen but again this is mitigated by the multisig and the owner could also transfer their ownership to a malicious address this one's a bit um again you know there's a very limited stuff they could do so even if it was transferred to a malicious address all they can do is shut down the curve you know it's not um the end of the world uh yeah and it's also again mitigated by a multi-sig then the broker doesn't have any notion of elevated permissions so it's actually absolutely fine there's there's no risks it just is how it is um the broker will however shut down itself if the curve shuts down it will stop working so speaking of that shutdown uh just going to go into it in a little bit more detail uh so you understand the kind of situations that would arise that would actually lead to a shutdown so you know a fatal bug is discovered hopefully not it's already been audited so chances of that are quite low but you never know it's literally uh a new type of flashlight primitive is created which you know the last flash loan absolutely broke a whole bunch of contracts so you can never predict those kind of things it's an unknown unknown bug and then also another reason to shut down the curve would be to cap the total supply of buzz so if the code gets shut down no one can mint on the token the circulating supplies and the total supply so right the shutdown process uh the first thing is an event happens that requires a shutdown to happen in the first place um and then the emergency shutdown transaction is submitted to the multiseg wallet the admin address is within the multisig then approve that transaction and then the shutdown function executes so when it executes um the curve will renounce minter so it'll remove itself as a mentor on the token so there will no longer be a minter on the token meaning the token supply is capped at whatever it is when this call happens um the curve then sets itself into an inactive state this is irreversible so once you call shutdown you can't unshutdown um and then the curve emits shutdown code which is more again for the front end um yeah so that's everything so let me know if anyone has any questions i hope my timing was a bit better there i know we're a bit over time but yeah thanks a lot i think it was a great presentation um i don't have any questions but i would like maybe two more minutes for the audience to to ask questions i think we have here one question coming in via the chat uh what happens after the shutdown so after the shutdown uh it was designed so that the shutdown only really affects the curve and the broker so after the shutdown the buzz token still operates completely normally it is a normal erc20 token it just can no longer be minted um so you know the total supply is capped um so yeah it's just the curve and the broker that shuts down the token is still completely erc20 compliant uh functional can the contracts go back to normal no once the curve has been shut down that's it they're off good one more question [Music] why is it so um so emergency shutdowns are really important because the smart contracts are immutable right so once you've deployed it onto the the ethereum mainnet you can't take it back you can't if you haven't put funk shutdown functionality in your smart contract it can never be shut down you know and and with with smart contract development and all of d5 you know sometimes vulnerabilities just happen it's not even your code it's like a flashlight someone else came up with something that then breaks other people's code so it's really important to have it thought out and built in before you even deploy so that's why yeah and i think it's important to stress out like what you mentioned there right like even an emergency shutdown doesn't mean that your token won't be there anymore it just means that the curve itself won't mint anymore exactly you know it's designed with these itself we still have the utility because you can use it in a swarm ecosystem you can still transfer it but just not you know go to the curve anymore exactly you know it's all about risk mitigation so they're all separated so you know should we need to shut them down it's super low risk there's no effect to the token holders and the token supply except that it gets capped okay um then i think we are at the end of the presentation um thanks a lot for this absolutely pleasure yeah all right so our next speaker is uh yvonne or actually i normally call him vandal i don't know why it happened like this but are you here vandal thank you can you hear me can you hear me yes i hear you yeah nice nice i only don't see your video well i'll i wrote you ready to to to the uh mata most i will not be able to share my video but i will be able to share my screen okay hopefully so what are we talking about today today we are talking about best practices for large node operators so here can i uh yeah my okay my screen is shared no yeah yeah your screen is shared so can you see the presentation i do okay nice so yeah hello my name is ivan and i'm in charge of managing the infrastructure for foreign project we will talk about some best practices there's one question i need to ask you um on the top of your screen and on the right there is these boxes from zoom you see them you actually need to drag them out of space because they are interfering with i don't i don't see anything uh on the right there is this box which shows the pictures of people yeah that one yeah just drag it away if that's possible no no okay then we just do it like yeah yeah this is better okay like this yeah i think that's better yeah all right go ahead okay so now we will talk about some best practices that swarm team uses to maintain mains form cluster and this presentation is intended for large node operators those who plan to make a lot of busy and infra technology enthusiasts in order to follow the presentation you will need some understanding of kubernetes but probably you will be fine without it so there are two supported options by the small team for large node operators first option is kubernetes and that option swarm team uses to manage the main cluster and we will talk more about this one and the second option is docker compose for smaller installations and for a very interesting edge case that we will mention later so main form cluster is running on aws cts which is aws managed kubernetes but all of this could apply on any kubernetes installation we are using helm and helm charts for deploying b and all supporting infrastructure services and we are actually not using directly helm we are using huntsman on top of it kelson is a wrapper around helm that has some really helpful abstractions and for instance it's quite you can quite easily pass environment variables to the helm so it's pretty easily scriptable for our kubernetes deployment we are using some infrastructure services uh all infrastructure services are installed and managed with their official thumb charts and we are using uh for those that are familiar with kubernetes these are all yeah quite familiar installations so set manager is used for automatic certificate issuing using let's encrypt as a provider nginx is a most engine x ingress is the most well-known and most used kubernetes service we defined uh two classes nginx and nginx internal later i will mention the difference local volume provisioner it's used for provisioning local volumes b nodes are using local ssd disks on the instances for the better storage performance primitives operator is used for collecting metrics and alerting loki stack is used as a central log aggregator and jaeger jj operator is used for collecting traces so our infrastructure mostly consists of these services and of course on top of that comes b b is deployed using the hem chart and that we are created it's a custom chart for b and we will go over some b specific options regarding kubernetes deployments that are shown inside value yaml so here is uh also for those familiar with help values yaml is you know we can call it most important document inside the hand chart it describes all the possibilities or the variables that that the chart itself supports and after some usual options we come to this one which is p to p fixed port to understand the this options we have to understand how is b advertising itself to the to the cluster and it is advertising with the combination of ip port and protocols in multi address format uh by default and for for convenience for not board services not port [Music] is a type of kubernetes service that we are using for p2p service what this means that the the b itself for its p2p service will have a port directly exposed on the on the kubernetes node so the the b we will for the p2p traffic will not go over some kubernetes proxy and sample beneath this network but actually it will be directly exposed on the on the machine and kubernetes control plane will allocate a random port from range 30 000 to 32 767 depends on what is available the problem here is b itself doesn't know that it was exposed to the world using some other port than the one used for p2p service so default port for p2p services 1635 you can change that but then when you deploy to kubernetes if if a different port is used and it is in this case because yeah when it is select some node port then b will will not know how to uh how to advertise itself because of that we introduced inside bconfig it's called net address netaddr field where you can specify ip but you can also specify just port that is used for exposing the b to the world so for instance our production cluster has this enabled node for start from 31 000 and then we can predict for every pod that is deployed on on the on the cluster what not port will be used for that port and then we can easily just take this value and put it inside the be config at uh as a net address value and in that way b will know how to advertise itself later b has two ingresses one for api and second one for debug api it's warm as i said we have two nginx interest classes for the api we are usually using nginx class that that class is defined in that way that is open to the world and we have a second class nginx internal we are using that class for debug api and in that way debug api endpoint is protected because it's available only from inside the cluster and then for debugging purposes we are accessing it over a secured and protected vpn connection later yeah these are all familiar uh options for the cam chart there is also service monitor if uh if uh if somebody uses prometheus operator then only all you have to do is yeah enable this and you will have automatically uh enabled and considered the monitoring that here is also the way that we are using for some relabeling and so on and uh in that way yeah we are monitoring our uh cluster and then inside the big config we have uh all the config options that are available to the b and yeah of course added uh whenever we add a new option for for a b we are adding a new option here and there is one really important that the option called boot node it is used to to tell b how and where to connect to the cluster by default it connects to the main cluster using dns addr dns address maybe somebody's familiar with it is a dns discovery protocol from multiformats inventors of the multi-address format that form uses also ipfs uses that format and so on so yeah by default when you connect actually the b does dns discovery and in that way it detects the the main cluster you can also specify here the single node and then that node will connect only to a single node and for node operators important options are these three down the p2p settings with this what you uh you have a possibility that actually provide pre-defined lip p2p keys and swarm keys to the to to your nodes why is this important for instance for swarm keys you can then easily refund them before before everything and then just load them uh and also in this way because the b itself will auto generate keys if you if you don't uh provide them but then they're stored inside the cluster and you have to manage them somehow and maybe potentially backup them and put them in some secure place uh and yeah you can see i think it's readable for the b1 you just put bit 1 and the key of that b2 b3 b4 whatever number of b's you have if you have i don't know 50 nodes inside the big cluster and you put 20 keys the red the later 30 nodes will auto generate the keys so yeah it's it's implemented in that way so you can add existing lipid to pinkies you can add existing swarm keys and if needed you can also enable class uh we are yeah we are recommending usage of of clef as an external signer if you enable clef again you can put you can preload already existing and hopefully pre-funded keys to your cluster also add the password for that keys and what will happen alongside every b pod they will be started the class sidecar container so every b pod has one dedicated clef signer for for its uh purpose let's go back to the ah no what happened okay okay so uh at the beginning uh that regarding kubernetes stuff and uh in the beginning i mentioned some interesting edge case imagine uh having a really large disk that you want to connect this for somebody would think of just increasing the db capacity inside the config to some really high number but there is a catch and inside a large node operators section in our docs we can see what is written so how should i approach assigning more space to my b node or running zoom it or running multiple b nodes we advise running multiple b nodes each with default size of the database to understand to understand why this is i'm now reading this but i think this is really important to know to understand understand why this is the case we must understand the level of stickiness of nodes with a large capacity versus per node with with a small capacity a node with a large capacity has much lower peakiness than a node with smaller capacity hence the node with will store chunks that that would not have been stored on more picky note what that means uh that means that since your node gets paid by serving chunks upon request because it stored much more chunks than some more picker nodes the less likely that chunks are requested because most probably they belong to the content that is mostly gone from form so in the end the conclusion is is best to run a node whose peakiness is equal to the average thickness of the network what that means run your nodes with default db capacity size and you are you are good you can still you have run it with two terabytes disk but you will not gain any any advantages uh doing uh that and uh for those that don't want to manage the full cluster uh the full kubernetes cluster we also provided a way to to use docker compose because we are thinking that docker compose is the easiest and most reliable way of running multiple b's on a single machine or server so you have a single machine with a really large disk then you can use docker compose to spin multiple b's inside it here is some general notion around [Music] how to how to use the document compose and in the end here is the section running multiple b nodes i will later open the docker compose file to show it how it looks but basically you copy the whole section with clef1 and b1 to copy paste it and then rename it to clef 2 b2 and you can literally leave everything else the same except for the host exposed parts so yeah by default also docker compose exposes ports for for using the regular ports 1633 1634 and for debug 1635 so the b2 you you could do whatever you want increment of the second digit increment on the third digit whatever you but the only thing it's important to keep those sports uh unique and to show it how it looks this is your docker compose file so you literally take this whole section like this ctrl c ctrl v and rename all dash one two dash two and change here the ports or you can also yeah if you if you want you can also play with with environment variables and configure it in that way add new volumes and that's it uh if somebody use docker then probably knows that adding volumes will actually consume the the disk where docker storage is but you can also here not using volumes you can also mount the partitions of your disk directly so slash user slash home slash whatever username and so you can explicitly mount uh exact paths of your disk and dedicate those to to your uh b nodes and in that way you can easily create smaller chunks of your big disk and run multiple b's on on top of that here with the list of the yeah these three links that they use to to to to share more stuff around it thank you that was all if you have some questions please shoot um back to you i think yeah all right so unfortunately i think we cannot ask do questions right now due to time constraints but i need to put on my video due to time constraints but i would propose that you also stay for the ama and afterwards in the gaffer town so people can ask questions there um thanks a lot for the presentation um yeah so especially for a big node operators um you can imagine this might be might be a lot to digest in one presentation at the same time so at the same time we do have quite some experience in um in running this so if you have really serious intentions to run a lot of notes swarm notes of course we are very much supportive of this and um please do reach out to to me or to vandals anybody on the team and we can help you out um okay so the next speaker you know it's i'm going to speak myself um so i'll be talking about um [Music] actually very simple how to start the b note how to get bcc tokens and how to earn money like what do you need to do if you want to earn money not as a big node operator but you just want to run it on your laptop for example um so i'm going to share my screen put off my video um nope can i do that yes and i'll walk you through so i don't have permission to share my screen one participant can share at the same time it says please host can i become a host so i can share my screen please make a try again now alright so here we are um so everybody um [Music] i have this link and you can use it to follow along i this is a hands-on workshop if you don't want to follow on right now you're not sharing a screen again please try to try to share again no i meant to share this i can't share my screen but i just wanted to give everybody access to the to the resources all right so here we are i think you can see my screen and you must see right now a hackmd file this is right okay i think that's right okay so um what i'm going to do i'm going to show you how to run a b node afterwards i will show you you know what i just deployed and i'll be giving a short explainer about the checkbook i'll briefly walk you through all the relevant endpoints with respect to earning money with your b notes and then i'll show you how you can export keys to metamask if there is a time left over and if not i won't show it okay so how to run a b node basically the first thing that you need to do is to install b and i'm running myself on ubuntu um but if you are mac os user we can do this as well if you're a windows user unfortunately we don't have big clef yet packaged we're waiting for a release from uh go ethereum but as a windows user you can you know run big su standalone so there's still some options um but i'm we're going to um if you are not on ubuntu it will be largely the same small differences here and there but i hope you can still follow along anyways our documentation uh is explaining everything for all the all the systems so you can also have a look there okay so uh what i need to do first is to remove the old installations well i did that just before i started the presentation so i don't need to do that um what i do need to do is um [Music] i'm making a presentation oh so i'm here and i'm going to find the latest version of b and this is annoying there yes okay so i'm going to the github where we officially release and you see that a couple of days ago we released version 0.5 so that's great um now i can use we get to get this binaries from github um so we do it like this and now you see here that we have the debian package of b well we do the same for big left again here we look at what version big left is we see 0.
4.7 and we download big left you see here 0.4.7 and here as well so that's the latest version and i'm also downloading picnic yeah so now we see b and b clef okay so now i need to install both of those because now it's just a debian package but i need to install it um i use dpkg for that um so sudo dp dp kg install big left [Music] what's happening here selecting previously preparing to unpack uh big classic save i had this error a couple of days ago what was my solution for that [Music] that sucks um okay i know how to resolve that error but i will maybe i think it's better if i briefly give the microphone to edo do oh sorry yeah who is also supposed to be here from from that note and maybe i know you can help me out by doing your presentation right now and then i come back afterwards and i make sure that this error is resolved resolves my computer i know there's something with users who i need to remove and add i didn't do the clean remove of my previous installation that's why um ado are you here yeah hello are you ready to you know help me out yeah for sure all right man i'm worried um so i need to give you also a proper introduction of course and then afterwards uh i will take it over again because actually what you're going to see a show is something maybe much nicer than what i have because i'm interacting a lot with the command line and it's very much bare bones essentials um but i think you were having a much easier way to do this and you definitely would not run into all those errors which i'm running in right now right let's see we do that for sure no problem because you're using that now so go ahead i'm going to solve the problems okay i want to share my screen you have gun or i don't know now you can see my screen um well um first of all i am uh very very happy to be here today um it's amazing what is happening around uh i'm so proud to see this baby girl at the same time that i'm not it's amazing and all the hits are happening it's extremely incredible um today i want to talk about how to run a pinot a beam with download and why is easy way to do that um it's fine because i try to make a different presentation today i mean try to switch my message but the thing that i discovered is that we are getting this situation and we need to find ways to change um the current the current economic model and that is the purpose of sram and the purpose of b um the thing is as you know um the user when they use an application they believe that they are using free application and and that is not true at all we know that that the app developers are taking the data of the user and are they are selling um to the cloud providers and also the advertisers and we truly believe this model is broken um we need to try to figure out how to change that and that's why the data is so important in our current world because they are taking that from us with our content sometimes and they are making a business model on top of that that is not the good way to go um a lot of you have i mean at the beginning when we read these news in the news we we have been uh in shock for for a while but now every now these news are quite common in our society in the data leagues uh privacy leagues and even password release personal data i suppose like nature or other well-known problems with the data are is starting to become useful in our society and we need to at the end the purpose of of tom not on the purpose of swarm is to try to uh create something uh propose something um that takes uh these data this privacy from from the cultural and these services to us again so the theme is in in web 2 when how we started it's a model that i just showed you about how the users are getting free applications in the chain of their data and so that is why we started to create decent transportations at the end we want to switch this value from one side to the to the to the other one and then is when we start to use this um this impression is when syrian and other blockchains start to happen to try to switch this but the thing is how it's going is is the right is that it's the same that in the previous in the previous model because at the end we are taking uh websites from google public dns that are stored in aws and we are accessing to this content uh using metamask and tutor um these are very good services but we need to realize that we are committing the same mistakes that before so that is why we started to develop damned with the idea to provide easy way to run nodes at home and be able to create a decentralized hardware layer the thing is after three years working on this project we have discovered that it's very very hard to make that happen that um having people writing notes is not easy and it takes a lot of effort even if we are trying to propose a one-click solution um that is why we are starting to figure out how we can improve that how we can put more value on node operators put since uh since um running a note has a lot of value even if you are not getting is something that has value and that is why um solutions like b in which you can get your token and you have a negative-based way to to provide the service um it's so critical to make this happen at the end um if we want to create this uh new world at this entire world we need to have the help of everyone and integrates all the actors on that system so the idea is is just that to switch the value that we previously um give to the cloth providers to us again and then we can have this new ecosystem in which we have a circular economy to provide these um this value to the to the to the users and also the the they know the predictors at the end from the view of stamina we want to create a kind of uh ecosystem around that it's like we want to keep this value in our hands and our hands is all of the community that's making that happen that that is why it's so important um to be able to run nodes in a easy manner and that is the thing that i would like to explain right now how how we try to make as easy as possible so we can compete against these um savers providers and get this this value from them so now i want to show you how how we can do that sorry for this introduction but i mean i mean thing is so so for us to run you know i need to make something to present it and this is a cool thing that um with the idea of damon behind we managed to run nodes in a one click or a cell like but not too much and even people without a lot of technical knowledge can do it um the thing that you can see right now my screen is the the down ui and i'm going to make a small tour around that um here we have the dashboard in which you can see all the things that are you are running on the node as you can see i am running several chains and several things at the same time um then we have the device section in which uh you can give access to other people the day behind download is obviously we cannot expect that all the all the people are running this but at least you expect to have one of those at home um if you want to create this idea of um decentralizable computer then we need to at least try to have one of these or something like that really in every home um our intention is to to try to present danut as the router of your house so that means it's like your gateway to a decentralized wall um this device is expected to run all the chains that you want and all these and provide these services in the retirement to get that value to you so that is why we have the devices so you can share the access to your notes to your family and friends so you can with one note operator you can give access to several people at the same time then we have the dab store mainly the other hand of this is quite similar to mobile phone it's a place in which you can install several applications on your lab where you can start to synchronize separate blockchains and also several general applications and and for that we created a truly centralized um marketplace the idea is that we have a narrow smart contract on chain in which we publish the hash of an image that means that every time that you do what you are directly downloading in a decentralized market um next we have here the packages that i am running right now system and you can get more um more details about your current status one thing for example in the last version that we added this notification so you can configure telegram to get some notification from your node and yeah finally the sdk at the end we want to have as much as possible application running on downloads so that is why we open these sdk so anyone can develop a package and then it's time to see how it looks like to run a node and i'm downloading in this case i'm going to run a node so maybe uh we published the last version yesterday and now as you can see we are running the 5.0 version so the the thing is if you want to run on your tablet you only need to click install um and now in the last version we also added a new feature well here again what a password now you can select the capacity of your of your b node also a welcome message and even the storage so that means that if you have a usb hard drive or a stick then you can plug it and dab it is automatically going to detect it and you can select that to store your chain your sorry your uh data and after yes um a small configuration like a typical application in the mobile phone uh everything is said to happen we the damn automatically download this um image uh and install it on your shipping automatically so now as you can see we have the node running with just a few clicks so yeah if i go to locks i'm going to see how how it started and the thing is now um i don't know if this is funded or it's using necessity it's 16 jackpot so yeah that means that i am running a previous uh data sorry let me do the legs so you can see how i'll check it okay i am using previous data so that is why um i'm going to remove it and then you want to select another place to start it so i can show you how you need to phone at the beginning the baby node so in this case and that's it i mean um now it's running as as if you started from the scratch and as you can see logs you need to fold this to be able to start to use it so let's do that so let's go to the website okay so i'm going to my wallet to get some important pc 100 for example um you need to press the get ge button as well uh left left corner down left down i mean i have poorly if that's awesome um so i get 100 um to my note so that means that if now i take a look to the locks it should detect it and in the middle time i'm going to show you one of the last that this coolest thing that we already done is that when you have um um a note that has grafana integration that means that at the moment that you install it you get the metrics on your system this is really cool because we you can configure specific data for specific applications like like this one sorry yeah to get well we have that working but to start to getting some metrics we need to wait until the node is starting and for that we need the transaction to happen so actually you do need to press the get d if button because your nodes needs both bcc and uh and ethereum because you need to deploy the checkbook this one yeah yeah yeah okay well i can yeah okay i couldn't even send it directly sorry that's true okay let's see so the address is [Music] right uh you're having busy uh you're right now waiting for uh for eve on that others oh okay yeah okay perfect why are the faucets um you know it doesn't really matter yes you go faster maybe you'll need to restart your note because this thing times out after a while nothing is not always fast that's really expensive it seems sick in a while but maybe yeah let's first start it thank you for the check action to happen but now i get one user here for the east and also yeah now he's deploying the rejected interaction this looks good i guess um so now uh as he's deploying the checkpoint checkbook and we need to wait because uh the node is not to start it yet maybe some of the surrounding team can give you more results but now after uh depositing and sending all these to the blockchain that is when the notice is starting to run um another cool thing um about doublet is that we have an internal um binding resolver so we can use all with the same url to access to the node and for example in the case of b you will need to use b dot dot and the board uh for for start to using as you can see right now the node started this is the api address and also and everything is starting to happen um just to i don't know my school my console but i mean um if you want to load the file you'll need to use the cover the coral instruction that you get from the charm uh documentation and you can start to use do not right now i guess that as you can see i started to get in some uh information connection uptime version and if you started to submit your files and start to query some files then you are going to see how these dashboard is starting to populate and yeah mainly mainly that is the thing that i would like to show you how how how easy is to run nodes in in diamond and how is so important how we need to um incentivize people to be part of this movement at the end with this address technologies we are i guess that we are going to do that to make a movement in the right direction because um we detect that the the wall on on the data needs to change in this direction so yeah mainly this thank you for for giving me this time all right well thanks a lot for uh both the presentation and also for for helping me out i think uh it's actually you know a great sales pitch for you right like after i cannot install it to my terminal you can go home and it's like like this right that's the whole idea of that note no yeah exactly and yeah it's important to mention that well that note is an open software that anyone can download directly from from our site and installing their hardware we also support a m devices so if you want to run in rs3 but you can do it and also intel nook or servers or any place that's the idea to make as easy as possible to run modes okay cool well thanks a lot um i see some questions in the chat but uh let's also do those in the in the q a or you can just answer them in the chat um because we're almost at the end of today and i would like to show what i plan to show so thanks a lot um ado we you know love your support and for you being part of this and we definitely see many users using that note and running b so we're very happy with with that of course thank you very good um so we just start again uh here's the hackmd for everybody i put off my camera i'm going to share my screen i know what's uh what went wrong um and i wrote it down here as well so what went wrong is if you do this purge the leads of your old installations um it matters what order you do it so if you do one before the other then you know the user groups doesn't get deleted in a proper way so if you want to be 100 sure if you're going to do a live demo um you should ensure that the big left user is removed and if you want to do that you should run this one and that was not the case for me before um you know now it is removed so we can continue again um with installing b clef and it should all work right now um okay so we can verify whether that is working do it by copying this yeah okay so we have uh big left running and just for you to give a bit of a understanding what is big clef um big clef is basically the key manager of uh of b clef is a key manager which is used in the ethereum ecosystem it's not something that we built ourselves um big left is basically a specific configuration of using uh clef and the advantage of that is compared to when we would have our own like in-house key management is that clef is really a stand-alone process um so your keys of course are going to hold value pcc tokens and eve tokens you don't want the secrets those keys to be exposed to the whole b process like there will be a huge security risk that's why big left is managing the keys and b clef is accepting uh is sending out signatures to the b client and the b client can use those signatures to actually use those keys but doesn't have access to the keys in plain text which it would have without the key manager um so i advise everybody to run with be clef especially if your keys are going to hold real value okay so big left is is running um now i need to install uh b and i can do that with this one all right so i installed b and now i'm also going to check whether uh b is actually running and i can hold it in the same way and i will oh okay now it's starting yeah um i can figure out whether it actually did start and i see something red here and if i read a bit more it says error but so it's not running so what i'm going to do i'm going to expect why is it not running this is all scheduled i was aware of that so journal ctl just reading the logs and what am i going to read okay could not get chain id from ethereum backend so that's the problem in our next release this will be easier you won't have to do this anymore um but right now we need to set the swap endpoints from some kind of loco host right now the b processor is assuming that i'm running my own ethereum node on my computer i'm not doing that so i'm using public endpoints provided by slokit um so i'm opening a configuration file of b and by the way if you want to change anything in the configuration you can do it with this so this is my configuration file what i need to do i need to find this particular configuration i open it and i'm setting it to this one remove this one so now my swap endpoint is set to the girly endpoint and i can save this close the terminal uh and i can expect if it is uh working now so do that again open the logs and yeah so what i'm seeing right now is that i need to get either so the same as eduardo before we need to go to the bazaar interact with the wonder one with a wonderful bonding curve with veonique explains i copy this i connect my metamask wallets i am getting gurley eve and i'm purchasing a girly disease you can do it like this exchanging saying yes for metamask and i can actually close this right now because it is going to work we just need to wait a bit yeah so [Music] yeah this will continue do it like this but the note is booting up as we've seen with eduardo and soon it will deploy the checkbook another way how i can validate whether my node is running is by calling to localhost1635 oh it's not running okay need two weights [Music] so it seems to me that the tool to front the overlay address so to get girly eats might not be working so i'm going to do that manually as the water did that as well and go to metamask and i'm going to fund this address with 0.
05 if for not as rich as eduardo so there we go and now it should work one two three okay so while this is waiting i can actually continue my presentation because it will definitely uh work soon um so let's assume it's successful now um what i do want to show to you is actually um what my notes just deployed or what my note is is about to deploy so what we can see oh and it accepted [Music] still not no checkbook found deploying new one cannot continue under his 10 bcc huh no technical plan deploying new one [Music] um demo notes messing with my presentation so get girlie is putting 10 girly bcc to this address 833 yes and i'm exchanging it let's see just do that one more time and i can also actually go to girly dot if scan dot io addresses slash this one no not this one [Music] and this is my address successful deposited book all right so it did work now um i don't know most likely we were just waiting for the for the blockchain to process my my transaction okay so let's continue with the presentation because my note just deployed a checkbook and what i would like to show to you is uh what this checkbook actually is so i can look at the logs here and maybe i can't because it might go too fast so let's not let's not do that but what i want to show to you everybody is this page because my node is deploying a checkbook and i just want to you to be aware of what this checkbook actually is so the checkbook is visible on the eversphere swap square and swindle repository look at it here um it is explained in the book of swarm what exactly this is but also here we explain all the functions that it is exposing but most importantly with a checkbook a user can issue checks right and this checks is what this presentation is about is how to earn gbz because those dbccs is transmitted via via checks so the checks are sent by the checkbook contract actually they're cashed out there and we're exposing some some other things so maybe veronica you like smart contracts you can have a look here and of course anybody who is interested into what exactly the checkbook contract is you can find it you can find it here so i will continue with my explanation which is okay so now the first part of my presentation is done is how to run a b node right now it's it's all running and busting so that's fine it continues running in the background if i call now to local host 1635 you will see oh 633 yeah you see if here in swarm b um so i might need to enable my debug api endpoints see one six three four aha okay so i need to change one more value in the configuration well we can do that here uh debug api enable yes so see this is like a live demo but i think it's also not just something happening which is not interesting for you because this to you it shows like real debugging process happening at the spot so my debug api was not on and i need to enable it to actually show you guys how much money i'm making so i can do save and i can close this one [Music] and i need to [Music] stop my b notes and start again and now if you look into the logs you actually yeah so it will connect right now because it already deployed the checkbook so now i don't need to fund it because it it just connects to the checkbook i found it in the first time so now if we go to localhost 1635 this is my debug api endpoint you see it's working i'm getting beers right now i'm connected to like five nodes already so that's working if i do it again i will have already more so right now this discovery protocol is it's working and i'm getting more peer connections okay so about earning money right so my b note is starting and right now you're like okay how how am i making money well it's actually very simple because just by running your b notes um you're participating in helping other nodes to define their data so that means that if there is something happening on the network like somebody downloading or uploading some something it's quite likely that those people i will actually ask my notes to help them um so to earn money i really don't have to do much more than just have it running um myself i'm always running uh b note just in the background uh it doesn't cost a lot of processing power not a lot of bandwidth so i would definitely advise everybody just to run the b note on the laptop on their laptop or a couple of on a couple of them even it's it's once you have it running it's it's easy um but i of course like to verify that i'm actually making money and i can do this by calling into the balances endpoint this is the documentation you can have a look at that but we won't do that right now i'm just going to right away show you the balances endpoint and see if i already made some money um while we are having this presentation um so you're seeing that it's not the case i'm not too surprised by that to be honest because this was only like half a minute so that just means that's in this half a minute nobody was um was actually using the b network to upload or download stuff um still not but you know that's fine if i let my notes running for a couple of days especially now with a hackathon going on i'm sure i will have some some balance um so the balances end points is very important um but the balance's endpoint is not yet the actual money that you're making because if you're looking at the actual money that you're making you need to in the end receive checks and those checks you can present to the smart contracts of your beer and this tax is like the real money so the balances i explained in the previous uh presentation of me as well is like something in between is like a promise to to pay in the end but if not goes offline and i'll never see him again i basically lose this balance but when i get a check this is like real money because i can use it to the smart contract with my peer to actually get this money out um now since i didn't have any balances i'm also not thinking no i definitely won't have a check but um if you are running you know it already for some time you can verify what checks you have at this end point and checks you can cache them out via the b note but even with the information in this endpoint you could just go and make your transaction and present it to the ethereum blockchain uh just even not via the b nodes yeah okay so with checks you can can look it up here um and of course just collecting the checks is great but uh if you want to use those bcz's to present them to the boning curve to get die out of it or you want the bzz uh to trade it on an exchange or you want to i don't know what you want to do with those btcs um you don't need to cash them out like just a check is is not enough we need to cash out this check which means to present it to the smart contracts of your peer i also can't demo that right now because i'm not having any checks but basically what you do is you go to localhost1635 so that's a debug api endpoint checkbook slash cash out and then you put the peer id now what is the peer id the peer id is um is the overlay address of the node and you find it here so these are all peer ids so this is what i would put instead of peer id here okay so if you have 20 checks of course it's a bit redundant right to manually cash out all those checks via the command line that's why we have a cash out script um but this cash out script is really you know it's just to have out something to make it a bit easier for you to manage this but we also envision that in the future people as well as like that note or avado or i'm sure maybe even a hackathon we can make something that's uh that just works a bit nicer but for the time being you can find this casual script by going to our documentation whoop put an h in front of it and you go to the end and use find the section on managing uncached checks and here it will instruct you to download these scripts uh it makes it an executable and to uh you know to to cash out yours your checks with with this one it's really important to to cash out your cheques because basically if you would hold on to uncashed cheques that is a credit risk so do cash out all your checks if they are real really valuable um okay um then the last thing which i wanted to show to you is that right now i've been presenting all those api endpoints uh via you know just calling them myself but actually bjs which is the javascript library of b does all these kind of things and if we look at their last release you see that they're having balances checkbook and settlement endpoints on the b debug and also that you know balances all the checkbook related api endpoints are uh present there so you will be able to call it from javascript aka you will be able to make nice dashboards that actually do all these things uh for you and i think personally that would be a great hackathon project if you want to hack something together in one or two days um okay so do we have some time yeah i think i do have some time because i just want to show this last little feature that kind of makes a circle complete so even if you have your checks cashed out you still want to able to use this pcz you know somewhere else so you need to get your keys from clef from bcneff into metamask or into any other provider um that's possible and you can basically call this command so sudo big left keys and you do that and what it tells you keys exported to root b json so i can look at that b class key one six one two nine okay this is really not optimal let's do it like this [Music] oh okay so this is my my key file and a password was put into my clipboard but i just copied that so i need to do it again no here so now my password is loaded into my clipboards which is here that's my password and this is my key file putting it consistently this is my key file and then when you go to to clef here sorry to metamask you can basically import accounts here and you select the type private key no json file and you choose the file here so that's the actual json you can look it up and it also asks you to put the password and i put this one and then i will be able to use the same account that we clever is using but use it in metamask and basically do anything with the bcc that that you desire um so that was my presentation i hope it was useful for people to understand kind of like how am i validating uh how much bcc i'm earning and what endpoints are important also to how to start your notes um thank you and if there are any questions i have been already seeing quite a lot of questions in the telegram group but i'm happy to answer them and also the experience of using up b right now with a new bazaar and everything it's still a bit you know things which we need to work out but already over the last week there has been improvements there and i'm sure we'll be improving over the weeks to come so that's it and i think we can go to the ama so i can ask all the presenters to come on stage this is eduardo fondot veronica ilot victor gregor as you're also nicole please feel free to join michelle like uh ralph you've also been working on this like if you want just come on stage and we can do in any way yeah okay guys so the concept of the ama is to ask questions um if there are no questions that's also fine then we can call it today yeah can you i'm you do you have this permissions right now okay you hear me yeah you hear me yeah yeah we hear you yeah please go ahead okay um i i wanted to to ask again so what exactly is the reason to run multiple nodes if you want to provide more than the default amount of storage didn't really get that okay yeah so this is um i would tell you like uh best to go to the documentation because there it's it's like quite well described and read accurately um but to explain it basically you need to imagine like how this form network works right so it's like this other space of nodes and basically they have some sort of a random address and the same is the case for junks right so if you're uploading some some chunks to the network then those chunks will be spread equally all around the network because of the properties of the hashing function now what happens if you start one node with one terabyte that basically means that that like the if you look at the outer space of swarm it's like equal on all the nodes and then there's one place in the network where there is like two terabytes um that will basically only be great and possible if also that part of the outer space will have more chunks to store but because the trunks are kind of like uniformly distributed over the whole network we cannot assume that that particular place of the network will have more chunks so you will be storing chunks which are belonging to files which are already deleted by the other nodes like this the level of thickness you won't be super picky right just to decide what kind of chunks you want to store um you would just store chunks of content which was already deleted by other nodes so a lot of those chunks which you still store will never be requested by nodes and will just not really matter and you want to store this this data that actually gives you uh economic benefit so so this is this is the how but how do the economics play out here so what if i go the other direction and go below the below the default don't i take advantage down so is there a clear optimum or or how does or does it play out um okay so you can go below um and actually right now you can can do that and probably also we'll mess up some some things in the network um but once we have the storage incentives of uh locks in place actually if you would go below that you would not have the right anymore to earn this income from from storage incentives um so this is basically a shelling point right like it's it's it's it it's a it's a shelling point because everybody has that so you don't have any advantage of doing more and there's also no advantage of doing less because then you will also earn less income than you potentially can okay that makes sense yeah yeah because you need to store the same chunks as your neighborhood is storing to actually have the rights to earn income from from the chunks that's from the storage incentives um but also for purely the bandwidth incentives it's basically like if you store chunks that doesn't belong to any content it will never be requested so you're not making any money on that but how about the overhead because if i have enough storage to run let's say 10 20 or more b instances that would also mean that the tcp connections get duplicated is that manageable that overhead on on a single machine okay so um right now we have this this default of i think like 25 gigabytes or something like this um but it will be possible eventually to that the network as a whole decides to move this this target of what is required to run a b node so whereas right now it's 25 gigabytes and we have no way of changing that because the storage incentives are not good night basically afterwards the nodes will be able to get consensus on changing the price and changing the price basically is equivalent also to setting the allowance of of disk space up and down um but now you're entering like research uh territory if you really love to to talk deeply about this maybe i'm happy it will take like uh some time to to explain it but um yeah i wanted to add to add on this a little bit so uh if you have too much so more than the consensual uh storage per node which the network somehow arrived at so which is let's say this 20 gigabytes so you basically you cannot earn more and uh if you have less then density proofs are supposed to mitigate uh the fact that you will you cannot basically free ride and and earn uh without uh offering storage space and we are we will enforce this with with density proofs but rinky here one question from my side uh are there maybe different strategies what if i as a node operator say i want to focus on maximizing earnings from swap and then my interest is to cash as many chunks as possible and be the fastest delivery would that make sense so i think that in the future we will be seeing all sorts of uh node taxonomies evolving and so that we we will be able to see uh different types of nodes and uh like just in the same way that web 2 has evolved to uh like that it has all sorts of kind of contraptions made in order to to optimize on certain uh certain properties of of your user experience so you have cdns and you have data lakes and all sorts of different kind of solutions which are tailored and geared towards uh basically serving very specific needs of of users and of of uh of also service providers so i i do expect that in the future we will be seeing the evolution of like of of swarm node nodes and node types uh to the extent that different node types will be allowed and that they will be basically optimized for different purposes and for different hardware maybe requirements and so on so yeah that's completely right a lot indeed saying this is also like one of the complex things of basically developing swarm or developing any you know net node that is part of a peer-to-peer network which is that we cannot make any assumptions on how the nodes on the other side of the line will behave right like if your node is is working with 25 gigabytes okay we need to work with you if your node is working with one gigabyte we still need to be able to work with you even if your note is not storing any data we must be able to to detect that and and to uh to to work with you like and and what's what a lot says is is very much true in the future especially once the economic incentives are there um people will tweak with their notes in order to maximize the revenue in order to maximize swap bandwidth in order to maximize storage incentives bandwidth and there's no way how we can can stop this what the incentives do do is basically to ensure that uh any individually you know motivated behavior is also in line with uh the general goal of the network and thank you for your question i hope didn't answer a bit more or you have some more follow-up questions okay good then okay gregor or michelle i don't know if you guys are here but do you maybe want to make an announcement for tomorrow what the program will be or something about gaffer time perhaps ah yes uh i couldn't unmute myself so i was uh i was selling this yes uh we every day we continue with uh gather town so uh everybody is welcome there to join uh also uh if anybody wants to install resv uh b on a raspberry pi zero uh ping me there we can we can we can do that uh tomorrow i actually don't have it in my head exactly what the program is but we can have a quick look so uh we are halfway through uh and uh tomorrow we will be uh focusing on uh the free press and publishing day uh among this uh we will tackle topics uh how to have an essentially unstoppable website on swarm uh we will speak about uh creating public data sets uh with a call to action to the community also that together we can bring open street maps and swarm uh country by country and so forth so it's going to be an interesting day tomorrow looking forward yeah all right but now now after party time yes yes after party time i'll put the link to gather town in the various telegram chats that we have um and then that's the way of the party right now thanks everybody thanks presenters and good luck hacking thank you bye [Music] foreign [Music] mr you
Automatic transcript — names and jargon may be misspelled.