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

Loading player…

Valist 🛠 Publishing & distributing your apps, games, and binaries in web3

ETHGlobalSun, Oct 9, 2022, 12:00 AM

Join Alec Wantoch and Zachary Pelkey of Valist for a workshop titled "Publishing & distributing your apps, games, and binaries in web3." This workshop is part of HackFS 2022, a three-week long virtual hackathon focused on building a digital world that is censorship-resistant, decentralized, and trustless. For HackFS, ETHGlobal has partnered with Protocol Labs - the organization building Filecoin and IPFS - to run an event centered on dapps, web3, decentralized storage, and everything in between. ---------------------------------------------------- Follow us: https://twitter.com/ETHGlobal​ Check us out: https://ethglobal.co​m Email us at: hello@ethglobal.com

Transcript

[Applause] [Music] welcome thanks for taking your time to join us today we have zachary and alec here from ballast and the workshop will be on how you can publish and distribute your act games and binaries in web 3. i'll let you both take this stage and if you have any questions in the meantime feel free to pop them in the chat and we'll take them as we go thanks awesome thank you so much and uh yeah i'm alec co-founder and ceo of ballast and we do web3 native software distribution zach hey everyone i'm zach from vallast great to meet you sweet awesome so we are going today to learn how to publish apps games binaries pretty much anything you need in a web 3 native way um and i'm going to start off by sharing my screen going through a little bit of a quick presentation that just goes over the concepts of ballast and what you could do with it and then i'm gonna pass it to zach for a quick demo and then uh yeah please please feel free to ask any questions as we go um we'll keep track of the chat and uh yeah we want to make this interactive as possible so we'll just jump right into it um yeah so vala says web3 native software distribution and so what does that mean what is web3 native software distribution well that includes things like publishing fetching and secure updates but now that we're in web 3 we could also do some really cool stuff like dao's coordinating software or teams together coordinating software as well as software license nfts to create a new way to monetize and create a drm system and why do we need web3 native software distribution well right now in web 3 we're still relying entirely on these web 2 platforms for distributing our core components so things that actually run these blockchain networks like the geth binaries uh the bohr binaries that run these awesome ethereum based networks and it all the way goes to the end user for things like wallets uh games that we play but yeah pretty much everything in the infrastructure layer is still relying on web too and so despite all the energy that we're putting into decentralization everyone's pretty much re-centralizing everything by at the distribution level by publishing web 3 software on web 2 platforms so that's what we're going to change and some of the issues with web 2 distribution are some of the issues we're all familiar with with web3 solving is risk of compromise censorship risk and availability risk you know these are all common things so you know for example you can have a secure messenger but if you can't actually deliver it when you need to um you know how's it going to be helpful so web through native ways to distribute software can actually enable these awesome use cases and then if you actually wanted to sell some software you basically have to ask apple google facebook you know for permission and then they take 30 plus percent same with steam if you're trying to sell a game so all these centralized payment infrastructures uh our permission in the first place and then they have this high take rate so you know they're actually siphoning off lots of value that we're creating um and so what can we do now that we're in web 3 that we couldn't do before well at first everything kind of looks pretty similar uh you poured over the common features that you already know and love about these common features such as like versioning publishing being able to update your apps and artifacts things like that as well as manage both team level and then project level access control so you can actually have some security around your different projects but then um vals has a set of tools that coordinate a bunch of different protocols together to make publishing and soft software and web 3 pretty easy and then once we're ported over um you know we get these awesome benefits the most obvious being the most the no more reliance on a single entity for distributing any software so even if vallis.io and ballast inc disappears for whatever reason valus the protocol can of course still continue to run everyone could continue um helping the network itself and then you could monetize software directly to your audience using software license nfts so again instead of having to configure some random web 2 drm system you have to give all this information you have to it's it's very it's very odd you can just create a wallet start uh publishing software under it and then start collecting fees from from your application and then daos can also coordinate software releases so uh if you could imagine a dow coordinating a new release of ethereum clients like geth pretty incredible uh and then you could also create these awesome auto update mechanisms um so things like brave how itself updates with web3 native stuff it would be your applications can self update in a completely decentralized way and then uh last but not least we have some pretty awesome public goods funding mechanisms built in here so the software license nfts can actually be used to redirect some community treasury in order to vote on some new indie games dev uh grants things like that that can actually be more regenerative to the system so how does it work well uh it's pretty much tying together a few different protocols like i said the developer initially publishes the release all the software all the data gets stored on ipfs and filecoin val simply describes the type of software with some metadata and then um it is checkpointed onto a smart contract right now mainly on polygon but we're supporting other networks at the moment as well and um that's where all of the registry stuff is for the team level project level and each version within those project all the access control lists all the security everything around that is handled there and then at the end of it the client is made aware of the latest releases who published them what keys did what etc and you have this immutable source of truth there and how do you use it well actually it's very simple so we have a web front end cli git of actions and sdks depending on your preference the web front end is a really easy way to get started it's a pretty simple you set an account set a project you set a version drag and drop your files click publish you're good to go so if you're publishing a unity game this might be the easiest way for you to do this the cli is another great option you can basically just type valis publish and then type your account project version and then give it a path and it'll upload it and then we'll also go over this later but you can also configure multi-platform builds so if you're writing a go application and you're building it to mac windows linux with the cli you could actually describe in the val cml um which binaries go to which platform and vals will be able to understand and interpret that and then we have a super simple git of action just paste this at the end of your workflow if you're already using good of actions this example here just takes every github release and automatically publishes it on every release but you could figure out however you like and then if you want to get in the nitty gritty start creating auto updates systems stuff like that we have typescript and go sdks and then you can find it vals.io you can head to our docs at vals.io or docs.

