Hey, what's up folks? Welcome back to another 3D Hangouts. My name is Noel Ruiz. I'm a designer here at Adafruit. Enjoy me. Every week isn't for the Pedro. Good morning, everybody. I'm Pedro. I was creative tech here at Adafruit and every week we're here to share 3D-printed projects featuring electronics from Adafruit. That's why it's a show we combine 3D printing and DIY electronics to make inspirational projects. Hello, everybody hanging out in the Discord chat room. Welcome to the show. Good morning, good morning. Apologies in advance. Looks like they just set up to cut a tree right in front of our window. Yeah, we need that. Right to the side. Timing maybe doesn't work out, but hey, this needs to be done. So it's a little bit late because we were reminiscing on this week's project. Yes, this is this massive project here. It's as big as the desktop here. Yeah, so we're going to do the normal stuff. We'll do some housekeeping. We'll call out some shout-outs after the housekeeping. Let everybody know. You have to get closer to the mic. Yeah, I have the mic here. You'll round out. I can see the mic levels look fine. I can hear the noise. All right, let's do the Adafruit.com slash for free. That's where you can get all the information on the deals, the freebies. If you spend more dollars with Adafruit, you'll get more freebies. Check this out. Details are at Adafruit.com slash free. The holidays are upon us. And there's a blog post on the Adafruit site that tells you all about the shipping deadlines. It has been updated every day. It gets updated because the time limits just keep getting. The windows are closing and the time is getting shorter and shorter. So you can see here all the latest details for delivery by Thursday, December 22. Place all your UPS three-day orders by the 16th. And there's two day and the next day as well listed. But it's pretty much it. We're pretty much here. Winter is here. We got newsletters. If you want to subscribe to the products newsletter, that gets products that get released every week, go to Adafruit.com slash newsletter. And if you're daily, you can subscribe to daily newsletters or weekly slash bi-weekly stuff like the Python and microcontrollers newsletter. Shout out to everybody for subscribing to that. This is a good opportunity for folks in the community to share their Python related projects. Give a shout out to the CircuitPython Show podcast, hosted by Paul Cutler. Check it out every week for, I think this is the last episode of the year. So check it out on your favorite podcasting services. Help Wanted, the jobs board at jobs.adafruit.com is still around. Check it out if you are in the market for a new gig or some help with some projects, you can post it up there on jobs.adafruit.com. I think that's it for the housekeeping. Thanks everybody for hanging out in the Discord chat room. We're scrolling to find everybody's thing. Good morning, Andy Callaway, Deweyster, Rosyn, Liz, BlitzCity, Koyoshi, hello everybody. Pedro's there too. Hey Pedro, Yanni's school, Yanni's hanging out as well. Good morning. Yeah, there's chainsaw and long hours. Oh, the good noises. It's about to get loud. All right, let's go ahead and jump into this week's project. A poochie. Special dog. Who is a good boy? All right, let's jump into this week's project. It is a break. We're retrofitting this suite. What year was this in? This iBook with an iPad. Do you do some history, some research on history? No, I put the model number in the learn guide. I never had, actually I didn't have this one. I had the graphite version, but then I quickly returned it for the Pismo. Okay. Which was that black power book to see. Yeah, so this project was inspired by a bunch of the social media builds. Sure. There was a couple of them. iPad conversions. iPad conversions. They've made Raspberry Pi computers out of them. And then a really cool one where they rip out all the guts and stick an iPad inside. That's all we did here. So I took a little bit to find a keyboard that would fit perfectly in here. One of the things that we wanted to do was not destroy the shell. And a lot of the builds out there are like 3D printing this entire two shell. So it's basically half of the original computer in thrown out. So I didn't want to go that route. So we made some 3D printed inserts. So these inserts here hold onto the iPad and the keyboard. I have a trackpad on there that works really cool with the latest iOS. And yeah, it's pretty much just a case with the working handle on here. So it's a very nice way to store and move around your iPad. Very large case for that, but still stylish. I think my wife, Brandy, who she's the one who ordered this gutted it and said, all right, here print stuff to make everything work. She's just going to use it as a desktop with her iPad. So yeah, it's pretty cool. Everything runs on it perfectly. Like the speakers come out of the screen where kind of wish they did. Instead of this tiny little one down here. But you have all this space for adding additional chargers. So if I get that guy there, you can see that the way that this is hollowed out. You still have space for like a key charger for your watch or any other. Oh, I've seen some folks do that. They add some other charger accessories to it. Some wireless charger dongles can fit here. There's all this area where the battery would be. Let's get it in frame. The trackpad is inert, but you have one built into the keyboard. But yeah, there's lots of room in here for stuff. They're usually placed like around this palm rest area for your eye watch. Yeah, there's a speaker still here that you could probably utilize. Yeah, that button could be utilized.  So you can forward it if you want to spend way more time on it. But this is like the MVP. It's the minimal viable kind of project where you really don't need to like destroy this case. And so have like cords. And just adding onto it. That you cannot. Yeah, you can have real things connected to it. Additional stuff. What you want to spend time on it. But yeah, as a kind of a, what would you say, as a two week thing? It was about two weeks yet to get everything. So this, this is the tray. Tell us about the design. Yeah. So we got these little spots here that hold the keyboard in place that there is a little bit of a taper on the keyboard. So you can have like a rusting, like it's perfect for your palm to rest it. And that just compensate for the way that this little thing here moves it up. So the tray, if you guys have a different keyboard you want to do, you can remix. It's not going to fit. Well, that's why I'm telling them. So we searched like all of the online stores for a keyboard that would fit perfectly in here without having to cut anything apart. And that's what a lot of people are doing. This was the only one that would fit perfectly within the dimensions. Like you can see that it actually goes right inside of it. So yeah, if you guys find one that is the perfect dimensions. Maybe people don't want to track that. I mean, yeah. They're all, all the keyboards that we found are a lot bigger. So they're either longer so that you would have to chop. With your design constraints. Now the only downside to this keyboard is that it's not Bluetooth. You need to dongle on there and we'll take a look at how we were able to solve that. Having the magnetic right angle connector on there. So we have the these two little little cuts to align with these tabs here. So we're not cutting anything off again. But like if folks wanted to, I don't know, make their own keyboard, you can use this design because it's the tolerances will fit this model of iBook. And you can put whatever in here. Maybe you don't want a keyboard. Maybe you want another screen or something here. It's a good idea. That's what I'm saying. Like go ahead and take, you did all this work on figuring out the tolerances to fit in the case. That's impressive because you don't have a one-to-one CAD that you can just look at. You had to measure all of this out and figure all the geometry that's inside. So that's a great resource for folks to remix. So I hope people take it because they have before and I hope they continue to. On that point too, the reason why I was able to relatively quickly able to model this is because this is the exact same keyboard that we use in our Raspberry Pi keyboard. I already had all the dimensions. I don't have a CAD handle on this, but you do have dimensions. I have all the dimensions and you have the depth. So I have like again the taper for having this fit in there. That's great. I've used it before in the laptop build with the Pi. Exactly. So all the sketch dimensions are there for that. All the models for it. If you want to again like you were saying insert this into something else or modify that Raspberry Pi keyboard. I'm going to see people with smaller printers are going to cut this in half, figure out how to glue them back together. So folks are going to have to do that, but it is going to fit on the bigger builds. The 12 by 12 inch builds will handle it just fine. On the other Creel T's, they can get the printer just fine. Yeah and it's definitely helpful to have all the libraries of all those measurements because this takes about five hours to print. Sure does. So it definitely speeds up production timing on that. Now switching back to the iPad, one of the things that you, one of the goals was to be able to still access buttons on your iPad. You can be able to access these buttons. So you cleverly made these really nice smooth cutouts that allow you to get your fingers in there. You can still pop the iPad out and it's secured in there. It's not going to come out at the same goal, which is really nice. Man, this hinge is really nice and like grit. Yeah, the only problem is the, it is heavier on this side, but it's because, well it's because I took the battery out out of here. So that would definitely give it some weight, but I just didn't want to have the battery in there because it's already, you know, relatively heavy and compared to like, you know, the iPad itself, like an iBook Air. All right, so, uh, yeah, so the, let me get this in. I don't have any fingernails to get this out. So yeah, the iPad pops right out like so. And then here is what's happening with the dongle. We have the magnetic right angle. So none of the ports get damaged when you actually insert this into the bezel. And we have here the USB-C to USB-A converter because the dongle. What do you know? It's a very Apple-esque, right? Having three dongles. So yeah, that pops in like that. That's great. Love these things. We're at a stock because everyone loves them. They're really great. You can have different tabs here. They're compatible. Yeah, little tips here. So these can come out. You can have multiples of these, like have one already in your microcontroller board and just swap between these. Yeah, the Mars is loving those. Especially brought them in the shop. And they have a full 12, 120 watt, so they can do some high current stuff as well. Exactly, yeah. So all that works. Does this work this way too? Yeah, it works. Oh, that's great. It's right or left angled. I just blew my mind. I think the product description says right angle, but it's whatever angle it works. For my build, yeah, it's just pointing down. I don't know why I did that. Can we take this bezel out? I have to unscrew this. You got two screws here that are holding the 3D printed place. Good point. We'll recover it when we're over it again when we're looking at the guide. But yeah, only what is it? Two, four, six Torx screws. They're the T8 Torx screws. That's all the screws that are required to hold the four shells together. So bottom and the top ones. Oh, a screen on its own with the reflection of the lights. It looks cool. Yeah, so this side. How do you pop it back in? Yeah, so just slide it in. There's a little space for that guy there. And it just pops down like that. Cool. And now we're in fusion. Whoops. That's great. All right, yeah. So super simple. Same thing with the keyboard. We already showed that. And then yeah, the coolest part of the build, of course, is that the handles are fully packed. You have the little spring in there too to have it pop back in. Very fun. Do you have a lot of fun working on it? Hold on. I'm trying to get my stamp. I think it's my battery died. Okay, yeah. So let's go over that again. The coolest part about it is the handles. The work hinges and the springs. Oh, I think my glasses are overheating. All right, cool. Too many snaps, man. I think so. And cool, yeah. Like you were saying before, you can hook up the speaker. I didn't take that up, but that could definitely be hooked up to like an amplifier or something and have the... There's no audio jack on this guy. So, whoop, never mind. The pad, yeah, and the iPad, bro. It's got really good sound. It sounds great. It's typing GarageBand. The keyboard does work. How about just Nano's? No, I have a song already in GarageBand. Oh, let's see. Does Control Tab still work? Let's see, yep. Control Tab and GarageBand. Oh, and that's obviously, we forgot to mention that too, the trackpad, yeah.  It feels like a real laptop with the mouse. That's a big deal. Yeah. Here's a quick sound demo. So having this in the studio, like having the aesthetics of an old school computer. Super cool. Those are beeps and bloops from yours truly. Coming out soon. Maybe. So it's a lot of fun to take an old thing, revive it, bring it back, and with 3D printing, man, you can just make it adapt to anything. It's really, really cool. This is one of those projects that were really intimidating, like me and Pedro wouldn't originally done it, so it was too much of an investment on her part. In case it didn't work out. Good point, yeah. It's still a cool thing. This was about 150 bucks. When searching for these on eBay, like they don't have to work. You know, all you're looking for is this shell. This one didn't have a working power adapter. So I couldn't even test. I don't know. Let's take a look here. Let's see, is there any? Yeah, yeah. Got a good boy. Yes. Yoni iPad Pro's good use case right there. Yes, yes. You could probably honk and bingle battery bank in there. Yeah, you could put a big battery bank in there and it'd become your charger bank. That'd be cool. Your device can charge through it. Very good idea. I think the 66 or one of our USB battery banks would fit perfectly in there.  That sounds like a Jeff Applique question. Like, is there a correct position magnet to turn off the screen? I'm not sure. Also build, of course. Oh, the iPad's, it has a proximity sensor. So when you put it over it, it turns off. Oh, that's right. Yeah, the iPad will turn off. You can do several things with the iPad. You can have it turn off on auto-sleep or you can say on proximity. There's ambient sensors over here. There's a front-facing camera as well. Oh, yeah, yeah, yeah. That's really nice. Like, this is an iPad Pro model. So it's fully featured. It's got a bunch of... Yeah, it has its own sensors.  Yeah, let me do that. Proximities and ambient sensors. So like a FaceTime call, the Zoom meeting. Like, this is a really good thing for that. I haven't played with the iPad OS in a while so I was very surprised to see how much of a desktop it finally is. There's a window and window, what is it called? Oh, yeah, yeah, yeah. You can hold task apps now and all this. That's not trying to be an iPad ad here. I mean, it's... I'm impressed. Yeah, modern iPads are nuts, yeah. They're nuts. They're basically... Yeah, that's why, again, the... That's why this makes sense, right? Absolutely makes sense, yeah. Turn it into an actual thing. I'm surprised Apple does not get into all this. Yeah, just sell the shell for your... My book. I don't think anybody does. I know, third party. No, it's a lot of work. Hopefully I'm wrong on that. Somebody puts the link. But let's go ahead and jump into the... Could you put where the trackpad is? What could you put where the trackpad is? I guess another trackpad. Yeah, anything here. Again, we didn't want to... I'd love to have the Apple watch and you'd be able to charge this. So, a two-charger under here. Does the button click at all? Yeah, it clicks on. There's no more, but this is... You can probably rip it out or something. No, it's just hanging there. You just connect it to whatever. We do sell trackpads, so I bet you could hack it. With some more time, you could use our trackpad or put a trackball mouse in there. We have a trackball mouse. Liz says, Pie portal, hotkeys. Perfect. Oh, that's a good idea. Oh, imagine a macro pad built into this. That'd be so cool. So many fun ideas, so keep them coming. Let's continue on. We've got some more extra batteries. I think the Rhee has a Bluetooth version of that particular keyboard. They do. Yeah, they do. Go look at the dimensions for that. Oh, yeah. We tried. I think like two or three days were spent on just looking for a keyboard. I ordered some. They didn't fit and they're smaller. They're like the tiny little thumb ones where Brandy's like, I can't type on this. Like she's going to use this for actual work. You know, an eye pencil. What are they called? Apple pencils would be great to have here. One of the recommendations. Yes. If you're yes. That would be perfect. Yes. Because the way that the other builds are working. Yeah, just make a groove right here.  So he has like room for the pencil. Oh, really? Having the pencil right here. Yeah, that's a perfect idea. Yeah, yeah. I don't know where the pencil for this kind is. It's somewhere, but I'll have to look for it just so I can get the dimensions.  Because that's one of the things you got to look at too is the pencil thicker than this. Because it's already going to be thinner than it is right here. Yeah, yeah, totally. Yeah, I wish it was the same size. It was so bummed out when I looked at the dimensions. It's like, oh man, this isn't going to fit. It's like actually wider. It's like, I don't know why they couldn't keep the exact same footprint. Like just add a USB or a Bluetooth. Maybe people were like, it's too small. I need a bigger. No, it's one of my favorite keyboards. Yeah, I mean typing, like the clickiness of it, the trackpad being right there. Yeah, but being able to pop everything out is so critical, man. Like being able to replace the battery. And I'm destructive. Let's go ahead and jump into the learn guide. Yeah, so. And it's so fun that we're just, we can just babble and talk about, this is actually what we started this show. Right, because like I just want to run what our lives were during this era and why we chose to go with like a pro version. Yeah. Firewire. Yeah, firewire. All right, so head on over to the 80 for Learn system. We got the guy published earlier yesterday. Yeah, all you really need is that keyboard, your iPad and this dongle here. So if you want to use in stock. Yeah, these are perfect. A couple of these for any of your microcontrollers. So you can have those ready to go. We have different types of tips. So there's USB-C. There's micro there. What else if you scroll down and show the other ones that we sell, of course, I'm not going to show up in the suggestions. There you go. A micro and a panel mounted. Yeah, one. Yes, pencil for the case. Excellent. Yeah, I forgot about the math pencil. Yeah, for an artist, that would be really good. Or whatever. Yeah. So any who? Yeah, you can swap these out. These are great. Yeah, you can swap them out. They can do higher current stuff. Yeah, 120 watts is it's listed there. So perfect for charging. There you go. For your older MacBooks that don't have the... They're a little pricey, but that's because you can do data and power. You got to pay for the chips that are not going to blow up on you. Yeah, it's a really fancy dongle, though. Cool, cool. Some extra screws. The Torx screws. Yep, I needed those because the bits we had, they stripped on me. Yeah, luckily, it wasn't the screw that stripped, it was the bit. Nice. Freaking stripped. Yeah, those are cheap bits. Like, dang it. Yeah, some like pewter metal. Oh, and some parts. I think either John or Ann added these. Oh, the cables. Perfect, yeah. Yeah, in case you want to charge up stuff. Okay, cool. Cool, cool. Yeah. Jump on over to the 3D print. Just these two pieces. You are going to need supports. Yeah, sure. Yeah, there's some overhangs. I list where those are. Yeah, there's no way around these. Now, supports are great these days, folks. Like, it's all good. They're really good settings here that you can try out. Roll over the iPad insert. You can see here the supports for these. It's only that little, what is that? That bar, that's right where the USB connector is. Click on it, make it big. What is it? Just click right on it and it'll go to the original size. You can see here that's the only spot I added supports for the iPad insert part. Did you do custom support blockers? Yeah, no, just custom supports inside of Cura. If you don't have that installed, it's under the marketplace and the plug-ins. That's a plug-in. It is free. It's a free plug-in.  All the other spots, there's a big old fillet on there, so you don't need supports for the entire frame. For the keyboard frame, I could add any fillets on there because then it would have pushed the keyboard up. I got some ideas here looking at this. This is full on the bed, man. This edge-to-edge. It looks like you have a skirt. If you're noticing that the part doesn't fit, you always want to check the skirt distance. Drop it down to one millimeter from the distance. Otherwise, it will not fit. Right, so that's a good thing because they tried to take something big and I was like, why isn't it working? I know, but it was because my distance was like 10 millimeters. And that's the default? Yeah, the default is 10, so that's a good tip there. Always check your skirt distance for those big old boy parts. I need to start adding that into the boilerplate settings. I like talking about it in live because that's what we offer here on the show. It's like the actual tips. You're looking at it kind of a first time with fresh eyes. I'm like, hey, don't forget about that. That could be a potential problem. So you can download the Fusion 360 files or just the STLs. Do you want to modify those? Are you ready to go, I guess? Yep, yep. These are oriented. Just pop them in like that. The PLA, the tolerances will probably work out to vessel PLA. This is easy to print. You can try PETG, but you don't know what the... It should work. There's no differences in the tolerance for that. Yeah, true. And the filament, we're just using the white. I think translucent will work just because of how many shells there are the roofs and the floors. It will match pretty closely to this white here. Yeah, it does. I've already seen it kind of blends. You can kind of see the infill. You could get some turquoise filament and like print it so it pops a little bit more. I don't know if that's how this design was, but yeah, you could totally do that. No, it wasn't, but you can... I mean, you can kind of see some right here. It would match this maybe. But this is underneath. Yeah. Never. Yeah, whatever. Going into the assembly for this. I did not get any footage of gutting it because that was all brandy. Yeah, so... And I didn't think this was going to work. There's plenty of resources for folks. I think you can pull up some guides off of iFixit maybe. You can find how to gut it. But hey, Brandy just kind of looked her screws. She's never built a PC before. She's never... So that's testament to like anybody can do this. Anybody that doesn't have tech experience like we do. Brandy was able to take it apart. I think the only thing that I helped with was like removing the airport card or stuff that I knew technically. Oh, that's just... You need a little bit more force and pop that out. Or just how it comes out. Like the port for the keyboard pops right out. Oh, right, right. But it's because we've changed RAM on it so many times. Sure, yeah. You kind of already know that. Do have a little bit of muscle memory on it. Well, that's great. She did kind of the grunt work, but a little bit more of like the trenches down in there. Yeah, and like you were saying, I'm sure there's like a detailed YouTube video on completely dust assembling everything and fixing it. Yeah, right.  Pretty simple. We already demonstrated that. And then the screen before you put the frame bezel back on. There are these little tabs that will go up against where these little frames for the hinge are. Should I make it bigger? Yeah, I don't think you could see them there.  I don't know if you can see what I'm pointing at. Maybe I can grab the real one. Yeah, somewhere around there. There's two tabs that prevent it from sliding down. So you just tuck it under? No, you just tuck it right up against it. Oh, OK, cool. Yeah, it's like a stopper. So it can't. And then stop, yeah. And then stops. You can't go down below that. OK. And it's because of the way the shape is. It can't go above that either. So it's perfectly aligning it over offset just a little bit so that you have access to the power button. Next up, you're going to set up your adapters. Pretty explanatory there, which way they go. The A goes in the C. The C goes in the right angle. You'll pop in your iPad-like show. Once the things are connected. And then you can place it right on top, centered. And then the bezel goes right on top. Just two screws? Two screws for that side. And then closer to where the hinges are on the back, there are two more. And that holds the rest of the shell together. That's pretty much it. Wow. Here you go. Retro. So the most time-consuming part is going to be gutting it, huh? I think so. After that, it's all like, man, I just popped this in. I did get snaps of her assembly. They didn't take that long. Maybe like an hour or something like that? To completely take it apart? Yeah, not even. Maybe 30 minutes, something like that. These come in different colors. This is the blueberry one, I think. Yeah, maybe the most popular one? I don't know. Perhaps. There's a title of the screen on the back there. So we're assuming this is beat around. These were bought probably by the dozens. Remember purchasing stuff for our school? And yeah, they were coming in. Assembly of Taiwan. I put the, in the overview page, you can see the model number that I listed there. It's 24 volts, 1.8 camp max. We're looking for the ID right here, the M25. Yeah, the M2453. It's cool to look at designs. It feels like things are, I don't know, more disassemblyable because look at this screw. Oh yeah, you can just use built-in screws. Like you're so fancy to machine their own screws and stuff. Like that's so cool.  When it's flush up against here, you can see how the change of it. There's so much like design details in these. Yeah, I would have loved to have gutted it. Because then you just learn so much from taking stuff apart. A lot of folks will tell you that. Like, oh, I started like taking stuff apart. Yeah, there's a lot of design cues. Given the way that the bezel snaps in, there's like these little guides that like it clicks into. Lots of good inspiration for designing things. All right, cool. And so that is the build. A retro iBook. Whoa, I've been inserted. We've been playing with this so much. But pretty good. Typical. All right, let's go ahead and jump into the next section. Segment. Segment. Shop talk. All right. No, no, no, no. Sorry, we'll be prototyping. We'll be prototyping. All right. For next week. Hey, for next week, we got a countdown clock. It's a collab project with Liz. She wrote the code for it. And it has as a QDPI ESP32S2. And three of the new STEMMA often numeric displays. The idea is to make it a Wi-Fi countdown clock. So it connects to your internet, your Wi-Fi. And I don't have the, I have some demo code right now. So let me switch that real quick. So folks can get a look at what it does. Here it is. I will change this to demo. And then this one will be text demo. And this is my demo. Here we go. All right. So it just gives you a little message here. And then it'll connect while it's connecting. It'll say it's connected to your IP. Nice. And then it says 10 days, 12 hours, and 27 minutes, and whatever seconds. You can change the speed of the text scrolling. You can change the dates. You can change the wording, the fonts. Well, not the font, but like the capitalization of the font. And the message. So there you go.  So it could be New Year's, whatever date you want to set. And you can have some offsets or something, I think. So yeah. Pretty cool countdown clock. This was an idea from Katny. And at least wrote the code. And I did the case. And we're all kind of working on the guide. So it's a really simple three-piece design. You got my QDPI add-on that Snapfits. It has two screws here that attach it to this base. And then the plate here is panel mounted. So it's kind of a really simple assembly. It's all open back so that you can quickly get to any electronics if you need to. We're using STEMMA cables here. And the only soldering you need to do is the address, the I2C addresses in the back there. So you have three different pads. So each one of these has a different jumper because you're changing the I2C address. Yeah. And you can choose whatever color of alpha numeric display you want because they're just single colors or you can have three different colors. Yeah. So it's kind of a fun thing. It's at a nice angle here for the desk mode. So that's kind of it. I love how legible it is. It's very legible. We thought we were going to have to use these gel things. Yeah, you could use gels if you'd like, but you don't need the endless view. If you have the control over your camera's settings, you can totally change it. And then you can actually change the brightness in the code as well, which I didn't know. I'll save that for next week because it will be next week's project. But yeah, you can change the code, the brightness value in the code. It's all done in circuit Python, of course. Of course. I think that's like we didn't even need to mention that because what else are we going to use? Yeah. What else are we going to use? Arduino. I can't like connect to quickly change my Arduino sketch. I'm just not that good. But anyway, that's going to be next week's project. Count down clock. Count down to 20, 23. Yeah, 10 days until Christmas. Wow. Oh my god. Yeah, it's right here. All right, so that's orders are coming in. That's what remind everybody to put your orders in now. Yeah, I know. So you're not sad. Yeah. And Pedro is prototyping. What are we prototyping? Brent Rebelle released much anticipated PicoW support for Whippersnapper. Check this out. How freaking cool is this? This is great. So let's drop us through the hardware. Do you guys know why I'm so excited for this? Oh my god. Jump into the get into the IO for this. All right. Run down the hardware when you have. Only. So this is a six dollar Raspberry Pi W. So wireless. Pi cow. We have not just the Pi cow W. We have the Pi cow bell prototyping board. I knew it. You would have. So we have a stem action on the back. Yeah, no soldering. Well, a lot of soldering to get the headers on. After you solder. Well, you don't need a solder on the stem, right? And then it makes it plug and play now. So you can connect any sensor to your PicoW or PicoW. Yeah. So this is what is it? Six, seven, eight, nine, 10. No, wait. How much is this? I don't know, but it's a very low cost. I think it's like 10 bucks or something. It's low cost. 850 or something. Adafruit IO project. So do it. Adafruit IO and Whippersnapper now have support for the Pi cow. W. Yes. The name is weird. I know. Chip it to Adafruit IO and check out all of the readings this is getting. I already made the dashboards. If you want to go to the dashboard too. Sure. So just click on plus and you can see all of the... I didn't test any of these yet, but there are all of these I'm going to as soon as the show is over. You can have access to all of these different sensors. My God. Components. I haven't looked at the sensors since our last IO. Servos. I did these. I can't speak. These are great. All the waterproof stuff. I'm helping out with all the... Dimmable LEDs and the... Piazzo buzzers. Piazzo. Piazzo. Piazzo. Piazzo. Yes. Six dollars. Pico W is six bucks. Six, seven, eight, nine, 10. 10.50 for this little build here before. I think like the feather is like what 12, 15 bucks. So I'm able to have all of this with just the Pico W and then dump into the dashboards, check out the graphs. I should have put a nice emoji on there. Pico W and of course the CSS. Edit layout. Rearrange those. Jumping around. And there you go. Jump, jump, jump around. That's fun. In you CSS. There we go. Cool. Nice little graph of humidity and the temperature in here and a graph plotted over time. You can see there I got this set up at like 9.27 in the morning. Prophets in the data. Freakin' awesome. Very cool. Now I gotta make a case for this. Yeah, yeah. Make it like another node thing. I think Brent wants... What did he see? So when the sun goes out it'll like turn off some LEDs or when you close a cabinet it'll like turn off the TV because you can put a smart outlet on this and have it trigger when something else is sensed in one of the components. Cool. So check it out if you want to test out your PyCow. It's ready. It's there. With Whippersnapper and Adafruit IO it's supported. Oh one thing I forgot to mention when you're inside of... There's the PyCow. Inside of there and... Devices. No add a component and go back in. Add a component. Wanted to highlight show dev. So you can check out some of the things that are in the work. So if you scroll all the way down you can see that RGB LEDs are in development. Oh cool. To make a new kind of part for that. Yeah. So that means Neopixels coming soon. Brent's idea is going to be cool. The buzzer shake when you roll over it. That looks nice. The buzzer's going to have it rotate like everything else. No I like the shake. Where's the IR? It's pretty fun. It spins. There's something else that like spawned and did something. Anyway we're at the topic here. We're off the rails. So check out the new update to Whippersnapper and Adafruit IO. It's great piece of hardware. We know a lot of folks are going to use it. So you'll need beta 0.57. It's the only one that'll... Through the installation process. So pretty easy yeah. Oh man. The only little got to there is I think the Apple computers are still having the problem with try getting dropping stuff. Oh that's if you're in the Torah. So don't date to the Torah. I have not. I have no choice. I have to test newest. I got a choice and I didn't do it. I know you're different to development. All right cool. Well yeah that works perfectly. Please file any reports or issues that you see in beta 57. But yeah go ahead and spin it up. Check it out. I'm sure there's a couple of people with a PiWs just sitting there waiting for the next project to be brought to life. Yeah this is gonna make a lot of... This is perfect. Oh my gosh. Kind of projects like I just have this ideation and I just want to see if it works and what better way to just kind of click around and get it working. Right. Can I plug the Pi Cowbell too? Look at all that. Product typing area. You have all these grounds and power rails like... Dude. Yeah and that step up port on there is really really great. Freaking sweet. Yeah. Do you have any buttons on there too? Yeah you have a reset button right here. And it can be a user button too I think. Yep. How freaking awesome. Yeah you have to figure out how to make a case for it then. So the one of the first things I want to do is another soil sensor monitor. I don't know if he's working on it right now this minute but it is on the list having deep sleep. So I'll have like one of the cylindrical ones. It'll be a thin skinny little spike that goes into the plant. Little test tube. Little test tube. Little beast test tube. Yeah that's all I'm going to say. Little beast test tube. Yeah. But super stoked. Freaking awesome. Yeah. Good way to save face. Yeah we'll try to do a video kind of overview. That's coming up. Yep as soon as I get all my testing in just that setup. All right let's move on. Let's do the shop talk this week in CAD parts. We got a whole bunch of new CAD parts. Let's take a look here. I'll run off the list but you can get 3D models of Adafruit parts by hitting up the Github repository. Just search for Adafruit CAD parts on Github and you'll find it. So this week let's see what we got. All right this week I got the Feather M0 Bluefruit LE that was a user submitted. It was a user requested BART. And then on our side we got the SPG 40 humidity temperature sensor. The ENS 160 sensor and the NAU7802 breakout. So check those out if any of those are in your projects and you want to design something around those parts. Check them out. And if you have any parts that you don't see you can always add a part request in the issues tab. So check those out. Shout out to folks who have been requesting that. Like I said the Bluefruit M0 was a user requested part and I was able to get that one out while we're doing the other things. So check those out. Those are the latest parts and we'll make more as we move forward. All right. I have not been putting links every time it's my turn for the projects. Yeah cool. All right this is it for shot talk. All the... Oh what the community makes? Yeah yeah. No no I know. I was just looking at the owl. All right so this every Tuesday we 3D print something from the community. This week it's a tea light tree. This thing is pretty cool. This was designed by Javier Serra. Serra made a chandelard bowl. What they called it. I can't even pronounce that. This was 3D printed in Mermaid Blue PLA from Proto Pasta. It allows these tea lights to to get fitted on there. Again these are not real flames. Yep they're tea lights. They're LEDs. It's just fantastic kind of festive looking. I like the design. Candle holder so very nice. Don't use real candles. Use LEDs. They're festive. They're gonna need supports to hold up the little floors for where the candles fit in. But go check these out. Yeah fantastic filament again from Proto Pasta Mermaid color. It's got like a seafoam green in it or something. It matches the the blueberry iBook very well actually. So if you want to print your insert in that that'd work well. There's some support material that was for each of these things. Yeah each one needs it. So what is it one two three four and that's it. Yeah that's pretty cool. You know tubes are nice in these tubes. These are just kind of what meshes nice and thick. It's strong so a kind of a neat one. If you got tea lights and you want to look festive print this out. Yes if I are not recommended. All right and that's uh this week's time of Tuesday. Let's pull up some community makes. All right first up we got a heat set insert. There's always a heat set insert every week yeah. All right this week uh we got one from Salute. Salute posted up their make of the heat press insert. Looks like they added some sort of a base for their uh for their power supply. It looks like with uh some additives and stuff. So that's pretty cool. It's good to see folks adding um their equipment to the build. So that's cool. There's no text on it but uh it's great to see a photo of it so it's really nice. All right next up we have a remix of our extrusion 2020 wall mount by light jk01. Posted this up on Thingiverse. So if you're ever looking for a wall mount for a 2020 aluminum extrusion. Maybe you want to hang some things on it. Um you could use this 3d printed um kind of pieces here that will mount to the wall or whatever surface. Looks like they're using it for their headphones and some other odds and ends. I use it for my hats but they designed their own kind of uh remixed it rather to have their own little hangers. But uh yeah aluminum extrusion is great for mounting stuff and attaching things. So check that out. All right we got some leftovers from halloween season. Eurus Hooper posted up their make of um the pumpkin skull remix that we did. So you can check that out. Gave it a good rating and it seems to print well. Next up we have mag tag stuff. So if you're looking for a case for your mag tag check this one out. Corky posted theirs up. Gave us a rating 5 out of 5. Look at that. And uh there's their printed uh case with the magnetic feet on the fridge. They've got several of them or something. Like three of them. Oh wow. One for everything. Nice font too. Really nice e-ink display the mag tag is. So check it out. Thanks for everybody posting their makes on that one. Well you don't have one but two mag tag posts. So let's check out the second one. This one from ds dst rum ohm. Dstrom dstrom posted up on crucibles. They say this is an awesome snap fit case that I have used with magnetic feet. I have slight modifications to the front cover stl in order to remove the button covers. I'm too fingers are big so I want to I didn't want to risk damaging the cover. And I'll leave it at that. But yeah look at this fantastic teal color of the mag tag case. It looks really nice. Look at that font. Looks fantastic. I haven't seen that teal color since. Maker bot. Maker bot. Yeah in 2010 days. It was ABS. Yeah. So check it out. Very fun. Two mag tags this week. All right we got three more to round it off. Here we go. Here's a make of the Mario inspired boom. Planter with the very festive succulent I think. And printed on a flash forge. Whoa remember flash forge. Nice. Oh it looks like it's dual colored or. No it's painted. Nah. Oh yeah the paint can run. You can see the leakage a little bit. But it looks fine. All right and the last one. I think it went backwards. I forgot the pi case. Raspberry pi case that has a face on it. This was I think a remix by Mongo maker. They posted a third mix of the Raspberry Pi case. So it's not fits I think. Or maybe it has screws I can remember. They didn't like the Cosmic design so they made it into a simple Raspberry Pi logo. Yeah you're free to do that for sure. Yeah. Yep modifications are always welcome. Yeah for sure. Make it yours. Okay and then the last one is an iPhone case. Flexible MagSafe case. So they remixed Pedro's flex case. Nice. Made a nice big cut out for those wireless MagSafe. Nice. So if you're looking for a flexible case for your Apple phone. Super cool. Check it out. They say I modified an iPhone case to add a MagSafe opening to the iPhone 13 Pro. Very nice. And this is printed in TPU filament by Neat Filaments. That's a new one. And printed on a cruelty under five. Very very cool. They can pilot to plotter for posting that one up. And that's this week's community. May shout out to everybody for posting their makes. Awesome. Very fun. And then back over to Discord. We're about to run there. That's pretty much the show folks. We'll let you know that tonight is show Intel. We'll be hosting tonight. So we hope to see you there. We invite you to come on. Share what you're working on. And then JP is still at it with the new time change. Every Wednesday at 8 p.m. is JP's slash asking engineer. On Fridays, we have the deep dive with Tim, full may guy from the desk later will return at some point. We don't know when. Soon, soon. Maybe Monday's are circuit python weekly meetings. Every Monday at 2 p.m. Eastern time. You could always check out the archive too on YouTube or whatever podcasting service. Part of the week's by JP are every Tuesday at 4 p.m. Eastern time. And then we do the Wednesday show in the morning. So yeah, other than just tonight, those two shows and tomorrow we'll see you folks next week. Any last questions? Yeah, DJ Devan is asking about the support plugin. Oh, sure. Yeah, let's take a look. I can open up Pure 2. Don't believe I have it on this computer. But yes, you are going to need a, I think there's a fix watertight option. Is that the mesh tools? Yeah, mesh tools. Yeah, I had to reinstall it with my latest update to Cura. Oh, so there might be an update too.  So you can see it on my screen, full screen here. Here's Cura. Marketplace is kind of hidden. It's up here and it's kind of like marketplace. I don't want to buy a thing. Yeah, I know like marketplace, but you can sell it. I suppose if you were a developer. So I just clicked on the button, the icon up there, marketplace. Check search. Yeah, you can search for mesh tools. Supports, type in supports. It might be the cylindrical custom supports. There's a plugin. Okay, here's my, scroll down. Maybe it's that cylindrical one. Maybe, what do you mean maybe? Yeah, this might be it. Yeah, this is the one that lets you add your own custom supports. I think mesh tools. Teller is cross. This, I think this is it. So let me install that. I don't, I haven't actually used it, so. Yeah, this is really good because you can choose different shapes. Yeah, look, pillars, bridges, arcs, sections, cross-reform. Yeah, quick, quick Cura real quick. I have to quit it in order to do that. To do it. We're doing this to, because. I need to set it up. Yeah, I haven't set it up on this computer either. Yeah, I noticed there's some of your profiles in there either, like the CP2. Drop a, whatever, recent marketplace. Oh no, you got to drop some, drop a STL or OBJ or something in their model. So you can actually look at it and click on it. Yeah, that's what it is. Let's see the little cylindrical one down there. Okay, so let me redo what I just did. So you click on the model, your options show up here. It's, it should auto populate once you restart a Cura. So there you go. I used the rectangular ones. This one? Cube? Yep. And then how do you use it? Just tap or click on anywhere on there. Probably on the model I think. Oh, there it is. Yeah, there it is. And you can see right here the object list. So if it's like hidden, you can look at your object list and click on it that way. All right, maybe look at a tutorial on how to use it and stuff, but it seems to be working. I just, I haven't used it ever. And then go to your move tools to move it around. Make sure you're only selected on the support cube because then you'll move your model around after spending all this time placing it all carefully. I'd want to watch this tutorial. So always look at your object list to make sure that you're clicking on the support. The scale, you'll probably want to do it not uniform. Yeah. So you can zoom out so it'll scale it up bigger.  All right, I know you can play with that. It's too much flipping around folks. Yeah, it's a little bit annoying. Yeah. And you could see it messes with your model too, if you're like too close to it. Center selected. I think it's command R for, uh, oh my gosh. Yep, it does too much. It's like, oh no. What have I done? It's like looking at every face. I don't like this. It's command, it's command R to center. I could have just infused it and been done.  I know. Look, I have never used this plugin. So that's why I'm like treating it. No, I'm glad that we're showing it here because it's like, it's, you know, you got to get some, sorry, I didn't actually show any of that because I thought I was showing it. But anyway, look at its tutorial because I was just literally like, Yeah, you got a reading around. Yeah, quit and restart. Yeah, but it's there. Quit and restart. It'll tell you to restart. Oh no, they were saying that for the screen. I know, that's why I'm showing it now. Yeah, I forgot to show it. But hey, it's over here. When you click on your model, it's down there. It's called custom support cylinder. This is a support blocker. So I don't know if that's the part of the same one. No, I think the support blocker is part of mesh, the mesh tools.  But you do want to make one to block, you know, this one area you don't want supports. That's what that's for. Let's do it. I think you got to click down on it. There it is. It's a big, big support. Look at it. That's funny. Any hoodle. You'll want to watch the tutorial if there is one. Check your object list over here. Check to make sure that that's what you're clicking on again because that's the biggest annoyance. Yeah. You want to move a thing and it moves the entire model. That's very helpful. I wouldn't have known that there's an object to look in the object list for your support. That's kind of cool that it treats it as a real model. And then click and then click again on your object.  I used to like that until I had to do like screenshots and I didn't want things moving around. Yeah, that's an option. And the camera flips me around and it's like offset. It's like, why are you... It's an utter over here. Center camera when item is selected. I was going to be like, Woosa, this is beta. This is free. This is open source. This is from a different company, not cruelty, you know. But anyway, I hope that's helpful. Yeah. So I use a whack-up tablet as my mouse. And I cannot use it inside of Cura since like version five. So for years now, I have to use a trackpad when I'm navigating around in Cura.  So I have a physical pain like... Wow, can you imagine that? I have to use a trackpad to navigate because I can't use... It literally pains me to use your tool. It's like they hate people who do sculpting. Is that what it is? This is your hate people who are modelers who sculpt and have to use a pen. Well, this has turned into the Cura podcast. This is great though. I like being able to show workflows. Yeah, I'm showing our frustrations. It goes hand-to-hand, okay? Yeah, I was watching you do something in Fusion and it's like, where are you messing up in my time? Like, ah, it like relieved me seeing that you two have this problem. I thought it was me. I thought it was the best at constraints and everything, but you're still going to run into these fusion errors.  Oh, yeah. Or because I added a sketch here? Oh my God. Oh, yeah, freak out. All right, that's the end of the show. Yeah, that's going to do it. We're going to see everybody tonight on Show and Tell. We hope to see you there. I think we're off next week or... Yeah, it's Christmas X week, right? Um, we'll be around. I think we have a show. Let me see. I think we'll be on Show and Tell or something. Yeah. We're not doing the show, though. You don't want to do the show?  Yeah. It's the 21st. It's on next Wednesday. So we should be good to see you folks next week. Okay.  We got lots of fun playing stuff. And that's what the project's coming up. Yeah, we'll see you folks tonight, though. Yeah. And with all that said... Remember to make a great day. Make a great day. Bye, everybody. See you tonight.


