Alright everyone, we're going to get started. Again, thank you for coming to the Hyperledger Foundation webinar in depth with Bosch today, enabling micro transactions between IoT devices using the parent state channel framework. And today we have Mano AP joining us from Bosch. He is the blockchain and embedded systems engineer and he is joining us live from Germany. Before we start today's session, we have a few housekeeping rules. We'll go over. Everyone here is welcome at Hyperledger Foundation and we're committed to promoting and creating the safe environment. So please follow the code of conduct that we have when interacting with each other today and throughout. And the code of contact can be found either on the Wiki or on our web page. And today's webinar and all Hyperledger webinars are under the antitrust policy, which can be found either on the Wiki or on our events page. And this session will be recorded. So if you want to go back to review today's discussion, you can do that as well as it is a live stream coming from either Zoom or our YouTube page. And to follow the webinar today, we will be sending you the webinar as well. Next, we encourage these webinars to be as interactive as possible. So please help in cultivating this interactive session by raising your hand, asking questions. And in the Zoom box, when you raise your hand, I will unmute you so you can ask those questions as well as any questions that are not addressed today that you still have. Feel free to email me or our ecosystem team or Mono or you can go to our Discord as well to continue the conversation there. And without further ado, we can get started. And Mono, I'm going to stop sharing my screen and let you take over here. Yeah, sure. All right. Am I audible? Yes, you are. Yeah, okay, perfect. So I will share my screen. So is my screen visible? Yes, thank you. Yeah, so hello and welcome to everyone who are joining from different time zones. Good morning, good afternoon or good evening, depending on where you are. Today, I'll be talking about one of the interesting things we have been working on, which is enabling microtransactions through between IoT devices. And this we have been developing as a pattern open source project as a joint collaboration between Bosch and Polycrypt GMBH. And yeah, so to begin with, I will start with a very familiar context. I think you'd have come across this context if you're hearing box from the blockchain space for quite some time. It is that there is an electric car which wants to charge at a charging station. And here, the charger wants to give the car some power, electricity, electric energy, and car wants to pay for it. And using this scenario of a mission trying to interact with another mission, I would like to take you through the journey of how we started around with Perron, like what was the problem statement we started with, what were the new ancestors we were looking at, and what was the solution we were thinking about, and how did we go about achieving the solution, and what is its state now, and how are we looking forward. So that's the whole gist of the presentation for the next 60 minutes. So to begin with, let's compare these two scenarios when humans are involved in economic transaction and missions are involved in the economic transaction. And the economic transaction, as I said, is a car trying to get some electrical energy from a charging station. So when humans are involved, they arrive with their car at the charging station, then they make an informal agreement. This can be as simple as saying to the charging station operator, Hey, I want to charge my car for one hour or 30 minutes. And this is the rate I would like to pay. Is it okay? And then they make an agreement, like by word of mouth. And then they charge the car. And once the car is charged, the payment is made. This can also be two ways like either prepaid before charging or postpaid after charging, whichever is okay, both are fine. And finally, the humans leave the station. And that's the end of the scenario. Now, what if we were to remove the human personality personas from the scenario, like the owner of the car is not there. And the charging station is also not there. It's an automated charging station. And the car is probably having some intelligence to just go there and charge itself, because autonomous cars are not like very far away in the future. Also, just remember, this is just an example use case that I pick up to walk you through with a tangible example. But this can be extendable to many use cases that are like really happening even today, not necessarily futuristic. So the machines, the first trick is that how to make agreements. Because we take it for granted that we go to some shop and say I want this and I will pay you this. So the other person gives you the good and then you pay. So it's a very simple agreement. But if you look closer to it, it's very hard for machines to do that because this involves an aspect called trust, that if you give him the group, he will give you the money back. If not, then you can make some fight or some case and resolve it. But that is not possible in machines because machines don't understand trust the same way as humans do. So how do we make agreements and how do we handle disputes? So these were the two major questions that we started with. But as we kept pondering upon the scenario, we started coming up with a few more questions, which also became critical. Third one being how to design for IoT scale. By IoT scale, what I mean is that currently when we talk about most scalable systems, we talk about internet scale. I'm saying everybody is connected on the internet, maybe 80, 90% or even much lesser. But that's fine. Some very good percentage of populations connected to internet. And we want to account for every person on the internet. That is what we think about scale. But if we look about IoT scenarios, IoT devices are most likely owned by people or by companies. And one person or one company can own any number of devices. So IoT scale is going to be much larger than the internet scale. So we needed some mechanism that would work at really that scale, like not even scales today, but much orders of magnitude more than that. And fourth one is how to deal with IoT device constraints. So the IoT device could have several constraints that it's having limited energy, limited power consumption, because it's running on battery, or it is not able to always have very good network connectivity, or it is having compute or memory limitation, something like that. So how do we deal with such IoT device constraints? That was the fourth nuance that we came up with. Fifth was the last one, but also very tricky one is machines holding money safe. So if I'm going to some shop to buy something, then I would either have some cash or credit card, which I can spend. And if this cash or credit card is lost, it's a problem because somebody could steal money from it. So I would always try to keep it safe. But if I lose it, then it's my problem because I have been careless. But now if we think about giving the ability for machines to make economic transactions, is machines holding money safe? For example, if the car or some other device is stolen, then the money associated with it is also gone, and that is a problem. So how do we tackle that? So these were the problem context, which we started out with. And before I move on further, if you have any questions, I would like to take that and then go forward. Since there's no questions, I will move forward. So the next step is, okay, we have looked at what the problem context is. Now how do we, what are the technical requirements? This context gives this. So the first thing is enable machines to make agreements and handle disputes. Here we said, okay, let's use some form of enforceable digital agreements, which machines can understand. And for dispute resolutions, let's use algorithmic dispute solutions. And each of this, I'll be coming into detail in the later parts of this talk on how we go about with them. Here it's about just identifying what the requirements we are working at. Second is designing for IoT scale. As I said, the interactions can be at very high scale than what is possible today. So we thought if we are going to decide for that scale, then most of the interactions should be peer-to-peer, if not all. Then the third point is designing to run on constrained devices. So in this case, we need to consider the limitations on compute, memory, network, and power consumption. This should be an important factor in designing a solution. And the fourth one is limit or eliminate the need for machines to hold money. So here we said we can use some form of peer authorization. For example, I can say the car, hey, I give you permission to spend so much amount of money only with this person, only in this context. So some form of pre-authorization, so that even if the car is stolen, the authorization hold which the car holds is very less likely to be misused because it can be spent or used only in a very specific context. So we thought, could we think about something like that? And having all of this in mind, I think the first one, if you're in the blockchain space for quite some time, you understand one of the big benefits blockchain brings is this, it makes possible one to write enforceable digital agreements. And it also has algorithmic dispute resolution. So we said we will pick one of the common blockchains, say Ethereum. And this is just the one we started with. But now we work with a lot more blockchains. But for a solid context, let's say we already use Ethereum for this. So we don't work much on the first part of the requirement because it's already solved. But then how do we go about solving the other three parts? And that's where we started working on Perron. And in the next slides, I will explain you how Perron protocol works. Yeah, so this brings us to the second part of the webinar, which is the solution. So before we move forward, if there are any questions we could take and then go forward. Okay, perfect. I will go forward. So the thing with Perron state channels is that say you have a charger and you have a car. So these are not on the blockchain. They are like blockchain layer. And then there is blockchain, say Ethereum, which is the top layer, the blue one. And we deploy the Perron smart contract on the Ethereum blockchain. And what happens is that the car goes and meets the charger in the charging station. And then it interacts with the charger saying, okay, this is the agreement that I want to make with you that I want to purchase so much of electrical energy. And this much I'm willing to pay. So all those interactions happen, direct peer to peer between these two participants. And they come to an agreement, okay, this is what I'm going to sell you energy for and this is how much you're going to get. And once they make this agreement, they go to blockchain and say to the Perron smart contract, here's the agreement we made. You please fund this agreement on the smart contract. So what happens is if the car is willing to pay 10 euros for 10 units of electricity, then it sends the 10 euros to the Perron smart contract, which is getting blocked in the smart contract. It is not yet sent to the charger. And it also tells the smart contract what the rules of the game are. Then the channel is funded. And now the car and the charger can enter the transact phase, which means the car is now allowed to spend 10 euros with the charger according to the rules which they agreed. So then we can say, okay, I will get one unit of electrical energy and then pay one euro, one more unit of electrical energy and pay one more euro and so on. So that way they can pay each other. But all of this is happening direct peer to peer. It's not involving any central server or blockchain. And once that is done, what happens is that they again go to blockchain and say here is a transaction that's complete. We would like to settle our new balances on the blockchain. In this case, it would be that the car got 10 units of electrical energy and transferred 10 units to the charger. So now the contract will take the 10 euros that was blocked in the contract and give it all to the charger. And if for this, it would consider the proof which the charger and the car sent. And so this ensures that everything is happening according to the game, like according to the rules which they agreed upon. So this was the Peruvian state channels, the first part of a solution, but it was not all. So what we achieved here was that we were able to make most of the transactions direct peer to peer so that we succeeded. But the other problem is that the car and the charger needs to go directly to the blockchain and when they're transacting off-chain, so when they're sending off-chain payments, if somebody is missing, what happens? So if the car is just driving away from the station, what happens? The charger will have the latest off-chain state, which both of them agreed to, which it can post to the blockchain and say, hey, this is the latest state I have. The car is not responding anymore. So settle the dispute and it will verify, the smart contract verify that that state is correct. And then it will give a grace period, say 10 seconds or 10 minutes or whatever you can configure for the other person to challenge. If this is a fake transaction, then other person can challenge with his own proof and then the smart contract will try to check both the proofs and resolve it according to which is the correct one. But if nobody is responding in that time period, the challenge duration, then the smart contract will say, I got this, the challenge period expired. So this is what I'm going to resolve. So in this scenario, it is important that all the participants are continuously connected to blockchain, which means they should have continuous, very good network connectivity. And yeah, they should have good power consumption as well, because otherwise, they cannot be always connected to the internet. So these two limitations were there. And that is what we try to work on in our next improvement of Perron State Channels, which is Perron IoT State Channels. Here, what we did was that we took an advantage of a key characteristic of IoT devices. That key characteristic is that every IoT device is either owned by someone or it is administrated by someone. If the device belongs to a company, then there is an administrator for every IoT device. So we said we will take advantage of this phenomenon. And then we will try to delegate all of on-chain interactions of the IoT device to this administrator or owner. So now what happens? The car is no more talking directly to the blockchain. But it says to the owner, hey, I went to the station. I made these interactions with the charger. And this is the way I want to open the channel. This is what he says to the owner. And the owner will then fund the channel on behalf of the car. And he will also set up everything and then say, I've set up everything. Here's what you need to do the transactions and everything. And then the user gives the car the authorization. And now the car can make transactions as it did before. But the interesting thing is that it just needs to send periodically like every one second or two seconds or maybe every 10 minutes, which you can configure, it needs to send periodically the latest state, which was a grid off-chain to the user so that in case any dispute arises, the user will send the latest state to the parent smart contract and resolve it. So in this case, the car is no more required to interact with blockchain or be always connected to blockchain. It just needs to talk to the user. And to the user also, it need not be always connected. It needs to be connected only when it needs to talk or at least once in that periodic interval. So this way, we eliminated the need for the IoT device to be always connected to the blockchain. And this solved most of our requirements. So if I go back to the slide of requirements, we solved most of it. The first one, we used Ethereum already. So then we got enforceable digital agreements and algorithmic digital solution. Second one, we made the transactions mostly peer-to-peer. That way, this could scale even at an IoT scale. Third thing is that in the IoT state channels, we moved all of the blockchain interactions and network connectivity requirements away from the IoT device to the owner or administrator of the device, which means even with limited compute memory or network or power consumption requirements, this solution can still work. And finally, preauthorizations. So what happened was that when the car says that it wants to spend so much and everything, the user actually has the keys for the funds which are on the blockchain. Whereas the car has only the funds for signing or doing the off-chain transactions, which is only like preauthorization keys. Even if these keys are lost, there is nothing lost because with that keys, the only thing possible is to act within the limited context of that contract with that particular person with whom it was set up in that particular time period. So this way, we solved all the four of the requirements that we had. And next part is the demo before. And Manu, I just want to jump in really quickly. We did have a question on the YouTube channel regarding the transactions and the negotiation there and the question of what if there is some sort of technical issue that you run into in terms of payment? Is that refunded and how does that work? Yeah, that's a good question. So if you look at the protocol itself, it takes care of every part that if at some point in time, like when you're setting up the channel or when you are making off-chain transactions, if some point in time, if there is loss of network connectivity or some other devices down, then you already have all the information to safeguard your interest. For example, you block the money, say 10 euros you blocked and 0 euros the other person blocked and your agreement is that you're buying one unit of electrical energy for one euro in every microtransaction. And now after buying four units of electrical energy, say the charger is down, it's completely out of network or something, then you have the proof that you have paid for the four things and you can send this proof to the blockchain and the blockchain will wait for some time, as I said, the challenge period to check if the charger is coming online or if it is trying to challenge your decision. If not, then the state is resolved according to the proof that you gave to the blockchain. So that way, at any point in time, if there's a technical glitch, you could still recover what has happened until that point. Great. Thank you, Manu. And thank you for asking the question. If anyone else has any questions, I did allow everyone, you can just unmute yourself and speak directly to Manu to ask questions or feel free to write questions in the chat either on our Zoom live stream or YouTube live stream. Thanks. Yeah, hi Ramesh. Hey, what is the difference between the off-chain data and on-chain data? Yeah, so on-chain, can you be more specific about the question? Can you go to the previous architecture which you have shown? Yeah, sure. This one? No, not this one. One more. Yeah, so this one? Yes, exactly. Layer one and layer two. Yeah, please go ahead. So what exactly the difference between the layers actually, what exactly it will do? What kind of data it will store on the layers actually? Yeah, sure. So layer one is the blockchain. So this is like the normal case when you're deploying smart contracts on blockchain and you're sending transactions and everything, this is stored permanently on the blockchain. But because this is a very non-trusted layer, it's also expensive. You have to pay some gas fees and everything for every transaction. But layer two is like based on the open state, like you open this parent state channel using the parent smart contract, then you can directly make, create new states. So for example, the car can say the initial balance was 10 comma zero. Now you gave me one unit of electricity. It can add the proof and it can say the new balance is 9 comma one, which means the car is paying one to the charger. So the car can create this data in locally and then sign it and then send it to the charger. The charger will then sign it, which means it is now a new off-chain state. So this way they can create n number of off-chain states by direct peer-to-peer interactions. And there are defined rules for how these states are created and what states are valid and what states are not valid and everything. And those rules are what we call as parent channel. And whatever state is created according to these rules that can be later used for resolving the dispute or even like resolving it collaboratively on the blockchain. So that is what happens between layer one and layer two. But if I query my balance, will it hit layer two or layer one? So whatever you're doing on layer two, it does not affect your on-chain balance unless you settle. So it's just that you're maintaining a local bookkeeping between you two people because you are the two people involved and you know that every state that is created in this off-chain channel is possible to be resolved on the blockchain at later point in time. So this is just a local copy. This will not affect the on-chain balance, but it gives you the guarantee that at later point in time, you can without any problems update this off-chain balance on the blockchain. Okay, thanks, sir. I will also show you this one. So this particular part, I will show you how it works in the demo part. Like I will show you both the on-chain balance and off-chain balance and how that changes in each step. Yeah, that would be great. Thanks. Yeah, I will come to that in the demo part. Thanks, Ramesh. And Manu, we have a few other questions here, one from Joey on Mugalu. He's asking, how can the user of an IoT device manage their payments or enable scheduled activities? How are triggers for the microtransactions set up? Yeah, I think I will show you this part in demo as well, how this interactions work. But in short, it can be any ways. For example, you can have a mobile app to which you receive every notification when a device wants to ask for some authorization and then you can manually approve it. But if you're having a larger system, like if you're a company, then you can also have an automated system which says, if it meets these rules, then you can do it. There are white possibilities. It's not fixed. Yeah, but I will show you one possibility in the demo section. Okay, great. And then James comp asks, does parent enable asynchronous operations like JavaScript promise? Can you be more specific about the question? Because I'm not able to fully understand it. Let's see here. James, I don't know if you are able to perfect. So I'm wondering, for example, can parent, can you do an asynchronous, on the blockchain, it's not possible to do asynchronous operations because it would lock up all the nodes. I'm wondering if it's possible on parent to do that. For example, could you have an outstanding JavaScript promise to monitor the cost of electricity and then it would trigger when it gets below a certain cost and then the car could charge at that point? Yeah, you could do that. So the interesting thing is that the parent channel is a state channel, which means you can write any arbitrary logic in it and make the transactions according to that logic. So you can say that, okay, I'm hooking up my car with this charger, but then it's not charging immediately. I'm buying 10 hours of time or something and I will consume charge only when a certain party has met and then you can configure the factor to be whatever it is. So all those fancy things are possible. Okay, thank you. Yeah, but whether it makes economically viable or that's a different issue, but I think technically it's possible. Yeah. Thanks, James. Thank you, Manu. Yeah, do we have more questions or should we move forward? Not yet. So I think we're okay to move forward. Yeah, perfect. Okay, then I will move to the demo section. Yeah, in the demo, I will show you a screen with four splits, each split having a terminal, and the top right split is the blockchain terminal. Here, you can see just some text crawling. The purpose that I show this split is that whenever some blockchain transaction is happening, you can see some bulk of data. So that's the only thing I don't expect that the text is readable in this split. In the top left split, that will be the user's portal. So this is the portal of the IoT device owner, which is basically the car owner. And here, I have set it in such a way that it's just auto approving every request. But you will see the data, like whenever a request comes, you can see that the request is coming. And then it is getting automatically approved. And what's happening on his side that you can watch the bottom two splits. The left side, I will have the small UI for the car. So in this UI, we will try to open a channel with the charger and everything and do some transactions. And on the bottom right, you will see a small UI for the charger. Yeah. So I will move to my demo screen. So this is what you see. One moment, I will start the note for the car and the charger here. And now if you look at it here, so this is the car owner's dashboard. And this is the car terminal. And this is the charger terminal. And this is the blockchain. So here I hit connect. So all of this are not running on a local mission. Everything that is representing the car is running on a Raspberry Pi. Everything that is representing a charger is running on another Raspberry Pi. This blockchain is running on this computer. And the car owner's dashboard is also running on this computer. So it's like a really network setup. It's not a local setup. So let's wait until this gets connected to the same network. Yeah. All of this are connected in the same VLAN. WLAN. Okay. Thanks. Yeah. So local network. But I think since we use IP addresses, if you're able to make your device visible through Internet, then you can also connect across the Internet. It should be fine. Yeah. So if you look at the terminal, I will show you in the top, there is the address, the on-chain address of the car. And then there is the balance, which is 108. And then here we have the time. And here we have some channel data. I will show you when I open channels what is coming up here. Similarly for the charger, also we have some balance. So I think it's having some 99.998er balance. So now let's say the car goes to the charger and it wants to open the channel. So it says open. So I'm typing in the text box here if you can follow. So it goes here and says open with a charger, 3 and 0. So it says I want a channel with balance 3 either for me and 0 for the car, for the charger. And then it gets a request, which it can accept. So once it accepts, you can see that we have a few transactions on the blockchain, which is basically the funding transaction. So the money gets blocked. So now you see that the balance here is 96. something, which means three Ethers has been blocked in the smart contract. Here the balance has not changed because this was not blocking any money in the channel. And if you see in the car owners dashboard, it got a funding request saying the channel is between the car and the charger with a balance of 3 and 0 ETH. And then it was automatically approving the request. So funding was successful. Second, I was telling you about the fact that the idol devices should continuously watch for the blockchain for some events. And in this case, the car will not be watching, but the user will be watching on behalf of the car. So the watching request for the channel with a charger is started. And that is also shown here. So now the channel is in Pansec face here in the car, it says the peer is the charger. Similarly, if you look in the car chargers dashboard, it says it's also in the Pansec face with the peer being the car. And the balance is here and the version is here. So now let's say the charger sent one unit of electricity to the car and it wants to pay for it. So I send on channel number one, one ether, like this, and then it gets a request. It can accept it. So now what happens is it's accepted. Now you see the balance has changed. If you look the on chain balance remains the same. It is 96.99 for the car and 99.99 for the charger. So that's not affected. But the off chain balance has changed. So it is two and one. And the version also has been updated. It's like version one. And it's not that always the car needs to initiate the payment. For example, if you want in your use case to be otherwise that you want to request payments, that's also quite possible. You can say request on channel number one, one ether.  And then the balance is again change. Now if you look the cost balance is one and charges balances two and the version is two. So similarly, we can try to make one more payment, send on one, one and then accept on one. So now the transaction is complete because car's balance is zero and charges balance is zero. In the meanwhile, if you have noted, in this case, the car is sending every state that it creates off chain to the car owners because then if there is any dispute on the blockchain, you can always use that latest state for dispute resolution. But if you're thinking about high frequency transactions in some use cases where you want to make large number of small transactions, then it is not necessary that you send every transaction. It is sufficient if you are sending periodically at least one transaction. For example, the latest transaction every minute or the latest transaction every five minutes, or it can be any period that you can configure depending upon your use case. So this is the transact phase where the transactions are completely over. And in this transact phase, you see that there is no transactions in the blockchain. So all of this is happening off chain. And even the on chain balances is not affected. So now let's say we want to settle this channel. So in this case, I think the person who's most interested in settling the channel is a charger because he is the one getting the money. So he can say close on channel number one. And then it says goes register phase and it sends a request to the user which the user can accept. So once the user accepts, it marks the new state as version four. And because both parties are agreeing to close the state, it says that is the final state. And when you try to resolve a final state, the balance is settled immediately. So we saw that as soon as we set close, there was no challenge duration or something. The balance was getting settled very fast on the blockchain. That was because both parties agreed that this was the final state and this was the state but that we want to close. And if you look in the car owners dashboard, you saw that channel finalized off chain. So this is what I said as both parties agreed to what was the last channel. And after that, the withdrawal request was made on behalf of the car. And then the channel was concluded on the blockchain and the withdrawal was successful. Now if you look at the on chain balance since all the three ethers which the car blocked was spent on the channel, it's balance did not increase. It's like 96.99 again. But if you look at the charger, it is like 102.99. So this is how the transactions work. Maybe if you have some questions, we can take it and then I will show you one more scenario which is more interesting. And Manu, we do have a few questions on the YouTube channel again from Mohammed Abu Jabara. He's asking, where do you maintain the pricing table and how many power, how many power units are sold in Tali initially? Excuse me. Sorry, can you repeat the question? Sure. So the first question is, where do you maintain the pricing table? Okay. And then the second is, how many power units are sold initially? And Mohammed, if I am not asking this question thoroughly, feel free to. So I think this particular use case itself is not the real use case. Like this use case is chosen for illustration purposes. So I mean, we don't care much about what is electricity price or something. In fact, there is no electricity being exchanged between the devices or so on. It's just for illustration that I use as example. But if you want, then you can just have some software that is running in your car which is talking to an external service like an external API which is providing you with pricing information and so on. That is quite possible if you're thinking about implementing this use case in real life. And we had these states that how many power is exchanged and everything is probably stored locally between these two parties because the car knows how much power it receives. So it can keep track of it. And maybe there is some proof exchanged between the car and the charger on that part. So that is very specific to the use case. Here it's just used for illustration purposes. So there is no exchange of electricity or anything. I hope that answered the question. It looks like it. Thanks, Mano. Yeah, sure. So now I come to an even more interesting use case that so that I will open one more channel with this charger, open with charger one and zero. So it's just having one transaction. And I accept this channel. And then I send one on this channel, okay, 0.5 on this channel, one. Send on channel two, one ether. And then it accepts. Now what if the car is not responding? Like it wants to drive away because it does not want to make this one either payment reflected on the blockchain. So what if it's just running away and it's not responding? Even in that case, I think our interest is safeguarded. So we can try doing it like close on channel two. And so it's going to the register phase and it's asking the car to approve it, the closing, but the car is saying I will not respond. I don't care about it. So then what happens is that both persons will wait until the time out. So the time out you can see here was 42 seconds, which has passed. And after the time out, the challenge duration starts. So irrespective of whether the car responds or not, the channel is always registered on the blockchain. So here you can see that. And you also see that there was some transaction here, which was the registered transaction. And after that, the challenge duration is weighted. Like in this case, it's 10 seconds. I've set it to 10 seconds for easier demo purposes. And after the 10 seconds, still both parties with product balance. So the only difference is that if both persons collaborate, cooperate, then the cost, like the economic cost, money cost and time cost of settling the channel on the blockchain is much cheaper. But if one person is not collaborating or one person is acting malicious, the channel can still be settled. The protocol safeguards your interests. But just that it involves a little more money because you need money for the solution or a little more time. That's the end of the demo. And Manu Ramesh has another question here. He's asking how many transactions are created in the blockchain? So in the blockchain, when you open the channel, one transaction is created for funding the channel. And when you close the channel, two transactions are created. One is for registering and the other is for withdrawing the money. So totally three. And for each transaction, gas fee is required? Yes. Okay. And one more thing. Right now, we have shown it on the offshore data. But do we have any local setup of Ethereum blockchain or is it pointing to the any test network? No. So the one I showed you here is a local Ethereum network. It's not. Yeah, it is Ganesh. Yeah. And this solution is specific to only the public blockchains or the lead support private also? No, I will come to that. So I think the Peron blockchain, the Peron protocol itself is blockchain agnostic. And in the next section, I will be talking about what is under the hood. And in there, I will explain you that it works on most blockchains. And what are the blockchains it currently works on? It actually works on more than just Ethereum even now. Okay. Why? Because I'm working in the hyperledger fabric, which is a permission and private blockchain. So I'm just interested to see if you get that into the hyperledger. Yeah, it works with fabric as well. So I will explain that to you in the next section of the presentation. Okay. Yeah, that's a great presentation. Yeah. Okay. So do we have more questions? Okay. If there are no more questions, then we could go to the next part of the presentation, which is let's look under the hood. So I was talking about Peron state channels and then IOP state channels. And then I was saying, it's possible that I delegate every transaction of the device to the user or the owner of the device. So in this section, I would like to show what is making that work because such a delegation should ensure that what are the rules in which the device should share the state with the owner. And in all cases, there should not be any loss of money or funds because these are all economic transactions. So I think what makes IOP state channels work? The first part is that we split the on-chain and off-chain components of the Peron protocol, which means initially we were having this. So this was the first one which we were having, that there is that is device one, which is talking to the smart contract. And inside the device two, there is a node which is running locally. And then this is talking to the smart contract. So in this case, both the on-chain and off-chain parts are coupled into a single piece of software. So what we did was that we went from this architecture to here, where we said, okay, we will allow this one. So entity two stale thing is still here, that is also possible. But what is also possible is that we will take the funding component and the watching component and make it a separate services. And then we will use a gateway through which the device can talk to these funding and watching components. So this is what you saw in the demo that the user was having whenever there was a funding request or need to watch the channel or withdraw funds that was done by the user, whereas the device is doing only off-chain transactions. So that split of responsibilities and functions, that is what the first thing we conceived. And then we try to implement that. And I think all of the work that we do is open source. So this is also from the repository called Proposals, which is also open source. So you can also go here if you are interested in diving much deeper into this and want to know more. So this is the first part, separating the funding and watching components away from the main component software and being able to run it separately, which means the device has now very less requirements. And the second component is designing a protocol for externalizing the watcher service. Yeah, so what happened here is that, okay, we externalize the watching component here. But what does this mean? Because with funding, it's very simple. I want to say to the funding component, please fund this channel, then it is funding it and then giving the response. It's very simple request response thing. And if you want to settle a channel, I will say here's the latest state, settle it, and then it settles it and then gives you the latest state. So it's very simple. But with watching component, it's not the same, because the device is continuously creating new off chain states. And it needs to send this off chain state periodically to this watching component. Because if it is not sending, then when there's a dispute, the watching component does not have the necessary information to resolve the dispute. So we needed to work with some protocols, work out some protocols to see how that works. So then we said, okay, here's the main component or the car, then there's the watching component or the user's dashboard, and then there's a blockchain. And then we modeled in each phase what are the interactions involved and what are the rules, and what is the timeframe in which they have to exchange states. And if they don't, what happens and so on. So then we implemented this protocol which we described here. So this is what enabled us to externalize the watching component. So this was the second key aspect of what made the IoT state channels work. And third is using a very standard scheme for encoding off chain messages. Initially, we were using a custom encoding protocol for sending off chain messages between two participants. But then later we switched from the custom protocol to protocol buff, which means even if we are doing implementations in multiple languages, for example, if we do a current implementation is in Golang. But if we do an implementation and say see or rest in later point in time, then also we can just not rewrite every encoding schemes, but we can just use protocol specification and generate steps for it. And finally, the fourth part is use the external funding watching component in a practical way. And that is what I showed you in the demo. This one is not yet released, but we plan to release it in the coming weeks. Yeah, so I think that gave you a good insight into what were the thoughts, designs and protocols which made the components work. And this brings us to the final part of the presentation, putting things together. So what exactly is the parent framework and what is concrete about it? So the first part is the parent go parent, which is the core SDK, which consists of a very central piece of software, which is parent protocols. Here we implement all of the funding, watching off chain, every protocol is implemented in this component. And this is pluggable. So what is pluggable in this parent protocol core is that first is the chain. So whatever blockchain you want to use along with parent protocol, that is pluggable. So I will show you what chains are possible. And then the second pluggable component is networking and serialization. So parent protocol does not specify even how the off chain transactions should be carried out, like what networking should be used, how should be serialized. All of this is not defined in the protocol, it just defines the rules on how the state should be created, but how the networking and serialization happen is still left open as a plugin. And the third part is persistence. So on the off chain, when you're creating new states, whether you want to persist it using some database or just flat file, or you don't want to persist at all, it's everything up to your choice. And that is also left open. So now for each of this, we have multiple options. So for chain, I think currently we support four different chains, Ethereum, Cosmos, Polkadot and Internet computer. I think as of today, we also have a fabric backend. So there's also 51 that is supported right now. And all of this, you can find details in our Hyperlogel Labs projects. And with regards to networking, I think currently we use TCP networking for P2P, but I think we will start using more other protocols for the need arises. And for serialization, as I said, initially we were using Perron format, which is very custom home-baked format for encoding. But then later, since we wanted to do implementations in multiple languages, we moved to protocol buffers. And finally, for persistence, we use level DB. So we just persist every state using a level DB database. And this is the core part, which is having a central piece and many pluggable components. This is the component that you would look into if you really want to play with the Perron protocols and build your own custom use case. But for most users, I think there is a second component, which is called Perron node. What Perron node does is that first it takes the Perron go Perron framework and configures it. So that's the bottom part. It just configures one possible option for each of the pluggable component and it makes it ready to use. On top of that, it creates a session so where you can manage channels. So if you're having 10 channels, then it collects all the 10 channels of yours together. And then if it manages your keys, wallets and option IDs appear. So for example, if you're going to talk to going to a charger and talking to it, how do you know that's the charger? So those kind of option IDs are also maintained by the session. And then on top of that, it provides some use case specific APIs. For example, in this, I showed your payment use case. So the payment specific API, because I said Perron state channels itself has any arbitrary possible logic. So the API is very generic. But if you want easy to use APIs, then you maybe maybe want to make it very specific to a use case. That case, you can just build it onto a session. And then there are remote API interfaces, and then also the remote funding and watching services. These are optional. So any of these components you can enable or disable or even modify according to requirements and then use it. So this is where everything comes together. And the Perron node was what I was showing you in the demo, that charger was running its own Perron node, user was running his own Perron node and the car was running its own Perron node. And the front end was just connecting to the Perron node via gRPC remote interface for API. And different Perron nodes were running in different configurations. For example, the user's Perron node was only running funding and watching service, but the cars and charges was running everything. So that brings us to the end of the presentation. And in the near future, we plan to focus on implementing a light plane for deep embedded devices. So what I showed now was software running on Raspberry Pi, which is also still a very capable computer, but we are looking forward to develop a very light client which can run on devices which are running bare metal or running real-time operating systems which are like C or Rust kind of implementation. And finally, we are looking for contributions. If you find the concept relevant, feel free to get in touch with us. If you'd like to evaluate, check out our tutorials, demos, online videos that we have done before. And even reach out to us if you don't find what you would like. And last, if you're interested in joining our development efforts, always welcome. Just get in touch with us and we can see what we can do together. Thank you. And it's open for discussion. And Manu, we do have two questions from the YouTube channel. Yeah, sure. Let's see here. So really quickly, and we just have a few minutes left from Mike V. He says, can you speak to the cybersecurity aspect of this? How is this protected from attacks such as those seen previously on Ethereum with the 51% attack factor? Yeah, I think the parent protocol itself is not having such things because obviously the blockchain with which parent protocol is working with, they have, they still have the same scenario, whatever is existing before parent protocol is still existing even when parent protocol is working or not. But within the parent protocol, you're actually creating a space for two participants to sign both states. For example, when the car is sending a payment to the charger, car is creating this new state, it is signing its own, and then it is asking for the signature from the charger and the charges signs, then only the state is valid. So actually, both the persons involved are signing on the state. So I think the scenario is a bit different. The same arguments of on-chain does not apply here because here we are creating consensus by getting approval from all the involved participants. And only after the approval from all involved participants are coming, we accept that that is the latest state, and then we go to next state. And in order to identify which is the latest state, you saw that we are also using version numbers. So whenever you create a new state, you increment your version number. So always state with higher version is later than the state with the lower version number. And this, every party should ensure check when they are signing. So when you're signing, you should see that this version number is greater than any other older version number. So that's just your due diligence in the software. So this, all these rules are implemented in the software. So this is what we call as the Perun off-chain protocol, like these rules according to which the new states are created. Great. Thank you, Manu. And we have one other question here from UV on the YouTube channel. And I'll ask the second one first. What are the benefits of use for microtransactions in between users? Yeah, that's a very good question. So one advantage of microtransaction is that it reduces the risk. For example, if the car is sticking to the same use case, if the car is trying to purchase 10 units of electricity, and if it is saying that you give me 10 units of electricity and I will pay the money for it, it can either be prepaid or postpaid, but in either case if it's prepaid, then the car is already paying the money for it. And if the charger is not giving the desired quality of service, then there's a problem. And 10 euros is like a huge money. So it needs to resolve the dispute and make things fair. So then it needs some mechanism for dispute resolution and everything, which is making it a little cumbersome. On the other hand, if you go for postpaid payment, then the charger is giving all the electricity to the car. But then when it wants to pay, if it is not paying as per the agreement, then also it's a problem for the charger. But when you break this one big transaction into 10 small transactions, your risk becomes less because you're purchasing one unit of electricity. If you're satisfied with it, you pay for it. If you're not, then you walk away right away. So by making the transaction smaller, there is a lesser counterparty risk. Great. Thank you so much. And thank you, UV, for asking that question. Unfortunately, we are out of time here. I want to thank Mano very much for his time and participating in the Hyperledger Foundation webinar series. And if I'm going to share my screen here, and Mano, if you can stop sharing your screen, that would be great. Thank you so much. Thank you. All right. And I want to encourage everyone to go to our Discord channel and you can continue this conversation, ask more questions, as well as get more involved in the Hyperledger Foundation. And we do have another webinar coming up on November 10th. Build your identity solution using Hyperledger Aries. I encourage everyone to join that, as well, if it interests you. And thank you so much for your time today. Thank you, Mano. Yeah, thank you all. Bye.