vous.io and then definitely come join our discord uh we're super happy to help um our community um yeah it's super helpful we're definitely excited to see you there and of course our code is all available on github every single thing is open source um and so yeah thank you so much and best of luck um much love from the team i'm gonna pass it to zach and he's gonna show you how to publish an app hey thanks alec gmgm fam demo time let's go okay cool let's just jump into it so this is the uh ballast dashboard you can find us on app.ballast.io um i'm just gonna take it from the beginning so um the first thing on ballast is uh we need to create an account now um accounts on uh valist are in immutable name space so once you create it you have it you have the name space it's a lot like an ens it doesn't change but you can think of this name space kind of just like as your root name space as like something like on github where on github i'm jiu-jin um and then any repos that i publish or any packages that i publish under that are gujin slash whatever the name of my project is so we can create a new username here um i'm just going to name mine uh web3 game um and then i can set a display name so um the immutable username you can't change but the display name uh you have the full ability to change you can add special characters um kind of whatever you need so a web 3 game and i can even get sassy with that um and then i can add my account photo um i always use my handy dandy crypto coven tropolin of the tower um shout out to crypto coven uh best nft project ever um and then you know i could just put a domain here so i'm just going to say hello dot world um a web 3 game and so then um every vallast account has a set of members because this is where things like dow coordination um comes in if uniswap wanted to vote on what the next version of the uniswap frontend that will be published um this is where you could link a multisig or a dow contract um or really anything like that that would allow your users to kind of um sign off on any kind of like group transaction or um anything like that um so i am going to take my address put it in there then i'm going to create this account oh sorry looks like weird network error there let's just try this again hey there we go cool cool um so if i take a look at this uh transaction there my transaction has already been included in a block just give this a second and the meta transactions on here as well um power the whole system so just to add to this actually all the gas is paid for by the protocol as well so all the publishing is free yeah absolutely free for open source um anything you need to do it's all meta transactions um easy to go um so here is my web3 game so now what this has done is um this has redirected me now because my account does not have a project valas has redirected me to the project creation page so that i can uh now create my first project and so um same thing for the project um i can select like a nice project image i'm gonna use my other crypto coven um for the project image and then for my account or team um i'll select web3 game um and i'm just going to call this the game or even shorter we can just say um the greatest web 3 game i don't like that you know greatest we're not it's not a competition here we're all building together uh the fun web 3 game um i'll skip the website on that but i'll add a project type here i'll add web game and then let's add some tags because on ballast we have a lot of amazing tags um i would encourage all of you please please please if you're submitting on ballast add your tags add all of the content we have a beautiful app store uh discovery marketplace um the more content that you add uh the more that we can feature your content and get it in the marketplace and have it uh discoverable to the whole world um so i'm just going to say application game [Music] nft here cool cool next we have our description field so i can just put a web 3 game in my description um header there um so the description the long description is a full markdown doc so again images videos um links really any content um that you want to put in there uh throw it in there throw your full mark down in there um if you have a repo um members again now um there's the idea of because we have this role-based access control with valis it's all completely on chain um you have your account level um keys which are kind of like your admins of the overall all of the projects that kind of thing the account level users um but then you have the id the ability to add slightly less privileged users and these are just basic publishers or maintainers um on a given project so i can take my key that has that admin level key um but i can throw him uh on here as well and so then graphics so now i have all these amazing graphics that i can add um i'm just going to throw a couple of these in as well i'm just gonna use some of my uh nfts here so you'll see i have this amazing um promo image that shows up here with my description um and then there's also things like i could add a youtube video youtube url um or any other screenshots like that but um i'm just gonna add a couple more of my uh fun little nfts here uh and they will show up in this image gallery um and so my nfts are not um 1080 by 920 we use the standard sizing um that like steam or any of these other uh marketplaces kind of views um okay so we are good to go i'm going to now create my first project on valles and we can check that transaction as well good to go and then once this is done we should be redirected back to the home page and then from here we can publish our first release so i'm going to switch to now you can see my new account here shows up web game and now my first project under this account shows up called game uh both of these have my uh crypto covent images you'll see i have my screenshots here and i have a an example a markdown description with uh any content that um i might want to add uh there um so you'll see currently i don't have any versions uh on this oops i'm just gonna actually switch here um and then so to show you uh an example publish of one that i do have a couple versions on here i have three versions um i will go here and let's say um let's do version four now on valas we typically recommend that um you know users use like semver like just basic semantic versioning um but you can really use any versioning that you want or any type of tagging um so what i'm going to do here is i'm going to go in my sorry i'm actually going to drag and drop here so i have this example dap here and i'm just going to drag and drop that nice and easy uh right into the front end so and that's it all you need is your excuse me your tag and uh your files drag and drop them um we'll sign one more signature here check on that transaction already in a block thank you polygon shout out to polygon uh valest main app is deployed on polygon um check us out on mumbai as well and there we go and there is our 4.0 release so if i click launch here uh you'll see we get this amazing screen that says welcome to the web3 game um so now this is a great time um to talk about pricing so uh developers need to eat too and so valas is free for all open source developers um but it's also free for if you would want to um list your software that could be paid software on ballast you are able to from the through the platform create a token gated on-chain kind of drm um through a project nft uh that you create um so each valus project um comes with a token id that can be used to token gate um a game um so i can take this project id and embed it or i already have now directly into um the game that i just published on this test account here um and now i can even set things like a price a limit um and even a royalty percent um for when somebody is um buying or selling that game license for you know if i wanted to even resell it and create an aftermarket for an old game or something like this and this gives you a lot of power because um all of these exploitative app fees um the apple app store takes 30 percent google takes like 20 percent itch takes like 15.

