Advanced Noir: Building StealthNote
NoirCon 2 Berlin 2025 · June 2025 · 53:46
Aztec engineer Saleel Pichen leads an advanced workshop on how he built StealthNote, a tool for posting private messages while proving organizational affiliation without revealing who you are. The session is aimed at experienced Noir builders looking for a challenge and covers the circuit and application design behind the zero-knowledge proofs. It was part of NoirCon 2.
Speakers
Topics
From NoirCon 2 Berlin 2025, hosted by Aztec Network.
Transcript
[Applause] [Music] [Applause] [Music] Yeah, I think like first we can we start with like what's already there? So, uh have you used this stuff? Yeah. So, yeah, I'll show again like so. Yeah, I saw it. Um yeah, you saw the the B. So like yeah sign with Google and then you can you can build uh your gener uh yeah and like so in the new version there is something so yeah this is this was the on like you can just send the message
uh with someone from Yes. Yeah. like this is production so I'm not selling anything. We have uh yeah all maybe but uh but yeah nothing spicy yet um but yeah like the new version 9 is talking about like proving with email spice. So this is the T book version uh and you can prove. So this is this section is for email and then uh mean this is for the site uh and this is for the email.
Yeah. So if you do email just like email like an email uh like any internal company email. So someone from your company send an email to you, you can download that and then uh open it here and then they don't send to any server. It's just uh unbrowser and you are making proof then in this email the firm address doain and the two address are see so yeah if you we're assuming that um like such an email will be on Instagram and then you can do say you can send on okay will you be able to show us like
the circuit uh yeah So we'll do a core book too maybe. Yeah. Uh yeah. So pretty much this file is a good start like all the types. Uh yeah. So this application is like it like made generate. So we have some people anong do uh and like if you are signing like you are part of this company then this company is the um yeah it's like you have there was an ID basically title and then uh this is the provider ano provider u
so in case of uh Google like the JWT there's there's a provider for that and for email that is a different provider So uh for the front end app is like you can have any number of providers and uh you can make poofs any provider. So I'll get to that. So like this app folder here um this is the London app and uh you have this providers here. This is uh ping up email and this is uh pulling up our water.
So, uh, would you like to explore the Naz? Yeah. So, search it up. H. Uh, yeah. So, oh, well, uh, it's actually dependent on this library. Yeah, I saw it from Yeah. So like if you go to the main is it takes the data and the keys and uh your like the FML public key uh main key that's used as nons. So you are initializing this JWT this is from the JWT library we can go to that upper this ID and then you're verifying the signature is valid.
Then in the next step you're like uh from JWT you are calling this get plane. So it's like extracting one JSON view. Uh so the JW library gets takes care of the bin pairs and like call on you proving that the hat key uh with some salt is equal to the value. Uh yeah and there is uh the like yeah in JWP we are verifying there is a field called email verified and value is true uh yeah because like an extra production some uh if someone creates a Google
account and they don't verify the email um they should be able to see I think like Google port even give you sign in codes but yeah this direction so uh then we are extracting the mail and get it claim string. So most of the code things here is JSON parser. Yeah, it's like parsing the it's most of the things are happening in the JW library that uh I'm interested why didn't you like uh list stuff in the unconstrained choose you can so in JWT library it's suffering like that okay so you are extracting in unconstrained way and then you're proving uh it's percent yeah it's no power yeah interesting so
yeah you get the email you extract the domain so okay so finding the domain index. This is unconstrained actually. So, uh get the domain index. You have you need to use this break statement like you're looking for the ads key and then like that's the plus one is the domain solid text. So, you find that on constraint and then um like you're asserting that the value before uh that is 64. This is the SK capo at so um yeah it's it's where we are setting the value before the set. So like everything after that is the domain. So uh in the passi like you're matching the domain that's
first. So doain is a public input here. You can also do expract that and then just do how do it's it's the same thing. Okay. Now can you also how you integrate this in the follow? Yeah. So you see this providers folder um and yeah in each provider you have a JS and you have newer um instment app like yeah let's let's go one by one so let's let's go to components so um message card maybe I'll just uh this So uh yeah this blog right? Yeah that's
a message card message form is this line and then the list is the list I think proonal that's this one and yeah that's the main thing so most of the logic is here. Uh if you go to code register membership this is the first thing user do uh uh like when they click prove and then use one of this method they are registering so we will generate a like a key pair then we will get the provider which provider they're trying to prove it and then call provider proet so you see this providers
here they have to implement that there's method uh and yeah we are calling the server and server will save everything and like yeah this is the one where you post the message so sign the message with your key you're sending the message and keep server uh and the same for verification so first you verify message signature then verify you verify the GK proof and also happening in the so like most of the things can can you go out sorry can you go back to verify Yeah.
This one? Yeah. Memory sign. Okay. Yeah. Um then you take this and you send it to the server. Yeah. Okay. Where do you send it to the server? Uh I think uh this function is coming from this API. Okay. So it's just calling K city of data. Okay. And on server side canam. Yeah. Uh it's next day so it's like here. So membership that's like when you register the key for the first time.
Yeah. you're verifying the groups with the save provider and then uh yeah using like super like post uh inserting into a table and that's such a stroke um posting a message is here post message you are like extracting I mean this is like from the body you get the values and then you um insert in the database um there should be Yeah, pretty freaky.
But what exactly you store local in the database? Uh, so the server is storing all the messages and the puff. Yeah, it can be anything can be I first like messages make sense just before that um this is your proof. So you generate the proof once um and then you can send any number of messages with that, right? Yeah.
So the membership registration there like you're you saving your poof um and like the other to submit says oh you just said I use this. So what exactly do you insert here into database says yes I understand that you need proof and messages probably if you want to to show them. Yeah. So it says key is here like uh yeah inside this okay no so uh if we go to so these providers here they what's the
difference what's the difference the group of U provider provider is the one that uh like controls the domain. What do ID? What is uh so in case of the company the provider is like either JWT or email. So provider is like the code we have here. Uh but the ID is the domain. Ah okay. Yeah. So the company might get multiple names. Uh so this provider like like with with your general duty you can pro uh for any domains right? So like that provider is giving like this is the e key for uh this particular yeah
uh it's for yeah so if you go to one of these I don't know yeah play all the power teleps this interface and that's it. So mainly like generate proof you will be given the camera key and then you have to return the proof and it's basically the what's the ID and title of a group. Now you have the same for verify and then uh like this is to get the uh here so for example like this this bit right someone from domain name SF that's the unapprove
and then you have the get component that react component let's run there. So if you click this one, so this bit here it comes from uh the email provider and this is coming from the video. So if you if you will give a ledger, you have the component, right? So uh yeah, all this info is here. So you have a sign in with Google button. Um what? Yeah. Uh and then when you click it, you are um loading Google or script and then calling the signing with Google. Um so this this function should be implemented here. It takes it loads the popup redirect to Google and then
gets the key and everything. Uh yeah. So we are so you seize this. Yeah, get component is we just returning the component and in generate pro uh you're getting the JWD from that you're getting the header and payload and then yeah extracting the domain. Uh basically you are preparing the inputs for the circuit. So you see all these inputs this is from our uh file. So everything that's needed for this one uh we are preparing from from the Arabic key. So um the data the
public key uh yeah your domain and just like regular normal not so you not break and then that is probably so I have a question if you would want to add a feature where the same user can't register twice like with the same yo uh oh so yes uh that would be I mean you would need a nullifier for that but it's not really a problem for this obligation because yeah but maybe in the future you want to restrict that for example I only have one person from this because maybe you have 10 messages.
Yeah. Yeah. Sure. I mean, but if if you only have one user, it makes like Yeah. So, what you would do is um you return something like like let nullifier equal to um yeah like hash of let's say um where is it? Maybe like signature. Okay. And then you you return this uh unifier. So, this will be like a public input and yeah then uh Okay. Okay. So if you do signature then it's not a nullifier because like it will be sent at a time.
So maybe you use something like the email. Yeah. Uh if you do that uh it works then like the server will see if I they have seen the nullifier before. If they have then they will check it. Uh one issue is that then nullified is a public input now. So say can track. Yeah. Google can track it. Yeah. So that's a problem. But yeah, here we are not doing any spam checks or anything like that. So like one person is free to send any number. So in the future you might have to.
Yeah. It's a limitation. Yeah. Yeah. I mean for this use case I'm over it. Like maybe if there was like a voting use case uh like come internal voting or something and then then you want one person to vote only once then that's a problem. Yeah. And and because I find like the technical part is like really nice, I think it can be scared to something bigger. Yep. Uh what you can do is like you can hash this with some randomness and yeah like so but if this rand is private then um you can you can always change it.
Yeah, you can always change it. So try to do there are techniques like opf like uh share randomness and all it's like a general problem to all ID projects I think. Yeah. Um but yeah like you can prove that the randomness is coming from some source. Okay. And if you want to add like a way for example to track how many posts this person have you cannot um I mean that's like Andy privacy pie. I know but let's say then yes uh server can either reject like if you see you can reject or like you can say one person can do 10 and then or like you can simply track how
many so like what if you want to add that you would rather do it outside of circuit inside the circuit there's no way to do I mean you should yeah for this particular use case I will do um outside of circuit okay because uh yeah I mean like here there is a reception on the server that it's for online so they have to store the insights um and since because you have the server is to free is like service free to define their own span production checks.
Mhm. So uh yeah and the likes you stored obviously oh actually that's a good example for nullifier it's it's yeah it's not very accurate now so I can do this and then I can clear my local choice come back and do again yeah this was yeah yeah it's yeah we put example yeah this is one place for union nullifier the reason I didn't add this is like you are ling privacy theh that if you want to preserve ver in some sense what will be another way like you track the keys on that there is a vo technique or obligate random
okay uh it's basically this but it's not something you can change yeah it will be a private group but like it will be shared before uh and like it's created by multiple people uh so yeah it's used only once Uh sorry I missed the part where so what is the prover the way so that he proves his like we did that but like there was something mentioned that she received an internal email or something like that. Oh yeah that's is what what's exactly is uh so one way like this circuit is for JWD okay the email circuit is here but so this like there are two ways like
email key size so some emails are signed with like RSA 1024 keys some are like with two 204 by PC uh but it's the same circuit it's just that the public key limbs it's different but anyway like yeah you're passing the email header uh this has all the signed data like yeah subject and from to DKM public key dam signature and then this is where is the position of the from header in your uh like where is the position of the frock key in your do you know like how the eins
and then like two and then on the domain. So we so we are using the ZK library to verify the ZKM signature. Um and then uh yeah get the from email address. So you're passing the position then this utility is also provided by that library. You get the address and then uh two address. you also get the two address and then you are verifying uh but you're extracting the domain from two address and then also from address and then you're matching they are the same.
So uh if you look here um they're getting the from address and then okay so what we're doing is like we're passing the domain as one public input then we here we are validating the domain in the from address is the sake same as you passed so you're getting the you're extracting the from address from email getting the index of the domain with the key um and you're basically ally setting all the values after that is same as the input you pass and you're doing the same for uh two
address. So we are assuming that like if you have a email what uh from domain and true domain is say you are someone in that company. Okay. So let let's say if I somehow get like it's forwarded to me an internally made that would that be enough to prove that? Yeah. Okay. It's a limitation. Okay. Well, if you access someone else's invokes when you Yeah. Yeah. Okay. Okay. Yeah. No, it's fair. Uh yeah, there is also like one edge case here. Um if like I if I send email to my colleague but on the BCC uh I put you
and like B uh CC is signed. So in the circuit you can I should be doing that here. So you that there is no CC header. Uh but like BCC is usually not signed. Uh so they can impersonate someone in the Yeah. Addy like we can add a new one. Sure.
Yeah. So it would be like simple one be people who know the pre-ag is like real example. For example, what are some limitations on the was on on the front end on the pondant? Yeah. For example, when I generating proofs on the front end, what are some limitation of circuits that can? Yeah. Mainly on the circuit size circuit size.
So both these email and dability they takes like 10 15 seconds for bucket voice find it. Yeah. So yeah like I don't some views like uh if you want to extract something called email body where uh then it will be more expensive it was still what in the browser but it depends on the email body size uh like for example one thing I wanted to do for the workshop is like you receive an email from no a dumer like you can make a proof of that So but for some reason that email didn't have a valid key I think like their key expire or
something unfortunately like in this week they change their game key but yeah you can you can do that uh but basically that case also we just need to extract from the subject which is cheap uh but extracting from even body is expensive you can do it unconstrained if you're doing it unconstrained then you're not really ping so yeah and a Say dash. Uh so yeah you what you get is like if you want to extract something at the end of the body then you get so you know how sha works in tons right in like some like 60 power bytes tense.
Really? Yeah. So it's so it's like you hash the first portion then you hash the second portion like that. So if you want to extract something from the end then you can uh compute the hash up to that block or f the circuit and then pass the intermediate hash and you can continue the um for I'm actually using that so this partial hash and partial data um yeah they so we photos.
Yeah. So this um video okay so this signature is RSS signature of headers and payload. So header is in B 64 payload is in B 64 and then it's image of that what you want to extract is this email here right. So you can and like the secret is you hash all this with shadow groupics and then the hash is signed by asset. So you can prehash everything up to this key and that's uh what I'm doing here in in the JS if you go uh yeah it's actually in the library
like you you generate the inputs you are getting uh you like you can pass this premutive key so uh up to one of these keys it will hash outside the circute And um the result will be the partial hash is this one. I mean the the partial hash is this one. And the data that you denote hash is this one. So yeah whatever you need to extract in the circuit it should be um it should be like uh hashed with your circuit otherwise there is you probably nothing.
Yeah. But this will save a lot of states. SH is like very expensive. Uh check it out. Yeah. So it is taking 10 to 15 seconds you must the camera. Yeah. Yeah. It's um this is M4 max. So and to something like that I think like email one must pass. Let's see. So the basic is how how long the email is or like uh no so for this one we are not going to the email body we have this same so it's I think like maybe 10 seconds okay but yeah for if you want to do like event registration then if the data you
really want to maybe like the event name that's only in the body then you need to go to the body so email The signature is like the hash of from to subject then the hash of the body. So if you want to extract something from the body you need to do two hash one the body hash then you put the hash in the headress and then you cast them. as policy side. And so in the the one where we're only taking from the subject like what was in the sip we're taking all this time like oh mainly to do uh the sha verification so to here
maybe you go to JD library so this is JW library you need uh nicial dash but if you go to verify you are doing this online here getting the sh if If it's a partial SH then you're doing the full hash from the partial input and down. Um yeah you're doing the RSA verification which is from RSA library. Okay. As is like UBC or SH um take size it depends on the leng of the input. Okay.
Yeah. So that's triple RSA or FSA and um I don't know but like for this one like it's the signature is coming from L school right like yeah so you you see also what I was see right it's less computation yeah I mean like if they're using also very cheap Yeah. And so among them hashtag supporter supported in what is poson the most one or yeah
sure okay or what is okay. Okay. Okay. Yeah, I remember on your GitHub you used to have an airdrop. I don't know like the airdrop example. Oh yeah. Yeah, that's it. Maybe it's called. Yeah, this is like a example of ZK wheel. Yeah, it was really old because I remember I used it the first time you made it but then after a couple of phones you stopped.
Oh yeah, I don't think I been named it. Yeah, it's probably with old version or Yeah, because it was I think it was the first example of doing article trees that you won or maybe one. I don't know. This does this have to no idea. He used to have another one where prof is the stealth pro. Yeah. Oh bedroom. Oh, you mean the stealth frog? Yeah. desktop. Uh yeah. Um it's best to Yeah. What's it?
There's no because not this mar slash. Yeah, it's been now. Oh no, it's a example. I need to I need to archive it. S more example as cuz I I I split but then Sabio asked me to put it back. So then yeah cuz I I I hear duples like in my notes and then when I want to go back there I see like we're out of like they're not related to what's being done now.
And maybe you can walk us through this on the front end and on here on the st. Yeah. But it's I can I can It's currently being up this this project is fing. Yeah. Oh, you tried. Yeah, I tried already. Yeah. So I I can actually make it work. I I I fixed the the the thing, but it remember that BB problem I mentioned in our channel. They say that is getting unable.
Yeah, it's with so but but like no locally you can build a circuit locally. You just can't you can prove it on the web. Yeah, the main is with the web also cuz I pretty wide. But I mean what I can do is I push whatever I have now and you can play with it but considering that you control the phone on maybe there's something stupid of I don't know maybe I did not say something. I don't know. It would be nice to see you guys debugging it on live. I mean we would be debugging live. Did you try maybe suburb and then not I'm using but I don't know if it's
I didn't say no but for browser it's fine. Yeah. I'll I'll push what I have into a into a branch so you can you can toy with it. Just keep in mind that we'll fail on router. It's probably something stupid and but yeah I mean I can walk you what I have but I think you will have sent out right already. We will see. Yeah. Yeah. May I have to boo tax the screens? Yeah I think my we are finished up but yeah we can if you want to say we can keep it. Yeah, I mean I would sell cereal.
Would you guys recommend using your examples or there was the Zika tool kit? Yeah, something like that. Z kit. Zika kit. Zik kit. Uh yeah, it's fine. We are doing both. Oh, it's okay. So, so I should refer to ZKit also. Yeah, it can wait. Let's find our examples now. By push. Yeah, I pushed it. So it should be yeah it's it's already there. So uh if
you if you go to examples there's the there's a draft PR called pin to blah blah beta.6 that's on empty. Yeah. I don't know why where I pushed it. And and there's there's I know I'm doing something stupid because like it compiles and it throws it does everything locally like CLI and FS on the web and and I'm definitely something stupid and drinking. I was in a hurry so I can check very well. But it was aing immediately.
Yeah. Yeah. So it's not al or never. It's just value. So but then you guys I'm doing like 100 other things at the same time. Oh this Oh you saw you saw the J actually. Yeah I saw this before. Yep. The buddies. So we I think do you want to see the demo?
Yeah, do build run. Well, that's that's m Yeah, that's massive support, right? connect any walls then the the so the signature because it be a ton and there's no wart tune was just a demi I mean it's not not demi it just not done on the so that the the
actual signature is actually block signature it it just doesn't it's not done on on the on the extension there's no But it is it is using this actual is just them. All right. Yeah. Also I have another question is like when you do the so verifier uh does it only it only works on the VK byes doesn't work on the fields right because I had like one yeah that fields.
So when you when you output the field uh uh bytes and fields and you can't use yeah the sol with the interfaces by spice okay but JS doesn't fail when you master the fields and I had an issue like for a couple of days I kept trying to verify no pro will get us byes on from the ends maybe public inputs the the BK oh but you don't need spins when you want to run in front end as well.
Oh yeah. Why lin VKS? No like when you generate those all the verifiers. Okay. The V key is already hardcoded in the verifier right? Yeah. So you don't need to pass that again. But on the front end when I generate the proof I have to pass it the JSON you will care. Uh no. So mistake I we also made a repo recently for from for from tent right here that's
Yes. Okay. Okay. So, there is uh Okay. If you go to set for some uh press take this one that baby oh I I believe what you told not as you want as JSON or something.
Yeah, but when you want to do it with BB just you have the right fields. Yeah, but it's not expecting fields. So you have like a se like a hidden option only the right decay as as field right. Yeah. Yeah. This this is what I'm using. And when I do this I can generate the solid for barefire but same time but it's not related to solid. You talking about this one right? New quest. Yeah. I mean like I have to generate two of them. One V uh like VK as JSON and one the VK as like byes.
Yeah. Why do you need the JSON wiki? I need it for the front end. And then I need another VK for generate verifier. But when you call this one you are passing the VLA. Yeah, it's not fields. Okay. Okay, this is also mates and okay. Yeah. So, so I can use the same file registry formatted. Yeah, you can like so if you if you do BB ride BK used bikes right you can read that in NodeJS FS read file I think then you can just put here uh it will read as bikes I think maybe it's buffer in NodeJS but converted to unit also buffer is only from
yeah uh but like for the front end you don't you cannot do a post so in this case I'm saving as JSON So if you go to the build script here, you're writing V key and then you're reading that it's like I'm running node JSON line. Uh so I'm reading the file then you take from that then just like doing JSON stringifying file and saving as JSON. Okay, this is better. We just don't documentation. We don't have those light. Yeah.
Uh yeah, that's something useful about the door. Say uh yeah it's for for frontal units something like it's still not fields at place like buys can ask. Yes. So if you the output is this one is as like just a JSON by yeah this is the part that was saying okay mainly because like it's easy to import the JSON uh but you don't need to do this it's not necessary you can just like uh I'm importing it like this yeah but you can just uh download also yeah I mean if you if it's not JSON
whatever is the raw output from BV CLI you can just import that. Um it's just that maybe like they will combine this unknown file, right? Uh but uh it's fine like it will be a download, right? Yeah, you can see it like maybe you you can go through the circuit of the cells there. Uh yeah, I don't really know actually. Uh that way you want to do this sir going through the subute or um it is a separate y so by way so many lines maybe I didn't do like
yeah like there's so many basically here you need a a public key uh that is out of out of um all of so K1. So basically it needs you need to use big numbers. So it uses two needs get three limbs to represent the bottom number. So what we're doing here in the beginning is just taking this taking this C and S they are needed for the to signature that you generate outside. of the the ideal torque signature is like you have a normal ACS signature and you are able to derive
a nullifier and then you can prove in a circuit that that that signature could only have derived that no fire there's there's one deticier for each signature so basically you generate the signature the no fire outside of the circuit and you put it inside the circuit and say is C and is S which are part that are part of these scale fields you have to you have to get them from big number. This um when you go you can vertically spoon the conhole near it's just like um proving that that nullifier corresponds to that key. So that's what that's how it passes message. So this is just a verifier because just saying yes that to that's why there's no sort just say tomb
tomb v2 let's just say yeah it is like you associate and then it just gets you a an error if it fails and nothing is even just nothing if it's pass. So now now that you have a nullifier basically what you can do is say if if I have a tree of eligible addresses for an airdrop uh you basically can say I can generate a signature from my eligible address uh and I can generate a nullifier that is the only possible nullifier for that signature uh for for this address for this private key it's the only possible nullifier I can derive and whisk you You
can say uh you can use another address that uses that. So basically you can claim that uh that airdrop with another stealth address. So it's called stealth do like with a stealth address that you has not no relationship to this one. You can basically uh use that use that as message sender and then in the message you send this uh this uh proof basically. Uh so basically and then the server will verify that and then basically you just notify it on the under another tree. You say this this this address that's eligible uh it's it's just notified you you will never know which address is notifier. Just say
that there's no way other address other than other other than eligible address will be able to generate that notifier. So it it privacy. Where do you save the nullify crit for the bats for example? Uh it's probably in in I don't know if I actually did it like the rest of the team didn't even finish the contract here. Um probably yeah I don't I don't think I even like finished people this this is just uh quite basically actually like you just uh you say oh I transfer this token to that and then yeah I I would have to have another fire tree and just oh actually there is a yeah there's a yeah there's a fire map. Oh, I didn't
check for double claims because because you're using the same key to generate the pulum fire because there's no no wallet that can generate this pulary fire. It basically is the same key. So it you couldn't actually them you could only demo all coins and you have to rebuild to be same. No, you don't. So I I just return it. Um but I I made it uh actually nullify the message center. So you you could demo it, but Pico could just like go and let spam is a thing. Yeah. But usually you would have like here nullifiers instead of putting this send you put here to nullify and then there's basically there's a mapping of nullifiers and it just checks cure no double claim it just it checks if the no
the nullifier is already claimed. Uh so yeah this example is actually ready as as far as tomb being ready is because it's in our I think it's been internally by ESC but not the version and and also and also like it's actually quite useless because no wallet is implementing P and we we kind of need another champion to go over this and because it's kind of a pain to go over to talk with Wallace say, "Oh, do you want to do that?" No fires. Most of them don't even know. Yes. Yes. Never mind.
No. The tool is so there's there's significant like effort from someone that really wants this to be done. Uh honestly, like I don't have that. I I don't want to do that. I don't have that energy. And apparently Aush, which is the the the guy that that made the ton paper, he also does the Vic. He he he reached out to Metam Mask. He reached out to to reach out to their adventure. I think the only one that allowed it was in the other ones didn't even care. They metam mask doesn't even expose they don't allow differentiation in their world event stages. So yeah and so it's it's mostly an example that's why it's
in one example. But you you don't use in reality they disapp that that notifier there. So I didn't want the wallet to agenda the proof as well, right? Yeah. Yeah. You know that to prove that the nullifier you need a you need a wallet to you need um this plume operation to be done by the wallet outside of surfic actually explain it the I think not in the surf but on the so yeah it's it's they only need to do the signature yeah where is this yeah I think you hear I left a comment here like explaining
somewhere maybe you spend more. I left with what the comments say like just make sure in the same page this is supposed to be the medal somewhere [Music] somewhere I left the comment and say uh use plume the plume signature of generation needs to be done by the wall it's a very small actually it's if you check this the the plume signature uh or if you put like taho on mask or something you search for the issues but for K because they actually implemented they just didn't merge it uh the the
change is really really simple the the tomb signature itself it's very very you see it in in JS it's pretty fast to uh because like the demo actually does this signature it just does with a dummy private key that's like he hard codes into the web website and That's that's what I call blue crowd is to push like just a random random key. So that's just just to prove that the actual do stuff for so yeah the only way around it would be to to allow people to input the public key the private key into the website which is a no no.
Yeah. So you can make your own extension or you can make your own extension. Yeah. But people will have to put their private key that extension so it kind of goes the same way. Yeah. But yeah, I mean it's an example your gold is always to be an example. It I have another question as unrelated but would you guys plan in domenting like uh provers in what GBU? Um is it possible there?
Yeah, there's some other people. No yes. No, but yes. Yeah. Not in I think at least immediately. Not what's the reason? It's they I mean internally they're like this is going to change the world code base to ways in ways that we can even understand. Okay. And so they are basically ba even even if someone from the BRB team would want to do it they would do it no far but I know that there are some uh there are some teams that are doing that trying to use tribute obviously I mean it would be massive or change everything yeah but I get that team doesn't want engine
is. Yeah. Like once the main is launched, this piece, is there a way to use water as a light rig? What do you want? Oh, like some of the packages can use it.
German to public so price but uh that's no long but yeah these things are like pay this is the wood okay we disguise it similar to car uh why would you mark up like provin is not happening here right yeah the pro generation is not here six. This is basically them making a se for your because I was doing a B university for like an blockchain. So I was thinking what if I integrate B is like a party beside
there is the uh N which you can integrate inside your normal code but in that you're like the prom right? Yeah. Let's say you want APK. Yes. But instead pulling everything. It's just like this. So you PBJ. Yeah. You probably want to use some BB. Yeah. So it's like a BB. I mean, yeah, I can do bindings first. Yeah. But that's that would be easier. Yeah, that's okay. Um in BB there will be like an uniform.
Yeah. also still method using I was looking at the BB uh because when you do so verify points what are like magical numbers like uh how you log an there's one of those values and I was interested to see how it's generated but I it is hard to navigate because it is yeah it's yeah so we need some mutations but we need to make it right there it can't But yeah, we like we have a we have a domination but it's don't cover the photo for the most meetings.
Yeah.