Hey, I'm going to be going to Southeast Linux Fest that is going to be June 10th 11th 12th. It's over the weekend I'm going to be attending there. I'm going to be presenting there. I've actually been there before I want to say I went there in like 2018 something like that did a little talk there. I'll put the video in the video description I'll put a link to that talk if you want to see it But I'm gonna be there again So if you're in the area you can feel free to you know stop by obviously it's not a party for me There's a lot of Linux stuff going on a lot of different talks on different things Quite a variety some some interesting people I actually met some subscribers last time who actually very normal for what you expect Linux Linux users to be So if you're if you're a normal guy Who uses Linux or just as interested in the kind of stuff feel free to come out Charlotte, North Carolina it's actually it's in a hotel that that's where they've traditionally done it and You don't have to get a place in the hotel I don't know if they still have rooms in it for the weekend But if they don't you can always just last time I went I stayed at some other place and commuted in I was I actually took a bus out there not gonna be doing that this time So if you want to come out to Charlotte, North Carolina again June 10th 11th 12th You can still register to come in I think you can even register at the door, but you can check their website I'll put their website in the video description I'm also gonna be doing some other stuff in the region whenever I I'm traveling I like to do as many things as possible because I hate driving. I hate spending money on gas all that kind of stuff So if you have something in the region that might be worth me doing and that includes I don't know you want you have a little club Or something like that. I might be open to something like that I actually I'm kind of doing some things in Atlanta on the way out, but um That's just to put that out there either way I'm gonna be at Linux fast now the the presentation. I'm gonna give is gonna be more or less on using free software to Do economic transactions, you know payment processors things like Bitcoin and Monero and things like this kind of explaining the history of Trying to solve the problem of payment processing using free software and actually have another talk that I submitted now They haven't actually approved they've approved my original talk and they put out some tentative Acceptances they're gonna have more talks that they may or may not approve and I do have another talk that might be in that group That I submitted super late so it wasn't in the early Acceptances so I might be presenting another one and that is actually gonna be on like Self-hosting stuff and like website more like I guess my my vision of the modern web or what needs to happen on the web So I might be presenting both of those either way I'm at least going to be presenting on digital currency and stuff like that. So either way I will be there And the tradition or that was established last time is I'm not going to attend Sunday morning Because I'm gonna go to church then so I haven't decided what church I'm obviously an orthodox church at this time, but there are actually a couple orthodox churches in Charlotte But if you know anything about them, you can feel free to tell me Because I don't know maybe maybe other people will be going as well. So anyway, that's it. I have no further comments