I'll be talking about non-malay bullet time lock puzzles and applications. This is joint work with Cody Freitag, Elon Komorgotsky, and Raphael Kass. I want to start with the task of generating randomness among end people. So the model that we're in and that we'll use throughout this talk is where we have many people that have access to a public bulletin board. And the goal here is for them to agree on an unbiased coin. This is an incredibly fundamental task with numerous applications like electing a committee in a blockchain setting or playing an online game or digital lotteries or really any application in a multi-party setting that requires trusted randomness or unbiased shared randomness. As a warm-up, let's just consider the two-party setting. So we have Alice and Bob, and the goal is for them to flip an unbiased bit. And as a naive attempt, just so we're on the same page, maybe the first thing we might think to do is just have one party flip a coin and post it on the bulletin board. Obviously, this is a problem because then you have to trust this party Alice to flip an unbiased coin. A better idea is for both players to flip a coin and then combine them. This is the idea where Bob flips a coin, Alice flips a coin, they post it on the bulletin board, and then we combine it using a suitable function, for example, by setting the output to the XOR of their input bits. Of course, though, this is completely insecure. And the reason is because Bob is going second, so he can pick his bit B2 based on B1 because he doesn't have to post it to the board until after he's seen B1. In particular, he can just pick B2 in a way that completely controls the output whichever way that he wants. A recent approach by Von Edel has been to mitigate this using what's known as a slow function. Just to recap, Bob could pick B2 based on B1 because he could just compute the output in advance and see if it was an output that he liked. But instead, if we compute the output as F of B1 B2 for some function that takes longer than the time that we're allowing for the protocol, that fixes this problem, right? Because Bob will see B1, he can pick B2 depending on B1 however he wants, but he won't be able to compute this output F of B1 B2 during the time of the protocol. The downside, though, is that Alice will also have to compute F. And when we scale this up to have many players, all the honest players will have to compute this slow function to get the output. So this is really not desirable. And I'll also mention that these approaches usually require some expensive sort of trusted setup. And we really want to avoid that here for our application. So the question we're focusing on in this work is whether we can get security against malicious adversaries who behave arbitrarily in the protocol, but keep practical efficiency especially for the honest parties. So one very classical way to do this coin flipping is what's called the commit and reveal paradigm. And the idea here is for each party to hide their input so that no party can choose their value based on someone else's value. So again, Alice is going to sample B1, Bob will sample B2, and then they're going to commit to these values. So this commitment is the digital analog of a sealed envelope. It hides the inputs and binds the sender to that value. So now we can have Alice and Bob post their hidden, their commitments, so their hidden values on the board, and then open them up and again compute the output as the XOR. So is this better? Have we, have we overcome the problems we saw before? Well, just as a quick sanity check, if everyone behaves honestly, the output is going to be unbiased, right? Because if everyone is honest, the output is just the XOR of uniformly random and independent bits. The problem which comes up here is that we want security against adversaries that behave however they want, and in particular that means that they can abort. So if Bob here is the adversary and we're in the stage of the protocol where Alice has just opened up her commitment to B1, Bob can look at what the output is going to be just as before and choose to abort based on whether or not he likes the output. This is actually a classical impossibility due to CLEAP. This has been circumvented in previous work using timed primitives. So replacing the commitment with a primitive that has to do with timing and using these sort of timing assumptions to get around this aborting attack. That's the line of work we're going to follow here and we're going to focus on time lock puzzles. So time lock puzzles were introduced by Rivas Chimera in Wagner in 96. The idea of a Tama puzzle is that if you have some message S, you can encode it into some puzzle along with a difficulty parameter or timing parameter T such that it will take time T to solve the puzzle and recover S. This is the idea of encrypting a message to the future. And crucially, generating this puzzle is really efficient. It doesn't depend on T. So no matter how long you want to hide your value for, you can still generate the puzzle very efficiently. And the other part of this is that solving can't be sped up even using parallelism. So even an algorithm that has some massive parallel computing power, it will still take them time T. And that is really nice in applications like blockchain where we are considering adversaries that might have a lot of parallelism. And there's a very well-known construction of time lock puzzles. And it's based on what's called the repeated squaring assumption. I'm going to define this a little bit later, more formally. But it basically says that repeated squaring in a group of unknown order cannot be sped up. And again, sped up even with parallelism. And lastly, I'll mention that one really good way to think about a time lock puzzle is just as a fine-grained analog of a commitment. So hiding only holds until time T. But it's fully binding. Okay, back to our application. Remember, we're trying to prevent an aborting adversary from biasing the output of the protocol. So what we're going to do here is replace the commitments that we have before with time lock puzzles. As a caveat, since we need some difficulty for our time lock puzzles, our protocol is going to have some time parameter T. So we're sort of assuming that all the parties can keep track of the last time. So Alice posts a puzzle of B1, Bob posts a puzzle of B2. And if they're both honest and they reveal B1 and B2, we can just compute the output as before. But if any adversary aborts and refuses to open their puzzle, the advantage of time lock puzzles is that now the honest parties can just solve their puzzles in time T. Solve the unopened puzzles in time T. And the really nice efficiency property here is what we call optimistic efficiency, which says that if nobody aborts, the protocol is fully efficient, right? Generating a puzzle is really quick. Opening the puzzle is just posting the opening that you already have. And then computing the XOR is obviously very efficient. So this is really desirable because in a setting where everyone is honest, we get the full efficiency benefits. But if there's a malicious party that aborts, we sort of have a fallback option where we then have to wait to spend time T solving their puzzle. Okay, so does this give us security against fully malicious adversaries? It does prevent the aborting problem, as I said. The only sort of leftover attack that we have to think about is whether the adversary can pick B2 in a way that's dishonest. It's kind of easy to see that as long as B2 doesn't depend on B1, in the end of the day, B1 will be uniformly random, sampled by an honest party, and independent of the other values, as long as B2 doesn't depend on B1. So let's see how this works. So the adversary has given a puzzle to B1, but he doesn't know B1. So he can't directly choose B2 based on B1, like we saw in earlier iterations of this protocol, but he still has this puzzle. He still has something that depends on B1. So it's possible that he could use it to create a puzzle to a value that's correlated with B1 somehow. The trivial sort of attack of this form is just copying the puzzle, right? He could always do that, but we can disallow that. It's as easy to do as it is to catch, but in general, these attacks may be complex and arbitrary. If we look at the classical construction of time-locked puzzles, they are actually trivially malleable because the message B1 is basically part of a one-time pad. And so with that time-locked puzzle, an adversary could take the puzzle of B1, compute a puzzle to one plus B1, without solving it or spending time T or anything, and then the output is clearly biased to one. Yeah, so like I said, we need to prevent all possible ways to correlate these two values, and this is an area called non-malleability, and this is what we focus on in this work, which is formalizing and constructing time-locked puzzles that are non-malleable. So let me tell you about our results. So as our first two results, we give constructions of non-malleable time-locked puzzles and we give two constructions in different settings. So our first construction is incredibly efficient and in the random variable model, but it only relies on any time-locked puzzle generically. Our second construction is in the plain model, but it relies on stronger sub-exminential style assumptions. So it's kind of a trade-off between what model you want and how much efficiency you want, and so those are our two constructions, and it's important to note that not only do we get non-malleability, but we actually get a variant of what's known as concurrent non-malleability. I'm gonna talk about this a little bit later, but it's crucial to have multi-party coin flipping instead of just two-party coin flipping, and either of our constructions can be used to get fair multi-party coin flipping and auction protocols with different guarantees depending on the construction. So let me tell you a little bit more about these two constructions. So both of our constructions have no CRS or anything, no trusted setup, which is really nice. Our first construction, I mentioned it's in the random oracle model. So it's actually in this variant of the random oracle model called the auxiliary input random oracle model where security holds even when the adversary has some prior knowledge about the oracle. And this is really nice, especially in a practical setting where instead of a random oracle, we have some fixed function, right? It's reasonable to assume that an attacker might have pre-computed information about that function. So that's the model that we're in. And in contrast, in our second construction, we're in the plain model, but we need to assume sub-exponentially secure a bunch of cryptographic provenance that are sub-exponentially secure. And this second construction is actually based on the non-malleable code of Dachman-Zollet, Komorgotsky and Pass from last year. And basically what we do in the second construction is adapt their non-malleable code to our setting, which involves concurrency and handling a larger set of attacks. In this talk, we're mostly gonna be focusing on this first construction. And what's really nice about this construction is that when you instantiate the time lock puzzle, the underlying time lock puzzle, with the repeated squaring assumption, you get something super efficient. Generating a puzzle in our non-malleable time lock puzzle requires just one random oracle and a few modular exponentiations to generate the underlying puzzle. So it's really nice, really efficient, for one assumption and in the random oracle model. Okay, so let me tell you a little bit more about what we get in our coin flipping protocol that I alluded to earlier. So this is what happens if you take our first construction and instantiate it with the repeating squaring assumption, we get a multi-party coin flipping protocol with the following guarantees. So first we get fairness. This is what I spent the whole intro talking about, saying that no malicious party can bias the output even if they control all but one party. We also get optimistic efficiency. So if everyone is honest, the protocol is two rounds, very efficient, no solving any puzzles. And lastly, we get what we call public verifiability, which is that actually if some party refuses to open their puzzle, only one honest party needs to solve it. It's not the case that everyone needs to solve it because in our construction, we get a time on puzzle where when you solve it, you get a proof certifying the solution. And this means that the output of the protocol can also be efficiently verified. So even someone who is not participating in the protocol but comes later and sees the bulletin board can quickly verify the output of the coin flip. And I'll mention that this is the first protocol under any assumption that gives these guarantees. Okay, so I'm talking about this repeated squaring assumption. Let me define it a little bit more formally. So the repeated squaring assumption in an RSA group says that for any T, the fastest way to do T repeated squareings in the group is to square T times. So the fastest way to compute G to the two to the T is to repeatedly square G. Pictorially, what this looks like is if you have some element G and you wanna get G to the two to the T mod N, the fastest way to do this is this repeated squaring and there are no shortcuts. And it's really nice because this assumption has been studied for over 20 years, there are no known attacks. And it's used in a ton of applications, especially recently, like verifiable delay functions, randomness begins at many others. And in particular, this gives a very efficient time law puzzle where the time law puzzle samples the N element G and the group parameterized by N, which is the product of two primes. And it basically computes a one time pad of the secret S with G to the two to the T. And the reason this gives a time law puzzle is because if you have these two primes whose product is N, you can compute G to the two to the T efficiently. But someone who does not have these two primes and only has G to the two to the T X sorted with S has to recompute it G to the two to the T by repeatedly squaring T times following this assumption to recover S. So that's repeated squaring assumption. That's the main assumption underlying classical time law puzzles. And yeah, that's what we're relying on. So for this talk, I'm going to do the following. So first I'm gonna give you a little bit of a more formal definition of non-malibility. Then I'm gonna show you our main construction which is the non-malible time law puzzles from plain time law puzzles. And finally, I'm gonna put everything together and tell you our multi-party coin flipping protocol, how we achieve those properties and wrap up. Okay, so non-malibility. The notion of non-malibility is concerned with a man in the middle adversary. In general, what it says is that no man in the middle adversary can transform a puzzle for one value into one for a related value. You can think that the man in the middle adversary gets some time on puzzle to some value S. And his goal is to output a time law puzzle to S prime in a way that S and S prime, his goal is to make S and S prime related. So non-malibility says that they are not related. We do have to disallow copying because that would be a trivial attack that would break non-malibility. So we don't allow the adversary to copy. Or rather, if it does, we replace its output with a dummy value. And we also need to restrict to adversaries that run in parallel time T, right? Because an adversary that could solve the puzzle could obviously solve it, get S, and then generate a puzzle to a value depending on S, or just re-randomize the puzzle even. Those are sort of the two restrictions we place on the adversary. And this is very related to non-malibility for commitments. So just to sort of see why this is related to the setting of coin flipping where there was no man in the middle adversary, the idea there is just that the adversary sees these puzzles on the board. And so his goal is to maul them into a new puzzle that's related. So that's where the man in the middle is sort of coming in there. Okay, next I'm gonna tell you about our transformation. So how we get non-malible time-lock puzzles under that definition that I just said. So we're gonna start with any time-lock puzzle, and we're gonna assume access to a random oracle. So to generate a puzzle for some value S and with randomness R, first we're gonna query the random oracle to get some randomness R prime. Then we're gonna use the underlying time-lock puzzle to generate a puzzle for our secret and our randomness using the randomness derived from the random oracle. So pictorially it looks like this where we're given SR as input, we use them to get this randomness R prime, and then we combine them together to get a time-lock puzzle. For those of you who are familiar, this construction is reminiscent of the Fujisaki Okamoto transformation for turning a CPA secure encryption scheme into a CCA secure one. But the analysis ends up being, in our case, quite different and non-trivial. Okay, anyways, going back to our transformation. So this is how we generate the puzzle. To solve the puzzle, we solve the underlying puzzle to get this secret S and randomness R, and then we check that the puzzle is indeed valid. So because we've recovered this randomness R that we started with, we can actually check that our puzzle was generated, honestly. This is only true if we're solving a valid puzzle, but it will turn out to be really useful later on. But anyways, that's the end aside. This is our transformation. It's incredibly simple, query the random oracle, and then generate the underlying puzzle, and then solve the puzzle and check that it was generated, honestly. As some intuition on why this is non-malleable, recall that in non-malleability, the adversary receives a puzzle for S. So we have our man in the middle adversary here. He gets some puzzle for S, generate with randomness R, I'm denoting it as a puzzle for SR using randomness O of SR. And his goal is to generate some new puzzle for some related value S prime using some other randomness R prime. So at a high level, since this new puzzle depends on the random oracle evaluated on S prime, it seems that the only way to generate a valid puzzle for S prime is to know S prime. But if S prime is related to S, then the only way to generate a valid puzzle for S prime is to know S. But this breaks the hiding of our time-locked puzzle, and the hiding of our puzzle follows from the hiding of the underlying one. This is obviously very high-level proof sketch for details, see the paper. Okay, so that is our construction, and now I'm gonna move on to the last section of the talk, which is putting everything together for our coin flipping protocol. So recall that what we want is an unbounded number of participants up to n minus one corrupted parties, and we're trying to flip an unbiased coin. So all of our parties flip their initial values and following what we talked about earlier, they all post them on the bulletin board and then open them. They can solve any unopened ones as we talked about, and then the output is just gonna be the XOR of all the opened values. So recall that what we want is these three properties. So I'm gonna talk briefly about how we get each one of them. So optimistic efficiency, I already talked about it. If everyone is honest, we don't need to solve any unopened puzzles because every puzzle will be open, so the protocol will just take two rounds and terminate. Yeah, okay, so next, to get fairness, so recall that fairness says that nobody can bias the output. So let's think about fairness. In the beginning of this talk, I talked about how we need our time of puzzles to be non-malleable so that we can get this fairness and avoid mauling attacks. And non-malleability, as I've discussed it so far, says that given a puzzle for us, the adversary can't generate one for a related value S prime. But in our coin flipping protocol, the adversary receives many puzzles, not just this one. So it turns out that here, we actually need what's called concurrent non-malleability, which says that an adversary who receives many puzzles on the left can't generate many puzzles on the right to related values. Now, this might seem just like a technicality. It received one before, now it's receiving many, but actually this is inherently a more complex notion, this in the setting of concurrency. So this is pictorially what it looks like. We have an adversary who gets end puzzles on the left and tries to generate end puzzles on the right and really can combine and split these puzzles that it gets as input in any way that it wants. So it turns out that this is actually impossible to achieve in an unbounded concurrent setting even though we can achieve it in the one-to-one setting. Actually, before I move on and tell you the rest of our construction, let me quickly tell you this impossibility result because it's really self-contained and it's really just a nice little result. So why is it impossible? So let's even look at a simpler setting which suffices to show this impossibility where the adversary only gets one puzzle on the left but is allowed to generate many puzzles on the right. This is known to imply a fully concurrent non-malleability. So let's say first we sample Z as some puzzle to S and we send over this puzzle Z to our adversary. The adversary in this impossibility result is gonna do the following. So we can view Z, it's some string of some length that depends on our time-lock puzzle but it's a sequence of bits, right? So let's say Z is a sequence of bits, Z1 to Zm. So what the adversary is gonna do is take each of the bits of Z and generate a puzzle to them individually. So he's gonna generate, let's call it Y, I as a puzzle to the value Zi. Again, we can just use T for every I. And so now the adversary is gonna output all these new puzzles Y1 to Ym. So recall that in the setting of non-malleability, the adversary is trying to output these puzzles whose underlying value is related to S somehow. In the formal definition, we're gonna have a distinguisher that sees these underlying values. So here the distinguisher gets values underlying Y1 to Ym which by design is Z1 to Zm. What can he do? He can just solve it, solve Z which is the concatenation of these bits and he'll get S. And we're really relying on here that the distinguisher can solve the puzzle is a polynomial time algorithm. But clearly this is a valid attack because clearly the adversary A has mauled the puzzle Z into a sequence of M puzzles that are non-truvially related to S. Just as a sign note, you could of course restrict the distinguisher not to be able to run the solving algorithm. This gives a weaker notion and actually in the full paper, we provide a much more in-depth comparison of these different notions. And we also give a result separating these two definitions to see the paper for a much more in-depth discussion of definitions. Okay, so that's our impossibility result. So going back to our coin flipping protocol and achieving fairness, it turns out that it suffices to have what's actually a weaker notion of non-malleability. So we introduce this new notion and we show that we can achieve it in an unbounded setting and that it suffices to get fairness in our coin flipping protocol even with an unbounded number of parties. The new notion of non-malleability that we introduce which may even be of independent interest is called functional non-malleability. And what it says is that no t-time adversary who receives many puzzles on the left can output many puzzles on the right but now instead of requiring that the underlying values are related, this notion of functional non-malleability is parameterized by function f and we require that f of the underlying values from the input puzzles isn't related to f of the underlying values from the output puzzles. Now, of course, if you just have f be the identity function, this is just standard plain non-malleability. So functional non-malleability is really a generalization and it all depends on what class of functions we have functional non-malleability for. So it turns out that we can achieve this in an unbounded concurrent setting as long as f is computable in low depth. Low depth is a fine restriction because for coin tossing the function we need to compute is just XOR which can definitely be computed in low depth. So what this says is that even if the adversary can bias the individual SI values that it puts on the bulletin board, it can't bias the output which is the XOR of all of them. And we really believe that this notion might be of independent interest and in the paper we compare this in more depth to different notions of non-malleability. So see the paper if you're interested in that. So going back to our coin flipping protocol, fairness comes from functional non-malleability for the XOR function. Fully concurrent functional non-malleability I should say. Okay, the last property I'm gonna talk about is public verifiability, so bear with me. Remember that public verifiability is when the output of the protocol can be verified by anybody. Okay, so let's consider the setting where there's a party that doesn't open their puzzle so an honest party will solve it and post the solution. That party solved the puzzle so they're convinced of whatever the solution that they got was. But someone who comes later, we don't want them to have to re-solve these unsolved puzzles. So pictorially what this looks like is Alice posts a puzzle, she goes offline, aborts. Bob posts his puzzle and opens it. Bob spends tea time solving Alice's puzzle. But then a third party, Charlie, who wants to know what the output is and wants to be convinced has to spend time tea to solve this puzzle for S1 to be convinced. And note that it's not enough here if Bob would just post S1 to the bulletin board after solving it, because we have to handle the case where the adversary posts puzzles with no solution. To address this, we introduce what we call publicly verifiable time-lock puzzles. We get this by adapting the proof system due to Pechak for repeated squaring to our setting. And along the way, we use what's known as trapdoor verifiable delay functions. So if you're interested in those details, see the paper. But basically what this gives is a puzzle where when you solve it, you get a short proof that anyone can use to verify the solution. Okay, so to put this in the context of our protocol, what we actually show in our time-lock puzzle construction is that if we start with a publicly verifiable time-lock puzzle, which we construct from repeated squaring, we get a publicly verifiable, non-malleable time-lock puzzle. So we can plug that in back into our quintal thing protocol and that's what gives us this public verifiability. We do get some other variants of this protocol. We get a non-interactive variant from our plain model construction. So see the paper for those details and I'll just wrap up. So in this work, we constructed practically efficient, non-malleable time-lock puzzles with no trusted setup. We introduced the notion of functional non-malleability and showed that it's possible with unbounded concurrency. And we constructed publicly verifiable time-lock puzzles and we combined all these together to get coin flipping and also auctions which I didn't mention here. But these protocols with these three very desirable properties, again, no setup and in the random oracle model if we're using our construction of time-lock puzzles in the random oracle model. And I guess just thinking in terms of open questions, the main one here would be to extend this to fairness in general, right? Fairness in coin flipping and auctions is great but really it would be important to just get general, fair, multi-party computation. So thank you for listening and if you have any questions, feel free to reach out to me.


Growing up, my dad and my granddad were my heroes. They worked for Georgia Power. And whenever there was a big storm, they always took care of people and got the power back on. Now, I work for Georgia Power. I'm helping to build a better and more reliable grid for everyone in Georgia. We're updating our equipment and investing in clean, renewable energy that everyone can depend on even during a big storm, just like my dad and granddad. Kind of like heroes. Thank you.