So we'll begin by talking about banking crises and the weaponization of money and banking. And I just want to start off by saying that the weaponization of money and banking is nothing new. If you look back in even ancient history, you look at the Roman Empire, we see that in the Roman Empire they were debasing their own currency. If you look at a chart of the purity of the silver coins during that time period, over the course of about 200 years, the silver content of those ancient Roman coins fell by about 50% or more. And you have to ask the question, why? So why would this sort of thing happen?  And the way that governments have found to do it, including the Roman Empire, was since taxes are very unpopular, instead of raising taxes, we can just take the valuable metal out of the coins. And so that explains why the base metal in the silver coins was falling. So this is a very old idea and it has to do with the way governments respond to the unpopularity of taxes, where they want to increase their spending, they want to increase all the sorts of programs that they want to do, and they know that they can't pay for it with normal taxation, so they have to extract the wealth in another way. So coin clipping was also a very common practice in antiquity, where the governments and other counterfeiters would shave off the edge of the coin and collect the metal so that they can create new coins that were just a tiny bit smaller than the ones that were already issued. So it's just a means of extracting wealth. It's just a way to get wealth and be able to command resources in the economy without doing something as unpopular as raising taxes. I encourage you to read Murray Rothbard's excellent history of money and banking in the United States, where he talks through the sort of progression of government control over money and why they would do that sort of thing. And at the beginning he talks about how the US different state governments in this area were, they were waging different wars and if they lost the war then they didn't have enough plunder to take home. And so they would have to pay the soldiers with the promise ordinance. They had to promise to pay the soldiers after the war and unfortunately they would lose some of these wars. They wouldn't have the plunder to pay the soldiers and so they would have to delay and default on those promises. And the way that they would have to do it is they'd have to just make them accept the paper and they would do this by implementing new laws like legal tender laws. And so the origin of all of the regulations that we see is just from the fact that governments can't stay within how much money that they've collected in taxes. And this goes back to throughout all of human history throughout millennia. So it wasn't until later that governments realized that they could exploit the banking industry. And the reason why this was a fertile ground for the government to inflate and increase the money supply is that they realized that banks were handing out these banknotes, these little pieces of paper. And it's much easier to print off a big roll of paper with people's names on it and promises on it as opposed to mining and minting new gold coins. So they saw that this was an area where they could dive in, they could take control of the banking sector and if they could increase the money supply and acquire funds and do things that way then it would be all the more easier because they weren't constrained by the costly production and minting of gold coins. So making crises would result. And the reason why is because the people are wise to what's going on. They see that banks can issue more notes than the actual gold that they had in the vaults. And so when people come to try to redeem their banknotes for the gold that's in reserve, the bank comes up dry sometimes. The bank doesn't have everything that they've promised to pay. And so this was a very common problem throughout the 19th and even in the early 20th century. And it was really this sort of problem that was a part of the rhetoric that was used to get the Federal Reserve started, to get central banking started. And the idea was, yeah, all of these banks are causing all these crises. We're the government. We can step in. We can help out. We can fix this sort of problem for everybody. We can be a lender of last resort for the banks that are failing. And the government can implement federal deposit insurance so that everybody's deposits up to a certain limit will be safe. So it was in this sort of way where the government's pretending to help out. The government is saying, we're here to fix some sort of problems and not cause problems. We're not here to extract wealth. We're here to fix the problems that we see in the banking system that made the public tolerant and sort of willing to let the government step in. And that's where the Federal Reserve Act created the Federal Reserve and allows central banking to start. And this brings me to a really important idea that was developed by Robert Higgs in his book Crisis and Leviathan. If you haven't read it, I highly recommend that you read it. It's particularly relevant for modern times. And in Crisis and Leviathan, Robert Higgs talks about how governments make use of crises to expand their size and their scope. And if you look at the 20th century, which is what Bob Higgs does in his book, he shows how in each crisis episode, there's a big ratcheting up of the size and the scope of government. They start doing things that they didn't do before. Government spending increases dramatically. And then after the crisis period subsides, the government might get a little bit smaller. It might be a slight decrease in spending. They might relinquish some of the new programs and activities that they were doing during the crisis. But it never quite goes all the way back down to where the government's size and scope was before the crisis. And so Bob Higgs thesis, I think, is just obviously true if you just look at any sort of metric of the size and scope of government, especially in the 20th century. But if we can connect that to the existence of bank crises, which it's timely to discuss the sort of thing now. If we think about how fraction reserve banking and all of the machinations of the central bank is causing these sorts of crises, inflations and booms and bus cycles, then it's like the government is creating its own fertile ground for growth. So it's creating the crises that enable and cause public opinion to turn in its favor. So it's like everybody is panicky. Everybody is scared during this crisis. And so we're more willing, maybe not the people in this room, but the public in general is more willing to give that ground to the government, to allow the government to enact the laws that it wants to to start the new programs that didn't exist before. So I've been thinking a lot about this thesis about how public opinion and different crises that come up enables government growth. And I've been thinking about how to connect this more explicitly with government control over money and banking. So not only is this area of money and banking a perfect example of government increasing in size and scope, you can read Carl Manger and Ludwig von Mises and Murray Rothbard and they show how money is something that is a product of the market. The banking sector is something that could be done by the private market economy. We don't need a government to implement to give us the institution of money. In fact, both Mises and Manger showed how that's impossible. It can't even happen. So whenever the government does start to co-op those sorts of institutions, it's definitely an example of the of the ratchet effect hypothesis that Bob Higgs talks about. Moreover, fiat money and the government's ability to print paper to finance its own spending and everything that it does, it enables government growth. So if the government doesn't have to collect taxes every time that it wants to start a new war, every time that it wants to start some sort of new welfare program, if it doesn't have to dramatically increase taxes to pay for those sorts of things, then it's much easier for the government to do that. And especially in our modern case where it's there's sort of a shell game that happens where the government issues debt and then it goes to the private financial or somewhat private financial institutions who then sell it to the Federal Reserve, then it's sort of like you have to see the step-by-step process to be able to see the big picture, which is that government is simply paying for its large increases in size and scope by inflating, by increasing the money supply and in so doing surreptitiously extracting wealth from the population. So it's not something that shows up on your tax bill. It's not something that you can see as a line on your paycheck where the government's withholding some of your income. It's something that shows up when you go to the grocery store, when you're buying a house, when the prices of everything that you're purchasing is increasing. And so that's how the government is able to impose costs on everybody else. So it's the expansions of government come at the expense of the entire population. So I've mentioned how inflation and government control over money and banking actually causes the very crises that enable and give grounds for the government to grow. And one great gem from the Austrian School of Economics is the business cycle theories. And I'd like to just go through just very briefly sort of the step-by-step process of how that works. The way that one incursion into money and banking in the form of inflation can cause further incursions, further government interventions. So if you read Rothbard, by the way, if you want a great overview of Austrian business cycle theory, I recommend you check out America's Great Depression by Murray Rothbard. It's an excellent history of the time. And in the first chapter, he just talks through what is the business cycle? Where do business cycles come from? And Rothbard points out that it comes from artificial credit. It comes from the bank increasing the money supply and that new money coming into the economy through credit markets. So when there's an increase in the money supply, either through the Fraction Reserve banking system, which I mentioned, or through just the Fed has bought a bunch of new assets and the money supply has increased, that new money comes into the economy at a particular point. It isn't trickled out from helicopters over the population. We don't all see the new money show up in our bank accounts all at the same time in proportion to each other. So what it comes into the economy through a particular point, and that by itself just shows that there are benefits, that there are localized benefits in distributed costs to this sort of action. And you can just think about just a regular run-of-the-mill counterfeiter and the sorts of benefits that a successful, who doesn't get caught, a successful counterfeiter would have. They'd be able to buy all sorts of new goods and services for themselves, and everybody else has to pay for that in the form of higher prices. So when the government does that, they increase the money supply and it comes in through credit markets. There's all sorts of effects, but one of the most important ones is that the interest rate no longer reflects people's time preferences. So we all have our own time preferences in which we decide to save a certain amount, consume a certain amount, and the amount that we save, the amount that we relinquish and give over to producers is a hard limit on them. It gives them just a certain amount of resources that they can use to pursue the different production projects that they want. So entrepreneurs have this hard limit on the types of production projects that they can undertake. But when interest rates are falsified and it looks like there's way more resources available for production, it means that these entrepreneurs, they start to, they start all these new projects that take longer and they'll employ more people and the stock market can boom and so firm values go up. And it makes it look like everything is great. So we have this general boom period, but unfortunately it can't last. And the reason why is because there haven't been resources set aside for those new projects that were started. It just sort of looked like there was. So all of the new money that came into the economy made it look like there were enough resources for our economy to grow and expand. But it's all a farce. It's not actually there. And this is not some like crazy conspiracy theory because it's actually in the stated purpose of the monetary policy that they implement. So if you look back at Federal Reserve transcripts and their press releases, they'll say, we're trying to make it cheaper to borrow. We're trying to save the economy and stimulate the economy. And of course, all the Austrian economists are like, yeah, that's the problems. You can't stimulate economy with just new green slips of paper. It takes saving. It takes capital accumulation. It takes sacrifice to actually get the growth that you want. So the crisis inevitably comes usually when the central bank is put in a position to force interest rates to come back up or to allow interest rates to come back up. And this is what is happening now where people have become angry with the price inflation. They've decided that the price inflation that they see is not good. And so now the Fed is in this position if it wants to keep its popularity to dampen the price inflation that's happening. And the way they do that is by turning the money spigot off, by allowing interest rates to increase. And so when this happens, firms have to figure out what sort of projects can we continue with these new higher interest rates, with the actual availability of resources. And it's a painful sort of process. Even though we can sort of talk about it academically, it's painful for people to lose their job. It's painful for businesses to have to close down. It's a very painful process. But despite the pain of the process of a recession, it's a necessary correction that needs to happen. But nevertheless, a crisis happens. And as we all know what happens during a crisis, well, public opinion is there to allow the government to step in and save the day, so to speak. So the public cries out for stimulus checks, the public cries out for additional expansionary monetary policy, the public cries out for unemployment checks and all sorts of new increases in government spending. And so here we see this is the source of government growth. This is where the government can expand and grow. It's when the people are in this sort of desperate position and they're ready to accept all of the new things that the government is happy to do. So besides Austrian business cycle theory, which is I think a fascinating topic, there's been a resurgence of research in some of the underlying more sneaky, more subtle effects of inflation. And especially in the works of Mises scholars like George Guto Holtzman and Joseph Salerno, they've looked at how inflation infects our culture and infects our personality and psychology and how it causes us to lower our rate of time preference, to favor the present more and to save less. And what this means for us in our current topic is that it means that the more the government inflates, the more the money loses value, it means that the people are put in a more desperate position. So if people are disincentivized to save, so there's no reason to save if the value of your money is dropping precipitously, it means that people are going to be more desperate when a crisis comes. It means that people are going to be more willing to look for some sort of savior, including in the form of government help to step in and help them out because they're in this desperate situation that was caused by the inflation in the first place. So it's a really evil sort of surreptitious process that I think harms our culture in ways that we're just now starting to comprehend. Of course, Mises saw it, Rothbard saw it, and the authors that I mentioned before, Holzman and Salerno, see it as well. I highly recommend you check out that work because if you just look in social media and if you look around the world today, you see it everywhere. You see the cultural degradation. You see the collapse of the institution of the family and communities as well falling apart. And I think the Federal Reserve and the government inflation has a huge part to play in that whole process. So these crises come, and I'd like to mention just one of the recent examples, which is the Silicon Valley Bank, banking crisis where it was an old-fashioned bank run where the Silicon Valley Bank had purchased a bunch of assets in the form of loans, loans to Uncle Sam, and instead of keeping a bunch of cash in reserve. So they were engaged in fractional reserve banking. And so when people got a little bit panicky and people started withdrawing their cash because prices are increasing and the economy slowing down, when these firms were pulling their cash out, people realized that SVB was not in a position to pay all the depositors back. So the panic sets in and people run to the bank and they try to redeem their deposits, withdraw their deposits, and of course the bank comes up empty handed. And what was really interesting is another perfect example of the ratchet effect going back to Bob Higgs' Crisis on Leviathan thesis. Because if you remember what happened is the FDIC, the U.S. Treasury and the Federal Reserve all worked together to sort of stretch the limits of what their actual authority is, to stretch the limits of what powers had been delegated to them. And in this case they insured deposits in excess of $250,000, which by the way just means that instead of the depositors in the bank paying the cost of this failure, it means that whenever the government is stepping in it means that everybody has to pay the cost. There's no way to just sort of get rid of costs. Costs have to be borne by somebody and through the magic of government it means that the costs are borne by taxpayers, by everybody else as opposed to the people who were involved in the problem. So another thing that we've just seen in the past week or so is that the Federal Reserve is now using the SBB collapse as a scapegoat for an impending recession. So these crises are the health of the state. They're the health of the state's ability to expand, to get bigger, and really the hinge for the ratchet effect to take place is the fact that public opinion is there to accept the growth in government power. So I just want to make a few predictions about what might happen, some soft predictions don't hold me to these, but I think it's pretty safe to say that the government will use a crisis in the future to implement a central bank digital currency. Of course the brilliant researchers at the Fed have been writing papers about how great the Fed is and how all the sorts of things that they would be able to do with a central bank digital currency, but it should be clear that a CBDC would just be, that would be the last step. That would be the case where the government finally has complete control over our ability to earn money and our ability to spend it in the way that we see fit. It's something that we should be fighting tooth and nail against because it would be devastating. If you look at the way the government treats our income and our ability to spend now and just hand over or think about handing over complete control over it to the government, then you can sort of imagine the nasty things that they would be able to do. You go to the wrong protest and your money is frozen. If you have the wrong amount of money in your account, like maybe over $600, then there's going to be extra special fees associated with that or reporting that needs to happen. So it's really the last step. And I think that all of the papers and the speeches about central bank digital currencies, both at the Fed and in the World Economic Forum, I think they're priming the pump. I think they're trying to get public opinion on their side so that when the next crisis comes where they want to implement it, it's not something that's brand new to our ears. It's something that we've heard before. It's something that we can look back at. Oh yeah, they've been talking and planning on this for a while, so it must be okay. So we need to see their actions and see their rhetoric for what it is, which is they're trying to corral public opinion so that when the next crisis comes, they can expand in size and scope once again. And this leads me to my conclusion, and we'll have some time to do some Q&A. This means that our only hope is to make it as unpopular as it deserves to be. So we saw how ancient kings in the Roman Empire were able to use coin clipping and debasement to extract wealth from their population. And the reason why is because high taxes would have resulted in revolt. They were very unpopular. And we saw how Higgs showed that the ratchet effect hinges on public tolerance and numbness to government expansion. And so this is why I think the mission of the Mises Institute is so critical. So the things that I mentioned before, they're a promotion of teaching and research in Austrian economics and individual freedom and honest history and an international peace. These are the sorts of things that if we're successful and allowing people to see the state for what it is and see inflation for what it is, then we can break this cycle. We can break the way that the government uses inflation to extract wealth and to expand its own power. And so that's why I think the mission of the Mises Institute is critical for civilization itself. Thank you.