steam takes like 30. um ballast uh takes two and a half percent and then even all of those um protocol fees um go directly to a community treasury um that all gets funneled back into all your favorite open source projects that you um know and love um so now i have this beautiful token gated game screen um but i can't play because i don't have the token um but this is exactly how um within a few clicks within a few steps i could publish my web app game binary artifact token gate it with ballast and then monetize my software as a developer but yeah i'll hand it back to alec to talk a little bit about our cli and continuous integration sweet awesome yeah thanks zack um yeah so let me let me jump right into it with this um one of the examples that we referred to earlier was the ability to publish go binaries and other types of software in this project so if you can imagine something like you know an ethereum client or ipfs clients or anything like that or really anything that's a binary software we can publish with this so um the way to do that is pretty simple so we have this project here called uh it's just a cli publish go project this github repo is also available so that you can see all of the example projects that we have um and that includes oh it looks like we're gonna enable some main branch protection on that but uh anyway so these are all the examples you could see for for how to publish different types of projects and then you could view we have links to them as well i think we just had a question for um how you can view the project by uri link and then that is actually part of this is yours as well so you could view it from the app it'll also give you an ipfs uri that you can use to to directly uh pull that from there and then we're also working on support to be able to plug that into your ens name you could also access it by version so if it's 006 then we can actually go to slash 006 and then it will directly take you to that release as well but um how to actually get this published uh we have this simple hello world go file here um the this is just a simple hello world and then a make file that has the build steps but basically all we need here uh once we have these binaries available we have this hello world built already then i could just go ahead and cli or cd into this folder let me make this a little bit bigger here that's pretty big um so let me okay so now all we need to do is valus publish acme co that's the account go binary that's the project and we just saw 006 was taken so now we need to do 007 and then i could just point it at this dist folder here it'll ask me to select which account i want to sign the message with as you can see message meta transactions are enabled it's publishing the release um it's logging all the open gsn stuff there and you can see it's confirming the transaction um right there so as soon as that gets mined we will see the link to uh the project but uh sorry my cat's meowing in the background but anyway um we'll let that run while i jump to this make file to show the multi-platform build so basically what this is um is the same hello world go file at the beginning um only we build it into four different binaries for different uh projects you could also use things like go releaser that's a very common thing there and then you just point the same binaries at the end um but we just did the regular go build strings and that's ready to go so if you notice the values publish command is actually a lot shorter it's because we have this values.yaml file where we can actually define more advanced functionality so this project we defined an account the acme co we also defined multi-platform we define a define a version for the release and then we gave it a path to the the binaries that are inside and then this install field actually allows us to tell ballast what the name of the these binaries are and how to actually save it on the system and then which platform it corresponds to so basically it's going to go inside the dist folder um upload all that stuff and then map from there the paths for the darwin build to here and then when you're installing this on a mac it'll save it as hello go um as well so we can we could show what that looks like there but it's essentially the same thing you just configure that you hit values publish and you keep rocking and rolling oh i gotta actually bump the version so let's do that hit that um and then it should be good to go so it'll start doing that i'll show you what it looks like deployed with the multi-platform version if you actually see that that last version this json has a little bit of that metadata in here that shows the install fields the darwin binary is this dist hello darwin uh and then if you actually go and launch it you can you can check it out from there but the sdk the cli everything will know uh which platform it's built towards and be able to decipher it from there and then same thing applies to the searching and tagging everything like that um so yeah and then we also have a github action example as well um that i can actually show real quick but um the the way it looks uh actually we could show off the react app or the next app here so this this example next js app we have the the example here for what the github action actually looks like it's super simple config every time you do a release it'll it'll publish the stuff and then you can see the example there and then you can also go ahead and click to view that project on ballast and you could go ahead and launch it and see how it works there but uh but yeah that's it for us um we'll be in the discord as well and definitely uh let us know um if you need anything and uh yeah best of luck we're super excited to be here and actually we came out of a hackath hackathon ourselves so it's a really awesome full circle for us and uh yeah so keep keep hacking away um really excited to see what you all build and let us know if you need any help thanks everyone thanks well thanks zachary and alec and everyone likewise with the questions feel free to follow up over discord you

Automatic transcript — names and jargon may be misspelled.