Nice view, isn't it? Welcome in 2100. After wasting energy for unpleasure during a century, we finally run out of resources. Our world is now controlled by a huge multinational corporations, Bob's Enterprise. Because there is no oil anymore, Bob's corporations need to find lots of workers to replace machines. But, people started to rebel against the system. Bob's Enterprise decided to go to the highest level of horror. They started to develop in the lab a toxic gas. When you inhalate this gas, it takes the control of your brains and either turns you into a submissive robot or worse. But fortunately, I may know how to find an antidote. Welcome in my lab. We have not yet been presented, but for obvious reasons, I want to keep my identity secret. But you can call me Alice. It turns out that I know the toxic gas quite well. I've been able to find a set of equations describing an antidote for the gas. It turns out that in order to solve this equation and find the antidote, I need a quantum computer. You know, this computer is able to solve some problems much faster than any classical computer. It turns out that Bob is the only person owning a quantum computer on this planet. And for obvious reasons, if Bob learns the computation that I would like to do on his computer, he will try to kill me. So I will need to find a way to hide the computation. Hopefully, I know a way to hide the computation to a quantum adversary. But first, let me tell you more about quantum. A qubit is the basis building block in quantum computing. Usually, a qubit is a physical device like a photon or an atom. But for this talk, we'll just suppose that we can represent that qubit as a unit vector lying on a sphere, on the surface of a sphere. Now, if I give you a qubit, you can apply some operation on the qubit. So for example, you can rotate the qubit. But you cannot see what is inside the qubit.  However, there is one method to extract information out of a qubit, which is the measurement. So if I give you a qubit, you can measure the qubit, destroy the qubit and extract one bit of information out of this qubit. Because an arbitrary qubit lies in a continuous space, it is therefore impossible to describe this qubit using a single bit of information. This also means that it is impossible to clone one qubit into two exact copies of your initial qubit. This is very important in cryptography and is known as the no-cloning principle. So in cryptography, we can hide some information inside this qubit and then use it to perform computation with the information and encoding somehow in this qubit using a kind of one-time pad. So this method is used in the universal blind quantum computing protocol. So we will not go too much into the details of that protocol, but the important thing is that it is separated in two phases. During the first phase, Alice, that would like to delegate to quantum computation on Bob's computer, can send some qubits to Bob. So these qubits are just random qubits whose vector lies in the equatorial sphere. So we will call them plus theta, theta being the angle. And then Bob will receive lots of these random qubits and then after, he will interact with Alice in order to perform the computation. So this is an interactive protocol, but all the interactions are classical once you send this initial quantum information. Now my issue is that I cannot send a quantum photon or a quantum atom, so a qubit to Bob, because there is only one, because I don't have a quantum network. I can just access classically to Bob's computer, so I have a classical internet like you, but I don't have a quantum internet because it's very expensive and very hard to build. And maybe Bob's computer doesn't have a machine that can be wired on a quantum device. So I just have classical internet, but now my goal is to find a way to still be able to do quantum computations. So I have a friend that may know how to do and I will see what I can do. Hello my friend, I'm in a hurry. Do you know how to remotely prepare a quantum state on a server using only a classical channel? Yes. There is a protocol called QFactory that can do what you would like to do. Alice is completely classical and at the end of the protocol, Bob gets a quantum state that he cannot describe. At the other end, Alice knows the classical description of this qubit. The security relies on the learning with error problem. I really want to make sure that Bob doesn't learn the computation that I am doing. Is there any proof of security that this protocol is secure when it is composed with the UPQC Universal Blind Quantum Computing Protocol? So to answer your question, you first need to know that there exists different levels of security. The weaker model is a game-based model. This model, the adversary plays a game against a challenger. The game is said to be secure if no adversary can win this game against a challenger. The problem with this game-based security is that it is hard to think about all the possible interesting games that make sense when proving the security of a given protocol. Moreover, there is usually no guarantee in terms of composability, so when you use your protocol inside of the protocols, the security proof of the new protocol needs to be redone. Then, there is a stronger model of security that guarantees that your protocol can be composed into other protocols securely. This model are said to be composable and there are several frameworks. The Universal Composability Framework is used in classical cryptography, but not much in Quantum because it is designed to work for Turing machine mostly. In Quantum cryptography, there are several frameworks, but a quite popular one is the constructive cryptography framework, also known as abstract crypto. To answer your questions concerning classical client remote set preparation, the QFactory protocol is proven secure in the game-based model, but it was not proven before that it can be securely used to replay the Quantum channel in the Ubiquity protocol. There is also another work by Tom Avidic and Alexandre Georgieu, based on the work of Mahadev. This last work is proven secure in the constructive cryptography framework, but they require an additional assumption called measurement buffer. This also gives a security that scales polynomially with a security parameter, while we would prefer to target exponential security. So I don't know any RISP protocol that is proven secure in the plain model in a composable framework, but I know someone that can help us with that problem. Hello, I am the Distinguisher. You know the important guy in composability. What do I do? Distinguish. What do I distinguish? Object or resources. For example, let's take this object. It is an ideal resource. It's your dream, the best resource, the best protocol, the best object that you could get. It is even information theoretically secure. It's really the dream. The thing that in practice, it's very hard to obtain such information theoretically secure with perfect guarantees, and we have less interesting resources to start with. For example, let's consider some aluminum foil. So this aluminum is far from being this resource, but hopefully with some protocols, I can try to turn that aluminum foil into this ideal resource. So for that, there is a protocol that turns one weak resource into a bigger, more interesting resource. So let's see what is the protocol between Alice and Bob. Now, hopefully, this new object is supposed to be quite close to that one. So in order to see if this protocol is really as secure or as good as this ideal resource, my goal is to distinguish. If you want, I am the bad guy, the attacker that will try to see what I can do with this protocol, what I can do with this protocol, and see if I can distinguish these two resources. So let's imagine, for example, that I pick randomly one of these two objects. So for example, I take this one, then I can analyze it, and at some point I need to put a stamp in order to say if I think it is a real or one. So here I think that it's a real protocol. It doesn't look really fancy or anything. And then I start again. I take randomly another object and then I label it again. Here it's really the ideal one. It looks perfect. So as you can see here, it is pretty easy for me to distinguish because I have access to what happens inside the resource. So in order to get a more meaningful scenario, I must have access to only a black boxed version of that resource. So now I have only access to what is called the interfaces. So each party is associated with one interface, and there are two kinds of interfaces. So if the party is honest, then I can choose the input of that party and observe the outputs of the party. Now if the party can be malicious, it can take the place, so I can take the place of that party and actually receive and send messages on its behalf. So for example, let's start with a simple protocol, a secure channel between three parties. So Alice will send a message, Bob will receive the message, and a potentially malicious if dropper that will try to learn the message. So because Alice is honest, I can only input a message that I can choose. Because Bob is honest, I can just observe the final message. But because Eve is malicious, she can try to learn information about the transmitting message. So here we define our security guarantee as follows. Eve should not learn anything more than the size of the message. So this resource is now trivially secure, even information theoretically secure, and it will be our definition of security for all protocols realizing that resource. So it means that a computationally secure protocol must be computationally indistinguishable from an information theoretically secure resource. But so resources are also used to specify the correctness property. And so here, when all parties are considered as being honest, then there is no leakage to Eve because Eve is just being honest. So we can also describe correctness properties of our resource. Okay, so now let's consider a protocol that realizes that resource. So now again, Alice is honest, so I can only input a message X. Bob is also honest, so I will observe the output message X. And because Eve is malicious, he will be able to intercept the message going from Alice to Bob. So it means that the if dropper will have access to the encryption of the message. Maybe it will be a one-time pad, maybe it will be an RSA encryption. It depends on the protocol. But remember, in the real world, I just have access to the size of my computations. Well, to the size of the message, sorry. So here, I can see a bit string. On the real ideal world, I can see the size of a message, so it is easy for me to distinguish. So to avoid that issue, we need to come back to our ideal resource.  So the rule of the simulator is to fake the interface of the real protocol. So here, for example, if we use a cypher that is computationally indistinguishable from a random string, then we could ask to the simulator to take as input the size of the message coming from the resource and to output to the distinguisher, so to me, the random bit string that corresponds to the size of this message. So now, I cannot make the distinction anymore between the ideal world and the real world because I only see a bit string that looks random to me. So now, just a small remark about why indistinguishability is interesting. So let's imagine for a second that in the real protocol, sorry, I could extract from the cypher text the input message X. So I will also be able to do the same here in the ideal world, otherwise I could easily distinguish. But here it is impossible because the simulator just has access to the input size of the message. So the simulator and the distinguisher, so that we'll try to extract the message from the cypher text, cannot learn the value of the message. So that's why, indistinguishably, T implies security. Okay, so now let's come back to our setting, classical client remote state preparation, RSP for short. So in the following, we will prove that there exists no classical protocol that realizes any interesting RSP resource. So more precisely, we link the property of security, which is a computational property, with an information theoretical property that we call describability. This allows us to apply on computational protocol tools that comes from information three, such as the no-coning principle or the non-signaling principle. So but first, what is an RSP resource? So an RSP resource is a resource with two interfaces, one for Alice, one for Bob, and we will assume that Alice is an S and Bob can be potentially malicious. So this resource must produce when both parties are nest a quantum state on Bob's interface and a corresponding classical description on Alice's interface. So note that this property characterizes only the correctness of the resource. If Bob is malicious, he could get more information about the state that Alice gets. Okay, so now, for example, let's consider a resource that we would like to have in the universal band quantum protocol. So this resource gives Bob a random plus theta, a random qubit, to Bob's, because it is what the ubiquity protocol expects, and it will give to Alice the corresponding theta, which is a description of the state. So then let's forget a second about this resource and we'll talk about the describability property. So we will say that a resource is describable if an unbounded adversary can extract from Bob's interface the classical description of that qubit. So for example, on this resource, it will mean that it is possible to get theta, giving only access to the plus theta qubit. So in particular, this resource is not describable because otherwise we could use this description in order to clone the qubit and it will violate the node cloning principle. So note that this property of describability is an information theoretical property. Being describable is usually not desirable since, remember, we expect the ideal resource to be trivially secure, which means information theoretically secure. So our first result states that any RSP resource realized from only a classical channel must be describable. So in particular, it means that this example resource is impossible to classically realize. So now we will explain quickly how the proof goes. But in the paper, we also give a more general definition of RSP resources because it is a whole class of resource and we also take into account resources that accept inputs from Alice. Okay, so now let's see the proof and we'll assume by contradiction that there exists a classical protocol that realizes this resource. So it also means by definition of realisation that there exists a simulator that fix the interface that Bob would have with Alice. Okay, so since Bob can be malicious, I can control him and I can see the message exchange with Alice. And because the protocol is classical, it means that the simulator will output only classical messages to Bob's interface. So now as a distinguisher, I can just run the honest protocol on Bob's side. And therefore we'll have a few bits at the end and I can measure the state obtained by Bob using the description provided by Alice. So this is easy for me, even if I'm computationally bounded. So you can see that operation as a test that checks if the produced state is indeed close to the expected one. So in the real world, because the protocol is correct, it means that the measurement will always match the description. So it must also be the case in the ideal world, otherwise I can distinguish easily if they do not match. So it is possible to prove that this is the case, if this is the case, then the state that I obtained in the ideal world is also very close to the state described by Alice. So starting from there, I'm not useful anymore. I was just useful to say, OK, this state is indeed a plus theta. So starting from here, the distinguisher is not useful anymore and we will now construct a describer that can find the description of the quantum state given only access to Bob's interface. So remember in this example, this is forbidden due to the no-cloning principle, because even if the cloning box is in body, you cannot clone the state. OK, so to create the describer, the idea is to classically simulate the honest Bob's protocol. So this is possible since all the communication are classical. So it means that we can just replace all the quantum operations that would have been done on qubits with the equivalent operations, but we will do them on big classical matrices. So that way we know everything so we can just simulate classically the computation. So not of course that this simulation may take an exponential time, because qubit representation takes an exponential space, but it is not important since the describability property is an information theoretic property. OK, so now this concludes the proof because it is possible to recover the classical description of that state. And so it means that any classically realizable RSP resource is describable. And it freaks me that all interesting resources are impossible to realize in a composable fashion. So then we have two other results linked with time with the universal blind quantum protocol, UBQC for short. So the second result is also an impossibility result. So we prove that there exists no RSP protocol that can replace the quantum channel in the UBQC protocol and such that the overall classical client UBQC protocol is secure in the composable constructive cryptography framework. So this could have been possible because sometimes smaller protocol are not composable, but when you use them in bigger protocol, the resulting protocol may be secure. So we show that in UBQC it is not possible. I won't go into the details of the proof, but the idea is to turn a classical client UBQC protocol into a classical client RSP protocol. So due to our first result, the corresponding RSP resource might be describable. But we show that this resource could be used to send a message faster than the speed of light, which is impossible since we violate the non-signaling principle. So basically if UBQC protocols can be classically realized, then we violate the non-signaling principle which applies in quantum mechanics. And finally, our third result shows that the Qfactory protocol can be securely used to replace the quantum channel in the universal blind quantum protocol if we target game-based security instead of composable security. So we prove more precisely that the protocol is blind in the sense that if the adversary tries to behave in a malicious manner, then it cannot learn neither the input nor the computations performed by Alice. So I won't go into the details, but basically we proceed by doing a series of game reductions that reduce any attack on the UBQC protocol to an attack on the learning with error problem. That is supposed to be secure even in hard to solve even for quantum adversaries. So I think that Alice can still use the Qfactory protocol to perform the computations she would like to do on Bob's computer. Oh, so it means that it is impossible to prove in constructive cryptography framework the security of any remote preparation protocol and the classical client universal blind quantum protocol, but that it is possible to prove the security of Qfactory and universal blind quantum computing plus Qfactory in the game-based model. Okay, good enough. Then I will just use Qfactory and UBQC and let's continue the rebellion.