Ukraine must be ready for a prolonged war. The war will not end in February-March next year. General of the Armed Forces of Ukraine, former Deputy Secretary of the National Security Service, Sergei Krivanos, has said. Krivanos told Espresso TV channel that Russia will continue its attacks, mobilization and training of its soldiers. Our mistake in the past half year has been that the media presented the enemy as weak. The media says that only alcoholics and drug addicts are fighting against us. However, to destroy the Russian military, we must have well trained and armed soldiers. Russians have mobilized 300,000 people with the possibility of mobilizing another half a million, said the general. We have seen how Russians have been using this strategy to fill our territory with their corpse.  In other words, they send so many people to fight that we don't have enough weapons to destroy them. We understand the enemy will continue its attacks. We must also be ready for a long term war. Krivanos concluded.


What's good everybody Chris from jassescasebrace.com doing 2023 hit parade basketball playoff edition Jasmine's exclusive six box case break random team number six thirty spotter's represents all 30 teams. We had 18 Do the math here. Yeah, 18 12 shouldn't have spots and 18 filler spots. I'm not this hard y'all. It's just it's tough Prism 18 our first filler and prison cell 19 or second filler Michael grabs the last spot mojo Thanks again, everyone. You got a spot straight up or in the pack filler appreciate That's 1 to 30 and 1 to 34 teams Let's roll dice and randomize 3 and 3 6 times for both. Good luck everyone. Thanks again 1 2 3 4 5 and 6 6th and final time Basic math is hard folks Eugene down to Michael the last spot mojo and six times for our teams 1 2 3 4 5 and 6 6 and final time for our teams The last angels clippers down to the Brooklyn Nets Nobody got some people in here, so I'll keep the trade window open for a minute or so maybe even two We'll see that too a quick little recap here Eugene with the quippers Scott with the blazers one shun with the spurs Michael with the jazz Zachary with the rockets Chad see with the Suns one shun with the heat Peter with the Knicks Michael with the T wolves One shun with the pistons Chad see with the Celtics Nancy with the Wizards and Kings Robert with the pelicans one shun with the Raptors Eugene with the Bucks dating with the Lakers Rob with the Bulls one shun with the magic and sixers dating with the Cavs One shun with the thunder and Pacers Davis with the Warriors Kevin with the Grizzlies Eric with the Mavericks When shun with the Hawks and nuggets Nancy with the Hornets in the last spot mojo Michael grabs the Nets All right, we're gonna pause the video Let me come back. Let's know about any trade chatter and then we'll rip the six box case of head parade basketball Thanks again. You're back. All right, we're back No trade chatter. So because then we're getting ready to rock and roll. It's printing out right now We'll switch screens and look at our big case six box case. I don't know which hitters which chasers have been hit yet Which hitters haven't chased yet? The great thing about this is that besides of the chasers one per case. There's some pretty dang good stuff in here random team six one shun with the Hawks all The way down to Nancy with the Wizards. Thanks again y'all good luck All right, let's do it folks and be a playoffs YouTube edition Number seven uploaded right now with the filler going to be prison cell number 20 our first of two All right first up good luck. It's gonna be ice jail and green Rookie Otto from 21 22 specter 30 out of 50 on the green ink rookie Go into the Houston Rockets and Zachary got that one from the filler no peeking everyone box two Impressionist ink tray young from 2020 2021 core king 70 out of 75 Trey young on the auto going to Wen shun and the Hawks Got my eye on the cell sheet as well. See if we hit any of our big chasers And like I was saying those two pretty good hits and not even a chaser a slap here 2015 2016 for Steve's Julius Irving Beckett nine ten out of 25 sixths edition of Dr. J. That's going to Wencha Beckett nine on that one got another graded card 2020 Don Russ optic Anthony Edwards fast break purple PSA nine on the Ant-Man 58 out of 95 Minnesota Timberwolves and Michael T. Very nice. All right, two more boxes here No chaser just yet. So see if we can snag one wait until the break Another graded card 2017 crown Royale Jason Tatum RPA Silhouettes crown Royale Pyt five and six on the site right now. That is a sell sheet hit for the Boston Celtics and Chad See got that one from a filler 78 out of 199 very sharp Very nice congrats Chad and the last box. Thanks again everyone for getting involved in this one One more case loaded up onto the site right now and the last card a thick one gonna be Emanuel quickly three color patch and rookie auto from 2020 2021 spectra nine out of 30 For the New York Knickerbockers going to Peter There we go folks Jaspie's exclusive hit parade basketball number six a wrap number seven on the site right now. Thanks again Jaspie's case breaks calm. Bye. Bye