Have you logged your performance today? Remember, efficiency guarantees citizenship. Your economic counsel thanks you very much. The characteristic flaw in the worldview of those inventing a new world is not to understand how this world works.  And when the models of economists and real life get too far apart, that's when the trouble really starts. Economics still offers only one way of looking at the world. We have seen many upheavals of capitalism lately. There are structures built in that make the system both relatively fragile, and at the same time create major advantages for some at the very top. The system is very much rigged. The wealthy have been very creative. They have the political power, and really the political ingenuity to structure the market in ways that benefit them. It is unjust. Economics needs to be reformed to improve the world rather than serving interests of a narrow elite. Economists have got lots of things wrong, including gender. Women have been the biggest reserve army of labor that can be mobilized to enter the labor force when they're needed and then thrown back out. When we talk about inequality in access to education in the US, we talk about inequality between people who are born to rich parents and people who are born to middle class or poor parents. This all comes under this big word of inequality. But in reality, each of these issues are really topics that we face every day. Inequality itself is a cause of the climate crisis, not merely a result. The environment is conceptualized as something that we consume, and that's a fundamental error. Economists and policymakers tend to think of this as a different silo from many other things. I want to argue that it's not. What should be the role of money and markets in a good society? Shaping the trajectories of children, adolescents, and young adults, we want a society to be one in which there are large opportunities for individuals outside the accident of birth. As we rethink how to deal with problems such as inequality, such as climate change. Unless you know your history, you're condemned to repeat it. There are many different ways of changing the world. The science is pretty nailed down. The economics is what we have to work on now. Let's get started. Go out and start questioning everything.