Aaron Rodgers gave his response to the reports that he'd given the Jets a wish list with this I just asked Shephter what I texted him when he somehow got my number and texted me, you know, thing that I told Shephty. Shephty. Lose my number. Nice try. Shephter didn't hide from it. He tweeted out a screenshot confirming the text was true.


Yo, it's Herman here with Artlist, and here is a big mistake I made when I first started video editing. Be honest, do your project files look like this? And do you name your files like this? Look, we've all been there including myself, and it was when my client asked me for a graphic to be swapped out in my video when I realized it was like trying to find a shirt in a messy room. I didn't know what to name my file, and I didn't even know how long I had to scroll to find it. So I believe it is crucial to develop the habit of staying organized early, especially if you video edit often and you have deadlines to hit. All it takes is renaming your files and folders into something obvious, instead of ciphring something cryptic, and creating folders for your files, and organizing everything into bins in your project file. This might feel like it slows you down at first, but spending those extra couple seconds will save you from people asking why you look stressed out all the time.


Hello guys cryptic ground to your walk up back to another unity bolt video today We're gonna be making an idle game in this episode to today We're gonna be adding upgrades for our click and production and if you enjoyed this video Make sure you smash a like button comment all your feedback suggestions all that good stuff below and subscribe my channel If you're new and turn on those notifications for future live streams and videos anyways, let's just hop right into it All right, so I made two buns here real quick I'm gonna expand Yeah So I made a click button that increases the effect by $1 for when you click and Has it displays the cost here as well, and I also made a production upgrade. Actually, this isn't proof. This is just production money production and We're just gonna do Plus $1 per second, okay, and we also display the cost here, too I also just added a money per second text because I won't obviously be able to determine how many Or how much money we're getting per second Okay, and now let's go into our script editor. So We put our script right here in main in the game object main and you see this flow machine here We're just gonna click on edit graph. Okay, and it should open up a window mine Just popped up on my other monitor and we are back where we left off So before we actually start doing this, I let's make a variable real quick We need to have several variables. We need our upgrade level and our Yeah, our agreement level for both of these and honestly, we can make a money Temporary variable for money per second and the cost for these so we can worry about that later So what you do here is just type in a new variable name. We're just gonna do click upgrade one level hit enter And we're gonna set the type to int. Okay, and we're gonna do the same thing for production upgrade one level And we're gonna do the exact same thing as an int And I wonder can you make a Test let's see. Can you make an array? Let's see. That'd be kind of cool. I Don't think you can make it raise Okay I'm sure they'll have that at some point Alright, so let's just create some visual stuff first. So we're gonna do our Coins per second so we did the exact same thing here as we do for our coins text So let's see. I haven't done this in a little while. So we're gonna add a text dot text Okay, and we're gonna do sets Alrighty and We're gonna set the text component to our coins per second There we go, and now we need to input a string and this Needs to update as well. So we're gonna drag the update event node into our text node like that Oh, I see. I forgot about this You actually have to do it right after this one It's a bit weird Yeah, like that Can't it's the one thing I really don't like because you can't have multiple nodes, I guess I mean it actually makes sense. No, I think about it. Never mind scratch what I just said. I Want to drag this to All right, so now we're gonna start setting the string So we need to bind this dollar sign into here So the thing is that we can use this for multiple cases not just one So if we re-re-drag this it will also create another node so we can use this twice Just so we don't have to keep reusing the same dollar sign prefix so we're gonna have that here and we are going to add a variable and We will be doing the ad components Takes forever to search Okay, and math generic like that And we will add this to a and we're also gonna drag this output into the string right here Alrighty Let me just bring that right here I know some people won't be very happy with this criss-crossing thing that I'm doing Organize it honestly doesn't really matter Yeah, I'm just gonna you can deal with it like that that looks fine So we have our dollar sign, but we also need to display the money and the per second So we actually have to do another string. So we're gonna add another unit and we're gonna add a string String literal and we're gonna set this to per seconds actually it's space per second Alrighty and we are going to join these at the end So I'm gonna put this right here Organization is also very key when it comes to this So we're gonna make a temporary variable. We're gonna add a float Okay Float literal here and equal to whatever the money per second is and right now that's just whatever this level is So we also need to get a variable sort of add a unit Get variable. Oh Yeah, we do get money per seconds. Can we do that? Money per No I guess we could just change this so anyways, we're gonna. Oh, right. It's the production level So we're gonna get this production upgrade one level right here and we basically just gonna set that to All right, that doesn't work that way This is a bit weird. I think I might add another group. Okay, so we have this right here and And That's pretty much what the the money per second is right now But when we have to multiply other upgrades together I will have to do like the add multiply another stuff, but for now, it's just an individual upgrade So we're gonna bind the dollar sign and upgrade together So drag this node into the b-node for add it like that And then after this we're actually gonna delete this one right here Because we need to add the per second at the end So we're gonna add another add we actually do string interpolation Okay, anyways, we're just gonna add the add component here And we're gonna drag this into a and then the per second right here Into b like that Alrighty and now we're gonna set this to our string for the text And we can organize this a little bit. This might be a little difficult to achieve This isn't the very neatest flow chart you'll ever see But it's okay. It works Like that. Okay, so now our coins Our coins text should work I also want to do some formatting So I'm gonna add a float to string Float to string Format okay And we're just gonna set the format to f2 as well Same thing as this and now we're gonna drag this green into the blue node And get rid of this one And then this orange one into the ad right here like that Yeah, this is getting a little messy already And now we should see zero points zero zero per second by default Uh, let's skip that a try real quick. So we're gonna save it And run it Cool. So yeah, now we have two decimals and it says zero dollars per second All right, so now we need to do the upgrades real quick And I'm just gonna create another group by holding down the control and just dragging And now this is exactly the same as the click method right here We're just gonna create an on button click event right here And we need to assign a button which will be the click upgrade one right here So we can just drag that or we're beginning to select it from here But I think it's easier to drag At the beginning it may be easier to just click here because so you have less options to choose from if that makes sense Well, yeah, I also want to read in this to click upgrade Oh, I want to see can you make a switch switch Interesting let me experiment with this. So I guess there really is no way to do switch case for this That's okay Yeah, anyways, we're pretty much just doing the exact same thing here. So we just need to add a set variable We can also just set the Set level and get our click upgrade one level here. That's a nice thing. You can actually search for that makes it a little easier Um, direct this green arrow into the other green arrow right here And we need to get variable Um, no, we don't we just need to add by one Oh, yeah, yeah, that's right. We need to get variable because we're adding on to it So we're gonna get click upgrade one level and We need to get an int literal and we need to add a component Alrighty, now we have our format here like this Also, I could space this out a bit like that Okay, now we're going to drag this a plus b into this one right here And we're set this into toe one. We're adding my one And dragging this get variable and to be So now we're adding one to the original level and setting it equal to what the level actually is Alrighty, so now we need to actually subtract the cost and we also need to make the cost too And I think that's a little tricky So this is why I like programming better is because this just gets a little tedious and you do more work than what it should be Instead of just typing one lines, you know what I mean But anyways, we're gonna do the cost Alrighty, so what we're gonna do here is create Um, we can actually just get this variable from here Yeah, so we can use this to get our cost here But we do need a float and this is our multiplier here I wish you could name them, but I'm gonna use a 1.05 107 Alrighty, and now we need to have a multiply We also All right, so what we're gonna do is normally it's 1.07 to the power of the level So we're gonna drag this green node right here and add it to the power And float will be set to the to the f right here the number or the base Okay, and now we do 1.07 to the power of level And now after this we can multiply the base Times the the exponent here Like that also it looks like I need some kind of flow Right here, which is interesting because an ad doesn't so Not really sure why this requires some form of flow I guess this kind of makes sense. We can just do this here All right, so we're gonna connect to this the set variable here Oh, wait, we actually need to do the cost before then so I don't like you need a point for this exact reason. It's very like over complicated Alrighty, so let's delete this right here Connect the on button click to this POW method Alrighty, and I'll honesty at the end this makes a little bit of sense Alrighty, we'll do our math related stuff here. All right, so we're gonna have our cost right here We need to subtract it from our money. We also have to do some checking too. So We need to create new statements I don't know how this is gonna work. Whoops I think what I do is that I create a bull I don't know what this this is weird. Hold on. I'm gonna figure this out All right, so we actually have this greater or equal then so this is pretty much just an if statement here So now what we're gonna do is check to see if our currency our money Is greater than or equal in the cost. So that would be B Oops like that All right, so what we can do is either drag this node into the a slot right here And that looks kind of messy Or we can just add a get money component right here and just simply add it right here And just drag this gray node into a so it's whatever you want Now it looks like we have some issues here. I think it's related to the flow And can I distract this here? Will that work? No, that doesn't work Alrighty I think this is grayed out because we never actually do anything with this greater or equal then So this is a bull right here because it's purple. So now we need to determine if it's uh If it's true or not and I think we use I think we use this a select Yeah, we use a select But I don't know what this means. It's true or false. I think we can either indicate if it's true or false Um, I'm just gonna drag this right here um Okay, I see I'm looking in that image. We actually use something called a brand Um, so we're gonna add a branch component And here we you'll see our Our purple thing here and it returns a true or false right here This is getting kind of messy I'm gonna bring this back over here. I know that isn't the greatest. I know you OCD people are gonna are gonna Go crazy and now we're gonna drag this this um this green arrow at the math f dot pow And attach it to the green arrow in the branch and everything should be fine here So now we need to determine if it's true or false if it's false, then we're just gonna ignore I think you can ignore right or do we return? I think we just do nothing. So we can just leave that empty And if it's true, then we're gonna attach it to the set variable right here But we also need to subtract the cost first before we actually change the level because of this cost right here So We need to subtract the cost from This right here, which the nice thing about this that we can drag this to a whole new area up here So we're going to Um, we need to actually subtract. Okay, so we're gonna subtract Alrighty, but before we subtract We have to actually set we have to actually get the variable Okay, we're doing the exact same thing here. We grab it in Grab this variable all that stuff. So we get the level. Ah, it's a mess. I know So But we need to subtract the cost or the money from the cost. So that's a from b. So money is a So luckily this is close. So I'm just going to drag this money components into a oops And then I'm going to subtract I'm going to drag this a times b right here and put it into b So luckily they're both very close. It's just I'm kind of need to space things out of it So we need to subtract um Money from this. Okay, that looks fine And then I think we just set it to the cop. We set it to our current money Let me get a little closer. You can't extend this unless you're really close And Set click upgrade one cost. Oh, I know we set money. Yep. It's correct Alrighty Finally we set money Equal to this a minus b here We also need to attach this This arrow right here For the true into money right here the set variable like that Alrighty It's going somewhere guys And now we can finally add this green arrow To the set right here now again, this looks kind of ugly. So you can either move this A head like that, you know, you can just put it wherever you want honestly So now We have a huge mess And anyways, what it should do is that I should actually On when you click the button you should grab the cost Determine if it's greater equal than if it is then we're going to um Grab the cost right here And subtract it from Or yeah, we're going to have money and subtract it With the cost here And then we're going to set that we're going to replace our current money with it That's a lot. That's a lot of gibberish. Okay Let's just see if this works first before we like dare to begin with the the production upgrade But also we want to set this replace this float with this click upgrade one level So I'm going to delete this component right here And add a git Click upgrade one level And just replace it here and we're good like that All right, so let's save And let's give this a shot. It's a risky one Okay, so currently we get Zero per click and that's because I forgot to actually add one to the level All right, so what we're going to do here is just add. Oh, what did I do? Okay We're going to add one And this Oh, I think we just right click here. Yeah, we're going to add one in this variable together And then replace this A node with A plus B like that Alrighty, also another thing we didn't do is set the Is that the the text here? We'll get to that Okay, so now we should get one per click And now if we upgrade this it doesn't subtract Oh wait, this one right here. Okay, so now we get two per click Nice and it's also increasing the cost. So that works very well. Also, you can look at the the flow chart here You can see it run in action. You can see everything is running. Oh, that's so satisfying Cool. So everything seems to be running great What's our current level? 18 Yeah, okay, so we also need to replace all this UI and we'll do that So I want to update this UI not on update, but honestly just Um, we want to start doing things efficiently So I want to update this click text whenever we buy this click upgrade and on start And obviously it's zero. We don't have any saving date saving loading and that's honestly something I'm afraid of So do we have player prefs? Oh, we don't that's kind of sucks Um, anyways, we're just gonna set a text dot text Okay. Oh, let's get we don't want to get Okay, and we're gonna do sets We're pretty much just gonna set it to click plus dollar sign. Okay, so that's very easy So we're just gonna add a new string a string literal And we're gonna call this click backslash n Plus dollar sign. Okay, so that's a prefix and we're gonna add We're gonna add this And the current level Okay, and we're also gonna have to like create some variables and stuff in the future Where it's multiplied by other stuff. So it'll also be a little easier to Manage I guess but this is just gonna become a huge And if this isn't efficient and you're really good at unity bolts, you can make fun of me all you want I'm a noob But anyways, we need to get a click upgrade one variable Like that And we will set it to be you know add a plus b and set it to the string right here for text We also need to add this um This flow right here Like that Oh looks like we're missing something What happened there? Oh right here. Okay. That was weird. Um, basically replace the self with the The click text so click button text right here drag it into the text box right here And now we can finally add this green arrow to the flow right here I'm gonna move this up and organize it a little bit. Oh, yeah, we've got to Readd a plus b to the string right here And now on start it should show Um plus one per click. Oh, yeah, we gotta add All right This is where it gets a little tedious and honestly I could probably just grab this a plus b right here Let's do that.  I can just move this here Instead of doing extra work here We'll just drag this a plus b and put it into here right now Okay, and that looks Like it'll work It's we're pretty much doing the exact same thing We're just not doing we're just doing less work instead of just having to make this all over again right here And I also want to make a little box right here for start And I know a lot of stuff is gonna happen here at some point So we also need to attach a flow here To make sure this runs Um, I want to say something. Can we add another? A road here. Oh, we can. Oh, that's sick. That's sick Okay, I mean that would be kind of silly if you couldn't But after we set this variable here since this is the last flow We're going to grab this green arrow And attach it to this one right here. So we're updating the text whenever we buy this upgrade And I'm going to show you how this works In a second All righty So Oh man, are you serious?  So hopefully they'll see it I doubt it. Maybe add it soon. I don't know why they haven't yet I don't know So I guess we're kind of stuck with this So anyways, we're just going to do click Plus that much it looks ugly, but it's fine Um I think today I'm just going to do the click upgrade just because this is a lot of work And I'm a little stressed over the fact that you can't do a new line So Anyways, we need to have this button do something too So Um, let's just start this in here Actually, yeah, let's just add the text in here So the cost is right here. So I think I'm gonna add it right under here Or in here. Yeah, I'm kind I'm kind of deciding where I want to put this Alrighty, so we're gonna add another set text right here Okay, I like when this happens Okay, that was weird. You have to zoom in. I don't like that. It's a little weird Um, we're gonna set this text to The click upgrade one text right here Okay, and we're gonna set the string to several things. So we're gonna have an improve click And stuff like that So let's add another string Okay, and this is just gonna be Um Click plus one One dollar again. We can't really do anything fancy here because unity And I guess we'll just put a dash cost Dollar sign, I don't know. I don't like this And we need to add them together Okay, so this would go into the a And b will be the actual cost, which is what is right here for the multiply. So we'll put this in b And also actually before we do this I want to have a a formatter. So we're gonna add a string New string and we're gonna do um Oh, you know, it's just format, right? Yeah string dot format Which one did I actually use? Oh, it's two string, right? Okay, so we're gonna add a two string here And this is a float A float to string Format yep And now for a format, we're just gonna do f2 Actually, I want to do n2 All righty, and we're gonna drag our a times b right here into this blue Float slot right here and drag the orange and two hour b right here And we're gonna add them together and set it to our cost text So now this will be ran whenever we actually, uh Buy this upgrade, but we also need to add this flow right here Okay, oh man, I forgot you can only add it once so we need to This is a bit trashy Okay, so we're gonna drag this arrow here and drag this one from this text all the way back up here All right, that works Not as efficient as I'd like but it works Okay, so let's save it and give it a shot Also, it still says this at the start so we might have to move this anyways Uh, okay Let's buy that. Okay now should show the correct one It doesn't show the correct cost though It shows the cost afterwards. Okay, so that's kind of an issue So it shows the previous cost Okay, so the other way is the display is fine It's not the end of the world. It's just that it's displaying the wrong one Okay All right, so what we're gonna do so since it's grabbing the wrong text We actually need to make this cost again Um, I don't really know a better way to do this for now other than just redoing this not really redoing this but Um doing it again I know this isn't very Yeah All right, so we're just gonna copy all this again And this is basically just calculating our next Next click upgrade one cost That's fine with me and basically we just take this flow right here Um, so let's get rid of this right here Get rid of this flow right here. Basically, we want to drag this set variable here into the pow And then we want to set it this one to the text right here and now we Format this great this um We actually don't need this right here. We can get rid of that This get variable here I don't think we need this either Yeah, we don't need this I think we're missing something though. Oh wait, we're not this f right here is Oh, we're missing the power. Okay. I was wondering what we're missing here But we get that p from the Get variable here. Okay, so we're gonna add this right here Actually, we can just replace this one here get rid of that node um Set this give variable to the click upgrade one level right here and set it to the power Alrighty and now we get rid of this greater equal then And drag this a times b into this formatter They shift everything here Right here into the blue And now it should work as planned Oh, yeah, we want to drag this over in play mode shoot That's not good. We can't do this all over again. Hold on Alrighty, so what I did is that I kind of reorganized it So make sure you connect this set variable to the power here And set this pow to the text right here. So we're setting it I also dragged this um this original text right here Into here instead of recreating this whole costing over and over again I or I really don't want to do that so I create I just Drag this green arrow right here into the power right here So now we have two green arrow connections going into this So hopefully it works and obviously this is very confusing and I'm going to put this out here the series is not going to be long at all because I'm going to get very stressed with this I might just do the improve and that's it Maybe prestige and then I'm done This is very tedious. Okay, so it looks like it didn't work So Let's see do it. Does this even get called? Um, oh, it looks like there's an issue here Right here. So this will prevent the future code from running Um, we can get rid of this a plus b. I don't know why I still have that Like that. Okay. So now we're just doing click colon plus dollar sign put that into a And we grab our one plus level Into our b and then we add a plus b and set that as the string Alrighty, let's get by the shot Cool. So it runs everything correctly. The cost is 10. So let's see if we keep playing 10 70 so the next one should be 10 70. Yep. That's right. Also, let's look at the satisfaction right here Ooh, look at that. It's so satisfying I think I'm done with this. This is quite a A mouthload of stuff to do The video actually turned out a little shorter than I was expecting Anyways guys, if you enjoyed this video, make sure you smash that like button Subscribe to my channel if you're new and turn on notifications for future live streams and videos Comment all your suggestions questions feedback all that good stuff And anyways, have a good day and night and thank you guys for watching. Peace


