Veramo is a JavaScript framework for decentralized identity that uses a plugin-based architecture to make it easy for developers to implement DIDs, verifiable credentials, and related protocols. The framework consists of a core library that orchestrates various plugins (such as DID managers, credential issuers, verifiers, key managers, and storage solutions), allowing developers to compose different components based on their specific application needs. This modular design enables the framework to be lightweight, extensible, and adaptable to different use cases while maintaining compatibility with W3C standards for verifiable credentials.
Veramo Framework Tutorial: DIDs, VCs & Digital Identity
Added:okay welcome everyone I'm glad you're all able to join us today this is one of our side sessions of the decentralized identity foundation's hackathon which is ongoing between now and December 1st so we do have 30 more days of hacking so if you have not registered or found a team there's plenty of more time to get on board and to make a submission uh so today we are joined by Mera nistor who is from Vero he's co-founder of Vero we're very happy to have him here today um as you may have heard there was a recent donation of Vero to the decentralized identity foundation so you'll see a lot more coming out of diff related to Vero and uh so we're very happy to have this demo today uh we also are encouraging participants in the hackathon especially if you're new to decentralized Identity to get familiar with Vero um get into this demo also we're going to have another demo next week related to Vero and didc com and that's going to be a very special uh special session because it will include Sam Curran who will go through didc com fundamentals in the beginning and then we'll have Nick Reynolds from Vero who will go through the Vero didc com pack pack AG so it's going to be the perfect event uh it's going to be two hours long so make sure you can block off your uh your calendar next week uh next Thursday November 9th from 9 to uh 11 Pacific time uh so with that I am going to hand it over to mercha to go ahead and take you through an introduction to Vero and if you guys have any questions along the way you can go ahead and drop them in the chat so go ahead Mera hey folks uh nice to be here uh first of all I hope you will excuse my uh my voice because I'm currently experiencing a cold but um besides that uh let's uh jump into some um show and tell that's so can uh can anyone can everyone see my screen yes all right so let's try a little bit of a slideshow here uh is it still visible or okay yes it's still visible all right so um yeah first of all like what what is this Vero thing it's um uh yeah we we think of it as a as a framework uh but it's also like a library or an API can be an ecosystem um and it's it's been created mostly for decentralized identifiers and verifiable credentials um it can do much more more than this but it um this this was its original purpose let's say so a little bit of where it it's coming from um it it it was initially conceived um in inside of consensus mesh in in in a project called uport um uport was one of the early self- Sovereign identity projects in the in the ethereum ecosystem um and it originally it was dealing with key management the social recovery and things like that um along the along that path um we built uh the the ort proxy model at some point which kind of like represented every entity as a as a smart contract on etherum um some spin-offs from that are maybe uh stuff like gnosis safe Argent wallets and and um even meta transactions which were like some some of the early explorations of of the uper project um while we were doing that the the did um the de centralized identity identifier spec was being WR so um we quickly jumped on board and created a um started adopting this this technology even if as as early um as it was uh before it was complete and we created this did ort um uh theid method representing these contracts um but after uh experimenting with it um we realized that it you know it didn't scale that much um mostly because people needed to create like transactions to interact with the to basically to create their uh contracts so that's when we created that ether um as a as a means to scale uh this this onboarding process uh infinitely technically um of course along the way we um experimented with a lot more did methods like did knle which was a sort of like a photo did key uh did mport um something that became did three which is was used for a while by the ceramic Network um and of course some of the stuff we used for dead ether got reused for dead PK um so um kind of um explored all of these uh identity models along the way um of course it's not just about identity models it's it's it's how you use them uh the uport ecosystem was working with signed claims um of course also you know um the the verifiable credential standard was being created uh so we adopted that one instead of calling everything signed claims we started calling things verifiable credentials and uh started working with spec um we were working with stuff like selective disclosure of course like a Proto like a very simple protocol not um also inspired by oth but not as complex as the the current day like presentation exchange or oid for VC um and other kinds of verifiable data like EIP 712 signatures and uh things like that um all of these things were evolving while we were working with it and we were working with it in like mostly a mobile app uh at the time uh but this mobile app also needed to interact with websites so uh we created two stat two Stacks essentially one for backends the uport SDK and one for front ends uport connect um these kind of evolved into present day digital uh which is was also donated to diff long time ago and digit TVC and did resolver and all of that all of these libraries came came from this effort but you might have noticed that it's essentially three different Stacks there's like a a mobile stack um a backend stack and front end stack and um all of these things um were kind of difficult to work with especially in this like very rapidly changing environment so that's when we kind of like try to consolidate things into this da like dead agent framework was was called at the time but it got renamed to Vero which is the thing I'm talking about today so yeah working in Three Stacks meant that every time something Chang it changed in in one of the specs we needed to adapt three things so that wasn't a good thing so we wanted something that uh allowed us to Define protocols Define um these standards and and and their implementations in a way that could get reused in in different places um so we wanted something that uh we could use in and and these environments that we were working with so it it meant that we needed something multiplatform uh at the very least we also realized that we cannot Implement everything from scratch all the time so we needed to be um extensible um we we needed to support this the stuff that we are working on today but also to be able to adopt other stuff that was being built uh on the side or by someone else or um things like that and um also it's it's impossible to write every or maybe not impossible but very hard to to write and maintain all the implementations of everything you want so we early on we we made this decision to to make things permissionless so that everything that uh can you know uh that gets written out there can be um technically um be adapted by a Vero Plugin or the Vero ecosystem in general so with this philosophy in mind we created this this framework um and what we have today is takes the form of a core Library um that um act as an orchestrator of plugins and what you see on the board here is a bunch of uh types of plugins that are um available for Vero the the the the full blocks are things that are already um in the ver repository and these um like lighter colors are stuff that was built by other folks and the the dashed ones are like things that are essentially planned for um but not yet available to my knowledge at least um sorry but um yeah the so the it it kind of covers most of what you would need when working with verifiable data and and DS like Key Management dead management you know credential issuance and verification revocation as well uh some protocols for messaging and um storage options a lot of lot of options for storage uh mostly based on typm possibilities so like a lot of SQL databases but we have also some like key value storage or um just ajon blob that lives in memory is also possible um so um and of course it's it's not just Vero built plugins it's also Community plugin so a lot of people from outside of the the the team have have built plugins for Vero and use it for their own purposes like um um AWS Hardware security module adapters instead of our own key management systems or um BLS signatures for Vero or data manager um plugins for um you know um browser extensions and and also sorts of things like that so yeah I'm you can interrupt anytime like if you have any kind of questions just um um I'll just raise your voice and ask but uh I'm just going to continue with with uh with this so how you would typically use this um you have your client application and you can instantiate vermo as a as a as a library just like import it in your code and this Library um it gets configured with a bunch of plugins that uh that the agent orchestrates and these plugins are the ones that actually implement the functionality that was on the earlier board so uh and the way they do this is by you know just expressing some some methods that can be called either by the client application or by other uh plugins these methods can uh emit events while they uh you know do their thing and these events can be subscribed to by plugins or by the client application as well like a a special kind of plugin is the message Handler which can can be triggered by externally events as well and it generates messages that you know restart this loop with with events this this framework itself is is very lightweight so there's no initialization cost or like very small initialization cost uh so you can technically create these these agents as um as often as you want the the word agent is sometimes loaded with you know like something heavy that needs to needs to live somewhere but um with Vero if you use the same configuration for uh an agent like you can technically when you reinstantiate it it's it's it's the same agent so you don't have to like keep some long running application [Music] um in in some some you know containerized system somewhere to get an agent you can just as well um embed it in your very small Javascript app and this is technically how you would use it um it's you you call this create agent um method with a bunch of plugins that each get their own configuration and then you start calling the methods on on this agent uh all these methods like in this case like did manager get or create this one is provided by the cred Sorry by the did manager uh plugin and this simple code here uh yeah I see a raised hand go ahead oh I just want to point out there was a question in the chat somebody asked can I use an agent to verify a credential of course and I'll I'll be showing that uh very soon so what what you see on screen right now is just a you know creating an agent um creating a a user uh identifier and then a credential about that uh that user um and that's this is not the only way to use it um actually this is the main way but um it it can also get expressed as a an open API endpoint so all of those methods that these plugins expose they can be these uh uh entries in the open API spec uh which you can call and this means that technically you can create sdks for other uh uh Stacks that can interact with your agent which in this case would have to live uh in a server somewhere but um it's it's possible to work with Vero from from other Stacks like this and we also build this uh command line application that is mostly for demo purposes but you can also use it for production use cases or debugging as well so um I'll probably show this at um at some point to uh to show you how how things work and click together all right so let's try to explore some of the uh the ways uh it can be configured so um as I said you you'd have your business logic you you instantiate your your um Vero agent with a bunch of plugins you're have somewhere in your business logic you call some some method you know it gets executed by a plugin and then maybe you listen to some events all of these plugins can they can they have their own configs like you know like database connections and they can even reuse the same database if it's compatible or like um kind of share share Fields with existing user user data for example but it's um it's up to you how you configure it there's no like one recipe for for everyone um and of course since since the open API connection is possible it also means that you can have sub subsets of of these methods exposed remotely like in this um in this example I have a an agent that only has a key manager plugin that key manager key manager uses a Hardware security module to you know do the do the crypto thing um and then this agent uh actually gets used as a key manager inide of another agent that is that lives in your application and which for all the other plugins and for the application itself um it just looks like a local plugin but uh it's it's actually using the functionality from this remote agent which also means that you can do the whole agent remotely if needed so um that's also possible um where the the the adapter here just acts as a as a thin layer on top of this remote agent and of course I mentioned that uh you can use it in other text tags like you generate SDK for like cotl for example from the open API spec that the agent generates and you drop that in in your cutl app and and use it and of course uh all the plugins you know it's up to you how you pick and choose it's it it's all configurable based on the on the application that you're building so you don't have to use everything that Vero provides if you don't need it uh like for example if you if you just need uh credential verification you can use a resolver and the credential plugin you don't have to use like data storage or identity manager or key manager you just need these two um and of course other combinations are possible but um you you can imagine that um you you have a lot of options in how you configure um and and how you use Vero it's very adaptable to every uh situation out there and of course we've seen people create special plugins for their own needs like uh you know even plugins that interact with the user interface of the application or you know like storage for uh metamask snaps or uh stuff for presentation exchange um so it it can be adapted uh like you can use combinations of plugins either from from uh from us or from other teams and just put it in in your application as uh as needed and I'm I'm going to share a link to this presentation uh so you you can check out some of these links here and also on the on the ver repository there's a like a small list of projects that we know of of course because it's permissionless we we don't know all the implementations out there and all the plugins that are out there and all the apps but um some of the people that work with Vero told us about some stuff and we we uh took some notes and you will find um yeah I'm just going to share some links like the the ver. is where you would go for documentation also the the code base itself um which now lives in in uh the decentralized identity GitHub um it's uh you can use the like the test suits for for sample code a lot of the time and we are most of the time available on Discord so just ask questions there as well I see your either raised hand yeah I was just um do you have a a copy of your slide deck deck available to drop in the chat because what I could do is I I could also drop some of these links for people oh of course uh I'll just copy the link and drop it in the chat as soon as I find the chat button right so I hope everyone can see it and if not I will find a way to drop it in again yes it is visible thank you all right um uh also there are some resources that I didn't mention in these slides um we have a tool Called Agent Explorer uh which allows you to uh actually let me see if I can um just quickly load it up allows you to uh strap a UI on top of your agents so that you can get started with it or like start interacting with the with these agents so um here um you can run it locally but we also have like a hosted version of it which you can use to connect to to the agents you're running and the way it works is there's like a local agent that runs in the browser and you can also connect to other agents um from uh from from this panel right here and then you get all the like um you get some options of working with your identifiers or credentials and and things like that um there's a plug-in template which um you can use to build your own plugins uh veru plugins are come in multiple shapes and sizes like there's the top level plugins that get expressed as as these like methods that I like I keep mentioning but you can also have like sub plugins that um get orchestrated by PL by by these smaller ones um by the by these top level plugins for example in the case of key manager uh you can have multiple Key Management systems that each cater to some particular technology or some particular um crypto suit or something like that and you can have multiple of these uh working together in one agent and this tries to cover most of the most of the basics um of these things so you can like if you if you want to implement some some particular aspect you can get started from here um and uh I also like wrote some like sample code which I'll try to show in a minute or two um just to get you started in in like if you're building a JavaScript application uh with with foro so yeah I don't know any questions so far uh by the way I didn't check the chat I don't see any questions in the chat at the moment um all right all right yeah okay um I will then um try to uh share screen and show some other types of code let's see so uh yeah actually let me just share this desktop all right can you I don't know what's visible no sorry about that okay okay so um can people see my intell J window or I'm not exactly sure what I'm sharing because I have two monitors and I'm getting some weird issues from Zoom um so I'm seeing um it says TS backend all right all right all right so okay uh which means that I can minimize it and just uh try to show um let's let's just try to work with um with the command line application a little bit uh so oh sorry all right so um you can use this command line application by you know like npm install um globally CLI something like this on my machine it's already installed so I'm not going to do this uh but then after you do that you have this um R command that you can just use in your CLI um and it's um yeah it shows some options of of what you can do and the way it works is there it it creates an agent inside of it and the agent itself is based on this configuration that I'm going to show in a sec um all right so um it it kind of looks like this the the configuration it's a yaml file that describes all the pl plugins and all the uh options that they are using so this one is by default configured with um most of the bells and whistles that are present on the Vero repository uh which should help a lot of folks get get started with the basics um I hope and if not just raise an raise an issue so let's see some some things that you can do with it [Music] um let's just create a an identifier uh first so just when I do did create it asks me like what uh provider I want to use so these are the ones that are installed in this agent and I'm just going to create a did key um call it GG and this is it we have it now and now um let me try to create a credential using this uh did oh by the way so um any command U has this- which should help you navigate the the options that are available so um let's just create one so okay I'll choose a JWT credential this is going to be the issuer um since this was meant for demo purposes this the the credentials that I can create from here are kind of simple this one is is just going to be um like a profile credential with a name and U this is it this is the the the credential it asked me a bunch of things that went into the credential subject and that's it in the case of JWT credentials the the actual credential is is all embedded in this uh J property from here um in other types of credentials have like you you have to use the whole thing but in for JWT can use the just the just this bit as well so let's um let's try to verify it uh actually forgot if I need to provide oh yeah so as a raw credential just paste the Json the JT sorry and yeah quential was verified successfully and what actually happened was it looked at this it decoded it as a as a you know JWT it looked at issuer it took the issuer and resolved the issuer did document and then checked the signature against that did document um and uh at the same time checked all the all the dates that are in the credential in in this case it's just like isurance date um so the the the it it checked that today is after the issuance date if we had an exp expiration date it would have checked that as well and also like if it was using a credential status for for credential revocation it would have verified that as well um so the the simple answer is yay it's verified all right so uh let's see uh one other thing that can be done is um to explore the local database of this uh agent so I I created this GG identifier earlier and um just a credential bu it so you can see this here I don't really have any presentations or messages yet but um you can also check those out if you uh if you're working with it uh technically the the the configuration that that is used to create this agent can also be used in a in a JavaScript application to instantiate essentially the same agent but in a like a programmatic context um and let's see what else oh yeah so um I can use this configuration to also start uh the agent as a server um which means that I can then interact with it uh from um using open API and uh let let me just try to find a better UI for it uh so I'm just going to copy this API docs link and to a browser and all right so I'm now connected to that agent that was um sorry can you see my browser window yes we can see all right thank you uh so I'm not connect I'm now connected to this agent that I'm hosting here so I should have technically all the all the same options that I did before uh these are the methods that directly the methods that are available on this on that agent so let's see if I do um the manager find maybe oh yeah this is it so let's try it out uh if I don't provide any options here it's just going to find every dead that it manages so let's see oh yeah um I first have to like authorize this UI to work with that remote agent but by default these configs come come with a like a bearer token API kind of API token kind of like authorization um and the default one is test one to three so don't forget to change this uh or update the the whole authorization mechanism as well um it's a very simple kind of like um you know one token controls everything uh model here by but you can customize it to your needs if you want to do something else so in this case uh let's try the method again and yeah so I got this response with the did uh that I created earlier and also like when I started the server uh there's like a default functionality to create another default did and um that one is a did web but but it's just like um uh like a local host thing so uh ignore it for now so I see the same data that I had before and um in my command line application and I can also do the same things with it like uh let's see if I can copy the St um let's try to create a credential from this interface uh so create ah sorry I don't see I should be seeing a create verifiable credential somewhere oh yeah um excuse the demo goes so let's try it out so in this case I'm I'm just going to act as the the issuer um but I'm using the did that I created earlier um it's going to be a self-signed credential that is just going to be like claiming the name um I don't care about the type or context uh mostly because a lot of this stuff is going to get filled in by the the framework itself if it knows how to and otherwise it will throw an error and I'm going to be using a JWT proof format so the context does doesn't really matter I don't have to Define that name uh but here um let's just try it all right all right so we got a credential with uh claiming that the name is GG let's do something else so that we can tell it apart from from the other stuff uh so uh all right so let's see everything is uh awesome all right so now I can like work with this whole credential but as I mentioned earlier for GWT mostly this part is the the important part so let's try to verify this one all right verify credential all right so I can like as I said I can paste the whole thing here or I can just use the the string itself myself uh this is Json so I I need to quote it everything else I I don't know exactly why these things appear uh it's probably a bug that I discovered just now but uh just ignore everything else so all right and we have a result sorry um verify true and you get a lot more details about the verification like the credential itself who signed it the verification method that was used um all of that but most of the times what you care about is this uh property all the verifications have this the the rest of the the payload can can change depending on the credential type all right so um maybe let's yeah just questions so far uh there was one question in the the chat I'm not sure if it was answered um okay from Gary what are the the VC's issuer is always wrapped into Json is that compliant with the v3c data model am I missing something um I'm not sure exactly what you mean so when when I create a credential let's see um you mean the fact that this is Jon yeah the H word itself yes yeah it is compliant you can actually provide multiple issue properties here um but um what Vero cares about is the issuer ID that it uses um as the so so the way it works when you when you call this method is that the credential plugin looks at this ID property and say and then asks the the key manager uh plugin hey uh sorry the did manager plug in hey do we manage this D and if so can I use it to sign stuff and then with the reply that it gets from the did manager plugin it gets a list of key IDs that can be used and then it uses one of those keys to sign the credential um and this can also be specified as you know like without the ID property I think let me just try it uh right so yeah let's let's just trite like this yeah so it it worked like this as well actually let me try some other property so yeah I I got the I was able to create the credential with the the as specified just as a as a string so you can work with both the but when you when you when when you work with an object you have to specify the the the issuer as a as the ID property when I when you work with it as a as an object instead of just a string you have to you to to specify the the issue the ID as the as the ID property of the ISS okay but you can also add like other stuff here um so this should technically also work yeah so I got the you know this credential also has other stuff in the issuer property okay thanks for this but my my concern I didn't find the syntax before in in VC data model version two or one so yeah that's what that's what I was wondering that yeah we can do this I mean technically in V yeah we can do but overall is that correct sytax or not actually brought up an important Point uh the the current credential plugin implements the the V1 data model it doesn't we haven't adapted it to V2 yet so uh if if it's important for you to work with the V2 data model that's not available yet I'm sorry okay but I don't think the the V2 data model is is complete yet so um we'll have to wait a bit okay yeah thanks all right um like all of the credentials that I created earlier let's see um if I do like a verom Explorer um I should see the same uh sorry the same credentials oh sorry I no I I know what happened so the the credentials that I I was uh creating they were just ephemeral uh living just in um in memory uh if I wanted to save them I should have called the um the the save uh method but in any case let's um let's maybe move to some other types of code so uh let's see [Music] just a sec all right so this is the the sample code that I linked to in the presentation as well so what happens here is um you know the the the agent gets set up uh I see something in the chat just a sec you can ignore sorry yeah I mean I was confirming yes the snx is already there in V1 or V2 yeah so okay yes thank you all right um so what happens here is I have this agent that uh is configured in another file that I'll be showing and I'm just using it to you know create an issuer uh in this case I'm also creating a subject D like a different one and just creating a credential and verifying it and normally these things would happen in different uh applications like the the issuer is one application that issues the credentials to and then credentials get like sent somehow to a holder that holds them in their identity wallet and the holder itself is another application the like the the identity wallet then the holder wants to do something with that credential and they show it or they present it uh in in you know like by creating a verifiable presentation which is also available on the agent and that gets to a verifier which verifies it but in this case it's like all simplified into one one file but I hope you you get the picture um and uh okay so I promised I would look at this so this is like the a fairly exhaustive list of plugins that can be used from the Vero repository itself um so this is mostly what the the command line application agent looks like as well it has a bunch of um sorry a bunch of uh you know like did providers in the did manager uh some like message handlers uh data storage options in this case using an sqli database um um you know it can do decom there's a credential plugin for issuance and verifications um did Discovery this is something that I'm I'm not going to go into because it's not very that uh uh significant for this um selective disclosure this is like the the tiny um protocol that that uh we built in the uport days with was reimplemented for varo so um just as a FY FYI if you're using this this is not just like a generally accepted standard it's just something that kind of like um remained in the repository until now but at some point this will probably disappear or adapt to become like presentation exchange or something more um like generally agreed upon um everything else though is is U mostly standards based and um yeah as I said like when you um when you when you use these plugins they they talk to each other so that's one of the benefits of using this framework like when you call create verifiable credential you know it it checks the issuer ID and links to other uh plugins that manage this did and then the keys that uh the did is assigned uh is is using and also for verification you know the the credential um coming in needs to be verified in multiple ways so multiple plugins can can be used for that uh most of the time the did resolver is the most important one like the the to resolve the issuer did and check the signature of the credential against the keys of of it um so they kind of like wire up together to provide this fairly simple functionality um it's as simple as can be in my opinion based on the like w3c um specs um but of course like if you if you know ways to simplify things um like all years and since Vero is now in in in the if you know it should be more of a collaborative effort instead of just one theme driving everything and um yeah let me just show some other one so this code here looks mostly the same um it's it's it's also creating an agent it's also like creating a did and and a credential and then verifying the credential um but the difference between these two is that this agent is actually using um just some plugins locally and everything else is remote so um it's just using the resolver and the credential plugin for verification locally and everything else that it needs to create credentials and DS um is coming from from a remote agent so it's actually using the the setup from the the other one which needs to be expressed as a server um and then Things become much simpler in terms of setup but of course like you now have like two machines to deal with and um that's uh that can create other complications but in in some situations it it it's it simplifies things a lot as you you you get some benefits of some machines that are are not available or like on the edge or or something like that so um sometimes this kind of setup can also be helpful and yeah you can check out this code too um yeah to to see how things are wired up together and and also as a like template typescript project I I hear some folks have some difficulty setting things up so this maybe serves as a as a template project for for that as well okay um I think we're coming up close to time uh so I don't really have any like uh other things uh prepared but I'm open to questions or like if you come up with an idea of like something to do on the spot I can try to do it in in the code any other questions from anyone Gary was your question answered earlier oh I see a question from Phil so um did he say yes oh I'm sorry Gary was that a yes no no it wasn't um your demo code refers to the at next I'm assuming that means it's like Beyond latest like like pushing Cutting Edge what yeah uh by default I think uh actually not by default just this repository let me see uh yeah it's it's using the next versions of Vero um which mean so the um the the it refers to the the release process that we use um so we we have this latest version which is built from the main branch uh and it's supposed to represent the official releases and then we like all the stuff that we bring into the next version we we push it into the next brand which um periodically gets merged back into main uh on the from the next Branch every commit gets its own release and that's it's all available at um as a at next uh disc tag on on npmjs so you can you can see the the the upcoming changes as a as a preview releases um for this for this demo you can use um the the latest as well there's no significant change um relevant to the sto uh okay so any performance testing or testing of scale this is kind of hard to answer uh mostly because um the the way it's used in in production it depends a lot on the use case like um for example um you can use it with the sqlite database or a postgress database or mongod DB or something like that and that might be your volum or you can use it with uh just a Json blob that lives in memory to store all all your data and you know you you can imagine there's going to be a a completely different uh performance uh characteristic between these two types of deployments and there there are lots of other things that you need you might need to consider like um what types of dids are you using um like how how long do they take to propagate when you when you update or uh how long does it take to resolve with the ID what kind of like text tacks do you interact with when you do that uh because not all the ID methods are the same so all of that uh kind of um impacts the the the performance characteristics a lot more than Vero itself um vermo itself as I said is a very small uh Library um the core um everything else is plug-in based so depending on the types of plugins that you use you will you will see different options um we we do have we know we do know of teams that use ver at scale um and the types of things that they complain about is not ver itself is is the the like issues related to particular did methods or uh when they need to like for example in in dcom you need to resolve the recipient did uh and sometimes the sender did before you can um know exactly which keys you are using to send messages and this resolution step for example causes sometimes the the the dcom step to to appear slow for example um so yeah I don't know like um maybe my rambling has answered your question a little bit but um if not then please follow up uh can we generate QR codes for Vero um I think that was at some point part of the command line application Vero itself doesn't have this QR code functionality but I'm sure there's like an npm package out there that can be strapped upon an application to to provide this all right um if there's nothing more then [Music] um we can either cut it short or I can try to make two agents talk to each other uh why don't we um ask the room is is anybody interested in seeing uh one more short demo or we could also uh move over to Discord people have additional questions um we created a Vero channel in our Discord server where everyone could go and ask ver specific questions um let me go ahead and grab the um the link there for people um give me a second okay so there's the the link to the Vero channel in the hackathon Discord but of course you could also go directly to uh vero's Discord cord Channel as well um but I mean that's a good place to also put in resources and ask questions so that other hackathon participants could see it as well okay I don't see any other questions uh let me see so amarachi um who's a community manager at VMO she put in here the VMO community on Discord so you'll see that link there as well thanks thank you amarachi okay and also I'm just to let people know we do have an upcoming session that's starting in five minutes on on uh trinsic and the BBS signature scheme if you want to hop on that as well um let me grab the uh the link there if you do want to join us um I may just stop that um okay there we go um so yeah so if you want to join right after that um come on in and keep on keep on track of on top of our um Communications and Discord as well as I'm going to be putting out announcements uh there about the hackathon so with that I want to thank everyone for joining us thank you so much mercha for this demo and and of course mercha and others are around if anyone has any uh further questions and I hope to see you all in the next session awesome thank you very much thanks everyone thanks thanks by he thank you
Up Next

Irrational Exuberance: Asset Bubbles in Modern Markets
@theLondonSchoolofEconomics
58.2K views•2015-06-02

IFS Therapy Demonstration: Complete Session with Unburdening
@IFSCA
95.9K views•2021-01-13

FastAPI vs Flask vs Django: Choosing the Right Python Web Framework
@TechWithTim
302.5K views•2024-05-26

Game of Thrones Opening Credits: A Cinematic Analysis
@gameofthrones
46.3M views•2011-04-18
Related Study Plans & Knowledge Roadmaps
Structured learning paths in General & Interdisciplinary Studies
![ปูพื้นฐานการใช้งาน TypeScript | สำหรับผู้เริ่มต้น [FULL COURSE]](https://i.ytimg.com/vi/ubAGnfHcYbo/hqdefault.jpg)


