You know you should be looking at photography books because they're such a vital resource for improving your photography, but there never seems to be any real time. We know we should, and yet we never do. How's it, how's it? Photobooks, monographs, books about photographers, whatever you want to call them, they are hugely important in the world of improving one's photography, and yet they just get overlooked. Probably because in the modern world there are so many demands on our time. So how do we fit these things into, these important vital elements in our wonderful hobby into our lives? I believe it's important that we find a dedicated time, at least maybe once a week, you know, once a month, whenever that you just devote yourself to letting monographs work their magic on you. And we can start with monographs, because I think that those are the books that hold the most promise for, you know, for the photographer like yourself, who wants to experience different photography. And that's an important where there is experience. And I think that monographs play not only a vital role in helping us find and explore new photography, but also reconnect us with the organic-ness of the magic of photography, because it is getting closer to what I feel a photograph should be, which is obviously a printed thing, a printed photograph. And these days, with digital, now I'm not knocking digital here by any sense of the imagination, but everything seems to be at a remove. We photograph digitally, we process on computers, and we look at things on a screen. And for me, that feels like there's an oddly transparent yet very solid barrier between me and the image. It doesn't feel real somehow, probably because it is on a screen. We equate things that are on screen as not being necessarily real. So when you look at a monograph, you flick through the pages, you feel the heft of the book, you feel, you hear there's a whole tactile thing going on. It's more sensory work of play and it helps you feel the photograph. It allows you to take time for the photograph in that monograph to work its magic on you, to let it marinate in your brain. So if you can develop or rather sort of find a few minutes here and there that you do on a regular basis, so it becomes a habit of just at least spending some time with a photograph. You don't have to go through entire monographs in one go, but if you take the time maybe before bed each night, instead of watching TV or watching YouTube in bed, if you're watching this video, don't do something, but that's the whole point. You know that there are times that you kind of fill with filler, that you could devote maybe 10 or 15 minutes to looking at some photographs. I would implore you to try and make it a habit to look at photos whenever you are able to. And before you know it, you will be finding that that fits in quite nicely with your sort of day to day routine. And of course, the more that you look at photographs and the more that you think about photography, the more it is going to help you form and help you grow your own image-making skills. None of this really means anything. If you're not reading books that pique your interest, I have a couple of books here. This is The Mind's Eye by Henry Cartier-Bresson. There's a couple of John Burgers here and there's some Ron Barthes as a camera lucider, which I once spent in time video quarrying with Cameron Lucinda, which is a thing. But if you are not into more theoretical talk about photography, then reading those kind of books is going to put you off because it's going to remind you of those dense and heavy textbooks that you were given at school to read. And you sort of go, oh, I'm not really invested in that. So, you know, these are these are helpful things. But if you're not into them, then then don't read them. Don't feel that you need to read the greats if you want to call them that. You know, to feel that you are a round of photography because it's not the case at all. It's a road that can lead down into this kind of snobbery thing. And we're like, oh, well, yes, you know, I've read Barthes and I've read John Burgers. And I disagree with some of his points and something. You know, that's kind of that snootiness. And I would hesitate or I would actually not hesitate. I would leap on the chance to tell you to not go down the road of snootiness. The photography is far too full of all this sort of stuff.  So find books that you enjoy. If Barthes and John Berger and Kajaperson's writings and stuff are not quite your flavor, then you can turn to things like this is a photographer's A to Z. This is from the Tashon Bibliosecca Universalist, I think that. So Tashon do some really cool little, I say little, because they are sort of small books, of photography that are affordable and we'll get back to that point later on. And this is great. I use this quite often on the channel. It's a photographer's A to Z. And I go through and I will just mark the things that interest me with little stickers and I'll come back to that later on. And again, we'll come back to that because another point that's coming up later is this idea that, you know, these are not one-shot deals. These are, for one of the better word, reference books. And that sounds a bit boring to call them that, that you can revisit again and again and again and always discover something new. And those kind of books are great because going back to that point about, you know, looking at small sections a day, you could read about two or three photographers. What a fantastic way to finish the evening. At this stage, it would be remiss of me not to talk about Brooks Jensen. So Brooks Jensen is a writer who has some very interesting things to say. And he kind of neatly straddles this line between academic writing, if you want to call it that, and more, oh, I don't know. It's a conversational thought pieces. And that's another great book that you can jump into, read a segment because they're fairly short segments and let them just marinate because they will help inform the way that you think about photography. So that's, you know, they're really great. So don't feel that, yeah, you have to go with those hardcore, upright, you know, academic textbooks. One thing of books that I'm not really talking about here and you may have noticed is sort of technical how to manuals. I don't really think that they are kind of what we're looking at here. They are just something that you pick up and says, you know, do this with your camera and do that. And with those, they're not really something you want to sit and think about. They are kind of more practical, you know, follow along in the manual and do things. But something like these books, so this is called Do Photo and it's called Observe, Compose, Capture and Standout. And again, I will link to all of these books in the description box below. This is a little bit more that there are sort of practical things that you can try in here. And but rather than being just practical, that they are going to start giving you some thought about how to approach situations in certain ways. That's because that's that's a really big thing. It's no good, you know, just reading about how apertures work or how shutter speeds work. If you aren't thinking about how to employ them in a in a sensible way in your photography. And that's this. So books like this are really good at sort of giving you, especially the beginner, an idea about why, why we are doing things in a certain way. I really hope that you're enjoying this video because when you enjoy this and you watch it all the way through, it helps YouTube to suggest this kind of content to other people like yourselves who are maybe interested in thinking about the wire photography.  This book, this one here, Chris McCall Sunburn. Who wants to give me a thousand pounds for this book? No one? So apparently if you go on Amazon, this book is valued at a thousand pounds. Give or take. I think that's ridiculous. And I do want to take this moment to apologize to everybody who has watched one of my videos and looked at the books that I'm talking about, the monographs and you know, oh that's really cool and I have a link to them in the description box below. Only to find that they are, you know, two, three, four, five hundred dollars and that's crazy. And I see that this is a ridiculous, and I thought it's time that I kind of addressed this point because you know, I do talk about monographs and books a lot and sometimes I link to them and I don't really look at the price because I'm not buying them, I have them. And it's only when I kind of go, oh, actually, do you know what that's? Quite a lot. And I think if you want to spend a thousand dollars on your thousand pounds, right? Because it's not dollars on Christmas course sunburn, yeah, fine, drop me a line, we'll have a chat. But I don't think that that's worthwhile about buying things, especially sort of monographs. Now, you know, this is a personal opinion and I certainly don't buy monographs as an investment. I don't, you know, I'm not that kind of person but I wonder why that they should be so expensive. And I appreciate there's kind of a spline demand issue going on and what have you. But I've always kind of felt that books are only worth what somebody's willing to pay for them. And evidently, there are people out there who are willing to pay for some of these things in a high price. So what can you do about this? Firstly, is look, keep your eyes open, just look, right? There are bargains galore to be had. I think in a comment section recently, somebody was talking about picking up a copy of evidence in the American West for like five or $10 or something in the thrift store in the States when you've gone to Amazon and they're like $300. And that's kind of your number one best bet is to go to car boot sales. I said in the UK, I don't have car boots.  Thrift stores, charity places, all sorts of things, they will have often just piles of books that are just dumped at my local supermarket when I'm checking out. There's like a charity bookshelf thing in front of me and I've got so many cookery books because I like cooking that have been 50p donations. Now they're not wildly expensive books but keep your eyes open because you never know what you might find. A great example of this is a selection of books and these are the time life books of photography that I was first introduced to as a photo student. And in the States, they are not particularly expensive. I think it's maybe like kind of $50 for the whole set and if memory serves us about 20 volumes in the whole thing. And these are fantastic resources because they talk about photographers whom some of whom have fallen out of favor. They talk about photographers and in a way that is a less kind of sensationalist than you tend to find today. And they talk about not just the photographers themselves but about the process of photography. Why we photographs? I mentioned the great themes in a previous video. And those are resources that so few people even mentioned today if you go on to read it and you talk on the photography subreddit. I think if you were to mention the time life books or Roland Barthes or Aperture magazine or have you, those people wouldn't know. And that's what comes back to this idea of people going back and back and back to this same source of ideas and of inspiration I talked about in a previous video and making what was a lovely crystal clear lake, this muddy sludge. There was a quote by a great Stoic that said that you can't step into the same river twice. Think about that for a minute that the river flows past. I mean, it is always different every time we revisit it. And that's kind of why I think investing in monographs of photography and looking at monographs is such a good idea. Now I may have said investing, but I'm not talking about like financial investment. I'm just talking about spending a few dollars and investing in your hobby, in your ideas, not, you know. And when you look at images, when you look at books, every time you see them, you interpret the photograph in a slightly different way. So, you know, I think there's that Avidan book. The very first video on this channel was Richard Avidan's autobiography, which I got when I was 20 maybe, so that's about 28 years ago, somewhere that I have lost count, all right. And that book is different. The way that I interpret those photographs is different, extremely different. To the way that I interpreted them when I was younger, when I was that snotty, know-it-all 20-year-old who thought he was gonna take the photography world by storm. So, by having a collection of monographs that you can revisit, it helps you see and discover new things. There's a YouTube channel called Ryan Holiday and he talks about stoicism and he talks about the idea of how you get the most from writing. And in his case, it's about reading the stoics and digesting the ideas that they have passed down to us.  You make a couple of notes and then you leave it.  What have you?  And then you come back to it a little bit later on. And after this kind of marination has taken its place. And you see what now resonates with you again. And I think photography would be an excellent, excellent way of doing this is that you look at photographs and you bookmark them in your monographs and you think, wow, that's a book. That's an image I would like to come back to and see again later on. I wanna revisit this idea and you put it on one side and you leave the book for a week and you come back and you look at it and then you go, wow, okay. I see things within this now that are slightly different. And it labels you to disappear back the layers almost of the photograph and to absorb the essence of it. And we talked a lot today about absorbing the essence of things and finding the time, taking the time, making the time to invest in ourselves. There's that word again, investing. It is such an important aspect of photography that we take the time, not just to practice the technical aspect of it, you know, the practical elements, but also taking the time to exercise the way that we think about photography. Because the more that you do that, the more then you are in control of the way that you see the world, of the opportunities that are there for you. Thank you ever so much for watching. I'm gonna link to a video right here that goes into more depth about how you can start to see the world with a unique eye.