This special episode of the Bitcoin shows brought to you by MtGoxMTGox.com and Bit-Pay.com and mezzegrill.com and bitbrew.net.com And that is the number one technical lead for the Bitcoin conference and his name is Gavin Rayson. Today I'm going to be talking about the Bitcoin, the technical direction of the Bitcoin project and I'm going to start by telling you a little bit about the history, how did we get here and kind of the shortish term technical direction of what do I see as the priorities for the project. Feel free to interrupt me if I say something stupid or wrong and I hope that I'll have time for questions at the end. We'll see how we keep track of that. So as all of you probably know, I mean Bitcoin was invented by Satoshi Nakamoto. He said it took him two years to do the initial implementation after he had his fantastic brainstorm on how to actually solve the double spending problem. So if you work backwards that means he started doing Bitcoin in 2007. January of 2009 he released Bitcoin version 0.1 and started up the Bitcoin blockchain with the name is Genesis Block. It kind of bought the long, very few people knew about it. It was publicly announced on a photography man on this and I think one other place in January of 2009 but it had very little traction all the way through 2009. In November 2009 the very first multi-platform version of Bitcoin was released. It was Windows only to start so he started with this Windows client that he would run that did everything. In February of 2010 the RPC interface was released which really I think that was key for making Bitcoin take off because once you can talk to Bitcoin and not just run this, once you can start creating services that use Bitcoin on the web things like exchanges and things, interesting things can happen. So all the way through February of 2010, Bitcoins were worth nothing. Zero, zilch, bug cut. I'm on the next slide after this one. So in April of April 25th, BitcoinMarket.com was launched as the first Bitcoin exchange I believe. I think that might have actually been an earlier Bitcoin exchange but this was all before my time. In May 2010 a pizza was sold on the Bitcoin forums for 10,000 Bitcoins which was one of the very first Bitcoins for something physical, valuable transactions. And I first heard about Bitcoin from this article which came out in InfoWorld on May 24th, 2010 which was an article about seven interesting open source projects. I don't remember how I stumbled across the article, it was probably one of the many blogs I read linked to it. So about a month later I launched the Bitcoin faucet which probably all got a few, well depending on how early you were either five Bitcoins which is how many Bitcoins the faucet was getting ready to start or if you got them last night then one micro-Bitcoin, as I know the faucet is getting out today. So when I heard about that article in May and decided the faucet would be a great first project to kind of get my feet wet and playing with Bitcoins, I just kind of got sucked in and got more and more involved in the project, got involved in the Bitcoin forums in the community, started to submit patches to Satoshi who would then rip them apart and send them back to me and say no you did it wrong and then re-implement it. All the way through kind of December 2010 when Satoshi started to step backwards. He did it in an interesting way, he actually sent me an email and asked me if it would be okay if he could put my email address as one of the people to contact on the Bitcoin.org homepage. I said sure, yeah, no problem. He put my Bitcoin address there and so he did that and at the same time he took his email address away which I didn't expect to happen but I think it was kind of his way of saying kind of pushing me forward and the last email I got from Satoshi was in April 2011. So that kind of gives you a history of the project so far. So why me, why am I the lead developer of Bitcoin? Well Jeff pushed me. He kind of encouraged me. I think because I have a pretty thick skin so you can call me to do it and whatever. Because I know I'm not perfect so I tend not to rush into things rashly because I screw up quite regularly but I think my virtue is that I will listen to you if you tell me I'm screwing up.  I should stress it's not because of any prior experience in either open source software or the financial world. My background is in kind of a serial entrepreneur doing a bunch of different startups. Although I did have a prior experience that actually reminds me a lot of Bitcoin and that side was kind of the chief architect of the virtual reality modeling language standard. Which never actually kind of went anywhere. But just dealing with a very diverse community and trying to get people to agree on kind of what the direction would go in that my general experience reminds me a lot of Bitcoin. So I guess I do have some similarity to prior experience. So in my view the priorities for core Bitcoin are first stability and then scalability. So just making sure the system keeps chugging away, processing transactions even though we're getting hundreds of thousands of new people joining, downloading a client, trying to connect to the network every month. That's my number one priority is just to try to keep it stable and keep it scaling up. The second is security. How about security? I mean both the security of the core system and kind of security for everybody's wallets is a second priority. The third is bugs, making sure that things are relatively bug free and down at the bottom of my list actually are usability and new features. Now why that? Well, stability first because it affects everybody. Who cares if your wallet is secure, if you can't spend the money in it, right? If the Bitcoin network just implodes, the whole thing grinds to a halt. So stability and kind of scalability has to be way to the top of the list. Security second because trust is crucial. We've had a lot of incidents in the last few months, really shaken trust for a lot of people. Core Bitcoin has remained trustworthy and I'm actually really pleased at that. I mean the core kind of payment system network has continued to chug along. I had lunch a couple of days ago with somebody who asked, well who runs the Bitcoin network? Because they're from the Visa credit card processing industry where there are fleets of people. And really it is quite amazing that we have this bottom-up network where there is nobody running the network. It's all of the miners, it's all of the merchants, it's all of the peaks all of the world are just coming together and cooperating and it works. Bugs at the third because buggy software is usually unstable and insecure. So bits and bugs is extremely high priority. It features in use for the last because easy to use but insecure software is a really bad idea. So I think part of what we've seen over the last few months is maybe people spending too much time on making their software easy to use and not enough time making sure that it's really secure in the back end. I get a lot of pressure to add features or make things more usable. When people ask me, don't you care about end users? I mean I do care about end users but I don't particularly care a lot about people who download the Bitcoin software and then run it and then complain that it looks ugly. Really because I believe that the desktop is dying. The whole model of downloading software onto your desktop computer and then running it is just over. I think it's all going to be mobile devices and websites. And so if you kind of track the things I've been working on, I've been concentrating on features that make it easier for merchants. I will be concentrating on features that make it possible to run Bitcoin on interesting devices and live in a secure, scalable way. Don't I care about miners? Well, really no. Quite frankly, I mean mining is a zero-sum game, right? So if we make it easier for more miners to start trying to generate Bitcoins, that really doesn't do a whole lot for the system. So unless it affects the stability or scalability of the system, I don't really spend a whole lot of time thinking about supporting mining pools or making it easier for individual miners to generate Bitcoins. It's not on my priority list. Closer? That is loud. So I want to go for where are we at? What's the status? The network is a little shaky right now. There were some problems we had scaling up. We filled up our IRC channel that was used to connect to each other. We've got a hack-in that kind of split people up into different IRC channels. Jeff did some great work on seeding by different mechanisms so people can connect to each other easily. So that's kind of solved the short-term problems. Finding other computers that are actually listening for Bitcoin connections, that's been a little bit of an issue. And we've done a couple things, enabling universal plug-and-play so people's ports on their routers are opened by default. You can't turn it off if you don't like that. But one critical need that I really hope somebody steps up to fill is kind of a network health monitor. So somebody who, you know, daily or weekly is looking at, is he and who nodding? Kind of voluntary, cool. But somebody who just keeps track of, you know, do we have islands of fears that are not connected? Is it taking a long time for transactions to travel from one part of the network to another? And all those other sorts of things that I really want somebody to take charge of figuring out how to measure and keeping track of it over time so that if bad things start happening, we can react to it figure out why. Core security so far has been really good. I mean, Satoshi did a fantastic job. There's been more scrutiny. I know Jacob Appelbaum of the TOR Project had a tweet a while ago where he said, expect to see a bunch of interesting news surrounding Bitcoin. That tweet was because he knew that there were a couple of really good security researchers who were going to take a hard look at Bitcoin. The good news is they didn't find anything. So there have been, that was actually contacted by a lot and popular a couple of features of the system. But so far so good. Thank you, Minsky. You did a talk at Black Hat where he talked about Bitcoin. He actually contacted me a little bit beforehand because he thought he might have found a vulnerability. It turned out, not so much. So, and he told me that was the eighth vulnerability he thought he had found. It turned out not to be a vulnerability because something in the Bitcoin code prevented it from being taken advantage of. So there have been no significant problems found. As far as we can tell, core Bitcoin is secure. I just jinxed my side of the phone. So what about Mt. Gox, my Bitcoin, viruses, Trojans, all of that stuff is, all of that stuff is not core Bitcoin.  But as far as we know, the core is pretty secure. Now, I do have some, well, I'll get to my worries later, another slide on my worries. Bugs are my biggest headache. Quality assurance is my biggest headache. Right now I think there are something like 30 or 40 patches which are, you know, changes to code that people want to get into core Bitcoin. There's a huge bottleneck because I don't know if they've been tested properly. I don't know if they're secure. You know, if it's a really simple, like, fix a comment, kind of patch, no problem. I can read that code, pull it. If you're looking larger, you know, I really need a quality assurance manager who will take care of looking at the bug list, closing bugs when they get fixed, who will take care of looking at patches, pulling them, testing them, you know, sending feedback to developers saying, you know, I found these six bugs and your patch doesn't fly. If you know anybody who would be a good quality assurance person, somebody who's passionate about Bitcoin and who knows about quality assurance testing, talk to me. I think we can find money to hire that person, to be the person who, you know, is responsible for telling me, you know, here's a test plan. It's been tested. This patch is ready to go because quite frankly, I'm not the right person to do that, but we need somebody who will step up and do that. The other big thing that's happening is we're getting alternative Bitcoin implementations, right? So we started with Satoshi's code. That was the only thing that Bitcoin was. Other people are re-implementing Bitcoin in all sorts of different languages and all sorts of different platforms, which is a fantastic thing. I fully support that. We just need to have a good test plan to make sure that the alternative implementations don't screw things up. So usability and features for the very next release, 0.4 release, which will happen as soon as we fix the bugs in it, has wallet encryption so you can enter passphrase and the private keys in your wallet will be protected by that passphrase.  The next couple things that actually are on the short list because we already have code for them are importing and exporting private keys. This is the idea of, you know, I have some Bitcoins in this wallet here instead of sending them over the network to export the private keys and import them into some other wallet. People have been asking that for a long time and doing some usability stuff. So John Smith has a graphical user interface that uses a different toolkit and it's just much nicer. One of the problems we've been having is nobody likes the user interface toolkit which he chose. WXWidgets I don't know of anybody who scans up and says, yeah, that's the one we should be using. So after the 0.4 release, the plan is to move to this nicer, prettier Bitcoins. Yeah, I want to talk a little bit more about wallet encryption to make sure that people don't get their votes too far up. Like I said, it's a wallet with a passphrase and to spend the coins, you must enter a passphrase. So it's, you can look at your Bitcoin balance, have your Bitcoin running. You don't enter your passphrase until it's actually time to quote that send button. You can receive Bitcoins no problem. It's just the send side. It protects from dumb copy wallet trojans. It protects from backing up your wallet someplace unencrypted and having somebody find that backup because the wallet piece will always be encrypted on disk. And it protects also from kind of casual I left Bitcoin running on my desktop computer and a co-worker noticed and so he decided to run over and send himself my whole Bitcoin balance and then ran away. So it'll protect from that kind of casual theft. It will not protect from a trojan running on your computer because as soon as you type in your passphrase that trojan can see what keystrokes are typing and get your passphrase, get your wallet and compromise your Bitcoins. So it's theoretically impossible for kind of a computer to protect itself. You can't install some software on your computer that no matter how complicated you make it will prevent other software running on that same computer from stealing your Bitcoins or stealing your private keys. It just is not possible. And I'll talk about what is possible in a little bit. So top of my wish list is two device transaction verification. So if the private keys aren't stored on your computer, if they're stored on your computer and also on your cell phone or on your computer and also with a web wallet service then you can get secure a very secure wallet where a hacker would have to both hack into your computer and hack into your cell phone to steal your Bitcoins or hack into your computer and hack into your online wallet service provider. So that's very high on my list just from a security standpoint to enable not to happen. Dynamic transaction fees is another thing that's very high on my list. We've had a lot of complaints about transaction fees and we were kind of frankly we were taken by surprise by the huge run up in Bitcoin prices from under a dollar last year to over $30. And so the hard coded transaction fees that we have just were inappropriate, right? It was 0.1 of the Bitcoin, is that right? Excuse me, 0.011 BitPenny which turns out if Bitcoins are worth $30 a piece that's a fair chunk of change. That's so that could happen again. I think we all hope that Bitcoins will go from $10 to $1,000 but if it happens too quickly we're going to have exactly the same problem with transaction fees and that the current transaction fees we can have won't be right. So there's a bunch of design work that needs to be done we need to figure out how we create essentially a market between miners and clients that makes the transaction fees work themselves out to the right level so that, you know so me and the three other people who have access okay? Yeah, that's better. So me and the other people who have you know, the clients shouldn't be deciding what the transaction fees are what should be the market based. Another thing I'd really like to see is a semi-trusted kind of network backbone where, you know, the big miners and the big merchants connect directly to each other and exchange transactions and have more trust that the transactions they're exchanging are actually valid transactions and aren't somebody trying to hack into the network that somebody trying to perform some attack on them by controlling all of the nodes that they're connected to because one of the big things I might worry about is there are denial of service attacks of various kinds I said for Bitcoin to secure what is, but believe there are potential denial of service attacks where you know, you could target a particular node and maybe combine with a civil attack which is where you try to control all of the connections to that node you could you could really mess it up you could have it spend all of this time verifying both the transactions or you could have it spend all of this time doing other useless work just because you decided you didn't like where it was running that to go to Bitcoin nodes the third thing on my worry list actually is incentives for relaying transactions so, I mean, right now kind of everybody, you know, you take transactions in you send the transactions back out everybody's being good network citizens relaying all the transactions that they get but really, there's nothing in the system that says you have to so, if I wanted to, I could take transactions in and just drop them on the floor that happen to be convenient for me that would be bad for the network and as we get alternative implementations happening, I'm worried that maybe somebody will take a shortcut or maybe some miners will decide well, maybe it would be better for me if the other miners know about this transaction for myself and I won't tell anybody about it so, I think there's some work to be done to work out some either incentives or disincentives for relaying transactions to make sure the transactions make it to all across the network I think that can be done what am I actually personally working on? so, recently I've been working on cross-infinitation test suite so the idea is as we get new implementations of the bitcoin protocol, how do we know that they're behaving themselves and how do we know that they won't misbehave themselves if they get weird inputs or whatever so I've actually been working on a framework to test the different bitcoin implementations at a high level and of course I'll test the bitcoin we have now at a high level which will be a really good first step too if you have started up a new bitcoin mode and tried to download the blockchain it's a horrible experience it's terrible, it takes days or can take days so, I've also been working a little bit on a faster initial download so Satoshi had a design for you know, you can join the network and just download the block headers and it's much, much, much faster so, making the initial download faster is certainly high on the list on a meta level watching for more talented trustworthy people to help out so if you know anybody if you are talented and trustworthy start submitting patches let them know that you'd like to help pull patches because we do need more people in addition to that QA person who I really, really want and then just in general embrace and encourage responsible implementation diversity so, you know encourage experiments encourage, you know, different clients because I expect specialization I mean the Satoshi bitcoin client was this Windows executable that did everything they accepted transactions, it sent transactions they could create bitcoins it was, you know, everything in one package we should expect and we are seeing a lot more specialization so, we'll see specialized versions of bitcoin for mining pools, for big merchants for big e-wallet providers and even for end users I expect to see, you know, lots of diversity and the version of bitcoin that you're using on your cell phone or whatever and the general idea for core bitcoin is to make it smaller to move towards, you know a really well defined little bore that everybody can be confident that does everything correctly kind of a reference implementation that people build on top of so, we're taking small baby steps towards that it won't be perfect but I think we'll get there eventually so, that's kind of the state of the project at a pretty technical level feel free to send me an email tell me I'm an idiot, tell me I should care about miners whatever you like and let me just take like five minutes to answer any questions burning questions the question was, who is Satoshi? anybody? I really don't know well, he's not the author of bitcoin but another fellow by the same name is Sagan it's an old joke about who's Shakespeare Shakespeare's not the author of the works on the library called works of Shakespeare but another fellow by the same name is Satoshi Backout he said he was busy doing other projects the current QA system is random it is me pulling a patch trying to judge how much testing has been happening based on what other people are saying by email and for me to personally do some sanity tests to make sure this is actually work for me for example I am running an encrypted wallet on the bitcoin crossover right now which gives me some confidence to send out transactions it needs to get better and that's why where would you like to see bitcoin for 5 years in terms of its use within the economy and the real world how people who aren't into the tech people can use different source projects bitcoin in 5 years I hope in 5 years bitcoin is really boring that I am not getting called by reporters because bitcoin is old news and I talk to a reporter who was trying to do an article about wikipedia which was big news 5 years ago this idea of an encyclopedia that everybody is editing now his editor said wikipedia is boring I would like bitcoin to be at the same place where we all come to this conference and the world is still interested in it but everybody else, oh yeah bitcoin is that internet currency that just kind of works and is used in these 5 or 6 niches maybe to continue to grow and be stable that's what I would like to see in 5 years future of bitcoin is in standing alone by itself and has many types of currency or do you think it will grow potentially with your video currency that I have heard about and so I would like to find that out do I think bitcoin will be an immediate currency or a stand alone currency I don't know so you mentioned what Dan Kaminski said of black hat and he didn't find any like very flaws but he did kind of give a grim prediction for future scalability for bitcoin where he said he thought it was going to end up with these sort of mammoth, just sort of like banks who are supporting you what's your thoughts on that? well on one level if that happens that's okay with me as long as there's enough competition across the world and I think there will be I think it's hard to imagine that in a bank of America will we leave bitcoin process and some bank in the UK and some bank in Asia and some bank in Africa and I think we would still have a system better than the system we have today so on one level even if that comes true which I'm not sure it will I think that would be okay scalability is funny because it's one of those good problems to have if we really do have the problem of too many transactions for our own DSL line to handle cool, great that's a fantastic problem to have so I tend not to worry about problems that are really good to have randomized keyboard for the key logger problem and on screen randomized keyboard for the key logger problem do you ever play whack-a-mole? you whack down that guy and then the Trojans get your keys out of memory of the running process after you've done your typing or they hack the screen display routine so that it says you're sending 10 bitcoins to your grandma and really you're sending 10,000 bitcoins to some guy in Russia right and you don't know you've still entered your passphrase using whatever complicated name so you know I I try not to find whack-a-mole solutions because you just get on this path of always trying to fix the next hack so I think it really needs to be fixed at a more fundamental level which is why the idea of having your private keys stored on different devices than having verification on different devices is really the way to go are there any concepts from the Tor network that can be ported over to Bitcoin? are there any concepts from Tor that can be ported over to Bitcoin? well the whole anonymity thing would be an interesting research project so I would encourage experimentation with mixing of Bitcoin transactions and I'm sure people are going to be they're probably PhD students who write PhD pieces on the optimal mixing and architecture of anonymity networks involving Bitcoin transactions but again that theoretically interesting to me but practically there's so much higher priority that I don't really know you mentioned the problem of finding other nodes on the network through the IRC channel I'm just wondering if the Tor network has that problem solved I don't know the answer to that that's a good question I don't know how Tor nodes find each other does anybody know? I don't know we can look at that there are a few ways of bootstrapping and anything will work it doesn't really matter which one you choose I should probably stop here and let the next speaker speak Jeff Garzik is a a new technology into a BGA structure somebody here needs to work out a better way to do that a special thanks to our sponsors the first MtGox MTGOX.com you know them by now they are the largest exchange for Bitcoins the British pound, Australian dollars and Canadian dollar should be here any day now the Euro is now here with the BitOmat Acquisition MtGox mobile app is now on the Android market it allows you to take Bitcoins on the go and finally with the USB security device the UB key it protects your account even on compromised computers and brought to you by BitPay that's BIT DashPay they are the official merchant processor for the Bitcoin conference they allow you to accept payment in Bitcoin and receive US dollars instead super simple to integrate into your website we did it and finally they allow you to generate QR codes invoices and more just a full inclusive merchant solution for Bitcoin and Mezzy Grill where authentic Mediterranean food modern flavor they're now serving breakfast they're right here on 8th avenue at 55th street in New York City just a couple blocks south of Columbus circle they are the first brick and motor to accept and sell Bitcoins in New York City there are also worldwide franchising opportunities available and we did eat there for the conference and it was delicious and bitbrew.net all coffee orders are roasted in order to guarantee the freshest possible product they do have organic and fair trade coffees as well as rare and exotic high end varieties like the Jamaican blue mountain that's not a blend and Darwinian delight from the Galapagos island estate if you are in the Bitcoin conference the first few people were able to get free samples of Darwinian delight some decaf and other varieties that do have whole bean or ground ready to order now shipping internationally at a flat rate and everything is sold exclusively for Bitcoins using static pricing again that's bitbrew.net