{"id":"WK47YmPRj4o","title":"DerivHack2019 3/3: Deploying to Project : DABL","description":"Previous Video:\n   • DerivHack2019 2/3: Section C - Creating re...  \n\n📖 Get started with Daml: https://bit.ly/tryDaml\n📚 Learn more about Daml Smart Contracts: https://bit.ly/learn_daml\n📮Check out our blogs: https://bit.ly/daml-blog-engineering\n📋 Become a Daml certified expert: https://bit.ly/daml-certification","channel_name":"Daml","published_at":"2019-10-09T00:00:00.000Z","thumbnail_url":"https://i.ytimg.com/vi/WK47YmPRj4o/hqdefault.jpg","transcript_text":"alright hello everyone this is webinar number three for the Red Hat 2019 and today we're gonna be focusing on deploying on project devil we're gonna give you guys an intro on what project devil is and then we're just gonna go walk through end-to-end example of deploying an actual app so just reminder this is via last of the three webinar series you guys can find the previous recordings at our blog any material that I will be using here is publicly available on github the link is shown here and then please star and watch our repo for any updates and improvements of the examples that we are going to be showing and feel free to find us on slack you have to join the Tama River and slack calm and then within that just go to the channel 3 evac'd 2019 and if you're more curious about dabbu we invite you to check out our public roadmap it's a public Trello board which I'm going to be showing later in this recording so I'm just going to kick you off with the general intro to project taboo and then put the agenda we're going to familiarize ourselves for a few minutes with what the actual double Council is then we're going to get to work and create an end-to-end example we're going to add the UI and automation to that and then after we pause for a few questions and answers we're gonna be switching context to the hello CPM example that was shown in the previous webinars and kind of show you the changes we made in order to be able to work against the local environment project data as well so what exactly is project devil well we've been communicating it as digital assets Ledger as a Service Cloud offering it's essentially a dedicated environment with a segregated infrastructure or deployed applications it's fully compliant with a demo ledger a reference model so that here's to any principles that demo has and friendly reminder that is still in alpha version but we're working hard to bring new features and make it even more stable and McCarthy but we were doing C project Apple we actually built it because we want to expedite the time to market for any any application we know that building backends is hard and in that will we want to offer all of this with as little code as possible and feature any real-world integration and composable functionality so our goal is to empower the community of founders to bring destructive scalable applications to market in the time it just takes it takes to build a single website and with a little as little code as possible all right so let's get started this is the main project double workspace as you can see it's as two different sections one is the actual file list that you end up uploading files which are mostly tar files compiled demo code that is in any automation this is compiled as Tarbell's on the right-hand side we actually see the projects in Ledger's that we can build now each project project can have multiple letters this one I've already created the the Rev hack project and I have three different Ledger's and I can also from this main view I can also see my notifications and have a nice little external link to my documents so let's go ahead and create a new project I'm gonna name it double webinar and I'm gonna name my ledger hello I get a success notification and my ledger is being built so as this is baking let's go ahead and take a look at the damn old model we're going to be deploying to this ledger gonna switch to vs code and it's a really simple example it has only one demo file and it has comprised of two templates the first one is a greeter template and the other one is a hello message template the greeter template is essentially a template that any party can create and sign for themselves and it gives them a choice which is a non consuming to say hello to some other part now that Hello is essentially chosen on consumer choice or you can say as many hellos as we want to a specific party and add a payload which is just basically a text message this is going to create a Hello message which we see here with the proper sender and recipient and the message it's only obviously signed by the sender party and it's disclosed to the recipient using tamils observer keyboard one last thing to mention is that we're also making use of demos contract keys here so we're keying the greater contract by pardon that means that only anymore any single party can create only one of those bigger contracts okay so let's go and build this demo file into a dar and upload it in so I'm also in the same directory and I'm gonna issue a demo bill and I'm gonna output this to my desktop you and I'm going to name it hello devil you all right and let's go back to devil file desktop I see the devil God are just created and I uploaded all right now I want to actually deploy it to my newly created ledger I have two options here let me dismiss the notification I have two options one of them is to actually use the overflow menu to deploy but it's actually something even cooler that I could do is I could actually drag and drop the hello enabled are in the ledger that I want to deploy I'm going to get another notification and what actually happens in the background is that this star is finding the proper segregated infrastructure it gets deployed a few things get initialized and the ledger is is ready for me to use so if I click inside I'm presented with the administrators view all the ledger now this has a few tabs on the side and a few other settings the first tab that I see is the Democrat so I get to see the source code of what I just deployed in this case it's a very simple damage model it just has only the single file that I mentioned but if I have multiple doors deployed I can I can see a drop down as well as a drop down of mine files next up is the automation tab now this is the tab where any automation or any pods that I upload for this ledger I'm going to are going to show up there I'm going to be able to control them from there and also check their logging output right now this tab is not fully functional yet but we're hard at work to bring it to you guys hopefully by under the speed next up is the live data tab now this is an interesting tab because it shows the active contract set in devil it also allows you to add parties to that ledger and add contracts and exercise choices although it's not recommended that the contracts are taking choices from this administrative console it's a nice way of managing everything now I deployed a dart file but I already see a party created and a few contracts and also these contracts that I see they're not actually any of those demo templates that I uploaded so what's going on here basically we in project album are leveraging demo but to use to use it for our user model so what you guys are seeing is evidence of deployed dart file represented as Tamil contract here of a deployed architect as well as evidence of a user party on the ledger represented as another contractor so this user parties for the ledger administrator why don't I go ahead and add a couple more parties I'm going to go here to add party and I'm going to type in let's say it's great Alice and you guessed it let's do Bob alright so as you can see while I'm creating parties new user party contracts get created ledger administered min is since they're an administrator they have an administrator view of the parties that are on the ledger however if I actually go to Alice I can see that Alice can only see her user party contract this is also one of the family I see features that you get the tree Bob again you can see their contract now I think that I want to point out which is kind of different from anyone that has already used demo is that even though we have string literals as Alice and Bob in double we're actually using party IDs which are obfuscated names the mapping between a party ID and a party name being back here is is persistent on those user party projects so this is one thing to keep in mind as you guys are developing your apps okay so now as Bob why don't I go ahead and create one of the the contracts from my demo template I'm going to go and add a contract and a selected creator who is Bob and the template who is the which is the sample Peter and hit on next and as a party obviously Bob is creating it so Bob wants to put his name on the contract so he is able to creat it submit and I get a success notification that my contract has been created but I don't see it here the reason I don't see it here is that this is not shown to the ledger administrator but if I go to Bob I can we see that there's a sample Peter contract now I see my hello choice and an archive choice which is the default choice on area one of the default choices and every damn counter so let's try and exercise the choice in dabble and say hello Alice click on say hello to party Alice and say hey submit and we have created a Hello message contract that contains the halo message and uses the party sender and recipient as party IDs this message since it's addressed to Alice is also available or Alice you see awesome so next time let's take a look at ledger settings this is the control panel if you will for finding all the details of your ledger are the party mappings and being able to get any information you want in order to connect to this back now first time you see the ledger name the hello that one that we just paid it and then you see a user sorry a ledger ID which is again a novice gated name similar to party IDs that will uses these ledger IDs for finding I'm talking to Ledger's and parties then we have a party name to party ID mapping or you can just select the party copy and this was gonna copy the party ID let me paste in my caramel so you guys can see and we also have the functionality for copying JSON web tokens as a specific party so I can choose the party that I want and hit on copy as and copy this as a JWT token that I can use in my intubation finally we offer a convenient way of downloading the entire party mapping set as a CSV file and we also have a convenient API link on the URL that you need to use in order to connect this like and we have an administrator action of deleting the entire thing by clicking delete but I'm gonna do that right okay great so now that we've seen the administrative panel let's actually connect to this letter we're gonna do two things we're gonna start by connecting a UI and then we will we're gonna add some automation so let's go on the UI and switch back to vs code and there is a UI folder and the thing I need to do before I launch my UI is configure it so it can actually connect to the ledger we'll just create I'm going to do two things one is go to the config file and copy those web tokens for Alice and Bob then I go back to babble I'll be honest so expect a star token then go to Bob do the same you where you save this and then the last thing I want is I would like my UI to know the API of the API endpoint of the ledger so I'm going to go to package JSON and then there's a little proxy setting which I'm gonna fill that with the a guy copy this paste it here save now I'm ready to launch my UI so let me go back to my console into the UI folder and the weight yarn stein so this is going to launch a development server which is going to connect to a local host 3,000 and will proxy into the actual tab ledger just give it a few moments until it's initializing we should be ready to go right so I'm now connected I'm presented with a login page we don't check for passwords we just have to type in either Alice or Bob let's go on Silas first now if I log in I see Alice's contract set as a default page as you if you remember we have a user party for Alice and we have the hello message that was sent from Bob let's drill down and see the actual hello messages the hey there that we sent and this is the user party for Alice if I go to greeter I see that Alice has no breeder contract created for herself and in the hello messages she just has one message incentive if I log out and login as Bob now I see three contracts because I see the extra greeter contract for Bob let me go and check the greeter contract I do have one and the messages I also see the same message that I sent to Alex so let's and send another one from the UI manner copy the recipient paste it on hello and say a again click on say hello and now go - hello messages I see that I just greeted Alice again now as you obviously noticed sender and recipient are again party IDs so if you would like this to show your actual party names you will need to use that mapping on the front end which is something that we're not showing here but as I created this contract if I go back to project double and to live data and let's say as Alice I obviously see the hello message that I just created from the you great so now we're essentially sending messages to Alice but we're not hearing back from Alice so why don't we go ahead and add a little bot for Alice that is going to respond to Bob's messages in order to do that I'm gonna first show you how the barcode should look go back to vs code collapse the UI and go into the Python folder now if you remember from the last webinar the bot used to be a file for local development but now it's an actual director the reason is that dabble expects boards to be packaged as Python modules so this is following the typical module directory structure with an init file an actual main entry point and the meat of the code which is in hello bottom pipe let's briefly look at that hello bot so the first thing we do is we import the dazzle library this is a Python library that is talking to the ledger it's open source and available and are equal we hard-code the party Alice and we start with our main function the first thing you see is the URL that the board is going to connect to this is getting read from an environment variable which is being set at the environment that the body's deployed so this is a line that you shouldn't be changing and you should make you should keep in mind that this environment variable will always be separate next up is the mapping that I was explaining before we essentially read a CSV file containing the party literal to party ID mappings and we are creating these maps to translate back and forth between them because we mean not to register the board as alice but to register as alice party next up we create a ledger client for for this party and we registered two different callbacks what the first one does is it fires only once as soon as the ledger is ready so as soon as as soon as the sorry as soon as the board is basically caught up with a letter that will issue one command that'll create and it will create a greeter contract for the party that's running it in this case Alice so this says that as soon as the board is ready it will create a greeter greeter contract for itself and then the second one is going to be listening for hello message contracts now when a contract of this of this template hello message template has been created Alice will check if the recipient is here and if the sender is not so basically she will check at this messages of address okay and what she's gonna do is she's going to fetch her reader contract using the contract keys and she's gonna exercise the hello choice back to the sender of the original message saying hello back and echoing be rich okay so before we package this bar up for deployment there's one less that we do is to update our party map with a proper party IDs for that we're gonna leverage the setting in ledger settings in depth so let me go there for the ledger settings and download the party mappings as a CSV now I have it in my downloads folder so let me go ahead and copy it to the proper from downloads to source what are you okay so now I pasted the fresh party map and I am ready to package my bot for distribution thankfully I also have a make target to do this bundling which I'm gonna issue right now you you and I created the but as in the target directory I'm going to move it to desktop so we can see it you you you so this is the Tarble that I just created and I'm gonna move it to great you go back to dabble and back to my workspace uploaded file and upload a new in the bottle I just quit I get a success message and just as they deploy the dark I'm going to deploy the bot on the leader drag and drop I also see a deploying message same thing is happening here the bot gets unpacked it gets stored in the proper directory and it gets initialized so if I go back into my ledger and check the live data I see that I created a new deployed artifact if I click on it this is a Python but it gives it a name and if I go to the automation tab I can now see the files that I just created I won't click on those because this link again as I said this automation tab is not fully functional yet but it will be soon another thing that I worth seeing is that now that I have deployed I go to live data and I go to Alice I now see that Alice created a greater contract for itself so the ball is actually running it's created a bigger contract that is ready to listen to messages so why don't I go back to my UI and send a message to Alice see what happens so I'm already logged in as Bob I'm gonna copy again the Alice's party I think I go to my greeter contract and I'm gonna paste it and I'm gonna ask her she's a robot say hello back to messages I see my message here and if I just refresh I just see an automated response from Alice greeting me back and echoing what I just said and that just as easy as that to deploy her automation in devil and see them at this point I just want to pause for a few moments if there's any questions for the panel if not next up I'm gonna be switching context to the hello CDN example and see I like walking you through how what code changes you need to make so it's compatible okay so I've been told that all questions have been answered so let's let's go straight to hello CD back to project devil back to the workspace actually before we go - hello CBM how about we show two more things one is how do we delete Ledger's and water ducts an API looks like so a few moments so I've created this ledger that means the meeting if I go in to the ledger settings remember this ledger button here so if I click on it I get a warning I confirm and my ledger is gone now for the hackathon you guys can create as many letters as you want but please be mindful of our infrastructure and cost and we would recommend that any ledger that you're actually not using last but not least is the Box link I click on it this essentially has an overview of how to use the console that I just described but what I want you to focus on is the API section that mentions all the already REST API calls that you can make to your newly created ledger and talk to your demo model just like the UI is doing in this case okay great so now back to hello CDM as you can see here I already have the repack hello CDM ledger deployed with automation as well so let's explore that as you can see these are the files that the hello CDM jamming library has and this is the main file with a transfer contract I have again Allison Bob at this time I have the transfer contracts created and I'm also running an automation Python bot for Alice which is the same as the bot that was shown in webinar number two now let's get in the code and take a look at what I had to change in order to make this work let me collapse the double hello example and go to the hello city an example okay so first up is the main function in the main function we essentially added a little is local development flag and we split the endpoint to have a local one and a double however we are starting the whole script from a main function that takes some arguments let me navigate to that right now which is here now there's a few flags the first lag is if we run local development versus not if we are not then double is expecting two things inspecting the ledger ID to connect to in order to construct the API endpoint and also the party mapping that you guys saw we're all connecting to the UI the first thing we do is if we're on dabble we're actually using the double endpoint with a ledger ID and we're creating the party map the rest of the code is exactly the same as it was on the Hello CDM example now for the API calls the only thing that has changed is that instead of passing the literal string alice we have to pass through the translation step of translating a name to a party and then passing the party as an owner or as an observer same thing with in the reading end point and in the exercise choice last but not least I've written a few Translate functions which are essentially convenience functions of going between party names parties vice versa and fetching tokens given a partier party okay now for the bot the bot is a bit more involved that being said if you package your BOTS in a form of a module you're also going to be able to use them look both locally and in depth so I strongly recommend you to go that route as before there should be in an in file and a main entry point file and then the business logic goes into your bot your one Python file this hasn't changed almost at all the only difference is again the local dead flag which is going to load the party map if it's not on local dead or it's actually going to use the party literal if it is for the module in order to actually package it we're going to be using pythons source distribution library now this has two more files that you're going to need the first one is the manifest file which will be used if you want to pass any extra files within the bundle this just tells the packaging utility to include the party map within the package so that the bot when it spins up actually can use the translations by reading that CSV and set up top PI file which names the the module the package it actually excuse me it actually uses the dependency on thousand and there's a flag on including package data which essentially tells the district the library to look at the manifest file okay so let's do this let's try and run the main file I am going to go to the download of fresh party map first and then go to my console and so I am on the hello CDM ledger settings down let me explore and download and recording them okay and then go to my terminal you a lot of the hello example and go into the hello CDM example and to good and this is going to be under Python all right and let me use the help argument so we can see what this man is expecting I'm looking to connect to dabble let me actually bring this up so you guys can see better okay so this is expecting a ledger ID and a party map so I'm gonna go ahead and provide the ledger ID from W by clicking on coffee here and the party map that I just downloaded so I haven't done my downloads folder if I run this this does exactly the same thing as was shown in webinar number two where it reads JSON it translates it into demo JSON and then it actually sends it to the ledger reads it back and exercises a choice on and as a last step let me show you in real time how we package this bot to deploy to the legend so clear my console once again and if I go to the Python directory and I do depend on setup got dissed set up the time and then it should be asked this to man this is a pretty standard stuff for the source distribution by the level we got my I end up creating a new file turbo which if I go to my director here I can actually see the dist folder and within this list I just created a tar.gz file that I can now also deploy on that and that's about it so feel free to play with project album we are here to help you again a friendly reminder the double is stable but it's still in alpha so any questions you have feel free to send them on the slack channel and as promised let me show you our Trello board which is the public roadmap for a project album this has features that are already that are upcoming and if you like something you can comment on it so we get it prioritized for you so feel free to explore this this roadmap thanks everyone and good luck with haggle","transcript_synced_at":"2026-10-26T04:17:09.462Z","segments":[{"start_seconds":0,"text":"alright hello everyone this is webinar number three for the Red Hat 2019 and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=0s"},{"start_seconds":7,"text":"today we're gonna be focusing on deploying on project devil we're gonna give you guys an intro on what project","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=7s"},{"start_seconds":15,"text":"devil is and then we're just gonna go walk through end-to-end example of deploying an actual app","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=15s"},{"start_seconds":24,"text":"so just reminder this is via last of the three webinar series you guys can find","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=24s"},{"start_seconds":30,"text":"the previous recordings at our blog any material that I will be using here is publicly available on github the link is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=30s"},{"start_seconds":39,"text":"shown here and then please star and watch our repo for any updates and improvements of the examples that we are going to be showing and feel free to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=39s"},{"start_seconds":47,"text":"find us on slack you have to join the Tama River and slack calm and then within that just go to the channel 3","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=47s"},{"start_seconds":55,"text":"evac'd 2019 and if you're more curious about dabbu we invite you to check out our public roadmap it's a public Trello","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=55s"},{"start_seconds":63,"text":"board which I'm going to be showing later in this recording so I'm just going to kick you off with the general","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=63s"},{"start_seconds":71,"text":"intro to project taboo and then put the agenda we're going to familiarize ourselves for a few minutes with what","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=71s"},{"start_seconds":79,"text":"the actual double Council is then we're going to get to work and create an end-to-end example we're going to add","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=79s"},{"start_seconds":86,"text":"the UI and automation to that and then after we pause for a few questions and answers we're gonna be switching context","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=86s"},{"start_seconds":95,"text":"to the hello CPM example that was shown in the previous webinars and kind of show you the changes we made in order to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=95s"},{"start_seconds":102,"text":"be able to work against the local environment project data as well so what exactly is project devil well","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=102s"},{"start_seconds":112,"text":"we've been communicating it as digital assets Ledger as a Service Cloud offering it's essentially a dedicated environment with a segregated","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=112s"},{"start_seconds":121,"text":"infrastructure or deployed applications it's fully compliant with a demo ledger a reference model so that here's to any","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=121s"},{"start_seconds":130,"text":"principles that demo has and friendly reminder that is still in alpha version but we're working hard to bring new","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=130s"},{"start_seconds":138,"text":"features and make it even more stable and McCarthy but we were doing C project Apple we","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=138s"},{"start_seconds":146,"text":"actually built it because we want to expedite the time to market for any any","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=146s"},{"start_seconds":154,"text":"application we know that building backends is hard and in that will we want to offer all of this with as little","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=154s"},{"start_seconds":161,"text":"code as possible and feature any real-world integration and composable","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=161s"},{"start_seconds":168,"text":"functionality so our goal is to empower the community of founders to bring destructive scalable applications to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=168s"},{"start_seconds":176,"text":"market in the time it just takes it takes to build a single website and with a little as little code as possible all","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=176s"},{"start_seconds":184,"text":"right so let's get started this is the main project double workspace as you can","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=184s"},{"start_seconds":190,"text":"see it's as two different sections one is the actual file list that you end up","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=190s"},{"start_seconds":198,"text":"uploading files which are mostly tar files compiled demo code that is in any automation this is compiled as Tarbell's","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=198s"},{"start_seconds":207,"text":"on the right-hand side we actually see the projects in Ledger's that we can","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=207s"},{"start_seconds":213,"text":"build now each project project can have multiple letters this one I've already","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=213s"},{"start_seconds":222,"text":"created the the Rev hack project and I have three different Ledger's and I can","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=222s"},{"start_seconds":230,"text":"also from this main view I can also see my notifications and have a nice little","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=230s"},{"start_seconds":236,"text":"external link to my documents so let's go ahead and create a new project","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=236s"},{"start_seconds":244,"text":"I'm gonna name it double webinar and I'm","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=244s"},{"start_seconds":251,"text":"gonna name my ledger hello I get a success notification and my","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=251s"},{"start_seconds":260,"text":"ledger is being built so as this is baking let's go ahead and take a look at the damn old model we're going to be","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=260s"},{"start_seconds":267,"text":"deploying to this ledger gonna switch to vs code and it's a really simple example","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=267s"},{"start_seconds":275,"text":"it has only one demo file and it has comprised of two templates the first one","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=275s"},{"start_seconds":281,"text":"is a greeter template and the other one is a hello message template the greeter template is essentially a template that","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=281s"},{"start_seconds":288,"text":"any party can create and sign for themselves and it gives them a choice which is a non consuming to say hello to some other","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=288s"},{"start_seconds":297,"text":"part now that Hello is essentially chosen on consumer choice or you can say as many hellos as we want to a specific","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=297s"},{"start_seconds":305,"text":"party and add a payload which is just basically a text message this is going to create a Hello message which we see here with the proper sender and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=305s"},{"start_seconds":314,"text":"recipient and the message it's only obviously signed by the sender party and it's disclosed to the recipient using","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=314s"},{"start_seconds":323,"text":"tamils observer keyboard one last thing to mention is that we're also making use of demos contract keys here so we're","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=323s"},{"start_seconds":332,"text":"keying the greater contract by pardon that means that only anymore any single party can create only one of those","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=332s"},{"start_seconds":338,"text":"bigger contracts okay so let's go and build this demo file into a dar and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=338s"},{"start_seconds":345,"text":"upload it in so I'm also in the same directory and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=345s"},{"start_seconds":352,"text":"I'm gonna issue a demo bill and I'm gonna output this to my desktop","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=352s"},{"start_seconds":365,"text":"you and I'm going to name it hello devil","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=365s"},{"start_seconds":374,"text":"you all right and let's go back to devil","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=374s"},{"start_seconds":384,"text":"file desktop I see the devil God are just created and I uploaded","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=384s"},{"start_seconds":393,"text":"all right now I want to actually deploy it to my newly created ledger I have two","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=393s"},{"start_seconds":401,"text":"options here let me dismiss the notification I have two options one of them is to actually use the overflow","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=401s"},{"start_seconds":408,"text":"menu to deploy but it's actually something even cooler that I could do is I could actually drag and drop the hello","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=408s"},{"start_seconds":416,"text":"enabled are in the ledger that I want to deploy I'm going to get another notification","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=416s"},{"start_seconds":425,"text":"and what actually happens in the background is that this star is finding the proper segregated infrastructure it gets deployed a few things get","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=425s"},{"start_seconds":433,"text":"initialized and the ledger is is ready for me to use so if I click inside I'm presented with the administrators view","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=433s"},{"start_seconds":442,"text":"all the ledger now this has a few tabs on the side and a few other settings the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=442s"},{"start_seconds":450,"text":"first tab that I see is the Democrat so I get to see the source code of what I just deployed in this case it's a very","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=450s"},{"start_seconds":459,"text":"simple damage model it just has only the single file that I mentioned but if I have multiple doors deployed I can I can see a drop down as well as a drop down","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=459s"},{"start_seconds":467,"text":"of mine files next up is the automation tab now this is the tab where any","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=467s"},{"start_seconds":475,"text":"automation or any pods that I upload for this ledger I'm going to are going to show up there I'm going to be able to control them from there and also check","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=475s"},{"start_seconds":483,"text":"their logging output right now this tab is not fully functional yet but we're hard at work to bring it to you guys","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=483s"},{"start_seconds":491,"text":"hopefully by under the speed next up is the live data tab now this is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=491s"},{"start_seconds":498,"text":"an interesting tab because it shows the active contract set in devil it also allows you to add parties to that ledger","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=498s"},{"start_seconds":506,"text":"and add contracts and exercise choices although it's not recommended that the contracts are taking choices from this administrative console it's a nice way","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=506s"},{"start_seconds":514,"text":"of managing everything now I deployed a dart file but I already see a party","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=514s"},{"start_seconds":523,"text":"created and a few contracts and also these contracts that I see they're not actually any of those demo templates","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=523s"},{"start_seconds":530,"text":"that I uploaded so what's going on here basically we in project album are","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=530s"},{"start_seconds":537,"text":"leveraging demo but to use to use it for our user model so what you guys are","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=537s"},{"start_seconds":544,"text":"seeing is evidence of deployed dart file represented as Tamil contract here of a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=544s"},{"start_seconds":553,"text":"deployed architect as well as evidence of a user party on the ledger represented as another contractor so","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=553s"},{"start_seconds":561,"text":"this user parties for the ledger administrator why don't I go ahead and add a couple more parties I'm going to go here to add party and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=561s"},{"start_seconds":570,"text":"I'm going to type in let's say it's great Alice and you guessed it let's do Bob alright so as you can see while I'm","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=570s"},{"start_seconds":581,"text":"creating parties new user party contracts get created ledger administered min is since they're an","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=581s"},{"start_seconds":590,"text":"administrator they have an administrator view of the parties that are on the ledger however if I actually go to Alice I can","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=590s"},{"start_seconds":598,"text":"see that Alice can only see her user party contract this is also one of the family I see features that you get the tree Bob again you can see their","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=598s"},{"start_seconds":606,"text":"contract now I think that I want to point out which is kind of different from anyone that has already used demo","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=606s"},{"start_seconds":614,"text":"is that even though we have string literals as Alice and Bob in double we're actually using party IDs which are","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=614s"},{"start_seconds":623,"text":"obfuscated names the mapping between a party ID and a party name being back here is is persistent on those user","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=623s"},{"start_seconds":632,"text":"party projects so this is one thing to keep in mind as you guys are developing your apps okay","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=632s"},{"start_seconds":640,"text":"so now as Bob why don't I go ahead and create one of the the contracts from my demo template I'm going to go and add a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=640s"},{"start_seconds":648,"text":"contract and a selected creator who is Bob and the template who is the which is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=648s"},{"start_seconds":656,"text":"the sample Peter and hit on next","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=656s"},{"start_seconds":661,"text":"and as a party obviously Bob is creating it so Bob wants to put his name on the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=661s"},{"start_seconds":669,"text":"contract so he is able to creat it submit and I get a success notification","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=669s"},{"start_seconds":676,"text":"that my contract has been created but I don't see it here the reason I don't see it here is that this is not shown to the ledger administrator but if I go to Bob","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=676s"},{"start_seconds":684,"text":"I can we see that there's a sample Peter contract now I see my hello choice and an archive","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=684s"},{"start_seconds":692,"text":"choice which is the default choice on area one of the default choices and every damn counter so let's try and exercise the choice in dabble and say","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=692s"},{"start_seconds":701,"text":"hello Alice click on say hello","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=701s"},{"start_seconds":707,"text":"to party Alice and say hey","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=707s"},{"start_seconds":715,"text":"submit and we have created a Hello message contract that contains the halo","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=715s"},{"start_seconds":725,"text":"message and uses the party sender and recipient as party IDs this message","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=725s"},{"start_seconds":732,"text":"since it's addressed to Alice is also available or Alice you see awesome so next time let's take a look at ledger","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=732s"},{"start_seconds":742,"text":"settings this is the control panel if you will for finding all the details of your","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=742s"},{"start_seconds":750,"text":"ledger are the party mappings and being able to get any information you want in order to connect to this back now first","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=750s"},{"start_seconds":757,"text":"time you see the ledger name the hello that one that we just paid it and then you see a user sorry a ledger ID which","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=757s"},{"start_seconds":764,"text":"is again a novice gated name similar to party IDs that will uses these ledger","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=764s"},{"start_seconds":770,"text":"IDs for finding I'm talking to Ledger's and parties then we have a party name to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=770s"},{"start_seconds":780,"text":"party ID mapping or you can just select the party copy and this was gonna copy the party ID let me paste in my caramel","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=780s"},{"start_seconds":788,"text":"so you guys can see and we also have the functionality for copying JSON web","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=788s"},{"start_seconds":796,"text":"tokens as a specific party so I can choose the party that I want and hit on copy as and copy this as a JWT token","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=796s"},{"start_seconds":806,"text":"that I can use in my intubation finally we offer a convenient way of downloading the entire party mapping set as a CSV","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=806s"},{"start_seconds":812,"text":"file and we also have a convenient API link on the URL that you need to use in","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=812s"},{"start_seconds":820,"text":"order to connect this like and we have an administrator action of deleting the entire thing by clicking delete but I'm","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=820s"},{"start_seconds":827,"text":"gonna do that right okay great so now that we've seen the administrative panel let's actually","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=827s"},{"start_seconds":836,"text":"connect to this letter we're gonna do two things we're gonna start by","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=836s"},{"start_seconds":842,"text":"connecting a UI and then we will we're gonna add some automation so let's go on","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=842s"},{"start_seconds":850,"text":"the UI and switch back to vs code and there is a UI folder and the thing I","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=850s"},{"start_seconds":860,"text":"need to do before I launch my UI is configure it so it can actually connect to the ledger we'll just create I'm","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=860s"},{"start_seconds":867,"text":"going to do two things one is go to the config file and copy those web tokens","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=867s"},{"start_seconds":874,"text":"for Alice and Bob then I go back to babble I'll be honest","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=874s"},{"start_seconds":884,"text":"so expect a star token","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=884s"},{"start_seconds":891,"text":"then go to Bob do the same you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=891s"},{"start_seconds":900,"text":"where you save this and then the last thing I want is I would like my UI to know the API of the API endpoint of the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=900s"},{"start_seconds":910,"text":"ledger so I'm going to go to package JSON and then there's a little proxy setting which I'm gonna fill that with the a guy","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=910s"},{"start_seconds":919,"text":"copy this paste it here save now I'm ready to launch my UI so let me go back","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=919s"},{"start_seconds":928,"text":"to my console into the UI folder and the weight yarn stein","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=928s"},{"start_seconds":942,"text":"so this is going to launch a development server which is going to connect to a local host 3,000 and will proxy into the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=942s"},{"start_seconds":951,"text":"actual tab ledger just give it a few moments until it's initializing we should be ready to go right","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=951s"},{"start_seconds":961,"text":"so I'm now connected I'm presented with a login page we don't check for passwords we just have to type in either","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=961s"},{"start_seconds":968,"text":"Alice or Bob let's go on Silas first now if I log in I see Alice's contract","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=968s"},{"start_seconds":977,"text":"set as a default page as you if you remember we have a user party for Alice and we have the hello message that was sent from Bob let's drill down and see","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=977s"},{"start_seconds":989,"text":"the actual hello messages the hey there that we sent and this is the user party for Alice if I go to greeter I see that","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=989s"},{"start_seconds":997,"text":"Alice has no breeder contract created for herself and in the hello messages she just has one message incentive if I","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=997s"},{"start_seconds":1006,"text":"log out and login as Bob now I see three contracts because I see","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1006s"},{"start_seconds":1015,"text":"the extra greeter contract for Bob let me go and check the greeter contract I","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1015s"},{"start_seconds":1022,"text":"do have one and the messages I also see the same message that I sent to Alex so let's and send another one from the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1022s"},{"start_seconds":1029,"text":"UI manner copy the recipient","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1029s"},{"start_seconds":1034,"text":"paste it on hello and say a again","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1034s"},{"start_seconds":1042,"text":"click on say hello and now go - hello messages I see that I just greeted Alice again now as you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1042s"},{"start_seconds":1050,"text":"obviously noticed sender and recipient are again party IDs so if you would like this to show your actual party names you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1050s"},{"start_seconds":1058,"text":"will need to use that mapping on the front end which is something that we're not showing here but as I created this","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1058s"},{"start_seconds":1065,"text":"contract if I go back to project double and to live data and let's say as Alice I obviously see the hello message that I","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1065s"},{"start_seconds":1073,"text":"just created from the you great so now we're essentially sending","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1073s"},{"start_seconds":1083,"text":"messages to Alice but we're not hearing back from Alice so why don't we go ahead and add a little bot for Alice that is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1083s"},{"start_seconds":1091,"text":"going to respond to Bob's messages in order to do that I'm gonna first show","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1091s"},{"start_seconds":1100,"text":"you how the barcode should look go back to vs code collapse the UI and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1100s"},{"start_seconds":1109,"text":"go into the Python folder now if you remember from the last webinar the bot","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1109s"},{"start_seconds":1118,"text":"used to be a file for local development but now it's an actual director the reason is that dabble expects boards to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1118s"},{"start_seconds":1127,"text":"be packaged as Python modules so this is following the typical module directory","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1127s"},{"start_seconds":1135,"text":"structure with an init file an actual main entry point and the meat of the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1135s"},{"start_seconds":1141,"text":"code which is in hello bottom pipe let's","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1141s"},{"start_seconds":1149,"text":"briefly look at that hello bot so the first thing we do is we import the dazzle library this is a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1149s"},{"start_seconds":1157,"text":"Python library that is talking to the ledger it's open source and available","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1157s"},{"start_seconds":1164,"text":"and are equal we hard-code the party Alice and we start with our main function the first thing you see is the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1164s"},{"start_seconds":1173,"text":"URL that the board is going to connect to this is getting read from an environment variable which is being set","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1173s"},{"start_seconds":1181,"text":"at the environment that the body's deployed so this is a line that you shouldn't be changing and you should","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1181s"},{"start_seconds":1188,"text":"make you should keep in mind that this environment variable will always be separate next up is the mapping that I was","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1188s"},{"start_seconds":1197,"text":"explaining before we essentially read a CSV file containing the party literal to party ID mappings and we are creating","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1197s"},{"start_seconds":1207,"text":"these maps to translate back and forth between them because we mean not to register the board as alice but to register as alice party","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1207s"},{"start_seconds":1215,"text":"next up we create a ledger client for for this party and we registered two different callbacks what the first one","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1215s"},{"start_seconds":1224,"text":"does is it fires only once as soon as the ledger is ready so as soon as as soon as the sorry as soon as the board","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1224s"},{"start_seconds":1232,"text":"is basically caught up with a letter that will issue one command that'll create and it will create a greeter","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1232s"},{"start_seconds":1239,"text":"contract for the party that's running it in this case Alice so this says that as soon as the board is ready it will create a greeter greeter contract for","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1239s"},{"start_seconds":1247,"text":"itself and then the second one is going to be listening for hello message contracts now when a contract of this of","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1247s"},{"start_seconds":1256,"text":"this template hello message template has been created Alice will check if the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1256s"},{"start_seconds":1265,"text":"recipient is here and if the sender is not so basically she will check at this messages of address okay","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1265s"},{"start_seconds":1273,"text":"and what she's gonna do is she's going to fetch her reader contract using the contract keys and she's gonna exercise","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1273s"},{"start_seconds":1281,"text":"the hello choice back to the sender of the original message saying hello back and echoing be rich","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1281s"},{"start_seconds":1291,"text":"okay so before we package this bar up for deployment there's one less that we do is to update our party map with a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1291s"},{"start_seconds":1299,"text":"proper party IDs for that we're gonna leverage the setting in ledger settings","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1299s"},{"start_seconds":1307,"text":"in depth so let me go there for the ledger settings and download the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1307s"},{"start_seconds":1315,"text":"party mappings as a CSV now I have it in my downloads folder so let me go ahead and copy it to the proper","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1315s"},{"start_seconds":1329,"text":"from downloads to source","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1329s"},{"start_seconds":1340,"text":"what are you okay so now I pasted the fresh party map and I am ready to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1340s"},{"start_seconds":1349,"text":"package my bot for distribution thankfully I also have a make target to do this bundling which I'm gonna issue right now","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1349s"},{"start_seconds":1360,"text":"you you and I created the but as in the target","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1360s"},{"start_seconds":1373,"text":"directory I'm going to move it to desktop so we can see it you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1373s"},{"start_seconds":1381,"text":"you you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1381s"},{"start_seconds":1390,"text":"so this is the Tarble that I just created and I'm gonna move it to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1390s"},{"start_seconds":1400,"text":"great you go back to dabble and back to my workspace","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1400s"},{"start_seconds":1408,"text":"uploaded file and upload a new in the bottle I just quit","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1408s"},{"start_seconds":1418,"text":"I get a success message and just as they deploy the dark I'm going to deploy the bot on the leader","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1418s"},{"start_seconds":1427,"text":"drag and drop I also see a deploying message same thing is happening here the bot gets unpacked it gets stored in the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1427s"},{"start_seconds":1436,"text":"proper directory and it gets initialized so if I go back into my ledger and check the live data","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1436s"},{"start_seconds":1446,"text":"I see that I created a new deployed artifact if I click on it this is a Python but it gives it a name and if I","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1446s"},{"start_seconds":1455,"text":"go to the automation tab I can now see the files that I just created I won't click on those because this link again as I said this automation tab is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1455s"},{"start_seconds":1464,"text":"not fully functional yet but it will be soon another thing that I worth seeing","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1464s"},{"start_seconds":1470,"text":"is that now that I have deployed I go to live data and I go to Alice I now see","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1470s"},{"start_seconds":1477,"text":"that Alice created a greater contract for itself so the ball is actually running it's created a bigger contract","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1477s"},{"start_seconds":1484,"text":"that is ready to listen to messages so why don't I go back to my UI and send a message to Alice see what happens","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1484s"},{"start_seconds":1495,"text":"so I'm already logged in as Bob I'm gonna copy again the Alice's party I think I go to my greeter contract and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1495s"},{"start_seconds":1504,"text":"I'm gonna paste it and I'm gonna ask her she's a robot","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1504s"},{"start_seconds":1515,"text":"say hello back to messages I see my message here and if I just refresh I just see an","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1515s"},{"start_seconds":1523,"text":"automated response from Alice greeting me back and echoing what I just said and that just as easy as that to deploy her","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1523s"},{"start_seconds":1531,"text":"automation in devil and see them at this point I just want to pause for a few","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1531s"},{"start_seconds":1538,"text":"moments if there's any questions for the panel if not next up I'm gonna be switching context to the hello CDN","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1538s"},{"start_seconds":1547,"text":"example and see I like walking you through how what code changes you need","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1547s"},{"start_seconds":1552,"text":"to make so it's compatible okay so I've","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1552s"},{"start_seconds":1559,"text":"been told that all questions have been answered so let's let's go straight to hello CD","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1559s"},{"start_seconds":1566,"text":"back to project devil back to the workspace actually before we","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1566s"},{"start_seconds":1575,"text":"go - hello CBM how about we show two more things one is how do we delete Ledger's and water ducts an API looks","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1575s"},{"start_seconds":1583,"text":"like so a few moments so I've created this ledger that means the meeting if I go in to the ledger settings","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1583s"},{"start_seconds":1590,"text":"remember this ledger button here so if I click on it I get a warning I confirm","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1590s"},{"start_seconds":1597,"text":"and my ledger is gone now for the hackathon you guys can create as many letters as you want but please be mindful of our infrastructure and cost","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1597s"},{"start_seconds":1606,"text":"and we would recommend that any ledger that you're actually not using last but","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1606s"},{"start_seconds":1612,"text":"not least is the Box link I click on it this essentially has an overview of how","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1612s"},{"start_seconds":1620,"text":"to use the console that I just described but what I want you to focus on is the API section that mentions all the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1620s"},{"start_seconds":1628,"text":"already REST API calls that you can make to your newly created ledger and talk to your demo model just like the UI is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1628s"},{"start_seconds":1635,"text":"doing in this case okay great so now back to hello CDM as","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1635s"},{"start_seconds":1644,"text":"you can see here I already have the repack hello CDM ledger deployed with","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1644s"},{"start_seconds":1650,"text":"automation as well so let's explore that as you can see these are the files that","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1650s"},{"start_seconds":1659,"text":"the hello CDM jamming library has and this is the main file with a transfer","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1659s"},{"start_seconds":1669,"text":"contract I have again Allison Bob at this time I have the transfer contracts","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1669s"},{"start_seconds":1677,"text":"created and I'm also running an automation Python bot for Alice which is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1677s"},{"start_seconds":1686,"text":"the same as the bot that was shown in webinar number two now let's get in the code and take a look at what I had to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1686s"},{"start_seconds":1693,"text":"change in order to make this work let me collapse the double hello example","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1693s"},{"start_seconds":1701,"text":"and go to the hello city an example","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1701s"},{"start_seconds":1711,"text":"okay so first up is the main function","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1711s"},{"start_seconds":1718,"text":"in the main function we essentially added a little is local development flag and we split the endpoint to have a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1718s"},{"start_seconds":1726,"text":"local one and a double however we are starting the whole script from a main function that takes some","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1726s"},{"start_seconds":1734,"text":"arguments let me navigate to that right now which is here now there's a few flags the first lag is if we run local","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1734s"},{"start_seconds":1743,"text":"development versus not if we are not then double is expecting two things inspecting the ledger ID to connect to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1743s"},{"start_seconds":1750,"text":"in order to construct the API endpoint and also the party mapping that you guys saw we're all connecting to the UI the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1750s"},{"start_seconds":1758,"text":"first thing we do is if we're on dabble we're actually using the double endpoint with a ledger ID and we're creating the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1758s"},{"start_seconds":1767,"text":"party map the rest of the code is exactly the same as it was on the Hello","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1767s"},{"start_seconds":1773,"text":"CDM example now for the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1773s"},{"start_seconds":1779,"text":"API calls the only thing that has changed is that instead of passing the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1779s"},{"start_seconds":1786,"text":"literal string alice we have to pass through the translation step of translating a name to a party and then","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1786s"},{"start_seconds":1793,"text":"passing the party as an owner or as an observer same thing with in the reading end point","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1793s"},{"start_seconds":1802,"text":"and in the exercise choice last but not least I've written a few","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1802s"},{"start_seconds":1809,"text":"Translate functions which are essentially convenience functions of going between party names parties vice versa and fetching tokens given a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1809s"},{"start_seconds":1817,"text":"partier party okay now for the bot the bot is a bit","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1817s"},{"start_seconds":1826,"text":"more involved that being said if you package your BOTS in a form of a module you're also going to be able to use them","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1826s"},{"start_seconds":1833,"text":"look both locally and in depth so I strongly recommend you to go that route as before there should be in an in file","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1833s"},{"start_seconds":1842,"text":"and a main entry point file and then the business logic goes into your bot your","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1842s"},{"start_seconds":1849,"text":"one Python file this hasn't changed almost at all the only difference is again the local dead flag which is going","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1849s"},{"start_seconds":1859,"text":"to load the party map if it's not on local dead or it's actually going to use the party literal if it is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1859s"},{"start_seconds":1869,"text":"for the module in order to actually package it we're going to be using","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1869s"},{"start_seconds":1875,"text":"pythons source distribution library now this has two more files that you're going to need the first one is the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1875s"},{"start_seconds":1883,"text":"manifest file which will be used if you want to pass any extra files within the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1883s"},{"start_seconds":1890,"text":"bundle this just tells the packaging utility to include the party map within the package so that the bot when it","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1890s"},{"start_seconds":1898,"text":"spins up actually can use the translations by reading that CSV and set up top PI file which names the the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1898s"},{"start_seconds":1908,"text":"module the package it actually excuse me it actually uses the dependency on","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1908s"},{"start_seconds":1916,"text":"thousand and there's a flag on including package data which essentially tells the","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1916s"},{"start_seconds":1923,"text":"district the library to look at the manifest file","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1923s"},{"start_seconds":1931,"text":"okay so let's do this let's try and run the main file","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1931s"},{"start_seconds":1946,"text":"I am going to go to the download of fresh party map first and then go to my","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1946s"},{"start_seconds":1953,"text":"console and so I am on the hello CDM ledger settings","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1953s"},{"start_seconds":1963,"text":"down let me explore and download and recording them","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1963s"},{"start_seconds":1969,"text":"okay and then go to my terminal you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1969s"},{"start_seconds":1976,"text":"a lot of the hello example and go into the hello CDM example and to good","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1976s"},{"start_seconds":1990,"text":"and this is going to be under Python","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1990s"},{"start_seconds":1997,"text":"all right and let me use the help argument so we can see what this man is expecting I'm looking to connect to","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=1997s"},{"start_seconds":2005,"text":"dabble let me actually bring this up so you guys can see better okay so this is","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2005s"},{"start_seconds":2014,"text":"expecting a ledger ID and a party map so I'm gonna go ahead and provide the ledger ID from W","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2014s"},{"start_seconds":2023,"text":"by clicking on coffee here and the party map that I just downloaded so I haven't","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2023s"},{"start_seconds":2030,"text":"done my downloads folder if I run this","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2030s"},{"start_seconds":2036,"text":"this does exactly the same thing as was shown in webinar number two where it reads JSON it translates it into demo","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2036s"},{"start_seconds":2046,"text":"JSON and then it actually sends it to the ledger reads it back and exercises a","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2046s"},{"start_seconds":2053,"text":"choice on and as a last step let me show you in","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2053s"},{"start_seconds":2060,"text":"real time how we package this bot to deploy to the legend so clear my console once again","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2060s"},{"start_seconds":2069,"text":"and if I go to the Python directory and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2069s"},{"start_seconds":2078,"text":"I do depend on setup got dissed set up the time and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2078s"},{"start_seconds":2087,"text":"then it should be asked this to man this is a pretty standard stuff for the source distribution by the level","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2087s"},{"start_seconds":2096,"text":"we got my","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2096s"},{"start_seconds":2105,"text":"I end up creating a new file turbo which if I go to my director here I can","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2105s"},{"start_seconds":2113,"text":"actually see the dist folder and within this list I just created a tar.gz file that I can now also deploy on that and","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2113s"},{"start_seconds":2122,"text":"that's about it so feel free to play with project album we are here to help","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2122s"},{"start_seconds":2131,"text":"you again a friendly reminder the double is stable but it's still in alpha so any questions you have feel free to send","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2131s"},{"start_seconds":2139,"text":"them on the slack channel and as promised let me show you our Trello board","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2139s"},{"start_seconds":2149,"text":"which is the public roadmap for a project album this has features that are already that are upcoming and if you","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2149s"},{"start_seconds":2158,"text":"like something you can comment on it so we get it prioritized for you so feel free to explore this this roadmap","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2158s"},{"start_seconds":2168,"text":"thanks everyone and good luck with haggle","url":"https://www.youtube.com/watch?v=WK47YmPRj4o&t=2168s"}],"youtube_url":"https://youtube.com/watch?v=WK47YmPRj4o","url":"https://ccpedia.xyz/videos/WK47YmPRj4o"}