So, hello everyone. Welcome to this Hyperledger Sweden Meetup. My name is Roland and I am your guest for today's session. And I think today we have a really cool session because we will work on this session from the last time. And today we will use CoachTP where we will see how we can use CoachTP for our conditional statement example. And at the beginning I would like to give you a short overview of what we are doing today and I will represent the use case again so that you will understand what's going on in this example. And then we will make a short introduction, what is a state database, so that we know what we mean with this term. And it's always good to know also from the perspective of an fabric developer, of an no-chairs developer, maybe because we focus at the moment on no-chairs, on chain-con development for no-chairs. And this comes a little bit from the client side, so we can use no-chairs, of course, for the client-side development. And when we look a little bit on the server side, so this both things should work hand-in-hand, so from the client side we can only call some methods or functions which are implemented in the chain-con. And in fabric it's so that we have so-called state database and very forward and in all sessions until this session today, we have always used level DP and that's one that's the default way of storing a state of an asset. But fabric offers also a second grade and that is with CouchDB, that's a no-secret database. And this gives us some other features and more flexibility if it comes to searching and aggregation functions and something like that, more than no-secret database can do for us. So a short introduction at the beginning. And then we will see how we can enable CouchDB in our demo setup. So as long as we are working on the development, so we work on our docker-definite example so that we can implement some chain-code functions and we can start and restart the chain-code and without every time to upgrade the chain-code. So that's the reason why we use also today the docker-chain-code example which we have, which we have seen in the last previous sessions. And then we will add a new function to this example and with this method where we can query our transactions with the date range, but we will see it a little bit later. Here on in this reference section, you will find the agenda and also the previous agendas and also upcoming agendas here. And here is also the link to the support material. This is the same link which I have posted to the chat here. And on this GitHub repo, you find also all other support materials from the previous sessions. And also the materials which maybe you need for today's sessions. So when you have missed some sessions before, then it's helpful to look into this support material. Yeah, and then we have here some links, of course, to the hyperlateral documentation and then to the favorite chain-code note. In GitHub Waveboard, there you will find also some useful information and then of course CouchDB. So since today we start with CouchDB or we see a little bit from CouchDB, then it makes sense to look also into the documentation of CouchDB. Okay, so this is an overview of the last session. So, for demo development, we have created a specific use case. And in this use case, we have two organizations, a producer organization and the seller organization. And the producer pays the seller for recommendations, 1% of the revenue and 10% of the closed sale. And we have done in the last session the implementation of this chain-code in notaries. We have seen that how large this container image would be if you try to use this chain-code in the test network. And also we have seen how many transactions per second we can reach with a simple single virtual machine on digital ocean. And in the last week I have implemented the same, the same chain-code also in Golang, but we will come to this a little bit later when we compare these two things. Hello. Do you have a question? Okay. And yeah, and then here we have an asset. So this is our asset configuration. So we store the revenue, the commission, and the date of this revenue. So, today we would like to introduce a new method and with this method, get commission statement by time range. And with this method, we would like to use two parameters with the starting date and the end date and we want to see how many transactions, how many assets we have in this time range. And that's the implementation of for today's session. And then in the last session we have seen that when we use couch, when we use level to be, then we have a very simple scenario. So we have a key and the value to store in the blockchain. And the key is only is always a string. So it's a string, it's a number. It's a unique idea or whatever, but it's always a string. And it's always unique. So one single transaction has only one unique key. And to query this, it could be a little bit difficult when it comes to when you want to know how many transactions you have done in the last year or in this year or in this month or in a particular month or something like that. And that's the reason why we have also seen how we can use a so-called composite key to query to fit this requirement. And we have implemented a composite key with this structure with the year, with the month and the transaction ID. And today we would like, but with this, with this key, we cannot query a time range from start day, from a start day date to an end date. And that's the reason why we have to switch to another, to another state database. And for this, we can use this coach to be with coach to be, we can use some find this find command with a selector and with the selector, we can use integrated functions like greater than or less than. And with that, we can formalize and query to make this function working. And that's what we are going to implement today. So we use the same no chairs code from the last time, but we will implement a new function here. And to do this and to use this, we also have to see how we can implement coach to be in a fabric network. And here is just another slide. So it's summer, this slide summarize a little bit what we have done in the last session. So to give you a better overview. So here is our data model. So as we have seen in the last session, and then we have used a standard level to be database and with this technique of composite key. We have created a function get commission statement by year month. And when we have used this function, then we have to have we had the possibility that we can say okay, I want to see all the revenues from the from a year from a month are exactly one particular transaction. So, and in this, in this way. So, and with coach to be now, we have the possibility to use all this composite key queries as well. And we can extend this also with a new function. And then we can make a query with this, we have defined function and the speech special selector that we can query date to date so we can say okay this is my date string. I have my start date string and this is my end date string. And we want all transactions or revenues or all commissions here between this date. And this is one example, how you can use coach to be for an example like that. Okay, so, and here's the slide so what is a state database. So, when you start with fabric, then you have to know some little basics. And one basic is that everything what is stored in fabric is an asset. So, an asset is something can could be everything could be this transaction of the revenue could be a house could be a car could be a nun. Whatever. So, and could also be only a string, for example, could a stream or could be a data object. And in this data object, you can store other data objects and so on. So, I think every trace and structure you can compose you can store also in the value of the block of the value of this asset. And the state database is by default level DP as I have mentioned, and the state database holds also the last the last version the last status of an asset. So, and that's really a cool feature, which you in in blockchain, because when we query the last state of any key, then we are, we don't have to query the whole blockchain and the blockchain could be huge. So, we only have to query the world state, and the world state is a key value store in level to be or in couch to be and other other histories, for example, the other states of an asset will be stored in the blockchain, and this is done called the so called lecture. So, and the world state here is a database which holds all the assets in your on your channel and always the last status of this channel. And that's make fabric are also very fast to find and to query and to interact with this blockchain system. So the lecture current state that represents the latest value of all keys ever included in the chain transaction log so but the important sentence here is the current state and the latest value of an asset. No, no, no. So, and this is an term you can find only in fabric, I think, and the developers of fabric called just so called right state. And, yeah, how you can enable this now. So, that's, I think, very simple. So, the only thing what we have to do is, we have to include the new docker service. So, the fabric comes with an image, and this image is a favorite coach to be here. And we have to define in the docker compose file here in use service. And there are some, some, some points to notice here the environment. So this is important that we set and coach to be user and then coach to be password. And, yeah, and a couch to be service and the coach container name. And then we have here to formulate this is the standard part. So, this is the standard part for one coach to be service, and we have to make sure that we are in the right on the same network here. And then we have to do link this couch to be container to the corresponding PR container. So, when we have pierce zero here, then we and we use couch to be for this fear. Then we have to use and separate couch to be service. So you can say, every beer uses its own couch to be service. And you have to know that you cannot split it. So, when the beer uses couch to be, then the beer cannot. Sorry. And when the beer uses couch to be, then the beer cannot use at the same time, a level to be so, but you can have in your network. On the beer couch to be and also another beer, you can have level to be. So, when you use the example like, like today, then of course you cannot, you can only use the couch to be a curious honest on the peer, where you have also caught to be run. And to connect this, this both together. So, favorite case here to environment variables, namely call interested state database must be set to couch to be here. And then these couch to be conflict couch to be address environment variable here must must point to the service name couch to be zero and the corresponding part. And that's the name here, the service name, and the part here. And when you have a peer 123 and so on, then you have also, oops, then you have also to increase the part number, and we have to change it also here. And then you can, when you said here and couch to be user and the password, then you have also give you the first to be user and password name. And yeah, and that's it. So, and with to with this two pieces, you can use a couch to be as a state database for a particular peer in your Docker composition. That's, I think that's all what you have to know. And maybe it's important to know that when you use this couch to be there's also an user interface. And this user interface populates the exposes on this pop this pot to the public. And then you can use an browser Chrome, for example, and to browse to the peer address and to the spot. And then you have, you have a graphic user interface, like PHP my admin for my secret is, is this also and user interface for couch to be. So that's the reason why it's important to set here username and password for the root user for the admin user. Yeah. So that's what this, and then. Yeah, here is this this is the foxtone interface. Yeah, it's a web UI interface. And Joe, the telephone is calling. And yeah. So the steps to do is we have first to enable, we have to first make our network couch to be enabled for a state database. And then we can extend our chain code with this new search method. And then we have to install it instantiated. And in our case we will do it with the Docker chain code depth mode. And yeah, and then we can try it from the command line to query this CLI. This is a good reminder. So in the last so last week I received a request from from from a user and this user asked me a question. We got in this docker depth network. And he want to know how he can in our examples, we use only the CLI to interact with this test network with this development mode network. And he wanted to know how he can do is with no chairs. So, and in the next session, I think it is a good idea and a good learning to see how we can use also and no chairs client for for this docker depth mode. And then you can I think maybe a little bit easier test your chain code. Okay, so and here you see the, the, the, the, the web UI as an administrator tool, for example, and here you have to replace the local host with your IP address with your public IP address and so on. And here you see the board now. Okay, so, yeah, and then one thing what we can do also with this type of queries is we can have an order we can change the order so we can make a simple sort we can sort in two directions. And, but for this, we need an index. So, and when we create a chain code, and we installed this chain code, then we have provided in the chain code folder and index, and index is nothing more than a tracing file. And this here is the tracing file. So, so, and here we can define the index fields. So, what we want to index and to query is the revenue timestamp. And we can do this and then we here define this field, the fields we can have multiple fields, fields, which are going to be indexed. And then we have to give them a name so the index revenue time set name, it's the name of the index, and then here, this type property is chasing. So, there is only this type for the moment. And the DD doc, this DD doc property is optional. And I don't know exactly for what's going on, but maybe when you change the index I have read that if you change the index, then you have to use this one. Yeah. So that's the only important part here is that you see the structure. So, you have to, on your chain code folder in the root of your chain code folder, you have to create this folder structure with meta in state database couch to be indexes. And here you have this put in this chasing documents, and you can call it index revenue, and this is the content of this index document. So, when we install this chain code, this folder will also during the installation process, the setup will see that there's an index and will install this index in the chain code in the couch to be. And then we can make, then we have an index, and the good thing here is that fabric keeps this, this index always warm. So, this index will be updated after every transaction. And we don't take, we don't have to take care is this index actual or not. So this is part of the fabric lifecycle. So we will always have a warm index, and then we have a fast and performant system. But be carefully with indexing. So if you have too much indexes, then it can be too much. Okay, so, yeah, so that was for the introduction, that was for the introduction. And now, let's see how this is working. Okay, so I will make this a little bit larger for you. Oops. In the last sessions also showed you the possibility to use a terminal multiplexer for this. But for me, it's here a little bit easier to demonstrate it. Because of the different panels here. So, but when you make real development then you should use this multiplexer, because then you can leave the system alone, and then later you can come back and can work again, work further on your current position. So. Okay, so the first thing what we have to do is, let us look into. Yeah. So, we need to see what is our test network to repeat a little bit the configuration of this. So, we have placed this in the favorite samples folder here. And here we have created popular. We have created a folder called deaf network. And this is here our configuration. So, so if you're new to to this. Then you can look at my guitar rainbow, and they will find a meetup, how we, how you can create this setup. And, but keep it short and simple. So, this Docker deaf network. So we can do it in two ways we can use the Docker, Docker composition, or we can follow the official guide in the 2.3 favorite documentation. And in this documentation, there is the binary version, the scripted, but both both both variants options do the same. So we have one order here for testing. And I've here mapped my old files to this local folders here. So sample conflict, the membership service provider artifacts is the folder where the Genesis blocks live and the channel transaction. And lecture data. This is the place where the blockchain stores all the data for the order and also for the PM. And then here we have to folder the folder for the chain codes. But this is the same as we have seen several times here. Then the beer here. No, let's let's look to the couch to be container. So, and here we have our couch to be service.  This idea deployed can read. So don't do this in a real scenario here use environment variables, or something like that. Don't write your credentials here in the Docker compose file, because the Docker compose I could also part of it repo for example, and then you don't want your credentials in a good way. So then the part here, this is the standard part here, and then the network definite work is the name of our network. And then we have to link this. So I have marked this here. So the only thing what we have to do is we have to put here in this foot this for environment variables. So, which state database for you so we use couch to be, then the service name here and depart. That's couch to be zero, and then depart, and then use element password. So, that's, that's the integration for these culture to be. And with that, we can start this Docker composition, and then we will have three Docker services running an order a service and peer service, and a state database and culture to be container to be a zero. So, and that is so that's the only. Yeah, that's the important part here from the network side. And yeah, so, but first, we have to. So, don't forget housekeeping. So make sure that you have cleared all your system. So, and also your clear your Docker volumes. So, that's the reason why I put this here on the first position. So when you try a lot of things then you will have some trash containers and trash volumes and so on and this could lead to some problems. And yeah, so, and we need three terminals, one to sweep the first terminal here is the terminal where the local composition is running. So, and we use the, the local system in the, we run it in the, in the photograph so we don't have access to the terminal here to see all the log messages. This is the terminal here. This is the place where the chain code is started and stopped and so on so that we can modify our chain code. And here in the third container, we will use, we will test it with the CLI commands. Okay. So to get started with this. So, we need these conflict fabric conflict path. This is the sample conflict. So fabric has to know where the configuration files are. And then we can, we have to do two steps so we are first we have to create the genesis block, and then we need the channel transaction for our channel with channel one, for example. So, so, okay, first step, the second step. And then we will have in this artifacts artifacts for our genesis block here, and here the channel transaction. And then we can start up the network with Docker compose up. You see a lot of log messages here. And we check and you see here couch to be so it seems couch to be is running. And Docker PS shows us, we have here now. These few free services one. The other one, the beer and the couch to be zero for PS zero here. So we have some questions now. Yeah. No, of course, you can you can have couch to be accessible about TLS. Yeah, but not here in the them in this docker definite work. So it's easier to use it without SSF. There's no certificates. So the history function. When you look into the favorite samples, then you can find maybe maybe in the asset transfer examples, there must be also an implementation, how you can query the history from an asset. So I have to be focused a little bit on the on the demonstration so otherwise I will make some mistakes and then we lose the red line. Okay, so now the first step is working so here we have the Docker system now running and then in the second terminal. Also now a definite work. We need also the fabric. And then we have to create the channel. These commands are always the same. So, you can find these commands in the network script, or you can find it also in the documentation. So, we have tried to change them. And the next step is that we have to install our chain code. So, and for this step in the deaf network, we need a little bit from the chain code that we can install it. So, and let's look to the second demo here in the chain code. No chairs folder here I have prepared this. So this is copy and paste from the last session. So important here. The package chasing here is important. So important to have these two dependencies here included so the fabric contract API and this is very good skin. And, yeah, and the main file must be here called index chairs file. And very important here the start command. And that's the reason that's, that's really important that you put in this start property here with this value. And this fabric chain code node is a program which comes with the fabric scheme. And that's the reason why we have to use the have to use this npm package fabric scheme. When you install this, then you will have also this fabric chain code node file and with this, you can start the chain code. Yeah, that's here the important part. And in the index file. So that's here, the same like you can see in the documentation. And And then the slip folder. Here we have the state chain code. This is the same chain code, which we have used in the last session. We have a very short we over a few of that. So, so the honor to me of such a chain code is simple. So you have here. And the contract. So, and the contract is provided through these required package here is the favorite contract API. And then the contract has to X has to be extended to a class. And then we have a constructor. And that's it. And then we have two special methods here. And this is before transaction and after transaction. And in the before transaction. This function is called like it like the name says before the transaction happened. This is good for logging. If you need to transaction ID for this particular request or something, whatever for checking for whatever you do. So, and this is also optional. So when you don't call this, then it doesn't matter, but you can use it and then this is called before the transaction happened. And the second is after the transaction here with the last one. And that's the same. And you can also, when this is called, then you can trigger an event or a log message or whatever you want. So, but this is done after the transaction is ready. And we have implemented two functions in the last session, this store. Commission statement, and this is what we have seen in the slides. So, we have two types here from revenues we have 1% and 10% 1% for and recommendation and 10% for and real revenue here. So, that's also it's only an example. But in the next sessions, we really say, okay, this is the chain code, but the smart contract is the contract between the producer and the seller. And these both companies have decided to change this rules. And then they say, okay, we need more revenue percentage from you. And then we have to change this here. And then we have to change this here. And then we have to see how we can upgrade this existing chain code in the running network with another version of this chain code. So that's the reason why I have put here. So simply numbers, then we can in a later session, we can see when the system is running and then the two parties say, okay, now we have to change this business rules, then how we can change this in the chain code. So that's the reason why we have this here in place. And here's our model was what we have seen. Here is how we have created the composite key with the layout here new amount and text and so on. So, yeah. And then we create here with this boot state here, a new asset or we update an existing asset but in this scenario, we only create an asset, we never update the state of an asset here. And important here is that we, we can we have here a property. So this is the cdx the context, and through this context parameter, we have access to this stuff interface and the stuff interface provide us different methods, and one of them is the boot step. And yeah, that's the, the line where the, the, the state is, is written and the, the, the, the value here, the key. And the value is stored into the blockchain. And here you can see that this is the key. So this key could be a number is doing whatever I am something like a composite key. And here is another method which creates this composite key here also provided with this from the stuff interface here. And then here we have the value. And the value is nothing more than a part of it. Anyway, and we can stringify this. Yeah, so we can, we have here a JavaScript no chairs is JavaScript, and then we can modify this with the chasing. So in, in to string, and then we can create here and buffer and buffer away, and this is then stored into the blockchain. And that's all here to store this transaction. And then we have this function to, to read the query. And, yeah, so, and the main function here the important part is this good state per potential composite key. And we have here the key, the layout of the key, and the keys itself are in a way, and the way must be in this in this order. And then when we have only the year, then it creates only the year, when we have here and month, then it creates year and month, and when we have also the transaction ID, then we will have the particular transaction. And this is the variability, which we have. And then we have our queries here. But when we want to try to query this by day, or for two days or for three days, then this will not. So that's the reason why we look for a better solution and the better solution here is to use a country as a state database. And then here, this is the new function. And this function, we have to implement. So, okay, but now we have this function a little bit in place, and then we have to finish our setup. And to finish our setup. First, we have to install the chain code here. And the installation of a chain code is a two step process. So the first step is that we have to package your chain code. Here with this be alive cycle chain code package command. And then we can install it. Keep this, and then we can create this and the important is that we need these package ID so every chain code package has a package ID, and we need this package ready for later for the improvement process. Okay, so now let us check this. And then we have to install it to package. So now we have a new file here created at this moment. This is impact is the set packet package, and it contains the chain code, which we have seen in previous. And then we can install it. Yeah, and if everything works right, then we should have here this chain code identifier, and we need this number and export this package ready in an environment very able package ready here. So we need this package ready here for the for the start command. And we need it also here when we approve the chain code. So, and so it's a little bit easier to handle this long number here. Okay, so, and then we can start the chain code. So we go to this chain code folder. We are here now in this chain code folder. And then we can start here with this command, the chain code, and the start command here is the same. If you use a goal for that. Yeah, the only difference here is that you have to use this favorite chain code start command here. And if everything works, then it should like this one. And now we have here the chain code running, but the chain code is not running in a container, we have manually started this chain code here. So in the wheels scenario when we install it into the test network, for example, then you will have a chain code container running as a Docker container. Okay, so this looks fine. And in the first terminal, we need the fabric path, and then we need of course the environment again. And then we have to approve process. So, but we have to do this only one. So the difference is when we, when we, when we use this in wheels scenario, we also have to do the same steps. So the difference is that we cannot close this process here and start this process again, without upgrading the chain code. So when we modify the chain code, then we have to upgrade the chain continue new version. And that includes also a new approved process and this is not so efficient for the development. So and that's the reason why we choose also this death mode here. In the first time, we have to, we have to approve this chain code power sample organization, and the steps, but the steps are the same so we have to approve it by the organization, and then we have to commit it by the organization. These are the both step, we checked the commit readiness. It's here not so important because we have only one organization. So when we have more than one organization, then every admin of the other organization has to approve this chain code and maybe this is also on another time. So, and then we don't know when the, when the administrator of this, the PR has approved this chain code, but with this command, we can check it so we can check the commit readiness of a particular chain code. Okay, so let's try this. And it's valid. So transaction is valid. And when you check this readiness, you can do it. And you see here. We have only one sample organization, and this value is true. So when we have more than one organizations, then we will see here at this time, after the first time sample organization, one true, and the second organization falls and so on.  And that's it. So now we have this chain code successfully installed installed approved and committed. And this this time we are ready to test and develop our chain code. And, okay, the chain code should run now. And the first is that we need some data into the chain code. So, the first thing is that we set store some data, we can do this with this. And then we have this command PR chain code invoke. So that's important a little bit. When you try to reproduce this example. So, please notice that PR chain code invoke is used for the store for storing for changing possible for creating update the ledger. And PR chain code query is used only for query the data. So, and that makes a huge difference because the invoked process goes over the order system and the PR chain code query queries only the beer, which you are connected for the moment. So in CLI, you are connected through the environment variables, and from the no cheers client, you are connected from the connection profile, which you have used to connect to the network. So, but notice here we have an invoke command for everything which changes the state, and we have a query command, which only queries the state of an asset. That's pretty cool, I think, because when we have a nice scenario, the seller could have a single note in his own data center. He has only the rights to query this data, and he don't have has to be access to our blockchain system. He only need a beer in his own data center, and then he can create this queries with a single simple no cheers application, and then he can only query his revenue cells every time he wants to do it. Okay, so let's try this is also dark thing. Okay, it looks like good. So, and here we have a key. And this is too so then let's create a little bit more data. Okay. Let us try query commands. And you see, we have here a site. So we have here Jason swing. So this works. So, and this is the state from the last session. So, we can do this by year we can do this per month. So, this is to to so. Okay, so when we do this per month here. We will receive only one line here. So, you see the difference. So, and when you create a full, the full key, then you will receive the particular transaction. Okay, so that is what we have done in the last session. And now we want to create another query. This one. So, you know, and for this one we need here. So the first one is this command here, the command is an and chasing away. And the first one is called our in this, this, this argument here has an away, and the first element in this away is always the function. So, and this is the function, which we record. And then the next parameter here, the next elements in this way. And here. So here we have one value. So this is the way zero is the element zero, this is the element one, and there's also the element zero, and this is the element one, and this is the element to here. And we can give as many options here values here as we want to their function. Okay, so, and how we, we can do this. So now we have to switch to know this is the wrong. Okay, so now let's, let's try if this is working. So now, now we want to make a little change here. So in the before transact in the before transaction. So we make a new command console log. So here. Test test. Okay. So, how we can test if this is working. So, and for for this, we use this second terminal here, and then we can stop this process with control C. The only thing what we have to do is we have to start it again. And when we started again. It's running, but with this new version of this chain code. And then we will try to pre read it. And you see here the log message test test. And in this way, you can make your modifications. And you can make your modifications and then test it. And that's an easy way to try your chain code during the development. And yeah, so that's an important step. Okay, so, and now, if this is working so we can remove this. We have to implement this function here. So, and I have prepared this here. So let me copy this. Then I will walk through this. So, this is the new function, get commission statement by time range. And here we don't, we only have one parameter, one option. And this is the CTX this context, which will, which is comes through the through the system. And there we will have a through the stuff interface, we have the possibility to get all the arguments, which we have, which we can use here. This one, all these arguments here. And that arcs means to read this away. Yeah. And then you have access to this. Yeah. Okay, I say here this is a short quaking condition. Here we have our global all results away. And the important part here is, let us split this a little bit. So, here, this is the part, which is unique to the country. So we have here a query string, and we need a selector object. And the selector. You can try this also with these. With this administrator tool, I can show you this a little bit later. And there you have a fine command. And in this fine command, you have also this selectors. We need this selector and this selector has the has the properties and when we would like to query the revenue. So our field is called revenue TS. And then we have to make here the query and the queries that we say we want all values, the greater than argument one and less than argument two. We can also give them the query string assault object assault property. And this sort for this sort of property is an array. And in this array, we can send object away and then this object away we can have different sorting elements. And we want to try to sort this ascending or descending. And so let us see what is the query string. So, and this is how you can compose a query string here. So, and a good possibility also to try this out is the test is the administrator interface, because in this administrator interface, you can test this queries against the blockchain. But then if this query is ready, then you can use it here in your in your source code. And yeah, and that's the query we are going to send. And this is done also with this command here. So get query result is also provided through this step API. So, so I think most functions are provided through this CTX stuff here. And it's also good to look into the documentation, which functions you can query, which you can use here. And that's the reason why I've put you the link to the documentation. The result of this get query result is an iterator. So that's important here. So, that's, that's important because we can loop over this through this iterator. And this is done here with this with this white block here. And as long as this result iterator has a next object and is, and this is represented through this done. So the last transition in this. Hello. Do you have a question. No. And the last, the last result, the last line is represented through this done property here. And until this is available, we will loop through this while loop. And the only thing is what we have to do here is to convert this back as a, as a string in the UDF 8 format from the buffer. And then we can compose an output as a record as a trace and string. Now, and then we push this in there all results area here, and we have a key. So then we see the key, and we see then the record data. And then the last step is that we can give the chasing string back. And that's it. So, and when we try this. So let us try this now. We can stop the chain code. Start the chain code again. And then we can try to come out here. And it works. And you see here, the output. So this is our console lock from the career stream. Okay, so now what we have seen is in the March. So let us go back one month. So we'll see a little bit more. Okay, so maybe we should create another. Okay, so now you see more sites. But we have here the 21. Here's a 20. And we have to 15. So, this is the order. So we are going to change this here. Let's say desk, stop the chain code, start the chain code again. Do the query again. Now you have the other direction. So, 15. 20. 21. So, okay, so, and so when you don't want your lock statement, you can remove it. Stop it and restart it again. You don't have the log messages here. So, um, and now we can compare this methods here as we have seen. Let us switch back to the presentation. One thing I have missed. Here. This is the index. Yeah. So here you see the folder structure. This is the chain code folder. And here we need this structure meta in state to be culturally indexes. And here we have a JSON document in this JSON document. You have here this search field. And in here we have now we have three different possibilities to query it up. So we have this traditional version with the composite key, which is also a good choice when your system doesn't need the query like this one. Or you can use this couch to be a version. And then you can use all the capacities that couch to be has and then you can query a lot more. And one example of this is this one. Yeah, yeah, so I think this is a, I think now I'm on my end. So I can show you only this, this, the interface, I can, I think I can show you this or not. I'm not sure if I can show you that. But I don't think so because this part is not enabled on this machine. Okay, so I think our main so thanks for your attention. And do you have any questions to this. Today we are a little bit shorter, I know, but I'm happy to be here today. So, because my time is a little bit limited. And so, yeah. So, is there any question to this. That's good Conrad, thank you for moderating the chat. The previous recordings and so on, all you can find on the audio recordings on the official YouTube channel. And I post tomorrow. You will receive an email from the meetup page. And in this meetup page. There is the link to this presentation and also to the to the support material and on on this on my website. There is also then the link to the YouTube video and this will be the official is recorded and published under the hyperlator channel. I have a link there and then you click on this link you will come to this link and you find all the, all the videos on this on hyperlator on the hyperlator channel. I have a question. Yes, yes, please. If you want to add the certificate authority. So this setup. We should only add the image, the code image. And the code compose file. Right. Your question is now about the fabric certified authority. And also, if you want to use this to issue identities. Yes, yes, yes, but this must be done in a separate session so favorite provides you and certified authority free. And with this certified authority, you can create all the identities. And in the test network, you can test it without is very easily. So when you look in the fabrics, fabrics documentation. We find this also in the getting started. No, it's not good. So here, and in the test network. Hi, my name is Roland. We will have. Could you mute myself please. Thanks. This is the week me this is the network script. And here I have to look for the documentation for you. Because you can start the favorite CS with a with a with a single command for this in the test network. So I have to look for the documentation for this. And then you can see how this is working. Yeah, here. So this is the test network. And then a test network. This, we have to strip network. This network script. And this is when you compare with the 1.4 version, the bigger first network example, and with this version, then this is really, really a game changer I think so only, especially for learning, because we can with this script, we can start any configuration so we can start a configuration with a level to be we can start a configuration here with couch to be and also you can start this test network, only with this option CA. And then you will have the whole crypto material generated through the test network through this script. And this is when you look into the network script a little bit deeper, then you will find how they do this. And when you do it by hand, like it was in the one in the 1.4 version, because then it's a little bit difficult to do that and when you to learn and test it, then it's much more difficult to create a test system, because you have to create, not the users only. So the admin user and the user one, for example, which interacts with the network, you have also to create the peer the order us. And for every network element in this, this fabric network, you have to create an identity. And here, in this network script, you find some scripts, where you can see how you can do this later in the session. I have plans to show you how we can do this and how we can play with the fabrics. Okay, because fabrics is also important here. Maybe we will do it earlier, because in the check the chain code has also the possibility to check the identity. And in this identities, we can have some special properties. So maybe this is called an at root, at root paste chain code. And then at root paste chain code that we can say, okay, in this set in this certificate from this user. This is this certificate belongs to the marketing department or to the finance department, for example. Every member of this finance department can call this chain code function, especially this revenue function. And that's the reason why it's important also to know as a chain code developer, how you can start and how you can modify this certificate identities, these identities. Yeah, so I think we, this is a good, it's also good for no cheat for learning the chain code part, because at root base chain code, and isn't topic also, also in for the certification. And this is the permission system. So we have to take care on the permissions, and we don't have a user name and the password here to give a particular user any access rights. Because we have an RSA, key authentication. And, but we can use, we can create a new identity with a special property, for example, so indicate in the way how we need this, and then our chain code can react on this property. And you can say if this identity has this property, then you can access this, this particular function, or this chain code even, and that's the reason why we, we have also here these before section. We can hear in this before section, we can do the logging. Okay, we can get the transaction ID to log or whatever you want. Okay, but we can also check on this position, if the user, if this not the user so we don't have a user we have an identity. So, and if this identity has the proper access rights to access this chain code, or later to access this function. And that's important to know how you can start a fabrics, see a how you can create how you can interact with this very safe. In terms that you can modify these attributes, and then you can react on the chain code directly to this properties, and the simple story the clearest example is that the revenue. Maybe all this revenue. Some, some from this revenue could only be called from the bookkeeping department, and not for the marketing or for a technical department, for example, and this is something what you can make with the train code in the combination with this certificate So, but this will definitely, definitely, definitely come in one of the next sessions. But from the chain code perspective, not so much from the administrator perspective. Can, can we use a local local version of couch TV installed locally. Okay, so, so you want to use not the Docker version of couch to be you want to use a native version. And by a hundred. If this is working. So, I haven't seen an example I have always seen the examples with with couch to be as a container, but why not. So, why not so the only thing is that we need because the Docker container. I think that the Docker container does is that the one the couch to be, and we have linked all the storage outside of this container. So, maybe this, I think I haven't tried it but I think it could be possible that you can also use couch to be in a native version, and not in the Docker version. That is the tool can we start it in development mode. Of course, I think so, I think so, I haven't tried it, but I think so, I think so. Also the, can you run a native version of it. The binary. Yes, yes, I think and there are some examples. Your favorite CA has a separate documentation, and I, and I think I can remember that there was a documentation, how you can run the physics a natively, and not with Docker container. So, but for this you have to look to the fabric. Okay documentation. And let me check. There's a user guide. I think I saw. I'm not sure, but I think I saw a version, which is used. Then, which uses the native, the physics a server in a native. I can try to figure it out and I will post this or you can post this question on the GitHub some Linux page here. I will, I will post it. Yes. Yes, please. So when you have here any discussion side, then I have a little bit time to think about that and then I can look if there is an solution for that. Okay. Thank you very much. Welcome. Any other question. Yeah, if not, query is still writing to the blockchain, isn't it query isn't writing. query is creating not writing. So, and the blockchain. The question is what is the blockchain. And the blockchain is somebody asked how we can query the history of an asset. Yes, you can do this. And the history of an asset means all the transactions of an asset. And the query goes all goes always to the world state here. Yeah. So, and the query when you use the query command from the CLI or from the, from the not just SDK, then it will query only the beer and the local the local state database, which is installed on that particular beer, which you are connected here in this test scenario, we have only one peer. So, but we can use this in the session on the last meetup. I have shown you how you can install this, this chain code. And so on the test on the official test network. And then, you can try to connect to when you try to connect to this net but you have to set the proper environment variables. So we have seen the script set global's with one, two, and three. And with this, you set the proper environment variable so that the local peer command knows to which peer you, you wants to connect, and then these state database is used to query the ledger, and there is nothing written but only a week process to this world state. And it doesn't matter if this level to be a culture to be. So, and to the blockchain query is still writing to the blockchain. Yeah, the blockchain. I don't think so. So the right term must be to the world state. Because the blockchain here is something called the ledger and the world state represents the last status of an asset. But it's a little bit difficult with the term so we have to be careful with the terms. Okay, any other question. Then, thank you for your attention. And yeah, have a nice weekend evening, morning or whatever. And we will see you next time.


How do amputees actually control prosthetics? So I'm going to show you how mine works and then we're going to talk about actually a lot of different ways that amputees can control prosthetic limbs. So the way that I am able to walk on my prosthetic leg is just weight transfer. And there's actually a lot of movement in the carbon fiber pieces that make up my ankle. So as I bring my foot forward and transfer my weight, I'm engaging my quad muscles, my glute muscles, and transferring the weight over is what allows this to move. Now there are other prosthetics that rely on computerized parts. You'll probably see more of these with upper limb amputees where there are sensors built into the inside of a prosthetic and as someone fires nerves because the nerves still exist to move your fingers even after your fingers don't exist anymore. And as you engage those nerves or do a very specific kind of movement, your prosthetic response for amputees with above the amputations, you often have computerized knees that are adjusting based on the movement of your body for what kind of movement you are trying to accomplish. And there are ankles that are computerized as well. I've tried them before. I don't like them. It feels weird. It's not for me. And that's how we do it.