Stop venting to people and oversharing with people who use your pain as entertainment This is a self-sabotaging Self-defeating behavioral pattern that many of us get into on this new year's day I want to encourage you To think about breaking that pattern wherever you can however small you start as you step into this new year I love you. I believe in you and I'm going to be here for you in 2023 Offering any wisdom insights I can do to add value again to your life Love you guys appreciate you. Happy new year. It's gonna be a good one


When you're house hunting, most people have the usual criteria, updated kitchen, finished basement, pool and so on. But when you're a celebrity, you may just have some different requests. Just ask Kelly Rowland. The former Destiny's Child member actually found her dream home on the TV show Million Dollar Listing Los Angeles and one thing she was looking for, a backyard private enough for her to walk around naked in. Anyways, today we'll take a look at where Kelly and her family call home like her current home in Sherman Oaks and more. Kelly Rowland is a singer, songwriter, actress and TV personality who rose to fame in the 90s as a member of Destiny's Child, one of the world's best-selling girl groups of all time. Naturally, Kelly was also childhood BFFs with Beyonce. As the stories go, Miss Rowland had a rather rocky home life so Beyonce's parents took her under their wing and even allowed Kelly to move into their house as a young teen while she and Bee pursued their music dream. Although Destiny's Child would eventually disband in 2004, they sold a whopping 60 million records worldwide enough to make history and make Kelly a millionaire many times over. At the time of this recording, Kelly's estimated net worth is between 12 to 20 million dollars so I'd say she's not doing too bad. Since her musical days with the group and her solo career, Kelly has been a TV host to judge on the X Factor UK and did more TV work since. In terms of family life, she married her manager Tim Weatherspoon and they welcomed their son Titan into the world back in 2014. These days, Kelly and her family live in a gorgeous home in LA which she apparently found while being a guest on Million Dollar List in Los Angeles so you may say this property was her destiny. Hey guys it's Kara and today we're bringing you another house tour here on Famous Entertainment. You guys requested this one and I listened so we'll be taking a look at the former Destiny Child singer Kelly Rowland where she currently lives in LA and more. If you like these videos make sure you're subscribed and ring that bell to be notified when we post so you can always be up to date. We've also done house tours on the likes of Bruno Mars and Margot Robbie and we'll link to some at the end. Follow me on Instagram to chat and as usual let me know whose house tour is next in those comments down below. Now let's get into this video. First we'll take a trip back in time to the home Kelly used to live in up until 2004. This was the place featured way back when on MTV Cribs and it was her mansion in Sugar Land Texas, a city just southwest of Houston. We don't know all that much detail-wise about this home except that Kelly paid about 700K for the place at the time of purchase and it spans 5000 square feet or more with 5 beds and 5.5 baths according to MTV Cribs. Although it's large it still looks pretty cozy. Walking in Kelly had a formal living room or great room with double height ceilings, lots of windows and a Juliet balcony overlooking this space. Her bedroom in this home was fit for a queen, she even said so herself. I love this bedroom because it feels like a queen's room. There were also fireplaces throughout, a spacious eating kitchen with granite counters, a gorgeous walk-in closet where she even had a section for her dog and a home gym. Right on the Sugar Land property, Kelly had an in-ground pool out back, a large garage and additional motor court to park her cars. In 2014 it was reported that Kelly had been living in a Miami condo and decided to put it on the market. According to records she paid 1.89 million for a condo in Miami Beach back in 2005 which will make sense because she moved on from her Texas home a little while before that. Located on the 6th floor and right on the beach, Kelly's apartment was in a prestigious building at the residences at the bath club. This building offers the finest features, services and amenities and is home to only 107 luxury tower residences and 6 ocean side villas. It's a gated 5.3 acre enclave located directly along the Atlantic Ocean on Miami Beach's famed Millionaires Row and just minutes from South Beach. Kelly's former unit had 3 beds, 3.5 baths, marble floors, an exercise room and an ocean view of course. Tower residences in the bath club offered private high speed elevators, private grand foys with double entry doors and 10 foot ceilings. Other features included large glass panel terraces, floor to ceiling windows and more. The kitchens were also impressive with granite countertops, sub-zero refrigerators, wine coolers and top-of-the-line stainless steel appliances. While Ms. Rowland lived here she would have also been able to take advantage of the amazing amenities. The bath club had historic club facilities being Miami's first private social and bathing club as well as new amenities. There is a heated lap pool, sauna, tennis courts, health club with a spa menu, walking gardens and much more. The services were comparable to a 5 star hotel so it's no wonder the building is considered so exclusive. Kelly was able to enjoy a full service concierge here at Valais, 24 hours celebs style security and the finest in residence dining at her command. Although she left the beach condo living behind to find a family home in LA, Ms. Rowland was able to sell her Miami Beach place for 2.6 million, significantly more than she paid for it back in 2005. In 2018, Kelly finally found her dream home. It was said that she had certain criteria when looking for her house on million dollar listing Los Angeles, her wish list included 4-5 bedrooms, a cozy house where she can actually spend time in every room and a backyard with enough privacy for her to walk around naked if she so chooses. And I guess she found everything she wanted in her current home because she dropped 3.45 million dollars on the place. Located in the neighborhood of Sherman Oaks, Los Angeles, a popular area for celebs that want upscale but also suburban vibe. Kelly's home sits on a .19 acre parcel of land and although it's compact, it's walled and gated for that privacy she was looking for. The surrounding streets are leafy, quiet and family friendly but she's also walking distance to venture a boulevard where they're shopping and dining all over. Kelly's LA home is newly built in a modern farmhouse style and inside spans 4,285 square feet with 5 beds and 7 baths. The home also includes high tech upgrades and security features like a fully integrated home system with intercom activated gates, cameras and more. There's a grassy front yard with a mature blue needle pine tree and a large covered porch to welcome you with a relaxing sitting area. The front door leads to a long central entrance and to the right the open plan home has a double height living room with a fireplace. Opposite this is the elegant formal dining room with chandelier and there's also a family room offering another fireplace. The kitchen has porcelain colored cabinets, high end appliances, quartz topped island with bar style seating and an additional breakfast nook. Elsewhere on the main floor, Kelly has access to a wine cellar and a media room or home movie theater equipped with a projector and luxurious sofa. Her master suite here has all the lavish features you could think of.  And there isn't a shortage of entertaining room for sociable Kelly as the outside of the home hosts a large stone patio perfect for having guests over in the LA sunshine which also overlooks a sparkling swimming pool and even a spa. So while the backyard may seem on the compact side there's still plenty of room. So I think I'm gonna bring this house to an end here. After seeing the homes of Miss Kelly Rowland what did you guys think? Although she only owns the one Sherman Oaks house currently I don't think she needs much else. Her modern farmhouse is the perfect family home with tons of space and I can see why she fell for it. What did you guys like best about Kelly's home? Which would you prefer living in? Be sure to let me know down in the comments. I also recently launched a personal channel so if you want to get to know me better watch my most recent vid and subscribe because I appreciate all the support. Thanks for tuning in don't forget to follow me on instagram and let me know whose house tour is next. I'll see you all in the next one. Bye!


