EPNS 🛠Building Web3 Communication in your DeFi App
ETHGlobal·Sun, Oct 9, 2022, 12:00 AM
Join Harsh Rajat of EPNS for a workshop titled, "Building Web3 Communication in your DeFi App." This workshop is part of ETHNewYork 2022, a three-day in person hackathon that will feature hackers, mentors, enthusiasts, sponsors and speakers who are all gathering in New York June 24-26, 2022 to talk about the future of money, finance, the web, ownership, the way software works and the way power is distributed. We're excited about a new frontier. ---------------------------------------------------- Follow us: https://twitter.com/ETHGlobal​ Check us out: https://ethglobal.com Email us at: hello@ethglobal.com
Transcript
[Music] hey everyone uh i'm hersh founder and project heat of epns or ethereum push notification service uh this is a 30 minute workshop uh hopefully we can get everything done in 30 minutes uh but yeah uh we go with uh we'll go very quickly about the bike uh about the water dubai of vpns then how to build the notifications including your channels and everything else so that you can deliver notifications to battery wallet addresses uh then it's about price and grants and of course after that it's question and answers so let's get started uh of course we always start with some good vibe video so i have that right over here awesome hope you guys like it uh back to the deck so yeah uh first first of all nostalgia time so uh the reason eat global hackney is our favorite is because we started from uh hackman 2020. uh just like you guys we just uh had an idea and we built it out and because of the love we called from ethereum community and uh of course from each global family uh here we are so yeah cycle of life for us uh but yeah uh diving in so uh exactly what uh are we solving over here well basically we are solving the missing piece of that tree uh so just think about it uh in web 2 whenever we are waking up uh we usually have a look at our mobile phones and we have notifications from everything or every app which we use in the group right so it can be about uh notifications of your important emails it can be notifications about any transaction you do an epa pal or window payments uh it can be about any social networks which you go into or even when you're doing whatsapp it's like just like notifications which come in and that's how we talk uh so yeah that's that's basically that too but now when you come to that tree what we realized was like everyone went for speed scalability and security and that was really important but with that invention or innovations on that a lot of things started to break up because you know no one really uh paid attention to the communication and because of that a lot of problems occurred uh for example if you are into d5 your loans were liquidated and you were not able to get to know about it if you are into ens your domains will expire you don't get to know about it if you are into governance proposals they come and go you don't get to know about it and the reason for that is there was no communication there for battery which means that there was no way for an app or a protocol or a service to reach out to a wallet address and say hey something of importance might have occurred to you and what do you want to do uh which is exactly what apns was meant to do but yeah before that let's quickly elaborate like all the problems or where communication is needed so let's look at uh d5 first because of course it's happening so d5 uh again as i said your own liquidations they occur and there's a broken interface wherein uh actually for loan declarations there's no interface like there's no way you don't know about that your wallet address loan will be liquidated uh right now uh and you know that that is not the norm in webtoon whenever a band liquid liquidates so when you go on a holiday you don't return back uh from the holiday and the bank says oh no you were gone the house is now us but yeah indeed that's a scary possibility uh same thing with farming like farming epochs uh the more you the farm uh the less we are aware like what ebooks have occurred and where our rewards are available to team or not uh and you can extend it uh so much more it can be interesting and um it can be uh it can even be uh a new stablecoin uh attachment that has been made for the new world strategy that has been made again uh you as a reputable uh are not able to know about these things because there's no way to communicate that to you or there was nobody to communicate that to you uh same with the doubt again there are a lot of governance that comes and go and people usually put it on twitter but again that's that interface is broken because just think about it when you are on twitter you are talking to each other through twitter usernames when you are on whatsapp you are talking to each other on whatsapp usernames which are phone numbers uh when you are on web3 your wallet address is actually your username and that shared but yeah no one is talking to them so that's that's what the problem is again for the same thing with nft so yeah what is the solution well of course uh the solution is uh ubns the baby solved it was by creating a decentralized communication protocol that enables any dap any front end uh any protocol or any backend to send communications that are tied to a user wallet address uh this is done in an open gasless and multi-chain way and also platform diagnostic free the idea is that this is an open communication layer and any crypto front-end can then tap into this network and can ask you know all the communications uh about a certain wallet address and based on that show it to you regardless of any propendent where you are logging in from for webtree so yeah that's that's the solution very quickly uh how does it work so yeah what we have over here uh i mean ppns has three ecosystem cogs uh the first is eps code this recites on ethereums basically any service that wants to send notifications they have to come and register themselves over here uh this this epns code is essentially responsible for governing everything then on the right side we have something that we call as epns comp layers they are made of two different parts one is the gasless epns sdk so if your the idea is if you're a backend or adapt you don't really need to pay gas what you need to do is send these notifications which you uh will be forming using eip712 uh to our push notes and that will be picked up and validated and everything will go on uh the second layer on this is uh something which we call as epns middleware smart contracts and these are deployed to all the teams that we support uh we of course support evm as well as non-evm chains but the idea is if you're the smart contract then you can basically interact with this smart contract and send those communications out i already mentioned push notes but your push notes basically form the heart of the ecosystem uh basically what they're doing is like push nodes are listening to all the communication that is coming from epns.com once the communication comes it quickly validates it through epns core and if everything looks good uh it basically admits it into the network and right after that any crypto wallet and crypto content can just tap into the network and can uh display these notifications out so yeah that's uh what and how uh let's now quickly type in on how to get the workshop down and just for fun i am going to start the timer because i want this to be uh done in less than 10 minutes i know that will not be possible but let's have a go at it so yeah the first thing which we need to do is of course uh to go to staging app or staging dash app.epns.io and we need to create our own channel uh how do we do that well the very first thing we need to do is get some ether because of course will be required to create a channel uh i want to do it like completely from the scratch so yeah this is heat build i am just creating a private key which i will just import in my i count and yeah once i've done that i can just go to any faucet and i can get the ethereum but you know in case you want we have uh epns uh uh uh channel the squad channel on youth global so you can just come and ask us about providing uh some government to you uh which says what i'm going to do i already have some coconut over here so what i'm going to do is i'm going to transfer 0.
18 to this newly uh created account and while that's happening uh we very quickly go back and we'll see exactly what we need to do so yeah the first thing like epns code governs and any service that wants to send notification they have to create a channel uh which is exactly what we are going to do over here as well so let me just log in to the newly created account connect reload that app just to make sure everything is proper we go to create channel now we have the heat we also need to mint some dye we basically take 50 day or so to create a channel uh that basically is a form of civil resistance and of course it enables some cool things but yeah we can skip that for now uh right now i'm just mending free die uh right after free freedive i do need four things to create a channel uh the first thing is of course uh epns logo or you know your channel logo which is 128 px by 128 px uh hopefully the transactions will not take that long i think they're already done so yeah uh i already had a logo for each global so i'm going to use that amount state 50 i minted that as well so i can continue uh then i do need to put in few key things about my channel so let's say we want to name this global 2022 channel uh we are multichained so polygon is something that we are already getting deployed on uh in this case because we are probably going to interact with that here may net so i can just copy paste this address and just uh use polygon as an alias uh but yeah in essence if you are creating something at polygon then the polygon address is what you are going to enter over here uh then after that i'm just going to name this this is my youtube channel uh and yeah i will have a call to action link which is a url and that's it uh all i have to do after that is now basically in the background what is happening is like your json file is generated of the channel it's getting uploaded to ipfs after that there are two transactions that we have to do the first is approving the time so that it can be deposited in the smart contract and right after that it's about contract interaction so yeah i'll confirm that and hopefully everything will go super smoothly and the channel will be created uh very very shortly so the one thing that you have to remember is like once you create the channel it might take 30 to 60 seconds before the channel is actually shown on the front end and that's because uh the ipf sp load which is getting uploaded uh it also needs to be cached and by the push node so that's why it takes a little bit of time uh but yeah while this is getting loaded uh what we can do is as we can oh it's already loaded so awesome so yeah uh let's look this this is your channel uh now we are going to look at some notifications so uh of course notifications like sending is one thing and receiving is the other thing right so uh to receive it i am going to basically go to docs.ppns.io i'm going to go to developer developer dogs sending notifications and testing sent notifications so we have all the ways by which you can test your notifications out in this case we are just going to download this extension the chrome extension uh we are just going to add this to chrome it should be added all right and then i'm going to pin this just for making sure that it's available uh after that i do need to sign into the chrome extension using my wallet address so i just pasted that and yeah that's it now i'm all set to receive notifications let's see how notifications uh can be sent across so let's see the manual method first uh over here because now i have a channel i can basically go in the channel and send a notification out one thing to remember is like whenever you're sending a notification the wallet address needs to be updated to that channel because i've created this channel i'm automatically opted and that's why i am able to receive notifications but yeah in case you want to receive notifications from any other channel you need to open which is a gasless intent uh again on erp7123 is getting sent to push notes and once that intent is recorded only after that uh point of time a channel can send notifications which will land in your inbox so yeah uh going over here let's send a notification a broadcast is a notification that gets sent to all the people or all the subscribers of that channel who have opted in a subset is just for a mini set of all the people that you want to get the notifications to and targeted is basically just one person so over here i'm going to do targeted we are pointing independent as well this means that the notifications define how the content uh will show them up uh so in this case what i want to do is i want to basically send a image with my notification also because that's cool you can also do call to action subject youtube videos or whatever you want so over here i'm sending a notification again in the background everything is getting uploaded to ipfs adjacent payload is generated which is then recorded or you know which is then sent to the push nodes and after that the notifications are sent i think because i'm recording so the notification uh will probably not uh be shown uh like the push notification will probably not be shown because it's a screen recording but yeah if i go over here you can see that the notification is already uh and they have already made its way not only that we are platform agnostic so any crypto content can show this out which also means that uh wherever you want you can see these notifications up so yeah that's basically creating a channel and sending a manual notification but when you are building some awesome projects most of the time you will be doing this by uh our automated route so let's see how to uh get that done so again we'll go to docs.ppns.io we'll go to developer talks over here uh they're my their various fees by which you can send notifications you can send it for your back-end sdk you can send it via show runners you can even send it via smart contract there's an example for that as well uh and yeah uh it basically is like whatever way you want to define to send a notification out there's a way for that uh let's use shorteners scaffold uh just to see how quickly we can set up everything and can send everything because the demo will probably uh include the show than a scaffold and uni swap interface you know because you know you can even embed these notifications on your dap and front end so because of that what i am going to do first is i am going to very quickly clone everything that is needed so for example for uniswap and cloning the unisop interface we will see how the content looks in a while uh for the show runners i will quickly go to show them as framework set up show the nurse and clone the shoulders framework as well and i think there was one more cloning which i'm missing right now but yeah for now this will do so very quickly i'll also do one thing i will just go to uh i'll just go to the show donuts framework and of course i'll do a yarn install uh while it's installing i will also go to unescrap interface and i'll do a yarn install just to make sure that you know now everything is good to go uh we can give it some time uh for the installation to you know proceed smoothly but what we can also do in the meanwhile is in the show runners we basically have few things uh so show them this is basically a scaffold which basically means it has all the tools to automate your notifications on notifications logic but because it's a scaffold we do need to uh essentially uh configure some of the things out so of course once i have cloned the shoulders the next step is to create a env file from enb sample then basically define the log level because this is a hackathon let's go with ebook and after that i do need to go to infuria or at the scan or i'll give my alchemy and get the api about it uh not all three are required but one of them is a requirement for this demo let's do it scan an alchemy apis null and let's get this docs computer project id and secret as as a part that will run the show runners out hopefully by this point of time oh it's still taking some time so yeah uh the reason why we need infuriation or alchemy api is of course to listen to the blockchain data because that's what uh we are going to do over here so let's see if uh oh yeah it's actually slower than oh slower than us doing recording uh so yeah uh while leon is doing its things uh let me just show you what showrunner uh basically does so once we have set up shorteners right uh it basically gives us a framework on which we can build a channel logic so that's that's what we are going to do uh let's just hope awesome so this is done the next thing is or no it's docker compose up because we do rely on some demons to go up uh before you know uh the showrunners uh uh is getting uh before we start the shoulder result hopefully uh okay something is wrong let's see what is wrong okay let's remove this let's just stop this darker part oh actually it's okay so let's just under and let's rerun it hopefully this will work faster this time awesome started running then on the next terminal what i'm going to do is i'm going to do dance start so because we have configured an enb file if everything works well you will have this error which is basically that shorteners doesn't have any channel channel portal uh or basically it doesn't have any channel logic on which it can basically uh rely upon for code execution so how to get that uh connected well just go to code go to src and in this you have something called chapter underscore shorteners uh which are basically some sample channels which we have created for you guys do check it out for this demo let's just take hello world uh this is basically a plug and play so what you need to do is just drag hello world down to the shoulder once you do that you will have a different error which is hello world has no wallets attached to them and that's where they are supported uh that is because you know a channel or a delegate of the channel can only send notifications on their behalf which basically means that you do need to uh enter your private key over here uh so of course because we just created the channel we have the private key we will just go and uh paste that in and that's about it your showrunners is running not not only that it is basically sending notifications from hello world folder uh this this folder basically has every logic which you don't need to have in your channel so basically what happens is like there's a channel.
ps file which has all the logic which you want to do over here it is just sending a dummy notification the jobs is basically a scheduler so you can basically call a particular function if you want now by your jobs roots basically form your postman routes and uh what they do is they enable you to manually trigger some of the notifications so right now we already have a route configured i already have a postman over here so make sure that is running on port 5432 so i just go to that particular route and i just hit on send once i do that you can see in the ebook that the notification has been sent let me just yeah and again because we are screen sharing so you will not be able to see the notification but they are coming but yeah if you reload to that or if you go to the chrome extension you can see it out if it was not screen sharing it will be pushed out to your screen as well so yeah it's as easy as that to create a notification from a back-end for that app again we do support smart contracts and you can go to docs.epms.io to see that so this is basically how you can send the notification out this is one more thing which i wanted to talk to you about which is basically how to include the notification on your uh interface so over here we are basically uh doing uh we basically pulled unisrap interface and we are going to use that to uh basically bootstrap everything from our front end sdk uh one more thing which i wanted to point out was that in case you don't want to to show the nurse then you do have back-end sdk which uh again is the thing you can use to trigger the notification out the back end is the a uh uh you know in your gs logic all you need to do is import the back end sdk we call sdk dot send notification again you can find the entire thing like how to do it right uh right over here you can go to back end as you can you can set up the background doesn't speak it and even understand like what is happening so yeah moving on to the front-end sdk so let's go for installation first so while uniswap is loading i do want to add our front-end sdk into the unispa interface i can do that by the same in the swap and uh from the sdk so yeah this is basically a full tuner now i'm adding the front-end sdk front first thing is it allows you to embed these notifications for your user for exam that basic massively massively improves the ux for the battery user because webtree users are shared so when they come to your tab and they see all the notifications which they have opted and right inside your tab uh you basically make sure that you know their entire experience is massively uh improved and the other thing front-end sdk allows you to do is basically eliminate users going to app.epns.io and opting into your channel instead of that what you can do is just place that logic code right in your content so the user can just go ahead and opt in uh to your channel and start receiving the notification so so yeah i think the content that sdk is almost ready to be installed i can open code as well just to get started so couple of things which we'll do because here in the swap interface uh a little finicky uh so yeah the first thing we do is uh we try we'll turn prettier off just because we don't want to be slowed down by missing a tab or missing your entry the next thing we'll do is we will uh turn off the strict null checks this is something which we are doing because yeah this is something which we are doing because again we don't want uh strict null checks to stop or come in rv and then one more added thing we'll do is uh because you know in the eps transient sdk it doesn't have a strict type uh right now so we are going to basically go and turn that off in the address section because that's where we are going to give our opt-in and opt-out button so i'm just going to declare the module as a start just to make sure that you know it works well awesome uh hopefully everything is done right now so enso pistol box all right uh the next thing we need to do is we need to add our opt-in button so that uh and by the way we do have a channel for unit swap so whenever uh and that channel notifies every lp pool folder like when they are not earning the fees and that's why we chose to put the opt-in on the ad liquidity so over here i do have a hacky way which basically means that i do have a vpns opt-in file already created which i'm going to uh go and uh put it over here uh it it is nothing but uh ways to call the opt-in on our protocol uh you can look into it in detail we do also have this uni swap depot uh front end hosted and uh also available uh also available as an example so you can go ahead and try it out i think the example is not reflecting it right now oh there it is abn sx let me swap four people uh but yeah uh coming back so what what are what are we doing over here is basically creating a opt-in button and this opt-in button is just calling uh channels which is basically the same thing eip seven one two sign thing sent to the push notes uh over here let me also come to index.
psx and yeah so we basically need to import few things over here the first thing we need to import is epns opt-in and i want to import it after dots because unswap again has a lot of strict checking uh which also means that you know things needs to be an alphabetical order so that's why i have written it over here uh so yeah once we have imported epn is often i also need to go to which slide number am i going through i think it's 5 38 yeah so because we already know where to put uh everything out so i can go to line number no 5 38 put this in then let me just put uh this vpns open it's react by the way in case anyone is wondering and then it says to our row and of course we need to close it under thanks hopefully it will not give a lot of error let's see why it's getting better okay it's not slow yeah yeah if everything is working fine then now when we go to a new position you have a opt-out or opt-in button so an opt-in an opt-out button which will basically opt you in and out the reason it was opt-out was because we basically uh hard-coded the channel address this is not your channel address for the channel address that we just created so basically if i change that then the opt-in and opt-out will work in a better way so yeah let's see okay eat okay so the channel sometimes uh takes uh i mean it takes some times to reflect on the front end but uh as long as you are pulling the channel out by typing it and you are able to do it so so yeah uh my channel this is not a channel i created i i've forgotten the name of the channel uh but yeah in essence let's just put this channel only and okay all right i i think uh i think the speed run which i'm doing uh i goofed up something but i forgot to include something out so what i'll do is instead of the speed run i also have uh a depot uh on the test evo that is also public the epns unit swap front end sdk so let's go over here and let's do a yarn start over here instead so hopefully everything is installed so it will be very fast so the last thing i wanted to show in this demo like after the opt-in button which basically improves your channel visibility after that uh the bell icon which can basically pull uh all the uh all the notifications that our channel has so to do that what we what what we simply did was uh we went to uniswap header which says under components and header we created a bell icon because uh we wanted to create our ebns belt and after that we went to index.psx uh we imported the bell icon and right after that uh we first uh we first attached a dev id the dev id is very important with the bell icon so that uh when the content sdk is loaded it can attach itself to this trigger id right after that we we basically created a use effect uh in which we imported account unisoft is based on birthday uh uh react so we we had access to the account so we basically loaded that and then we just called embedded sdk dot initialize along with the sdk trigger and what it does is like after that whenever notifications are happening you will be able to see it in the dap as well uh just like how you can see it right now so yeah that is basically everything about ppns again we do have the docs to get everything done uh as i said integrating on front end we do have uh the unislap depot which you can uh basically go and uh check it out it's actually in front end example and yeah happy happy recording hey there in this video we are going to see how one can integrate epns to a subgraph and send notifications if you're not familiar with sub graph let me give a quick explanation uh the graph is a decentralized protocol for indexing and querying data from blockchains so if you want the graph to index and store some data from a blockchain then we must define something called a subgraph and it is to this sub graph that will be integrating epns notifications in this video i'll be doing each and every step of epns graph integration and the same example is also added to our documentation hub which you can access by going to docs.epns.io click on the developer docs and under the examples section you can see notification via subgraph example all right let's get started with the implementation uh so the very first step is to create a notification channel so in the prerequisites the next step is to install the graph cli so let me copy this and install all right while that is getting installed let's see what the next step is earning your git tip to the graph website all right this is because we are going to deploy the sub graph to the hosted service and uh for that we need to link uh your sub graph uh link your github id to the uh graph platform so let me sign in all right i've signed in and there is my dashboard here you can see all the subtracts that you have created and let's see what the next step is add a sub graph um from your hosted service dashboard and this is the dashboard and here there's an option to add sub graph you can first subgroup name as okay it has to be kept draft demo let's get this subtitle and let's create a zebra all right now i think we are all done with the prerequisites and the next step is to deploy the contract now in this link there is a sample er sequency contract you can just copy the contract code and deploy using remix let's create file the contact name is push token first open what's all right let's paste the code and let's um compile the contract oh let's compile push to open dot soul competition is successful and let's deploy the contract all right let's select um injector factory cover network alright select this wallet all right select the contract dish token and deploy and make sure you have the open leads to reply the contract all right let's wait okay let's view this on either scan all right while this is uh getting deployed we can look at the next step that's the contract deployment step is done next step is the subgraph deployment so um in this report there is an erc20 token sub graph so you can basically clone this repo i've already uh clawed this repo i have this here yes if you're into your concept graph and let's see uh we have septic after tiamal and we have this address that basically is telling that the subgraph should index this contract now we should update it with the the contract which updated with the contract that we have deployed just now let's see whether it got confirmed yes it is confirmed then let's get to contract address this is the contract that we need to index so let's update it here and here we have a schema graph schema or graphql which basically says the structure in which the data is to be saved in the graph and we inside the src folder we have mapping.ts here is where all the handler functions are defined now this is a sub graph without any integration and let's see what the next step is so clone the repo and in subreddit yaml update the contract address which we did just now and the next step is to do yarn install let's do that here so here i'm already inside this um folder let's do uninstall which i've already done um and let's do graph code gen which generates uh the types all right graph coding is done and uh let's authenticate now in for this step you need to uh get the access token from the dashboard so just copy this code graphport product hosted service and copy the access token from here from your dashboard all right authentication is done and the next step is to deploy the subgraph now here uh we need the github username and subgraph name so copy this graph deploy product hosted service and sub graph name is this slug our graph dash demo and so this last two part will be what i need to copy i should revolt a slash graph demo okay compiling deployment is done and let's check here whether it started syncing with the chain um so we can see that the graph demo subgraph is deployed and it's syncing hundred percent um now we can start with the integration so for the integration the first step is uh in schematograph ql include the following apn schema uh so we have two pns schema types epns notification counted push pns push notification uh let's copy this code and add to the schema.
graphql file all right once that is done in mapping.ts export the subgraph id so copy it and inside src mapping.ts export subgraphic so subgraph id is basically github username slash uh sub graph name and for this subgraph that we just deployed the subgraph name is graph demograph dash demo all right once it resets your folder create a file leaping notification dot yes all right now this basically uh will act as the epns helper file so let's do it okay that's notification dot yes i'll run copy and paste the help profile code from here all right let's copy this helper file code and paste it here in mapping ots import the helper file that's right uh full list of size extensive and within the respective handler functions from lipstick notification needs to be sent now here in mapping.ts we have this handler function which is handle transfer now we basically want to send notification whenever uh push token or whenever a wallet receives push token so it is in this handler function that we need to send the notification so here we can define uh these payload items so such as recipe and type title body subject message image secret ct so this has already been defined the way that i want it so let me copy the same things here towards at the end of the function all right so here the type represents the uh type of notification that we are sending uh so it says three that means it's a targeted notification which means that uh this notification is to be sent to this particular recipient and there are few other types of notification that dpns support such as broadcast notifications which is to send out to all the subscribers of a channel and a subset notification which is to a specific set of wallet addresses so yeah you can refer those in the documentation and we have title body all these things you can customize it the way you want and once you have defined the payload items you can define the notification in this format so notification and once all of these things are defined we can call the helper function and helper function takes in two arguments one is recipient and the other one is notification all right and these are all the code changes that is required for epns integration now that we are done with the code changes let's deploy the subgraph again you can do authenticate and deploy the subject compiling including two apfs the glowing all right let's look at the procedures yes deployed few seconds ago and let's see if we can see the apns notification types see um earlier these two types are not there since we have added uh those two types apn certification founder dpns push notification we can basically check it from the playground alright first notification let's just confirm whether the contract is the same little bit yeah so even with the contract creation itself it basically send all the tokens to the address so that's why this notification is there uh let's see what the next step is so now once we're done with this subgraph deployment there's one more step that is left that is linking sub graph to the epn's notification channel now let's go back to the channel that we created earlier and see if we can see it all right it is created graph demo that means we'll be able to see it in the channels list yep graph demos here and this is the channel owner we want to test it so let's add this contract this token meta mask uh just about 1000 push now let me send it let me send 500 push to this wallet all right we sent tokens to another wallet now let's go back to the remaining step that we wanted to do all right so this is the channel owner um this is the channel dashboard yeah and here in settings you can see add subtract details now it is in this form that we need to fill the subgraph details now the subgraph id is um your github name slash sub graph name which you can see from here share water slash graph demo all right and full time uh paul time in seconds um so if you enter like 60 seconds at 4 time that means in every 60 seconds the push nodes will bring the subject and see if there is any panic notifications that need to be sent out now that's how the poll time works all right once you add it it is a non-chain transaction so make sure you have the heat from the transaction all right let's reload and see so this is the um subgraph owner and the contract owner and this wallet basically receive the tokens and it should basically get the tokens or else we can right now do a transaction let me send 100 push notifications all right that is done and let's switch to that wallet and wait for 60 seconds yeah this is the notification um from before that is when i transferred 500 push now i've transferred 100 more push so let's wait for the notification and here it shows delivered by other graph so right now these notifications are shown in the spam folder because um this wallet has not opted into their channel to receive notifications yet so that is why there is an opt-in option so if i opt-in then i'll basically um get the notifications in the inbox all right so here we have two notifications one from the uh transfer before i had it pushed and here right now we did 100 push transfer website we have the notifications um yes that's all that's all i wanted to do for this demo um happy learning bye we do have push dance program with a one million usd so idea is once you build things over here that's not the end you can start or you can carry on with the push cam program uh we also have some build ideas in the medium block uh you can scan this and it will take you directly to the medium blog also you can go to docs epns dot io to start your developer journey and uh yeah one last thing this is our discord qr code in case you guys want to go over here
Automatic transcript — names and jargon may be misspelled.