Let's get started with our second talk and learn about new technological advances in plant identification. And here to show us how they work and maybe how they don't work is Dr. Esther McGinnis. Esther is an extension horticulturist. She's the director of the NDSU Extension Master Gardener Program, and she's an associate professor within the Department of Plant Sciences. She and her graduate students conduct research on pollinator attraction, plants that can take cyclical saturation and drought, as well as native plants. And before coming to NDSU, Esther taught herbaceous plant identification to horticulture and landscape architecture students at the University of Minnesota. So Esther, welcome to the forums. All right, thank you very much. And we're gonna totally shift gears. You're from pollinator plants to using your cell phone and using those apps to identify plants. And in the title, you'll notice that it says round two. About five, six years ago, I did kind of a similar evaluation of cell phone apps to see just how accurate they were at identifying plants. And I have to tell you, I was not impressed at all that many years ago. In fact, I deleted the apps right off of my phone because I didn't think that they were very good. Well, we've got a new crop of cell phone apps that we are going to look at. But before we get there, I'm gonna tell you how things were in the old days. I guess I'm middle age, so I can say it's the old days. As Tom mentioned, I used to teach plant ID to horticulture students and to landscape architecture students. And it was a difficult class because in order to identify plants, we had to learn family characteristics, we had to learn characteristics of genius, of genre, and then even down to species. And that involved being very proficient in the vocabulary. So you had to be able to look at different characteristics when you dissected a flower or looked at the leaf and had to have the vocabulary to describe that. Here, I just have some of the vocabulary for describing different statements. So as you can see, there was a lot of terminology to learn. And can you imagine the terminology for describing leaves with all the different shapes and the serrations? I have to admit I flunked a few students. I mean, it was a lot to memorize. Now, fortunately, we do have some new cell phone apps out there and these are five of the more common apps and they all use image recognition. So a novice would be able to do this. I looked at five apps and I have to admit I just did this this past weekend. I downloaded five apps and for fair disclosure, I have an iPhone 8. So an ancient cell phone. But these all worked on my cell phone. And I'll go through the apps. iNaturalist, this was a joint venture between the California Academy of Sciences and the National and Nat Geo. We've got PlantNet, which is a citizen science project. And this is on a global basis. So it's cataloging plant diversity. So in addition to that, we have two apps that are not associated with science agencies or with National Geographic. We've got PlantSnap and PictureThis. And they're more like a commercial app. And PlantSnap was the only app that required me to create an account and even put a credit card on file once the free trial ended. There's PictureThis. And in addition to plant identification, it has an online plant encyclopedia. And then the fifth app that I evaluated was Seek. And Seek is supposed to be affiliated with iNaturalist. So how did I do this? Well, I tested this on 17 different plants. Considering this is wintertime, I had to use photos of those plants. So fortunately, I've got a huge photo library and was able to use that. I started off with kind of a softball, Monarda Punctata Spotted Bee Balm. And this is a native plant. It's actually quite a good pollinator plant. But I used this one because I had a good picture of it. And number two, it's very distinctive in its coloration. So you'll see that it has bracts underneath the flowers that are kind of in white, yellow, or white cream and pink. So I thought that would be an easy first one to try. And then I tried this with all five of the apps. So I used my cell phone, focused on the picture and then identified them. I gave points based on how well they did. If they got the genus right, I gave them half a point. If they got the specific epithet, or I'm gonna shorten that to species right, then I give them another half point. So for each correct identification, they could get a total of one point. Now, as to be expected, four of the five apps did very well on Spotted Bee Balm with it being so very distinctive. However, iNaturalist was out in left field. It thought it was cannabis sativa. So it thought it was marijuana. Now, next up, I wanted to do something that was a little bit harder. I chose Monarda Ditima Grand Parade. And this is a harder picture to use because instead of being able to see the leaves, all you can see are the flowers. And I wanted to see if that had an effect. Well, as you can see, plant net, plant snap and seek were all wrong. They didn't even get the genus right. However, iNaturalist, it said it wasn't confident in its identification, but it did give a suggestion. It suggested that monartifist gelosa was the name of this plant. And so this means it got the genus right, but not the species. So I gave it half a point for that. And then picture this, also thought this was monartifist gelosa. And so they earned half a point. Now, I have to admit, I'm not exactly disappointed in the app because this was a really tough picture to identify since the leaves were not showing. This is Aurelia cordata sun king. This is the perennial plant association plant of the year for 2020. And this is kind of a hard plant to identify, I thought for the app because it had yellow leaves and you didn't have flowers or interesting seed heads here that it could use to enhance its image recognition. Now, I'll have you notice that I covered up the sign that was there with a little text box so the app wouldn't be able to cheat. This was a tough one for the apps. I naturalist thought this was an elm tree. Plant net thought this was an angelica, plant snap thought this was a species of dogwood. Only picture this was able to identify it to genus and it received half a point for that. Now, going to more of the annual flowers that you would see this is Brawalia speciosa. This is kind of an uncommon bedding plant, but it's out there. I mean, it's a great bedding plant for shady situations and both plant net and picture this were able to identify it down to the species. All right, so I threw a little bit of a curve ball here. This is Baptisia American goldfinch. So I looked up the patent for this to determine the parentage on this. You'll notice that in the name, there is no specific epithet. And that's because this is a cross between species. The mother plant is a cross between Baptisia sphericarpa and Baptisia alba. And then the father plant, which provided the pollen for the cross is fully Baptisia sphericarpa. So three quarters of the genetic material would be that particular species. So before I started this, I determined that I would give a full point if the app was able to identify Baptisia sphericarpa. And we did have two. So starting to see a little bit of a trend here that plant net and picture this were able to identify it to the species level. And iNaturalist got down to a subfamily. So I knew it was in the bean and pea family, but it suggested a yellow sweet clover. So that this is definitely not yellow sweet clover folks. Next up is symbiotricum oblongifolium october skies. I chose this photo because my photo is not great. So I wanted to kind of simulate, you know, a picture from afar. There are over, there are about 100 species of symbiotricum. Symbiotricum encompasses some of the aster plants. So I wanted to use this photo because I figured there were people out there that would take a photo from a distance where you wouldn't have close-ups of the flower or close-ups of the leaves. And surprisingly, plant net and picture this did really well. They got it down to the species level. iNaturalist knew that this was an aster of some form, but plant net and seek didn't do so well. Interestingly, picture this had even more information. It listed some of the popular cultivars, including October skies. So that was, that was good to note that that particular app had cultivars, although it doesn't identify down to the cultivar level. So making a little more difficult, I wanted to try some sedges and some grasses. So I studied Kerak's radiota and Kerak's Pennsylvania when I was working on my master's degree. And these were tough plants to identify. They're about 175 different Kerak species in Minnesota. Minnesota seems to be the epicenter of diversity for Kerak species. So I was like, oh, none of the apps will get this one because I would spend a lot of time looking at the seeds. The seeds for Keraks are called perigenium. So I'd spend a lot of time looking at the seeds under microscopes, trying to get it down to species. Well, I'll tell you, plant net and picture this nailed it. All right, so we have grasses and this one is miscanthus purporescence, red flame grass, very popular here in North Dakota. And it's popular because of its fall coloration. This was a tough one. I wanted to include this because the photo is backlit by the sun. So it makes it a little bit harder to see. So I wanted to give a challenge here. Also it's experiencing some fall coloration. And then the third challenge is once again, this plant is a hybrid between two species. It's a cross between miscanthus sacrophlorus and miscanthus sinensis. So I predetermined before I tested the apps that I would give the apps a full point if they identified either of the parent species. So plant net, plant snap and picture this identified a miscanthus sinensis, I naturalist identified it or gave a suggestion that it was miscanthus sacrophlorus. So all four of those got points for this and then seek suggested that this was big blue stem which is erroneous. So this is probably the toughest picture that I threw at the app. This is prairie drop seed. We don't have any seed heads at this early stage. It's just a clump of grass. So I wanted to see what it could do at it. I honestly thought none of them would get it. I naturalist said it wasn't confident but it did suggest sprawolus heteroleppus which is prairie drop seed and then picture this identified it. So both of them got points. I wanted to try a shrub. This is staghorn sumac and but it's not like the species. This is a plant that's either been bred or it's been selected because it has dissected leaves which are not typical for the species. And you can see we got all sorts of answers for this. I naturalist said it wasn't confident and its top suggestion was this is common ragweed. Folks, this is not common ragweed. Plant net came up with a species I'd never heard of. Plant snap thought this was a lady fern. Only picture this identified this as ruse typhina. So you can see there's kind of a wide variety. Some of the apps are good with some things and some of the apps are better with others. How about an invasive? In fact, a noxious weed. So common buckthorn is a noxious weed in Minnesota and I know it's spreading in Minnesota. This is kind of a different type of picture because it was just a branch that was cut off and brought to an extension agent's office. Here we can see that it's kind of a messy sample. We've got rust on it. If you look closely at the stem you can see we've got soybean aphids on it. So I mean, this is kind of a nasty looking plant here but even so four of the five apps identified it as common buckthorn. What about for berries? Extension offices get loads and loads of questions asking for plant ID of shrubs that have berries because people wanna know can I make jam with this or is this gonna kill me? Is this poisonous? So we get lots of questions like that. So I happen to have photos of three different berry plants on my photo library. So here I'm using Hascap which is La Nisra cerulea and once again, we've got three of the apps identified it to species, plant snaps at La Nisra Japonica and Seek only had the genus. So pretty good there. I wanted to do a native berry. This is Saskatoon service berry. This is native to North Dakota and absolutely beloved by various Native American tribes throughout North Dakota and boy oh boy, does it make a good pie. So this was probably a little bit too easy. All five of the apps did in fact identify this to species but however, notice this is a good picture. We've got a nice photo of the leaves so the app can see the leaf shape and we've got some very distinctive berries that are showing up here. Here you can see that, here let me get my laser pointer. You can see that it's got this distinctive end where the sepals used to be suggesting it's in the Rose A.C.A family. All right, since that previous photo was too easy, I thought I would go with black chokeberry having immature berries that were green and hard. So this knocked back the success of it, plant net and picture this, we're able, so plant net, picture this and seek, we're the only three that were able to identify black chokeberry. Sorry, one final one before we tabulate the results. This is mosaic plant and this really is way out in left field. This is a plant native to Brazil, it's an aquatic plant. So can it identify an aquatic plant? And furthermore, this is a plant that will only live in water that is 72 degrees or higher. So definitely kind of a unique plant. Well, we were able to get two of the apps to identify it to species. The inaturalist came in and then you'll notice that I've had all these asterisks at the bottom. So I looked at inaturalist top suggestions and when the top suggestions were right, I gave them points and plant net also identified it down to species. Now picture this, which was doing so well, thought this was a water chestnut. Now there's some similarity to water chestnut, but still it's wrong. All right, so let's tally this up. I showed you 15 of the trials, I actually had 17 of them and picture this came in first. They got 14 out of 17 right or 82%. Coming in a close second was plant net had 13 out of 17 right, 76.5%. The remaining apps had fewer than 50% of their answers right and plant snap had fewer than one quarter right. All right, so some tips from my weekend experiment here. Accuracy of the identification depends upon the quality of the photo. So make sure that when you're doing this that you are taking a good photo. Furthermore, it's in good lighting. That seems to really help it a lot. One thing I didn't try here is maybe take more than one photo. So take a picture of the whole plant, maybe do a close-up of the leaf, a close-up of the flower, close-up if they have a seed head on it. And then compare the results there. You might actually find you get a little bit more accurate result from that effect. Considering that none of the apps were 100% accurate, I think it's helpful to have more than one app on your cell phone to do a cross-check. Okay, so maybe you can get into the ballpark and then see if another app agrees. However, don't rely on the app to determine if a plant has edible berries. I mean, considering that we're not at 100% accuracy here, I would hate for somebody to have to go to the hospital and have their stomach pumped because they ate something that was toxic. So in that situation, we would suggest consulting with an expert or maybe consulting a suite of characteristics. Say for example, you actually cut into the berry and see how many seeds are there. Are there sepals on the bottom of the fruit or how is the fruit attached to the plant? So it's good to actually do a further confirmation using a suite of characteristics that we know is true of the plant that you hope that it is. So other observations I made seek was hard to use for me, but I'm wondering if that had to do with the fact that my cell phone is ancient, you know, an iPhone 8. I think they've got iPhone 14s that are out now. Now I have to admit I've got an old phone because I'm at the stage where I'm saving up for money to send my kid to college. So maybe some of you that your kids are already through college and you've got a nicer cell phone, maybe seek will work better for you. I know seek is actually built into the iPhone picture app on some of the newer phones. And then finally, one thing I noticed is that picture this has 360 identify. So I think this means that you can use picture this to try and get more of a panoramic effect or to try and actually circle around the plant. So I'm anxious to try that on a plant this summer and see if in fact that improves the accuracy of that app. So just a couple more slides here before I take questions. If you want to verify whether your iPhone or whether your cell phone apps are accurate, you know, you can certainly go to websites. I'm just gonna show you my favorite website. It's Minnesota Wildflowers. This is best if you're trying to identify native plants, wildflowers, plants you find in the ditch, you know, or weeds. So it's really good. If you have, if you've got it down to a genus or a species on your cell phone, you can just pop it into the plant name box, which is up here and see if it matches. So Minnesota Wildflowers has photos. If you click on the photos, you'll get them to blow up and you'll see if they've got the same characteristics as what showed up on your cell phone. Furthermore, they have a nice search function. So if you're not a fan of using a cell phone app but would rather do something like this, you could type in characteristics. Okay, you're looking at a wildflower. What's the color? Maybe you can identify the flower shape, maybe put in the leaf attachment. Are the leaves attached where the leaves are opposite from one another or do the leaves alternating down the stem? You know, so put in some of these characteristics, put in the bloom season and see if you can come up with the right plant. So hopefully here, I've given you some tips here that you can start identifying plants without having to take a full semester long class from me and without having to learn a bunch of vocabulary. It seems like things have really improved over the last five years. Okay, that's good. And I agree that Minnesota Wildflower site is great. It's very thorough and it's from Minnesota so we have very similar plants. Okay, we invite people's questions here. You know, Esther, you mentioned that one was very hard use. Picture this, was that the hard one? No, picture this was the most accurate. Seek was the hard one. It just had a hard time focusing. It was glitchy.  But I don't know, I can't say for certain that was my experience but maybe some of you have had a better experience with it. Which one had the best experience? Which one was the most user friendly? Picture this, it was just so easy. It was just point and photograph. Now keep in mind, I was photographing pictures that were on my computer screen is what I was doing. And it was just easy and just popped up. I didn't have to do a lot. So I like that. I really liked it. I didn't have to get too professional with it. And that's a free one. Totally free. So that looks promising. And the one plant net costed money, right? Plant net? No, plant net. Which one costed money? It was plant snap, I think. I think it was plant snap. And it didn't look like it's a good deal here. That one didn't look like a good deal. I'm going to cancel my subscription before it kicks in. Oh, you get a trial version. I got a trial version for seven days. I'm going to cancel that one. Smart. People are commenting about Google Lens. And this person used Google Lens for 10 plants, and they got 80% accuracy. Have you ever heard of Google Lens or tested that? I haven't tested it for plants. I think Google has some feature. I know we were using it for my mother-in-law's China and dishes that we're going to be selling at a garage sale. So I think that there are some good things that are going on through Google. But I didn't have a chance to test that. OK, this person did the paid version of picture this for two years, and they love it. The only thing they've got an issue with is telling the difference between a philodendron and apothos. How about that? Details, details. That's right. Another person has comments comparing or discussing plant snap and picture. Your research mirrors their experience. And so it's not just your iPhone 8. It goes for other phones too. How about have you ever thought about doing or using bug identification apps? Or maybe you and Jan should work on one of those. Well, iNaturalist does that. OK, all right. And in fact, we're doing, I think, a bubble bee count through iNaturalist, which is kind of a citizen science opportunity for our master gardeners, or actually for anybody. OK, you got another comment here that picture this will only work free for a while, and then it costs $29.99. And they say picture this is the best app for identification. Michigan State University has researched the apps. And picture this has won four years in a row. So there you go. I'm not sure I paid. That's the only app that I had. I had heard about picture this last fall and downloaded it. And I know I don't think I've ever had to pay for it. Oh, how long have you had it? So that's the only app that I had prior to this weekend. I got that when I think I downloaded it last August or September, because that's when I heard about it. OK. And I'm cheap. I'm cheap. So I'm pretty sure I didn't pay for it. Um, there's also an app called the Minnesota Wildflower Search. And it looks just like their website. And what else we got here? Well, what do you think about that? The first one, the B-Ball, I thought was interesting that they thought was marijuana. Was that that California-based website? That's. It was the California-based website. That makes a lot of sense. I have to admit, I did test all the plants on hemp. So Harleen's doing research on hemp, so I have a photo on hemp. And every one of them was able to identify it. That's got to be the most popular one. It's got to be. A popular, submitted photo, I would guess. OK, what else we got here? This person just tried to download, picture this. And there is a premium plant. Yep. The cost. And then another comment says, if the user goes to the upper left-hand corner and hits Restore, then you can still use the app without paying. And this person, this agent's been doing it for years. Another cheap person. I like it. Does anybody have any other comments or questions about these apps? OK, I have to say, I'm very surprised how accurate they are. Don't you have the general, you've got to be pleased? I mean, if you're right 80% of the time and you were not an easy tester there, you give hard tests, I got to say.  Man, you're not an easy-going teacher. You're pretty tough on these people. And water plants from Brazil and crazy grasses from Minnesota. Man, there's everything, no plants with no leaves on them. Wow. And you still get 82%, not bad. That's not bad. I'm afraid we're going to be out of a job someday. I know, I didn't want to say that. But no, they may be old identification, but they can't give that special comment or that special expertise that only a person can provide. How about you think they could tell the difference between poison ivy and poison oak? Sure. Yeah, I think so. Can you use these plant apps for weeds to identify a weed? Oh, yes. Absolutely. That's beautiful. Pretty much, if you can tell broadly from a grass, you're halfway there, I think with weed control. OK, that's all good comments. Wow, we learned about some modern technology that was useful. That's very good. So thank you, Esther, for that. Oh, you're welcome. Thank you. OK, we're going to take about a five-minute break now. But let's also, Jan had it. I wanted to answer a question about going back to the monarchs.  And so I don't know if Jan, if you're still there, or you left. You were here till just now. Yeah, she left. It looks like. Well, maybe you can answer this, Esther, since you're better than a plant identification app. I'd rather trust you than that app. But this person, like they mentioned about sooty mold and aphids causing that on the weeds here, on the velvet weed. No, milkweed. Milkweed, sorry, man. We had a lot of velvet weed in my leaf in my life. Is it coutrelle? OK, so if this person uses soapy water to kill the aphids, will that soapy water also harm the caterpillars and the eggs of the monarchs? That's a great question. So we use insecticidal soap to wash off the cuticle unsophabodyed insects, such as aphids and such. Now, if you're noticing that there are no caterpillars around, you're OK. Because this is one of those things where it has to make contact with the insect. So when you spray it, make sure that you're not spraying it on the caterpillars. But they're going to be a little bit tough. As they get older, they're going to be much tougher than an aphid. So that aphid is really a soft bodied insect. Now, I would assume that the caterpillars at the very beginning might be a little sensitive to it. So I would be very careful and check first before you use insecticidal soap. But once they're bigger, just avoid them. Just try and hit the aphids instead. And I mean, there are milkweed aphids out there. And I think they're bright red. They're kind of an interesting looking thing. So pretty easy to spot. With soapy water, just target the aphids. And soapy water doesn't have any residual to worry about. So just target the aphids. You'll be OK. Sounds good. OK, Esther. Time to go home so you can prepare for the blizzard. There you go. You get to have dinner. There you go. Thank you, Esther. Thank you, Tom.