<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Cathie Yun on Medium]]></title>
        <description><![CDATA[Stories by Cathie Yun on Medium]]></description>
        <link>https://medium.com/@cathieyun?source=rss-2e148c34dad4------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*2zmdrvTZgH7eqCIzyo2wcg.png</url>
            <title>Stories by Cathie Yun on Medium</title>
            <link>https://medium.com/@cathieyun?source=rss-2e148c34dad4------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 10 Apr 2026 14:49:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@cathieyun/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Liming (黎明): the best sandstone climbing you’ve never heard of]]></title>
            <link>https://cathieyun.medium.com/liming-%E9%BB%8E%E6%98%8E-the-best-sandstone-climbing-youve-never-heard-of-355a70740e75?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/355a70740e75</guid>
            <category><![CDATA[rock-climbing]]></category>
            <category><![CDATA[climbing]]></category>
            <category><![CDATA[travel]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Fri, 13 Mar 2026 23:46:42 GMT</pubDate>
            <atom:updated>2026-03-13T23:46:42.014Z</atom:updated>
            <content:encoded><![CDATA[<p>I first heard of Liming from my friend James, who spent many months there climbing and doing route development. He wrote about it on his <a href="https://niceclimbs.com/areas/international/china/liming/">blog</a>, and told me that it had the best sandstone crack climbing anywhere in the world, and that I had to check it out! A few years later, Emily visited and came back saying the same thing. As a huge fan of sandstone crack climbing, I knew I had to pay a visit, so I started putting together a plan.</p><p>Liming is a small village nestled in the foothills of Yunnan, a province in southwestern China. It has one main street, its main economic activity is farming, and it lies three hours from the nearest airport in Lijiang. It has a really charming sleepy-town feel to it, except for on market days when it turns into a bustling trade center.</p><p>Julie, Marty, and I made plans to visit Liming over Thanksgiving break, when the weather would be perfect for some crisp fall climbing. Julie and I brushed up on our rusty Chinese, downloaded the guide book on <a href="https://rakkup.com/guidebooks/liming-china-rock-climbing/">Rakkup</a>, and got excited for a grand adventure!</p><p>To paint a full picture of our trip, I’m including our “trip report” emails, which we sent to our friends and family at the end of each day. They were hastily written in the evening before going to bed, so they contain typos and some shorthand. But they hopefully also capture the raw experience of each day, minimally filtered and maximally stoked. Afterwards, I’ll also include some tips for if you want to plan your own climbing trip to Liming!</p><h3>Day 1: Getting to Liming</h3><p>We spent about 30 hours in transit to get from SF to Liming:</p><ul><li>San Francisco to Los Angeles (1.5 hour flight)</li><li>Los Angeles to Guangzhou (16 hour flight). Our layover in Guangzhou was super tight, so we actually had a dedicated transfer escort lady who helped us cut all the customs/security lines and get a speedy airport cart to take us to our next gate. We made it just in the nick of time… But our luggage didn’t :o (more on that later).</li><li>Guangzhou to Lijiang (3.5 hour flight)</li><li>Lijiang to Liming (3 hour car ride) — we had a friendly chatty driver who told us about the local culture, agriculture, food, and everything in between.</li></ul><p>Here are some photo highlights:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QEtHFGeUYE8XzUpDHlo7HA.jpeg" /></figure><p>Marty’s proudest moment: in Lijiang, he bought snacks ALL BY HIMSELF while Julie and I went to the bathroom! They were really good snacks, we hounded them on the 3 hour drive to Liming.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*domTZEEm-Zdm8hcx-h8o5w.jpeg" /></figure><p>Scenic rest stop on the drive from Lijiang to Liming, for our driver to take a smoke break. The car ran on natural gas, which was neat! We even got to watch the refueling process for the natural gas — there’s good infrastructure for it. Even some of the giant trucks run on supercooled natural gas!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5JdXKSyKA0TDZXTd8A8Adg.jpeg" /></figure><p>We made it to Liming and got a scrumptious meal of veggies from the restaurant owner’s garden (there are a lot of cute little family plots in backyards): eggplant, beans and tofu, and bitter melon! Despite me telling them that Julie and Marty are vegetarian, they still sprinkled some dishes with meat chunks… I guess they don’t think of it as meat, just a garnish. :P</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FgwVnSdxRfP3UBc4SO7MbA.jpeg" /></figure><p>This is the view of the climbing, from the roof deck of the Faraway Inn which is where we’re staying! It’s gorgeous! The big formation on the right is called Dinner Wall and was one of the first areas to get developed for climbing. There’s also a really nice creek that runs through town, right under our windows at the Faraway Inn (I’m listening to it burble right now, it’s so peaceful!)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BsNAPQ9-lQzwi6cpavkxNg.jpeg" /></figure><p>We couldn’t climb because all our climbing gear was in our luggage, but we went for a hike up a really well built stair system and found this crazy looking via ferrata! Check out those mega sketchy planks in place for the traverse right and back again… (shudder)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*d3KelTvPJdlOxwYts-lrBA.jpeg" /></figure><p>We went back down the staircase as the sun was setting, and saw some really gorgeous colors on the rock! Look how sturdy and beefy those stairs are — such good infrastructure. We all got pretty winded on the hike up — between the elevation, lack of sleep, and the fact that the stairs were never-ending, we had an uphill battle.</p><p>The conclusion to the luggage saga is that our checked in luggage had to catch the following flight from Guangzhou to Lijiang, which was later in the afternoon. The airline then sent a guy to drive it all the way out (3 hours drive) to Liming, and I wrote this update as I was waiting for him to arrive. He got here at 8pm sharp as planned, and I just picked the luggage up from him, so now it’s finally time for bed! The beds at Faraway Inn have little blanket heaters which are so cozy, we’re going to sleep so well!</p><p>Lots of love,<br>Cathie obo Julie and Marty</p><h3>Day 2: Crag Classics at Lisu</h3><p>We had a great day cragging at the Lisu area, which was the wall we looked at yesterday on the way up the staircase. A shorter update today since I’m going to bed soon, in preparation for a big day tomorrow!</p><p>We woke up bright and early after 12 glorious hours of sleep. The blanket warmers were so nice and toasty, and we slept so well. We got a breakfast of savory rice noodles, buns, and tomato-and-egg at the shop down the street, next to some young kids who were also wolfing down breakfast before school.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NvF3DTiN0vWSRMPTzpYTUg.jpeg" /></figure><p>Cathie and Marty jumping for joy on our way to the crag. That’s Dinner Wall in the background, where we plan to climb tomorrow!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bLVt7JFeJpqiOKt8JsFWXg.jpeg" /></figure><p>Julie got on “Faraway Corner” on a fixed rope / microtrax system, to feel out the moves before leading it. This was such a beautiful splitter finger crack layback! In general, the climbs have been really high quality, well bolted, and clean.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fbWGL78hkZiP2ONfVixDpg.jpeg" /></figure><p>We made friends with some friendly crag dogs! No matter the country, some things never change.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9FwkmXjpqqn9izXR5onBcw.jpeg" /></figure><p>Julie got on “Clam Digger” after me, this crazy whole body chimney with a hand crack in the back. Sorry for the lighting contrast, you can barely see her, but know that she was trying hard and making many noises :)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dAGn_i3kfQn4gNOuWzIX6w.jpeg" /></figure><p>Marty had an EXTREMELY PROUD moment today too — Julie and I struggled so hard with the first few moves on this route, barn-dooring out or slipping off repeatedly, trying all kinds of crazy beta, until we both gave up and cheated a bit through the start. Then Marty hopped on it and got it first go, no takes, looking very casual! We cheered wildly :)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jWqYU8G2AMSRbe7kRuJE9g.jpeg" /></figure><p>We found a karaoke bar. Unfortunately the songs and lyrics are all in Chinese, so there was no hope for us.</p><p>We’re going to get on “Soul’s Awakening” tomorrow, it’s a 4 pitch 5.10 and was actually the first route set in Liming, it’s a classic! Zzz for now</p><p>- Cathie obo Julie and Marty</p><h4>Julie/Marty postscript</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZesmoVfttkuOihFCFg_qBw.jpeg" /></figure><p>The painted wall behind us rose in its technicolor glory! The approach was up these tall stairs that we had taken yesterday, tho the last part involved some bushwhacking. You can fly halfway across the world to climb, but you’ll still somehow end up off trail tramping through the forest :).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tGhepXgWlHhoABaVh8o2dA.jpeg" /></figure><p>Marty cruising (on lead!) up the first climb of the trip, a 5.9 layback jam.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mSp7DWidfFVdxt3FE984nA.jpeg" /></figure><p>The clam digger! A mega classic pitch that we reworked the lyrics to “she’s a man-eater” to. (She’s a clammmm digger make you dig hard make you pry hard make you want all of her clams.) Cathie couldn’t decide whether she wanted left or right side in but eventually said eh I’ll do both! Here she is switching sides!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x9y-F1h-ZdRQimmher6KtA.jpeg" /></figure><p>Marty loved this little tree, and wanted to make sure everyone saw it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nclpu4D2ALK_vkFSPgkeKg.jpeg" /></figure><p>At the end of the day we’d go load up on snacks for the next day. Cathie found the cutest little kittie in one of the corner stores. We have returned every night since to find this kitty for Cathie to cuddle.</p><p>Yayay hope you’re enjoying the Julie/Marty postscripts!</p><h3>Day 3: “the 3 best sandstone pitches I’ve climbed in my entire life”</h3><p>Today we climbed at Cretaceous Crag on Dinner Wall, the one that’s right above the climbers’ inn, which you can see in this photo I took at sunrise from the roof deck of the inn:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rL2N0Wqag6qOykfWYWTyYQ.jpeg" /></figure><p>We got a really early start (7am breakfast, 8am departure) because we wanted to climb Soul’s Awakening, a mega classic 4 pitch climb which was actually the first route to get developed in Liming! We got there after a pleasant schlepp up the hill, and had an absolute blast. Some sections of the wall had a neat “honeycomb” texture, which was super interesting to climb on. Here’s Marty following up pitch 3!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sGzUF7VZA9YywjnK6gn_vg.jpeg" /></figure><p>Marty stopped at the top of pitch 3, and Julie and I climbed to the top of pitch 4, which had this absolutely crazy beautiful view of the valley under an arch:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BhSKncSKoRn-OJqRsiMrCw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WVpTujBvQseH0mx97ta14g.jpeg" /></figure><p>We then rappelled, ran into some local climbers and hung out with them while eating lunch and watching a local goatherd herd his goats past us (Julie fed a goat her apple core and got some goat nibbles!) We learned from the local climbers that this Thursday through weekend will be a climbing community event at Liming, where people will come from all over to do crag development and outreach and teaching. Super cool, and I’m excited to overlap with that event for two days!</p><p>Next up, we went to Wind of the Valley, a long 30m ultra classic route which Julie climbed as a lieback, but Marty and I climbed with straight in jamming. The tree at the halfway point was so nice for a rest!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UYu_XSuT-uBDyjg_ln7rbw.jpeg" /></figure><p>We set up a toprope for the local climbers, who wanted to try it but didn’t have any gear. They were very grateful and stoked.</p><p>Next up was The Firewall / Flying Buttress, which was a terrible 5.6 “jungle chimney” pitch, followed by the most beautiful epic 5.11 hand crack ever. Julie led the 5.11 with a few rests, I toproped it, then Julie toproped it clean!!! What a beast :) here’s a view of the 5.11 pitch from its base, it’s such a beautiful continuous crack with cool movement. Notice the interesting honeycomb texture to the right as well, and the crazy jungle vines on the right wall!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ztBjtmQCfbirCYw0M6G31g.jpeg" /></figure><p>After coming down, Julie declared that today, she climbed the 3 best sandstone pitches she’s ever climbed in her entire life! The rock quality here is truly phenomenal, and it’s crazy how beautiful and varied and crisp the cracks are. By the end of the day, we were wiped and happy and ready for dinner!</p><p>For dinner we went to a place that served 炸锅菜, a soupy leafy green filled hot pot which hit the spot! (For less than $3 a person):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lDv1cA5zs88HdQ_a1D3O0A.jpeg" /></figure><p>Now we are warm and cozy in bed and ready to hit the sack in preparation for another day of climbing tomorrow — we’re eyeing a single pitch crag at the “Yangshuo Sport Climbers’ Crag” (jokingly called that because there’s no approach, like in Yangshuo). Marty and I were hoping for a rest day tomorrow, but no luck there ;)</p><p>❤ Cathie obo Julie and Marty</p><h4>Julie/Marty postscript</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6fpmmqkQ2mo_RjXFLcNFyw.jpeg" /></figure><p>Here’s our super tasty noodle breakfast, Marty has been on the hunt for egg like noodles which we finally got at the one restaurant open at 7am. The lady that runs the restaurant there is definitely hustling. I went big on the hot pepper oil.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p-NhDOmzphP5b2is3je96Q.jpeg" /></figure><p>Here’s Marty rapping the absolutely beautiful fourth pitch of Soul’s Awakening. Cathie was desperately grunting in the bird poop covered offwidth up above and for some reason Marty said nah I’m good and headed down. Men, can’t understand them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hYfjgTeKf9229pKH0n4qiA.jpeg" /></figure><p>THIS IS MY NEW GOAT FRIEND! She ate an apple core out of my hand and then tested my fingers with a couple nibbles to see if I too was an apple.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jjuEOsHc9avpD2WjMQG2jg.jpeg" /></figure><p>Here’s Cathie starting up the jungle vine pitch. So brave. So strong. We found a great little tree bench to belay from!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_FOv1VZ6mEcLKKqpghTY5A.jpeg" /></figure><p>The last pitch of the day (Flying Buttress) was quite possibly the best sandstone pitch I’ve ever climbed, as Cathie alluded to. I was worked by the end, but this little message refilled my resolve to try again.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nf7uicW_a5bMa9e4iYukWA.jpeg" /></figure><p>A beautiful evening settling into the valley :)</p><h4>Greg postscript</h4><p>After receiving our email update, Greg made this beautiful watercolor sketch of Julie leading Wind of the Valley!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*F-VMSUOqg5ITxP6z8yMzRQ.jpeg" /></figure><h3>Day 4: “rest day”</h3><p>For our “rest day” today, we went to the “Yangshuo Sport Climbers’ Crag” which was a bit further up the canyon from the last two days, so we hitched a ride with the innkeeper. This area mostly had single pitch cragging, with a very short approach, which was part of the appeal (after the last two days of somewhat hefty approaches).</p><p>Here’s the approach from the road — the crag is so close! Most importantly, check out all the melons by the wayside — so many juicy melons! We kind of walked through a farmer’s field to get to the crag, including ducking through some bean vines. It reminded Marty of the scene in Lord of the Rings where the hobbits steal food from the farmer’s garden, only to get chased out by the dog. No dog came to chase us though :)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*at7TptnziwG4iPZA75Uc-A.jpeg" /></figure><p>We started out on uncensored wall, which was a crazy area with a ton of roofs. This route had three roofs you have to pull to get to the anchor! The last roof was the most wild, you could do a sinker heel hook above your head (I actually got two heel hooks). Here’s Marty toproping it:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9LRB-6WVvYDMxp2fOYxXhA.jpeg" /></figure><p>And here’s a zoom-in of Julie pulling the roof, from a different vantage point (notice how her left leg is basically entirely in the crack — yes the crack was that deep, and it felt really secure once you got your foot/leg in there!)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rF0-UomdG3avWK6foXDf3g.jpeg" /></figure><p>Next up, we went to censored wall, where Julie got really worked on a 5.11c and then I set up a really cool undercling/layback offwidth crack. Unfortunately I didn’t get any good photos of either of those routes, but here’s a photo of an extremely tired Julie laying down after she got down from her 5.11c lead, happy to be back on the ground, with Marty coming over to give her a hug:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sCBBUglgEwMODBL9t5DpFA.jpeg" /></figure><p>Maybe you have noticed that we’re not actually doing a lot of resting, for a “rest day”? Interesting observation… Because Julie kept saying that it was our rest day (and so, we should climb tomorrow) whereas Marty and I were a bit dubious of the “rest day” label and contend that today was actually a climbing day and therefore tomorrow should be a rest day…</p><p>For lunch, we had our breakfast lady make us some boiled eggs to go (Julie tried to say “hard boiled eggs” but the lady didn’t understand her, so I just said “boiled eggs” which she understood, so we ended up getting soft boiled eggs, some of which exploded during the hike in, getting egg yolk everywhere). The egg yolks were the most orange yolks I’ve ever seen, they were from the breakfast lady’s chickens! Julie snapped a photo of the delicious runny soft boiled egg yolks, maybe she can attach that photo… I think those were the tastiest soft boiled eggs I’ve ever had!</p><p>We walked back from the crag, and passed by the elementary school which is the joint elementary school for several villages in the area. A lot of the kids ran over to say hi to Marty, he was a local celebrity. Here’s the elementary school entrance, with the most beautiful cliffs as a backdrop:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*svQOzqIh5IUEHW9CNZsJJg.jpeg" /></figure><p>This is the climbers’ inn’s dog, the sweetest little puppy who follows you around and asks for pets. We gave her a belly rub and then she got the zoomies and ran around the inn like a crazy dog for a few minutes. She’s so precious!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QmuHL-NJv9rYMqh3zq6Fjg.jpeg" /></figure><p>For dinner, we went to the “pine snack lodge”, which specializes in fish dishes (or so we presume, since they keep a big bucket of fish out front). When we walked by, they had a bucket with three big fish swimming around:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DDfTFiOwqxkKlSWsUKl1Iw.jpeg" /></figure><p>We ordered a mala fish… and then there were only two fish left in the bucket :( This guy was delicious though, the mala spices were so tasty and pungent. We thanked him for giving his life to feed us, and then ate him clean to the bone.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xoFKEtE_RjKo3vJGC3Xh1g.jpeg" /></figure><p>We got some snacks (including some crazy grape-and-peach flavored Oreos… Yes you read that right) and watched Asteroid City while eating snacks in bed (no parents no rules!!!) Now off to sleep (maybe with some crumbs in the sheets, hmm).</p><p>❤ Cathie obo Julie and Marty</p><h4>Julie/Marty postscript</h4><p>Hello Julie and Marty reporting in,</p><p>Cathie has been so good about these journal updates! I am just here to say that today was such a great rest day wow! We rested so hard and are feeling so well rested and ready to climb so much more tomorrow wow!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qGihy5AYz3u9IHBUWBy8ew.jpeg" /></figure><p>Here’s the world’s most orange yolk. We were crouched in the shade peeling eggshells and licking our hands clean of yolk, we have truly returned to our primitive ways.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N_SQVrRUKvjbPUBT0-p2ag.jpeg" /></figure><p>Here’s Cathie absolutely crushing her lead! She first tried to do some crazy offwidth jamming shenanigans in the roof, then realized she could layback it!</p><p>Also re: dog at inn, she is the cutest dog ever, she stands by the door for when you return to get all the head scratches and belly rubs.</p><h3>Day 5: a REAL rest day!!!</h3><p>Hi friends and family! I’m writing from the other side of an amazing real rest day, it’s been so good to kick back for a day.</p><p>The reason we picked today as our rest day was because today was market day in Liming — it happens on the 1st, 11th, and 21st of every month so we just got lucky that we overlapped with it! Merchants from many towns over all congregate in Liming for market day, and we were told we couldn’t miss it.</p><p>We started out our day with some fresh baked bread from the innkeeper, then headed over to the market. It was a bit slow and sleepy at first, with many merchants still setting up their stalls, so we walked to the end of the road and wandered around the “official tourist center” until the market got more lively.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9gyf5Y7U4zl5H-8MJSf65A.jpeg" /></figure><p>We got some 凉粉 (liangfen: fried bean cakes, with spicy oil and lots of toppings) and then some sugar cane for “dessert” — this lady peeled and chopped an entire sugar cane for us to munch on! It was such a sweet treat, but maybe too sweet. We couldn’t finish the whole sugar cane, even after sharing some with climbing friends from the youth hostel.</p><p>Some more scenes from the market — look at this amazing backdrop to the market tents!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l0dqHAD56zOdYZNhxOuIDw.jpeg" /></figure><p>Marty found this extremely good “North Faec” and Louis Vuitton branded vest. For some reason, Julie said he shouldn’t get it, I’m still confused why you wouldn’t buy this amazing piece of clothing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mtpcNKVtHliBEeP03Q8OiQ.jpeg" /></figure><p>There was a guy making these weird extruded baked goods, from a gas powered engine running in the back of his van. We got a bag of these and they were really tasty, like little sweet wheat crisps!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sZmbvhomRNTFYWKU6LtIIA.jpeg" /></figure><p>There were so many more market finds, but in the interest of time I’ll go to what we did next — we hiked up the same stairs we went on our first day, and climbed the via ferratas! There were two routes, and they were so cool (and very well maintained and safe!)</p><p>Here’s Julie on a wooden board traverse — you can see the route continuing above her. Don’t worry, she’s clipped into the steel cable with two leashes, so her life does not depend on the wooden plank. It still felt spooky to cross the plank though.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*54nsSWtgkqZ21DYaI_6n4g.jpeg" /></figure><p>Here’s Julie and Marty on a really wobbly suspension bridge. Julie thought about shaking the bridge for Marty but didn’t, and was very grateful when it was her turn to cross the bridge and Marty didn’t shake the bridge for her.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iaDkp1Hml1dcduaBOExbGw.jpeg" /></figure><p>We made it to the top, with this huge platform and amazing view!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2SiaX8UbBIFsi61HwsIZfg.jpeg" /></figure><p>We then took the stairs down, which brought us through this crazy huge cave:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MoMtZrPN73o6ZyG7KaIX_A.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PdDThLCZhtJ1PJbdUfxwmg.jpeg" /></figure><p>We made many echo noises, watched the sparrows fly around, and then took the stairs down back to Liming.</p><p>We had hot pot again for dinner, supplemented with some beer, because it’s a rest day :) then we hung around the campfire at the youth hostel chatting with some of the climbers who are here for the “climbing community event”, and shared our impressions of Liming with the group (Julie and Cathie even did this in Chinese! Mostly.) Now we are cozy in bed, ready for an early start tomorrow!</p><p>❤ Cathie obo Julie and Marty</p><h3>Day 6: last full day in Liming!</h3><p>Today was our last full day together in Liming! Julie and Marty are leaving tomorrow at 1pm to meet Julie’s parents in Lijiang, and I’m leaving the morning of the following day to meet my family in Shanghai. We spent our day climbing some classics in the Lisu area (up the huge staircase), and only climbed 5 star routes all day!</p><p>I don’t have that many photos from today, I think I took fewer photos because it was really cold (it didn’t help that we were climbing in the shade) and I was all bundled up. So I’ll just list / describe our routes:</p><ul><li>the great owl: 5.9 beautiful continuous hand crack! You know you’re in for a good time when the rack calls for 3 #1s and #2s! Marty lead this, which was no trivial task (there was a tricky start with a slightly flared thin hands crack).</li><li>boy with a coin: a 5.10+ offwidth, with an absolutely glorious overhanging offwidth roof finish where you could stem while doing butterfly stacks, and you can look through the crack all the way to the sky on the other side! This was my favorite pitch of the day.</li><li>gore: 5.10+ layback, which Julie led like a beast. The layback was overhanging and very powerful, this route was short and sweet.</li><li>the reckoning: 5.12 route with a little bit of everything: chimney, offwidth, hand jams, finger crack, and layback. With some optional stemming, too. Julie led this and Marty and I toproped it, it was really neat movement! Julie and Marty somehow utilized a helmet jam at the chimney section.</li><li>the lost world: 5.11, we climbed the first two pitches. The first pitch was really good for the first half (more offwidth!) but got dirtier the higher I went. Julie led the second pitch which was somehow even dirtier. After the second pitch, we decided it was too dirty to climb, and that we should rappel. (And we decided that this was definitely NOT an ultra classic five star route, despite what the guide book claimed.) But at the top of the second pitch (60m off the ground), we found some holes that were chiseled into the rock by the native Lisu people ~80 years ago! It’s wild to imagine them climbing that route without modern climbing equipment or ropes or anything!</li></ul><p>Here’s Julie being sad we decided to rappel… If you look carefully on the right wall, you can see some holes in the rock! A historical relic!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xnEsj0VmzHqhfs3fRjt2BQ.jpeg" /></figure><p>Here’s one of the holes, up close!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0QbZjhU0RNvZjqiFvwjSXA.jpeg" /></figure><p>I also saw this absolutely beautiful crack from the trail, and used my 5x zoom to get this photo to look more closely. After some homework, I figured out that it’s the third pitch of “the black hole”, and goes at 5.13 :o</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e4BXXcSc-uRBKU7MXw3iAQ.jpeg" /></figure><p>We puttered around town, grabbed dinner, and are turning in now. It’s nice that we have found a good rhythm to our climbing days, but I feel like just as we are getting into the swing of things, our trip is ending already! So soon!</p><p>❤ Cathie obo Julie and Marty</p><h4>Julie/Marty postscript</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uoDUOpnl7eZT_0KxgZdoMw.jpeg" /></figure><p>Marty housing some eggs and mantou</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4vSPkofzKWXcI7RxYJ1qZw.jpeg" /></figure><p>Marty having SO MUCH FUN on CLEAN SPLITTER ROCK</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kLXckhzFelIWoT08WfKMmw.jpeg" /></figure><p>The adorable Faraway Inn where we’re staying at night!</p><h3>Day 7: Goodbye Liming!</h3><p>This trip has gone by too fast, but at the same time my body is pretty rekt and ready to lie down (and just eat good Chinese food) for a few days. Today was our last day in Liming! Julie and Marty and I went for a hike in the morning, and Julie and Marty headed out to Lijiang at 1pm while I stayed around the rest of the day — I’ll leave for Lijiang tomorrow morning.</p><p>We hiked to the diamond, the huge cliff face in the background! The guidebook called the approach a “gentle stroll” but I respectfully disagree, it was closer to a steep goat-path-following bushwhack where we all got covered in multiple different kinds of burrs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qN3uM4zzse3TJoy9VX5b1g.jpeg" /></figure><p>We made it up eventually though, and had lunch on this amazing outcrop with a majestic view of the whole valley — there are so many cliffs here, and it was also cool seeing the terraced farms from above.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2wvNai9ikwwpPWhkwhQ81g.jpeg" /></figure><p>This is what the diamond looks like up close — very sheer and blank! There are some cool huecos at the bottom though. We didn’t climb today because of time constraints (Julie and Marty had to catch their ride at 1pm) so we just gazed at the rock.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jWORpXuCrvFHzE-89CJn0w.jpeg" /></figure><p>Julie and Marty headed out with our driver homie, 和丽珍 (more on her later!) and we said our goodbyes. I then met up with the folks who were part of the climbing volunteer event, today was their rest day so they were making rugs out of old climbing rope. I helped the girl in the foreground with the blue rope rug, it turned out really well! (It was my first time making a woven rope rug).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xYAXDjlOws6zNTQ_ddmIhQ.jpeg" /></figure><p>I also donated some glue in bolts to the volunteer organization, to help with development efforts — for replacing existing sketchy bolts, adding bolts to run-out sections, and developing new routes. They’ll go to good use!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5XOIZEvB9cCD7Hwy1k58bQ.jpeg" /></figure><p>和丽珍 (Julie and Marty’s driver to Lijiang) invited me to dinner at her house with some other climbers, and I accepted. It was really good farm to table food. She grew all the vegetables herself! And the chicken for the chicken soup was theirs, it was killed and processed on the porch right before dinner. It was all super delicious!</p><p>They even had one dish that was all locally foraged mushrooms (the one the guy in the blue jacket is reaching for). The other climbers all ate it and said it was delicious (and that it was their favorite dish) but I exercised caution and didn’t have any. I thought Marty would appreciate this tidbit though!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BX6HjjxiRvm0D6Mp8QV-ow.jpeg" /></figure><p>I rounded out the night with some campfire songs with the volunteer group, we sang some Chinese songs and some English classics. I got the group to sing “country roads” and 童话 (which was actually the biggest hit of the night, since everyone knew it!) It was such a cute, happy, and wholesome evening.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JGxftPEAVVCRp8qQwWFQlw.jpeg" /></figure><p>I’m sad to be leaving Liming tomorrow morning, but we had such a good time here and I’m so grateful to have been able to go on this grand adventure with Julie and Marty! And thanks James and Emily so much for recommending that we check out Liming, we wouldn’t have seriously considered coming here otherwise!</p><p>Thanks for following along!<br>❤ Cathie obo Julie and Marty</p><h3>Planning a trip to Liming</h3><p>If you were inspired by our trip, you can (and should) make your own trip happen! Here are some tips:</p><ul><li>Getting there: fly into the Lijiang airport (flights usually go through Kunming), and hire a car to take drive you to Liming (3 hours).</li><li>Climbing gear: most routes are bolted for a 60m rope. We were happy to have triples in #0.5 to #2, with doubles in the smaller and larger sizes, and one #5 and #6 for offwidth sections.</li><li>Guide book: <a href="https://rakkup.com/guidebooks/liming-china-rock-climbing/">Mike Dobie’s guidebook on Rakkup</a> is the definitive guide, though the Rakkup interface is a bit hard to use. I added some routes to the <a href="https://www.mountainproject.com/area/108397346/liming">Liming area on Mountain Project</a> as well, but that is a more sparse collection and only has the classics.</li><li>Local community: this is the <a href="https://www.facebook.com/groups/249126188514580/">Liming Facebook page</a>, where you can find climbing partners and guides. There are also posts with the latest in climbing access in the area, which is an ever-shifting topic.</li><li>Timing: fall and spring have the best weather, but try to avoid the big Chinese holidays (the Mid-Autumn Festival in the fall, and Chinese New Year in the early spring) since there are more non-climbing tourists who come to Liming then.</li><li>Lodging: we loved the Faraway Inn, and this is where most climbers stay! There is also a youth hostel down the road, if you want to save money.</li><li>Food: there are tons of food options on the main street of Liming, we highlighted some of our favorites in the trip reports! But be aware that if you’re vegetarian, you have to be very clear you don’t eat <em>any</em> meat, otherwise you might still get a meat garnish.</li><li>Rest days: check out the via ferrata, and definitely go to the market if you overlap with a market day!</li><li>Language: it definitely helps to know Chinese, but these days you can always use a language translation app to communicate! The locals mostly don’t speak English, but are very friendly and willing to help.</li><li>Payment: almost everyone, including corner stores and street vendors, takes WeChat Pay, which you can set up with a foreign bank account or credit card.</li></ul><p>And lastly, I’ve gotten some questions about how the climbing in Liming compares to Indian Creek — and I think the climbing in Liming is better! The lines are more varied, the edges are crisper, and the cruxes are more thoughtful. Not to mention that it’s way less crowded, and has better access to plush accommodations and tasty food. You just have to go a bit off the beaten path, but I think it was well worth it and I can’t wait to go back!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=355a70740e75" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I stayed home and joined the circus]]></title>
            <link>https://cathieyun.medium.com/i-stayed-home-and-joined-the-circus-b00530ef95f6?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/b00530ef95f6</guid>
            <category><![CDATA[acrobatics]]></category>
            <category><![CDATA[aerial-silks]]></category>
            <category><![CDATA[circus]]></category>
            <category><![CDATA[dance]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Tue, 05 Nov 2024 05:07:45 GMT</pubDate>
            <atom:updated>2025-06-17T03:21:44.570Z</atom:updated>
            <content:encoded><![CDATA[<p>My first time trying aerial silks was at Burning Man, under a massive dusty circus rig amid thumping bass. My partner and I were spending the summer road tripping across the country in a ramshackle moving van that he had salvaged from a junkyard — climbing rocks, swimming in alpine lakes, and enjoying our new post-college freedom. I got a crash course in silks from someone in Swing City, and was immediately hooked. I loved how the apparatus combined strength, gracefulness, musicality and problem-solving. It used a lot of the same muscles as climbing, but tickled a different part of my brain that thought about performance instead of just execution.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O5UswrfuYiKr_Tl7jszvZQ.jpeg" /><figcaption>The playa at sunrise (not long after I had tried silks for the first time)</figcaption></figure><p>A little while later, I settled down in San Francisco and rekindled the love affair with silks that I had started in the desert. I joined Aerial Artique, an aerials and acroyoga studio, where I took classes after work. I occasionally made it out to Circus Center, with their intimidatingly tall ceilings and ruthless instructors. And most critically, I made friends with a group of circus and aerial performers who lived in a warehouse-turned-group-house and-performance-space in SoMa, called Dovetail. The folks at Dovetail hosted weekly circus jams, where they invited friends to use their aerial rigs and train together. I’d come practice the sequences I learned from class, learn new tricks from others, and get inspired.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sSoJdReaAOAN_4b2A0VrPg.jpeg" /><figcaption>Rilka was a huge mentor in my silks learning journey! In this potato quality photo, she’s demonstrating a sequence from an Aerial Physique tutorial video, at one of Dovetail’s circus jam nights.</figcaption></figure><p>Since many of the Dovetail friends performed circus and aerial acts, they would organize showcase events where people could perform their works-in-progress, and get feedback and support from the audience. These were magical nights, full of beautiful showmanship and a really lovely sense of community. After attending a few showcases, I was inspired to put together a silks act of my own to perform. But before I was able to choreograph and polish an act I was happy with, the pandemic hit and open-invite aerial jams became a thing of the past.</p><p>Unsurprisingly, the pandemic greatly changed the San Francisco circus and aerial scene. My favorite studio, Aerial Artique, shut down over the pandemic, and Dovetail also disbanded. During this time, I refocused my efforts on climbing, and was lucky enough to have a great quarantine crew to train and adventure with. We built a bouldering wall in Mel/Alan/Julie/Marty’s backyard, and had fun decorating and setting weird routes on it. On weekends we drove out to Yosemite, and got better at crack climbing and long multipitch routes until we eventually felt ready for big projects such as <a href="https://medium.com/@cathieyun/el-cap-then-el-nap-54f0aeac788">The Nose on El Capitan</a>, and other Yosemite testpieces such as <a href="https://medium.com/@cathieyun/rocktober-in-yosemite-b588c4e021d2">the Rostrum and Astroman</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fZWmIuaAi0iISBuCyV2D_w.jpeg" /><figcaption>Julie, setting and trying out a new route on the backyard bouldering wall. Don’t mind the impact driver under her…</figcaption></figure><p>However, I missed the musicality and performance aspects of aerial silks. This year, I decided to pick silks back up, and revisit my pandemic-interrupted project of putting together an aerial silks performance. I joined <a href="https://www.instagram.com/inspirationstudiosdance">Inspiration Studios</a>, and began regularly taking classes after work and training at their open gym on the weekends. Before long, I had acquired a large enough corpus of tricks and transitions that I was losing track of what tricks I had learned, and their relationships to each other. So as the nerd I am, I made an “aerial skillbook” with photos and GIFs of each trick, notes for how to enter and exit from it, and its relations to other tricks. I soon learned that one of my classmates, Eden, had done a similar exercise, and we compared notes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*s9TCwjjhn-yBmUdZl_1r3Q.png" /><figcaption>Eden’s aerial tricks relation graph, which is much better organized and more presentable than mine.</figcaption></figure><p>After one of my silks classes, I saw a poster in the lobby of Inspiration Studios calling for applications to their summer showcase. I saw that there was an option to apply for a group performance, but upon closer inspection the group rehearsals didn’t fit my schedule, so a solo performance was my only option. I submitted a performance application to the organizers, with a “portfolio” of videos from Aerial Artique sequences and Dovetail jams.</p><p><a href="https://www.instagram.com/reneefuzz/">Renee</a> (the owner of Inspiration Studios) emailed me a few days later and said I had been accepted, and that she was looking forward to seeing what I put together! So I started preparing, by picking my favorite tricks and trying to string them together with graceful and interesting transitions. I was particularly inspired by the flowing and effortless transitions of <a href="https://www.instagram.com/moodystreetcircuskid/">Zoë Isadora</a> — I watched a lot of her videos and lessons as I was preparing my routine.</p><p>A really fun part of the choreography process was picking out the music! I was looking for something simple, smooth, and low-tempo, but with a driving and bass-forward chorus. I liked <a href="https://open.spotify.com/track/0l3vdL2Hjm6nSkYWDDzcxn">“Not Enough” by Elvis Drew and Avivian</a>, and felt particularly drawn to the moody guitar line. <a href="https://open.spotify.com/artist/5sWHDYs0csV6RS48xBl0tH">“I Feel Like I’m Drowning” by Two Feet</a> had many of the same elements as well. Ultimately, I felt more excited to listen to “Not Enough” a million times while choreographing, so I chose that as my showcase song. It wasn’t quite long enough (2:40), so Harry and I used some elbow grease and song editing software to add one more repeat of the chorus, bringing it up to 4 minutes.</p><p>Inspiration Studio added additional “open studio” slots for performers, so I came in on weeknights and weekends to practice my set. I would listen to the song on headphones (to not disturb other aerialists), record myself doing the sequence, then come down and watch the video while drinking water and catching my breath. I would then change up the sequence or timing based on how the video looked… and rinse and repeat. In the beginning of the choreography process, I would make large changes such as which tricks to include and in what order. By the last few weeks, I was focusing on the finer details of showmanship, such as where I was looking during each trick, hand flourishes, dramatic pauses, and the timing of each trick to match the music.</p><p>The day of the performance finally arrived! I invited some friends who were a part of my aerial journey: Rilka, who was my first silks mentor; Julie, Aurora, and Ember, who took silks and hammock classes with me; and of course my husband, Harry, who helped me edit the song and was so supportive through the whole process! As I was called to the stage, I was “scroked”, which is my term for “scared and stoked”. I walked to the silks, and waited for the music to start…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iFiZzrkza8LKFfa4H0UHYQ.jpeg" /></figure><p>My first trick off the ground was a split-silk invert into splits. I spent a LOT of time stretching my splits in preparation for the performance!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sEA20_GZvadBOaioXVXgqQ.jpeg" /></figure><p>I put on a footlock, inverted, and took a moment to strike a dramatic pose. This also gave me a moment of rest before going into a fancy split-silk double footlock sequence.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XGMQ4cwM8ALDHFXKWskwOg.jpeg" /></figure><p>From double footlocks, I was able to hit this fun split pose! Careful observers might notice that all the splits in my performance were on my right side, because that side was more flexible. (Do what I say, not what I do… always stretch both sides equally!)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GfTbYUnfyNyXDt9b_RtNUw.jpeg" /></figure><p>I went hands free, and balanced precariously for a few seconds in this position (with some wobbling). In the video Harry recorded, you can hear him laugh and shout “wiggle wiggle!” at this point (not helpful, Harry!)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PCeToL3wdmUc4G2YSMLTdQ.jpeg" /></figure><p>An interesting and directionally-challenging transition brought me to the crossback straddle, where I was able to go hands-free again and rest for a second before launching into an inversion sequence.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nF6q0YAbNGZYlahxdpGQKg.jpeg" /></figure><p>I inverted, hooked my leg for stability, and dramatically untangled the silks to make sure they were separated before going into the tick-tock drop.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DQMIjg3pGQREJEG5i7qKew.jpeg" /></figure><p>I originally wasn’t planning to put the “music box” trick into my performance because it was too simple and easy, but Harry said that was his favorite trick, so I included it for him (and as a chance to take a breather!) It ended up looking really pretty though — which goes to show, not every trick has to be a difficult one!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xfJ6X7Cm59is4SaPZK_ILQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NbutXre6BYdbSqwaSuJRMw.jpeg" /></figure><p>As I was setting up for my big double-star drop, I tossed the silk over my free leg and the photographer captured this beautiful moment. This is one of the reasons I enjoy silks (as opposed to hard aerial apparatuses) — they really have a mind of their own, and move so fluidly and dynamically!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*o2lQ0NMvrY-cYBZbGtn1TQ.jpeg" /></figure><p>I took a deep breath, and let go into the double-star drop. The photographer caught me mid-drop! I love how the tail of the silk curves around so elegantly. I have never seen myself mid-drop before, and am pleased to see that I kept good form (arms and legs out like a star, strong core with no twisting). This was the scariest part of my performance, but I drilled the drop so many times that I felt confident I had it dialed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*laBx2Ps9HU1RlKDveTBrNg.jpeg" /></figure><p>The “cartwheel” is one of my favorite tricks, because you can do it over and over and over again (the end position is the same as the start position). Here, I’m coming up at the end of my second consecutive cartwheel with some anti-gravity hair, for my grand finale.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EK1fkO9Y7SRzaDyvT3LlbQ.jpeg" /></figure><p>And that was a wrap! I was the last performer before Renee (who was a very cute cat, performing aerial hoop). We finished with performer bows, and some photos with my friends. Of course my friends picked me up!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*vlKWb_0L1iRVF9-c" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/920/0*MVk0Qjyco-TwuZSf" /></figure><p>Many thanks to Ken (<a href="https://www.instagram.com/poleninjaphotography/">@poleninjaphotography</a>) for the gorgeous photos! <a href="https://photos.app.goo.gl/1q4ksQ1dXXAyrPkJA">Here are some more photos and videos from the performance</a>. My favorite video is <a href="https://photos.app.goo.gl/MtEcaP542Db2qkXD7">the video Harry took</a>, because of his cheering and narration — this was his first time watching my entire performance, and I love his surprised exclamations!</p><p>After the performance, we headed to Wursthall for some celebratory bratwurst and beers, where we discussed the highlights of the showcase. For me, the highlight was finally seeing my pre- and post-pandemic silks journey come together into a performance I was really happy with, and to be able to share that with friends who were an important part of that journey!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*TfbiuU70YUqFdEs0" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*TzXEvJUfpPryhfKs" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*iwFuNxn0k04rkWAX" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b00530ef95f6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rocktober in Yosemite]]></title>
            <link>https://cathieyun.medium.com/rocktober-in-yosemite-b588c4e021d2?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/b588c4e021d2</guid>
            <category><![CDATA[yosemite]]></category>
            <category><![CDATA[climbing]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Thu, 10 Nov 2022 03:57:38 GMT</pubDate>
            <atom:updated>2022-12-06T18:42:42.471Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<p>My 2022 fall season in Yosemite was stacked with great friends, big adventures, and rad climbing! Here are a few trip reports and stories, along with lots of fun photos and gratuitous amounts of beta — for the Rostrum, Astroman, and some other ultraclassic routes!</p><h3>The Rostrum</h3><h4>Falcon Party [Cathie + Julie + Milde]</h4><p>Julie and I kicked off our fall climbing season by getting on <a href="https://www.mountainproject.com/route/105863822/the-north-face">the Rostrum</a> with Milde! We were originally planning to climb <a href="https://www.mountainproject.com/route/105860676/positive-vibrations">Positive Vibrations</a> and some other routes on The Hulk, but the forecast for the area shaped up to be a quad-fecta of 30mph winds, below-freezing daytime temps, snow, and wildfire smoke. We figured that maybe mother nature didn’t want us to climb The Hulk that weekend, and decided to bail to Yosemite instead.</p><p>We’d been tossing around the idea of climbing the Rostrum — but I was intimidated by the finger cracks, while Julie was intimidated by the offwidths. We decided to combine our strengths to get on this legendary route. Since Julie and I wanted to swing leads, but Milde also wanted to join in the fun, we tagged a line for Milde to toprope solo behind us — an unusual but efficient setup! (The party ahead of us was confused about our setup, and asked Julie “did you just pick him up in the parking lot?”)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*anuluF1zyi0wYUgm_TXt5w.jpeg" /><figcaption>Milde showcasing his toprope solo setup on pitch 5 — he used two microtraxes, and tied knots in the rope at regular intervals below him as a back-up. The follower would tag his line up, to reduce weight for the leader.</figcaption></figure><pre>Packing beta: I was a huge fan of going light and ditching the follower<br>pack on this route! We each brought a fanny pack (with snacks, the topo,<br>and a headlamp), a water bottle, and light shoes (eg Xeros, Toms - since<br>the approach and descent are so chill).</pre><p>Julie battled the finger cracks on pitches 2 and 4 with strength, bravery, and some goat noises. It was then my turn to dust off my offwidth skills on pitch 6, which turned out to be quite fun because I could get secure knee-jams for most of the way!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lCrtyZkiNxmgMFD3IE7zIA.jpeg" /><figcaption>Julie cranking through the slippery finger jams on the crux of pitch 2</figcaption></figure><p>While climbing through the pile of bloody bird shit on pitch 7, we joked that we’d turned into falcons, and made falcon noises for the rest of the route. (There were very excited falcon screeches when Milde brought out his bag of sour gummy worms — a falcon’s favorite snack!) We topped out a bit before sunset, made falcon calls which reverberated off the canyon walls, and took an elated summit selfie.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9Kh5Omsq8HC84zG9H0XVRg.jpeg" /><figcaption>A flock of very happy falcons on top of the Rostrum, at the summit tree!</figcaption></figure><pre>Pitch 8 beta: Mountain Project says to remove your big cam (#5) so it<br>doesn&#39;t get dragged into the crack, and &quot;gun for the top - do not fall&quot;.<br>However, we&#39;re team &quot;safety first&quot; and didn&#39;t love this suggestion. </pre><pre>You can actually leave the #5 cam in the crack, and then get some small<br>pieces in a small horizontal crack on the face (.1, .2, .1/.2 offset, or<br>all of the above for a nest of power), which will keep the rope out of<br>the crack and also provide some protection. Alternately, you can also<br>extend the belay from the tree (making a long rope-tree anchor) to keep<br>the rope out of the crack as you&#39;re belaying.</pre><p>The next morning, we had a leisurely breakfast of champions at camp with Maia and Jean — blueberry and banana pancakes, courtesy of Milde! Once we were stuffed, we all headed to New Diversions for some chill cragging. From New Diversions, we had an amazing view of the Rostrum so we had to take a Rostrum selfie!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OkaGFRbPGSVY5NYkCpzisw.jpeg" /><figcaption>“We climbed that!!!” A perfect view of the Rostrum, from New Diversions Cliff.</figcaption></figure><p>We got rained out in the afternoon, so Julie and I drove back to San Francisco. On the way back, she mentioned that she had tickets to an <a href="https://soundcloud.com/acidpauli">Acid Pauli</a> set… so of course, we did a wardrobe change and went out to party! We’re never too tired to dance!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uwq4EWDoNmfg07GgeIfhVA.jpeg" /><figcaption>Arula performing “<a href="https://soundcloud.com/arulamusic/sets/new-release-drippin-in-gold-ep">Drippin in Gold</a>” before Acid Pauli came on</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uttOjEMd8KeOxBo_oIPTjQ.jpeg" /><figcaption>Goofing around in the photo booth</figcaption></figure><h4>Going for the send [Cathie + Ben]</h4><p>Ben had been engaged in a multi-year battle to get the ground-up send of the Rostrum. He had climbed and sent every pitch separately, but had been deterred from a bottom-to-top ascent multiple times by weather, smoke, or running out of daylight. A few weeks after I climbed the Rostrum with Julie and Milde, Ben was traveling to San Francisco for a conference, so we decided that we’d get him out to Yosemite and finally find him the closure he needed.</p><p>We drove out from the Bay Area on Saturday morning (which in retrospect was a mistake), finally arriving at the base of the route around noon. A guy in the party ahead of us was an ecologist in Yosemite, and taught us many fun falcon and bear facts (he said the best place to spot bears in the fall is in the oak grove by the Yosemite elementary school, since they love fattening up for the winter on acorns!).</p><p>I usually don’t climb routes multiple times in succession, but I really enjoyed getting on the Rostrum again because every pitch felt way more secure and fluid the second time around — I felt like I got the movements dialed! I also appreciated Ben’s precise beta for the finger crack sections, which helped a lot. He’s a great teacher, and actually taught me a lot of my offwidth and finger crack techniques when climbed the cracks at PGSF together four years ago — it’s very fitting that he’s a professor now!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AbQhMpjSSPbxaWVzunT_Hg.jpeg" /><figcaption>Ben following my lead on pitch 5, cruising the thin hands section</figcaption></figure><p>Ben led the crux (pitch 4), which he had projected and sent in the past. This time, his foot blew unexpectedly — he had placed his .75 cam in a spot that blocked a better foot placement! He lowered back to the start of the crack and got the send the second time around, placing the .75 a bit higher so the good foot placement was free. I also fell at the crux, but lowered back to the start of the crack and got the “toprope send” on my second try. So maybe we didn’t get a ground-up send, but we’ll count this as “good enough” to give Ben the closure with the Rostrum that he needed!</p><p>Due to our late start and a slower party ahead of us, we ended up climbing the last two pitches in the dark. I led pitch 8 by headlamp, and semi-joked that it didn’t really matter if I had light because you don’t need to see anything to climb offwidth anyway. We summited, celebrated our successful outing, and stumbled back to camp.</p><h3>Astroman</h3><h4>Astroboy [Cathie + Ben]</h4><p>To round out our weekend, the next day Ben and I decided to climb Astroboy, which is the name for the first few pitches of <a href="https://www.mountainproject.com/route/105845493/astroman">Astroman</a>. Ben wanted to take a crack at the Boulder Problem (pitch 2), and I was really excited for the Enduro Corner (pitch 3).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/573/1*Z4YJReKF0fBx0envSN_mHw.png" /><figcaption>From the Sloan guidebook — the “Boulder Problem” is the lower section, not the upper!</figcaption></figure><p>On pitch 2, we made a poor route-reading error, which was obvious in retrospect. We thought the Boulder Problem was the top half of the left crack, so Ben climbed the 5.10b stem start and traversed left to the piton, following the chalked holds. (Little did he know that the chalked holds are usually from people traversing right…) He climbed up the thin left crack and flailed desperately, to the dawning realization that it was way harder than 5.11c and he was off route. I gave him a crash course in aid climbing, and he aided his way to the anchor. Whoops!</p><p>I led the Enduro Corner, and it was epic!!! The climbing off the deck was great hand jams for me, and felt amazing — I wished it would never end. Unfortunately, it soon thinned down to .75s, and also got steeper. I tried to make the thin hand jams work for a bit, but tired myself out and had to rest. Once I resigned myself to full-commit laybacking, though, I was able to power through some burly but secure moves. I pulled over the bulge desperately, and found a thank-god stem rest. One more section of laybacking led to the most glorious chimney ever — easy climbing, with multiple hand cracks to choose from! I belayed Ben up, and we decided to call it a day and rappel from there. All in all, we had a pretty epic Yosemite weekend, and quite an adventure packed “work trip” to California for Ben!</p><h4>Full commit [Cathie + Jon]</h4><p>A few weeks later, my buddy Jon visited me from Salt Lake City. We’d climbed together a bunch in his neck of the woods (Moab, Indian Creek, Little Cottonwood Canyon, City of Rocks) but he’d never been to Yosemite, so we had to make the pilgrimage! And since he doesn’t believe in warming up or doing things in moderation, he decided that he wanted his first ever climb in Yosemite to be Astroman. I was game :)</p><pre>Pack beta: we brought a small haul bag, since it was going to be a long<br>day with a non-trivial descent. The leader trailed a tag line, and set up<br>the haul with a microtrax. They hauled the bag up while belaying the<br>follower (with the bag a little ahead of the follower, so the follower<br>could un-stick the bag if it got caught). The pack had our approach shoes,<br>food, water, jackets, and headlamps. Bring grippy shoes for the descent,<br>there are some slab sections!</pre><p>We got an early start, and were hiking to Washington Column when I heard Jon say “Cathie… is that a bear?” I had been so focused on finding the climber’s trail, that I had completely missed the bear behind a boulder, maybe 15 feet away from me. The bear munched on acorns and watched curiously, as I made a hasty retreat.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lgBflcHZMIItsmToSaOISA.jpeg" /><figcaption>The bear that I almost stumbled upon, while looking for the climber’s trail</figcaption></figure><pre>Approach beta - Gaia track:<br><a href="https://www.gaiagps.com/public/Qinj6MT4umn19iThe8wOjcyq">https://www.gaiagps.com/public/Qinj6MT4umn19iThe8wOjcyq</a><br>The spot where I backtrack is the correct approach trail - follow that!<br>We backtracked and took a long way around, because the bear was blocking<br>the trail...</pre><p>After that fun wake-up, we made it to the base of Astroman without any more mishaps. I led pitch 2 this time, and went the correct way instead of going off-route above the Boulder Problem. Jon led the Enduro Corner, though the #1 hand crack was a bit more of a struggle for him on account of his giant meat-paws. He took a whip at the bulge, rested, then powered through to the chains.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*V4GyZ8jZ5Lbczj5OGD_Zug.jpeg" /><figcaption>Jon flashes a peace sign (or victory V?) from his great stem rest on the Enduro Corner</figcaption></figure><p>After two chill pitches, we arrived at the Harding Slot, and I was on the sharp end. I had read up on other people’s beta on how to climb the Harding Slot, and had ended up more confused than before. People talk about the Harding Slot like they talk about a psychedelic trip — their description mostly sounds like gibberish (“dyno chicken wing”???) and ends with “I don’t know man, I can’t really describe it, it’s a whole experience… you just gotta do it yourself to understand, yaknow?”. Armed with a bunch of useless beta, I headed up into the unknown.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MoYEvLrMlhvoGq7aPkJC2g.jpeg" /><figcaption>The Harding Slot, in all its intimidating glory. That sliver of sky is where you climb through!</figcaption></figure><p>Before imparting my own useless, unhinged-sounding ramblings on beta for the Harding Slot, I’ll just say — that was the wildest and weirdest thing I’ve ever climbed, and it was so cool!!! Getting into the slot was the hardest part for me, since everything was so slick. I got a great hand jam with my left hand, while palming down with my right hand and trying to make the most of some very slippery feet. I could then bump my left hand to the jugs in the back of the slot — no dyno chicken wing required.</p><p>Once I was in the slot, I pulled out my chimney and offwidth bag of tricks: <a href="https://www.reddit.com/r/tradclimbing/comments/kfxceg/squeeze_chimney_technique/">frog</a> scooting while pushing down with my palms, and some heel-toe cams. I really appreciated being small, as I fit pretty comfortably but never felt like I was going to get stuck. If I wanted a rest, I simply put my arms in front of my chest and inhaled, and I was securely and cozily lodged. I got good gear in the back of the slot the whole way up (.75–2&quot;), which made me happy, although I couldn’t fall out of the slot even if I tried.</p><p>However, Jon, being more than 50% larger than me, had a very different experience. He pulled into the slot without too much difficulty, but shortly ceased to make upward progress. It turned out that he was simply stuck.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5tSrFTELF0A2ZC9W6ORfbw.png" /><figcaption>Jon is stuck.</figcaption></figure><p>Jon wanted to swing to the outside of the slot to climb the 5.11X layback. However, I had not been a very considerate leader, and the gear I’d placed in the back of the slot made that difficult. He laybacked a short section to get around the narrowest part of the slot, and then swung back into the crack to retrieve the gear.</p><pre>Harding Slot gear beta: If you have doubts of your follower&#39;s ability to<br>fit in the Harding Slot, be a considerate leader and don&#39;t place gear once<br>you&#39;re in the slot, so they can toprope the 5.11X layback variation. The<br>smaller human should lead this pitch ;)</pre><p><a href="https://youtube.com/shorts/4E4csfld440?feature=share">Jon emerging from the Harding Slot</a></p><p>There were rappel rings on top of the Harding Slot, so we checked in to see if we wanted to keep going up or rappel. Jon was pretty exhausted from his battle with the slot, but since it was “only four more pitches” to the top, we decided to keep on going.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Y-58LYfEF8Gkyv6LaQ7i2w.png" /><figcaption>Learn from my mistakes and struggles on the Changing Corners pitch!</figcaption></figure><p>I was on the sharp end for the “Changing Corners” pitch. However, my tank was running low — especially since I’d stupidly forgotten our sandwiches at home, so we had been subsisting off of bars all day (and any of my climbing partners can tell you, that you don’t want a hungry Cathie!) I quested upward, but got pretty rattled by the high-commitment mantle move and the face climbing. By the time I arrived at the corner with “thin tiny nuts”, I was running on fumes and hung on some marginal gear. Through sheer willpower, I powered through the wider crack section while battling killer rope drag, toward what looked like a thank-god belay ledge. When I arrived at the plush ledge, before building my anchor, I checked the topo. I realized I had gone off-route and had to downclimb and traverse right to the actual anchors, and I almost broke down and cried from sheer exhaustion and frustration. I held it together (barely) and did the wild traverse to the actual anchor out right.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZQn8O13da8kdZt3lxJORag.jpeg" /><figcaption>Kate, from the party behind us, stylin’ up the wide crack on the Changing Corners pitch. You can see the beautiful and misleading hand crack continuing up and to the (climber’s) left. Kate and Jackson were very supportive and patient while I had a near-meltdown leading this pitch.</figcaption></figure><p>Jon bravely led the last pitch, the “scary face pitch” which goes at 5.10d R, as the sun was setting. This pitch has not one, but <em>two</em> R sections, because the gear is so marginal! The rock quality is pretty questionable here, and the rock sometimes crumbles into skrittle underfoot. At the 5.10d R section, Jon’s foot slipped unexpectedly as he was placing gear. A fixed nut caught him, but he landed on the “menacing spike” before the rope came taut. He collected himself, called down that he was fine, and soldiered upward again. He belayed me up, as I marveled at how sparse and questionable the gear on the pitch was. It doesn’t go at “R” for nothing! (Jon ended up with a pretty dramatic butt bruise, but no serious damage).</p><p>We topped out in the dark, and wolfed down half a burrito from <a href="https://www.yelp.com/biz/taqueria-canc%C3%BAn-san-francisco-5">Taqueria Cancún</a> and some snacks which had been buried at the bottom of the bag. I was so grateful to get some calories — we needed it for the long descent!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Lp35QtjQpORSozijgv3PFg.jpeg" /><figcaption>Summit selfie from the top of Washington Column, with the last bit of sunlight!</figcaption></figure><p>We made friends with a party that had climbed the South Face of Washington Column, and did the descent with them. They had amazing gear beta — instead of heavy and bulky approach shoes, they had packed Chacos and hiking socks! It seemed to work great for them. It took us 1.5 hours to get from the summit to the base of Astroman, and another 30 minutes to get from the base back to the car.</p><pre>Descent beta - Gaia track:<br><a href="https://www.gaiagps.com/public/Ch3lwf3dSqUX9reOJsGTJofb">https://www.gaiagps.com/public/Ch3lwf3dSqUX9reOJsGTJofb</a><br>Once you finish the 4th class ledgy downclimbing and enter the forest,<br>you could follow the descent trail downhill which leads you back to the<br>main hiking/biking/horse trail. However, we had left a backpack at the<br>base of Astroman, so instead we bushwhacked west to get back to the base<br>without losing as much elevation.</pre><p>We both had work the next day, so we slogged to the car and drove back to San Francisco, stopping by In-N-Out for a late dinner. We arrived home around 2am and collapsed into an exhausted slumber.</p><p>A gear side note — partway up Astroman, Jon told me that the trigger wires on my #4 had broken. This was really annoying, since we still needed the #4 for several wide sections! I MacGyver’ed some trigger wires out of extra hairbands, and vowed to more closely inspect my trigger wires for signs of wear in the future. Once I got home, Harry replaced the trigger wires for me, using a trigger wire repair kit we ordered from Black Diamond.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qxUyPwixZV_4TtF_MsmZNQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QfCX_weDDAN0iuTbLVvtFw.jpeg" /><figcaption>A demo of my MacGyver’ed hairband trigger wires — it wasn’t great, but it worked well enough to get us to the top!</figcaption></figure><p>In non-climbing-related adventures, Jon had never been to the SF bay area before so I showed him my favorite outdoor spots — the tide pools at Pillar Point, and the redwood forest. He made little friends in both places!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J8n1HM-8SROOszBzTaG_jA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oCkEB50mAuJbXbkcCAtCHQ.jpeg" /><figcaption>Jon catching crabs at the tide pools, and becoming acquainted with a very luscious banana slug</figcaption></figure><h3>Fifi Buttress</h3><p>When I climbed the Rostrum with Ben, completely by coincidence, Miles was actually higher on the route and recognized my helmet when he looked down! We hung out around his campfire when we got back to camp, and he and I discussed roping up the following weekend. He suggested Fifi Buttress — he had already climbed Voyager and Center of the Universe, but was down to climb them again so I could experience them!</p><pre>Approach beta - Gaia track:<br><a href="https://www.gaiagps.com/public/PPeMf4WkKqmJNWqU4Kd3ZvW0">https://www.gaiagps.com/public/PPeMf4WkKqmJNWqU4Kd3ZvW0</a><br>This track takes you to the base of Voyager! To get to the base of Center<br>of the Universe, see my descent track.</pre><h4>Voyager [Cathie + Miles]</h4><p>Voyager was such a fun romp! I loved the variety of climbing it offered, and how safe it felt (there are bolts whenever the protection is even mildly questionable). We basically giggled our way all the way up the route. The cruxes both felt very feasible — the Incinerator is exhausting but well protected, while the Boulder Problem is just one big move (with slippery feet) with a bolt at your waist!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8Alx_PUkPo3u523QRxvp7g.jpeg" /><figcaption>Miles getting an impressive stem rest on pitch 1.</figcaption></figure><h4>Center of the Universe [Cathie + Miles]</h4><p>We had so much fun on Voyager, that we wanted to keep going. We ate lunch at the base of Voyager, then walked on the ledge over to the top of pitch 4 of Center of the Universe. We climbed pitches 5, 6, and 7 on Center of the Universe, which Miles said are the best pitches on the route.</p><p>I made the silly mistake of linking pitches 6 and 7 together, which resulted in terrible rope drag by the time I got to the crux of pitch 7. I pulled through the crux, got a hand jam, plugged a #2, and was pulling up rope and trying to clip my piece when my hand jam slipped out and I took a huge whip! Miles said I fell about 15 feet, but it felt like an eternity falling through free space — at least the fall was clean! I collected myself, and then battled the rope drag to the anchors. Despite being rattled by the fall, I still really enjoyed the climbing on Center of the Universe — another high-quality route by Dan McDevitt!</p><pre>Descent beta - Gaia track:<br><a href="https://www.gaiagps.com/public/xRw1DihRRPgyKFULbKNjMtrO">https://www.gaiagps.com/public/xRw1DihRRPgyKFULbKNjMtrO</a><br>This is the descent from the base of Center of the Universe.</pre><h3>Mr. Natural [Cathie + Julie + Cheryl + Foster]</h3><p>Dan and Shannon got married in Yosemite Valley (with the most gorgeous wedding ceremony ever), and a bunch of our climbing friends were in attendance! The ceremony was at sunrise and the reception was in the afternoon, so we had a few hours to sneak away and climb. We decided to get on Mr. Natural since it was walking distance from our campsite at Upper Pines — perfect for a quick getaway!</p><pre>Approach beta: If you climb Apron Jam as an approach pitch, bring some<br>big gear! I was happy to have a #5 and #4 for the wide crack at the start.<br>There’s a slightly heady traverse right from the top of Apron Jam, to the<br>start ledge for Mr. Natural.</pre><p>Julie was an MC for the wedding reception, so she climbed Mr. Natural first in order to have time to change and do preparations for the reception. She headed up and marveled at how good the finger locks were, confidently placing gear and moving smoothly. She made a few goat noises at the crux, but pulled through the hard moves by entering the witness position and giving herself words of affirmation.</p><p>Next, Foster toproped the route clean — all aboard the send train! He also brought his fancy camera and ascending setup, so he could fix a line and play photographer for Cheryl. Cheryl took the sharp end, all smiles and nervous excitement.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wwolw8IvFImahZif32nI7w.jpeg" /><figcaption>A huge smile for bomber totem placements!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hqERFcdsgl5VWLH-dtZmKQ.jpeg" /></figure><p>I headed up last, and squeaked by with a send — though it wasn’t an onsight, since Foster gave me helpful and much appreciated gear beta from his photographer’s position on the fixed line. I’ve never gotten the professional photography treatment while climbing before, and it was pretty neat!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uPskuy0HAecVCaUcmxcmDA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6QWEu6hOj3eGKoD_iUD6eg.jpeg" /><figcaption>Cranking through the thin fingers crack at the crux</figcaption></figure><p>We rappelled and walked back to camp, to clean up and get dressed for the wedding reception that afternoon — which Julie and Marty did an amazing job MC’ing, of course!</p><p>I considered the fall climbing season in Yosemite to be officially over when it started snowing in early November. I had a ton of fun getting on some harder and higher-commitment routes this season, but was also ready to take a break after running my body into the ground weekend after weekend. I celebrated the end of the season by spending time with friends and family in the bay area, carrying on our yearly tradition of going chestnut harvesting at <a href="https://skylinechestnuts.com/">Skyline Chestnuts</a>. The plan is to hibernate until the start of ski season… which is actually pretty soon!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8s1Spwhomkxod2rPXBVV0w.jpeg" /><figcaption>We’re NUTS for NUTS!!! Julie and Marty harvested the most chestnuts, by a long stretch :)</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b588c4e021d2" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Drinking Cryptographers]]></title>
            <link>https://cathieyun.medium.com/drinking-cryptographers-a5c4969f7bdf?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/a5c4969f7bdf</guid>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[drinks]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Fri, 04 Nov 2022 20:09:57 GMT</pubDate>
            <atom:updated>2024-09-11T03:10:02.784Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<p>With the holidays approaching, here’s a security/cryptography themed drink menu that you can use for inspiration for upcoming parties!</p><h4>Cocktails / Mixed Drinks</h4><pre><a href="https://heartbleed.com/">Heartbleed</a>             | Bloody Mary<br><a href="https://en.wikipedia.org/wiki/Runtime_error_detection">Rum-time Error</a>         | Strawberry Daiquiri<br><a href="https://ristretto.group/why_ristretto.html#pitfalls-of-a-cofactor">Co(lada)-factor Attack</a> | Piña Colada<br><a href="https://owasp.org/www-community/vulnerabilities/Using_freed_memory">Use after Fruit</a>        | Grapefruit Juice + Vodka + Club Soda<br><a href="https://en.wikipedia.org/wiki/Open-source_software">Open Source Software</a>   | Make your own cocktail<br><a href="https://en.wikipedia.org/wiki/Zero-knowledge_proof">Zero Knowledge</a>         | Surprise cocktail</pre><h4>Other Alcoholic Drinks</h4><pre><a href="https://en.wikipedia.org/wiki/Log4Shell">Log4Claw</a>               | White Claw<br><a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack">WannaCry</a>               | Smirnoff Ice<br><a href="https://en.wikipedia.org/wiki/Buffer_overflow">Buffer Overflow</a>        | Guinness</pre><h4>Virgin Drinks</h4><pre><a href="https://en.wikipedia.org/wiki/Buffer_overflow_protection#Canaries">Stack Canary</a>           | Grenadine + 7UP<br><a href="https://crypto.stanford.edu/~dabo/pubs/papers/BLSmultisig.html">Rogue Key Attack</a>       | Remove the alcohol from any cocktail<br><a href="https://ristretto.group/ristretto.html">Ristretto</a>              | Red Bull<br><a href="https://en.wikipedia.org/wiki/Air_gap_(networking)">Air Gap</a>                | Water<br><a href="https://en.wikipedia.org/wiki/FedRAMP">FEDRAMP Compliance</a>     | Cold Pressed Vegetable Juice</pre><h4>Snacks</h4><pre><a href="https://en.wikipedia.org/wiki/Arbitrary_code_execution">Remote Chip Execution</a>  | Chips &amp; Salsa<br><a href="https://meltdownattack.com/">Meltdown</a>               | Freeze Pops</pre><p>This drink menu was originally made for a DEFCON30 kickoff party. There was also a <a href="https://github.com/CardsAgainstCryptography/CAC">Cards against Cryptography</a> game, and the scavenger hunt team “<a href="https://www.defconscavhunt.com/dc30/">what’s with the nails?</a>” was born. Feel free to suggest other security/cryptography themed drinks, the wittier the better!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a5c4969f7bdf" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[El Cap then El Nap]]></title>
            <link>https://cathieyun.medium.com/el-cap-then-el-nap-54f0aeac788?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/54f0aeac788</guid>
            <category><![CDATA[yosemite]]></category>
            <category><![CDATA[climbing]]></category>
            <category><![CDATA[el-capitan]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Mon, 27 Jun 2022 07:58:46 GMT</pubDate>
            <atom:updated>2022-07-28T18:21:17.030Z</atom:updated>
            <content:encoded><![CDATA[<p>Julie and I climbed The Nose on El Capitan, over the Juneteenth 2022 long weekend! Here’s an informal trip report, which I’m writing up for friends and family who are curious about what we did and how it went.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FkcbJZ2g2RJM%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DkcbJZ2g2RJM&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FkcbJZ2g2RJM%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/9f9f4b82787806136342cfb20049f943/href">https://medium.com/media/9f9f4b82787806136342cfb20049f943/href</a></iframe><h3>Getting stoked</h3><p>Julie and I have both always dreamed of climbing El Capitan, but we thought of it as something only “real climbers” do — it seemed like too big and intimidating of a project to seriously consider. However, sometime in late 2021, we started discussing climbing The Nose together, in earnest, and we got really stoked as the idea became more concrete. We read up on how to big wall climb, put together a training plan, studied the details of the route, and blocked off weekends for practice runs and skills training leading up to the Big Push.</p><h3>The plan</h3><p>Our friends Mel, Dan, and Alex climbed The Nose together last year as a party of 3, in 3.5 days. We thought the way they broke up the days made a lot of sense, so we planned to follow their itinerary up the route:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZLG8U3s0j_ckMOhkumMrMg.png" /><figcaption>Our planned day-by-day breakdown for climbing The Nose</figcaption></figure><p>Normally, Julie and I mostly free climb — meaning, we use our hands and feet to get up climbs, with protection from gear and a rope. However, in order to efficiently climb The Nose, we used a mix of french free and aid climbing. French freeing is when you free climb, but occasionally place gear and pull on it (it’s basically free climbing with some cheating); aid climbing is when you place gear and put ladders on the gear, and step up on the ladders. No matter what form of climbing we did, though, we were always protected by our gear and ropes — we are team “safety first”! (For more details on the logistics of big wall climbing, <a href="https://www.vdiffclimbing.com/bigwall-intro/">VDiff has a great explanation</a>.)</p><h3>Day 0: Fixing to Sickle Ledge, 7am — 4pm</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Vkubv7kvKQ8HwKl4" /><figcaption>Cathie leading up Pitch 0, Pine Line</figcaption></figure><blockquote>Update from the valley: today (day 0) we fixed to sickle and hauled our bag up, as planned. We’re sleeping in a campsite tonight, and will jug the lines up tomorrow morning.</blockquote><blockquote>We got a permit for sleeping on the wall, and the ranger said we’re the only party on the nose with a permit! There is another party who did the same thing as us today though (fixed to sickle, hauled bags) — so we are going to get a really really early start tomorrow to try to beat them! (They have two EXTREMELY heavy haul bags and a separate portaledge bag and a huuuuuuge poop bucket — they are climbing siege style and can’t be very fast, so we don’t want to get stuck behind them…)</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*14k-dWxPFR6WNl1e" /><figcaption>Julie jugging up the fixed ropes, as I haul Hauly up above her</figcaption></figure><blockquote>We had a small fiasco with fixing ropes, because it turns out that the second rap (from sickle) requires a 70m rope (though the guidebook says 60m… Lies!). But the rope we saved for that rap was 60m. And our haul line was 65m! Thankfully Harry brought in my 70m rope, as well as some ice cream ;) (and poor Julie hauled the bag on a dynamic rope). Also squirrels got to our sandwiches, so we didn’t have lunch but had a really early dinner on the pizza deck, yum! Julie would like to add that she successfully tricked Cathie with egg/no egg 3 times today! Harry was not fooled, he was 2 for 2.</blockquote><blockquote>Sending love!</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FGCoF3-Duzcdk2n5EctTeg.jpeg" /><figcaption>Our hero Harry, who hiked in my 70m rope and some ice cream to the base of sickle</figcaption></figure><p>Egg/no egg is a game where you take a hard boiled egg (or a <a href="https://thewoksoflife.com/chinese-tea-eggs/">tea egg</a> in our case — my mom made us a bunch of tea eggs for wall snacks) and put the entire egg in your mouth (or don’t), then turn to your partner. Your partner has to guess whether you have an egg in your mouth or not. It’s an ideal game to play while snacking at belays. And really, it’s harder than it sounds!</p><p>Because we fixed lines to Sickle Ledge, we could sleep on the ground for the night— which was nice because we got to enjoy some nice “ground” amenities before spending the next few days on the wall!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/820/0*650kImpdPwhSCfrG" /><figcaption>We took the afternoon to swim in the river and cool down — it was pretty hot in the valley!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/820/0*byFVcS0UEdSMWlRR" /><figcaption>Enjoying our last bite of civilization for a few days, at the Curry Village Pizza Deck, while reviewing the topo.</figcaption></figure><p>In the evening, <a href="http://www.chongonation.com/">Chongo</a> paid a surprise visit to our campsite (Harry had spent the afternoon discussing quantum mechanics with him, and had invited him over). He gave us some tips on hauling systems and wished us good luck on our climb!</p><h3>Day 1: Ground to El Cap Tower, 5am — 5pm</h3><blockquote>Hello dearest friends and lovers!</blockquote><blockquote>We just wrapped up a very successful and eventful day 1 (please note the zero indexing of the days). We got a 4am wakeup, and harry was gracious enough to get up before the asscrack of dawn with us! We jugged up the ropes we fixed yesterday, and dropped our extra rope which Harry picked up. Despite our early wakeup, we weren’t the first one the wall — some whoops and cheers were exchanged with a NIAD (nose in a day) crew who were past sickle before 5am (wow)!!! We beat mega haulbag party though, phew.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*gszccLbci5sul9rA" /><figcaption>Getting an “alpine start” - jugging our fixed lines by headlamp</figcaption></figure><blockquote>At the top of the first pitch, Cathie decided to pull a tommy caldwell and yeet her fanny pack (containing her phone and headlamp) off the wall, whoops. Luckily we have an oh shit kit containing an extra headlamp. Unfortunately her phone may be a goner though, all future updates will come from Julie (who will hopefully not yeet her phone).</blockquote><blockquote>Julie got to lead the stovelegs, declaring them the best pitches ever (so far). Cathie got redemption on the wide fists / offwidth pitches, and got her first correct egg / no egg of the trip. We forgot the haul line once, but otherwise the hauls went pretty smoothly. Hauly the haul bag has been serving us very well.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6Mpw1RSQudG-UMD-" /><figcaption>The incredible Stovelegs crack — continuous beautiful hand and fist crack for multiple pitches! Cathie had led these pitches a few weekends ago during a practice run, so Julie got to lead them this time — what a treat!</figcaption></figure><blockquote>We made it to El Cap tower around 3pm and fixed the next two pitches (Texas flake and the boot flake). Julie sort of freed the calf of the boot. We wrapped up around 5 and are now enjoying the view from the v v plush bivvy on el cap tower, while warming up with hot Pad Thai.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6EnhS1rMRKVKM80n" /><figcaption>Julie on top of Texas Flake — what a brave lead!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MGlF4oo0in7iZfTwWH_ngg.jpeg" /><figcaption>Cathie jugging up the Texas flake pitch — that’s what the inside of Texas Flake looks like!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*s1JntReH-aKXVJDK" /><figcaption>Julie sort-of freeing the calf of Boot Flake, ladders flying in the wind</figcaption></figure><blockquote>Fingers crossed for a big smooth day tomorrow. After jugging our fixed lines, we’ll kick it off with the king swing! The weather today was a little cloudy and chilly, but altogether quite nice (sending temps!) Hoping it stays more or less the same through the next few days!</blockquote><blockquote>Like and subscribe, and thanks for following along!<br>Cathie + Julie</blockquote><p>That night, we slept on top of El Cap tower which is a very spacious ledge, with enough space to sleep 6 people — and we had it all to ourselves! The view of the valley was gorgeous, especially at sunset and sunrise. While eating our hot Pad Thai dinners, we video called our partners (there is great reception once you’re high up on the wall) to say hello.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SM2Jn4x0lCjrQI86" /><figcaption>It was a bit chilly, so Julie taught me a trick to stay warm — by putting your hot Mountain House dinner inside your jacket! Just make sure not to squish it though…</figcaption></figure><p>We stayed anchored into the wall at all times while cooking, setting up camp, and sleeping (safety first!) Since the ledge was so large, we could just sleep on our sleeping pads — no portaledge needed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*8Whkk9EZ-Z0P7qDi" /><figcaption>Cathie admiring the golden hour light, snug as a bug in a rug</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9WG6YKMsyFpx9jHC" /><figcaption>Julie getting ready for bed, with Hauly docked on the ledge behind her</figcaption></figure><h4>Side note: where’s the bathroom?</h4><p>Since we were spending multiple days on the wall, of course we had to use the bathroom at some point. We’d go #1 off ledges (preferably away from the climbing route), while keeping our harnesses on. Going #2 is a bit more involved — you have to poop in a bag, and bring it with you! We bought really nice “wag bags” from my friend James Huang, who runs <a href="https://niceclimbs.com/">niceclimbs.com</a>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*grbrZTZMm3qkgGHd" /><figcaption>The “El Crap”, the nicest wag bag on the market by far. The odor-proof outside bag is critical!</figcaption></figure><p>Next, we put the used El Crap bags in an air-tight “poop tube”, which my husband made for us out of plumbing pipe. We named ours The Poopmaster:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1bm80xUaYD1GEmId" /><figcaption>The Poopmaster 9000. Our friends wrote motivational phrases on it, such as “Turn those carbs into GLORY!”</figcaption></figure><p>I will admit, though, that my body had a difficult time relaxing enough to make #2 happen… which Julie mentions in our next email update.</p><h3>Day 2: El Cap Tower to Camp V, 6am-7pm</h3><blockquote>Day 2: questing into the unknown</blockquote><blockquote>We got up at 5am, Cathie tried to poop and sadly no luck. We saw beautiful stars last night and enjoyed the sunset views. We had a leisurely and delicious breakfast watching the light slowly filter into the meadow.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/976/0*Cl5SXohKG2Ar8Vgb" /><figcaption>Watching the sunrise from El Cap Tower — majestical!</figcaption></figure><blockquote>We jugged up to the boot flake, then Julie set up for the king swing. She snagged it first go, so fast that Cathie wasn’t even set up yet to give her a boost. Woops and delight ensued. We had some rope shenanigans with the lower out off of the boot, but with ingenuity, safety, and good ole fashioned struggling we made it.</blockquote><p><a href="https://youtube.com/shorts/LAoN1vg_D6w">King Swing</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1LG_eedsU4oO_UacYzzNjQ.jpeg" /><figcaption>Tom Evans (of <a href="http://elcapreport.com/">elcapreport.com</a>) got some photos of Julie swinging and succeeding! As he advised us when we met him in El Cap meadow — “you gotta fuckin’ run for it!”</figcaption></figure><p>Harry was in El Cap Meadow with a telescope and watching / taking photos of us, and he captured the rope shenanigans as I lowered out from boot flake:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/997/0*yXIQQFGDSHdHBmbC" /><figcaption>It’s not a real big wall climb if you don’t have at least a few rope shenanigans</figcaption></figure><blockquote>Julie led the Lynn hill traverse and it was AMAZING! LYNN HILL IS OUR HERO AND INSPIRATION!!!! after the traverse Julie led a pitch with a crazy step out that required full faith that good things were happening around the blank corner (there were good things). Cathie followed and got to experience the terror/joy as well. We swapped, then Cathie brought us to the bottom of the great roof!</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/976/0*xcg5kgoT1ta8xL-_" /><figcaption>Getting excited for some fun climbing! Cathie is racked up and ready to lead</figcaption></figure><blockquote>Cathie CRUSHED the great roof, she credits the danfi hook and DMM offset nuts. at this point we caught up with a party above us, and were caught up with by a niad party below. Slight chaos ensued. We tried to let the niad folk pass, but they got their rope stuck and had to fix it for a while. Julie cleaned the roof and continued.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*CttMw6w9RjVkDBV2" /><figcaption>The Great Roof, from below — quite intimidating!</figcaption></figure><p>Harry got this great timelapse of me leading the great roof:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FxzYk33axBPQ%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DxzYk33axBPQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FxzYk33axBPQ%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/9590d2f70cc700f0f50e27e83996f1b1/href">https://medium.com/media/9590d2f70cc700f0f50e27e83996f1b1/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/730/0*AjpMzZZ2STTFGtyR" /><figcaption>Cathie at the anchors after the Great Roof</figcaption></figure><blockquote>Cathie led the pancake flake and describes it as “fucking insane, it’s like 110ft of continuous liebacking”. Side note we have been french freeing most pitches and have been really enjoying the actual climbing on the nose (shocker).</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1002/0*ssUCm9t8fR3HzaRf" /><figcaption>Cathie freeing (or french freeing) the Pancake Flake</figcaption></figure><blockquote>At this point the niad party caught us again and we let them pass, they were pretty cool and had heard of us!! They were both climbing stewards and had heard from the other steward who issued us our permit that we had climbed all the planet granite cracks in a day. We exchanged weird asian nuts for gummies from Berkeley bowl west and all rejoiced.</blockquote><blockquote>Cathie took us to camp 5 via an “awkward pitch” which she thinks is just a misunderstood pitch. Someone dropped a black totem on Julie’s head, booty??? Julie fixed the next pitch, catching up with the party ahead once more. We came down and were done around 7pm. It was a 12.5 hour day!! Woohoo! We’re now fed, watered, peed, and portaledge is set up.</blockquote><blockquote>Shout-out to Carson for letting us borrow his inflatable portaledges which are crazy nice.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_lbg8JAV8OYvDxbG" /><figcaption>Julie getting snug on her inflatable portaledge at Camp V</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*5d-8oW_0amvhcIck" /><figcaption>Harry’s view of us from the ground, as we eat our hot dinners and the G7 portaledge flaps in the wind</figcaption></figure><blockquote>Tomorrow our goal is to stay on our A game, be safe, smooth, and have fun!! We plan on waking up around 6, moving by 7/730, and we’ll go from there!!!</blockquote><blockquote>Love you all, we’re hoping we get to see you all at the top!<br>Julie+ Cathie</blockquote><p>Because Camp V was a smaller ledge than El Cap Tower, and slightly sloping, we decided to use the G7 inflatable portaledges so we would have a larger and flatter surface to sleep on. They were really easy to set up, though it took a little bit of getting used to sleeping on them (you have to keep your weight centered, or you will slide around). Here are some exhausted smiles after a long, fun day of climbing:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*r8_htiS2WLXoB_dZ" /><figcaption>Cathie and Julie setting up camp at Camp V</figcaption></figure><h3>Day 3: Camp V to the top! 7am-4pm</h3><blockquote>WE MADE IT!!!!!!</blockquote><blockquote>Hello from the top of El cap! Today was a good day. In continuation of our trend of waking up one hour later each day we woke up at six, broke down the G7 pods which worked ok. Julie slid a little bit at night and Cathie was bunked under Julie and was quite cozy. Cathie had her first ever successful wall poop in her life!! The camp 5 ledge has a nice little private pooping area that we used for our WC.</blockquote><blockquote>Once we broke down camp we jugged up our fixed pitch from the day before. Cathie kicked off the leads with a tricky aid section that turned into the most beautiful hand crack known to man kind. She felt so guilty aiding the hand crack that she felt morally obliged to put on her crack gloves and free the rest. Then the changing corners pitch came up. First off, Lynn Hill is a boss and we cannot imagine anyone thinking that that pitch could go free. Cathie quested hard, and a piece blew on her resulting in a lost brassy and squeals (there was a bolt and a good nut under her and she took a 2 ft fall). Cathie crushed it but her brain was mush at the end so Julie took over the next leads.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*2XYQeTmg_VTRFDKz" /><figcaption>Cathie at the top of the Changing Corners pitch, where she got a bit shaken up</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Rpvv1Q0ZHc5nW2j0" /><figcaption>Julie taking over on the sharp end after Changing Corners, leading up the overhanging hand crack</figcaption></figure><blockquote>First pitch was a beautiful hand crack that Julie kind of aided at the beginning then freed. Next was the sort of tricky roof, Julie sang to herself “just keep climbing” and extensively used our four black totems. The stance at the end of this pitch was wild!! Cathie was too nervous to look down but Julie loved the exposure and the stance. The final two pitches were the bolt ladder, the roof was unexpected! It was a good thing we had gotten practice on the kor roof three weekends ago so we felt really good on it. (We really crammed for this exam).</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*HCkzLyTBSlZdg-Nu" /><figcaption>Julie leading the Kor Roof on Washington Column — a perfect way to prepare for the final bolt ladder!</figcaption></figure><blockquote>The final belay was the most insane hanging belay over a roof with no feet. All of El cap extends below you and the wind was going crazy. We felt so nervous, excited, tired, relieved, drained, optimistic, and felt something adjacent to proud, more like the feeling you feel when you’ve worked really hard for something and are kind of sad it’s coming to an end (note: Julie felt this way but Cathie was shitting her pants).</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6sHwUQt2dd8ZjIuv" /><figcaption>Julie leading the final pitch, feeling excited and proud</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*n8KdXw1vuIV9tfat" /><figcaption>The exposure — you could look all the way down the route, to the base of the Nose</figcaption></figure><blockquote>Julie topped out, saw friends then the rope got stuck, and she had to go back down to the anchor and haul and fix from there. Julie and Cathie had a beautiful little moment together before joining the others at the top ❤. Cathie took us to the top, we got an assist on the belay and the haul from Marty and Harry. Cathie watched and commanded from her high horse.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_PnfjSEJUNmul0N9" /><figcaption>Julie and Cathie victorious at last, at the Nose tree</figcaption></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FS1_bFBdTNpU%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS1_bFBdTNpU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FS1_bFBdTNpU%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/aa32d02067e180e1de4c946b599485be/href">https://medium.com/media/aa32d02067e180e1de4c946b599485be/href</a></iframe><blockquote>We feel so lucky that Adam, Kenny, George, Wen, Harry, and Marty came to meet us at the top. Kenny and Adam brought a two burner stove and cooked a deluxe mushroom pepper and onion stir fry. The boys brought us fresh pineapple and watermelon and everyone brought tons of water. We feasted, we hugged, and we were so so happy, feeling all the feelings.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*z9RdNxXg2BwQZ4yC" /><figcaption>Our summit support crew, who hiked all the way up to meet us with resupplies!</figcaption></figure><blockquote>We set up camp at the top of El cap to sleep and watch the sunset, which was stunning both to the west and to the east over half dome and Tuolumne. We popped champagne (thank you George, Adam, and Filippo)!</blockquote><blockquote>We have el capped, el crapped, and now we el nap!!!!!!!<br>Lots of love,<br>Cathie+Julie</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*N4q3VnVGA_guNVov" /><figcaption>Celebratory partner hugs at the summit!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*h1obL_0CRDQ0xSeJ" /><figcaption>My flamingo-husband Harry came to bring us resupplies! (The flamingo hats were left over from my bachelorette party, which was also in Yosemite a few months ago).</figcaption></figure><p>We ran into Connor and Jim Herson on the top of El Cap, they had just finished climbing the Salathe — and Connor had <a href="https://gripped.com/news/connor-herson-frees-5-13c-on-el-cap-its-not-the-salathe-if-you-do-the-monster-offwidth/">freed the whole route</a> (it goes at 5.13c!!!). Jim took one look at Hauly and told us, “that haul bag is way way way too big.” We don’t fat shame our haul bag, but their haul bag was about a quarter the size of ours and I will admit, it looked way more pleasant to haul!</p><h3>Day 4: Back to civilization</h3><blockquote>Hello friends!</blockquote><blockquote>Now that we have successfully completed our adventure and are safely home, it’s time to thank our sponsors (aka the friends and family who made this all possible) -</blockquote><blockquote>Our summit support crew — Harry, Marty, George, Wen, Adam, Kenny — who hiked the grueling upper Yosemite falls trail to the top of El Capitan with 9 gallons of water, a full cooking setup, fresh food (watermelons, pineapples, beer, champagne), and hugs! Also Harry set up a telescope in El Capitan meadow to watch us and take photos of us on the wall, which did a great job of documenting our second day on the route.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4NUlno0_AclnsIzkbEbx-Q.jpeg" /><figcaption>Harry, Kenny, Marty, and Adam being the best summit support flamingoes, hiking Upper Yosemite Falls</figcaption></figure><blockquote>Carson, who lent us his G7 pods — they were such a pleasure to sleep on at camp 5, and were so light and easy to set up!</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3ux8XQGcnEu2ocPyE4zd6w.jpeg" /><figcaption>Harry and I slept in the G7 pods on top of El Cap — I wanted Harry to experience the magical pod life!</figcaption></figure><blockquote>Alex Lenail for gifting us a haul bag! We affectionately named her Hauly, and she was our constant buddy on the wall.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*KxKU-52FZ_BuC8yH" /><figcaption>Julie carrying Hauly the haul bag to the base of El Capitan. Hauly’s a big girl!</figcaption></figure><p><a href="https://youtube.com/shorts/VHb0FKHdV08?feature=share">hauly the haul bag</a></p><blockquote>Dan, for lending us his proprietary DanFi hook — that made aiding a much more pleasant experience (we got away with using only one ladder instead of two, reducing tangles).</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rhW87W1Vzrn-afWVYIkSlw.png" /><figcaption>The DanFi hook is an adjustable fifi hook engineered / made by Dan Shanks</figcaption></figure><blockquote>Mel, for all the beta and aid knowledge transfer. And for our amazing practice run up Washington Column together!</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ZergBxpxy9-uA-TS" /><figcaption>Our Hawaiian-themed weekend climbing Washington Column together</figcaption></figure><blockquote>Milde, also for aid beta and inspiration. We collectively called Dan, Mel, and Milde “the elders” (e.g. “the elders set up a Tyrolean here when they climbed it”). Thanks for showering us with your knowledge!</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9J0GawRi3Iskmjs51neoWw.png" /><figcaption>The elders — Mel, Dan, and Milde — climbing the Nose a year ago (June 2021)</figcaption></figure><blockquote>Our super supportive families — Julie’s mom said she was proud of us for dreaming so big! And my mom’s way to show support was to made us a ton of tea eggs for snacking on the wall, which were so tasty (and perfect for playing egg / no egg ;) )</blockquote><blockquote>We love you all so much, thank you for coming along with us on this journey!</blockquote><blockquote>Julie + Cathie</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1002/0*RF61g2368EkhAiDv" /><figcaption>Goofing around in El Cap Meadow after getting back to the valley</figcaption></figure><h4>Side note (optional reading): Preparation</h4><p>Julie and I have been climbing for 8 and 10 years respectively, so we were already fairly comfortable with multi-pitch trad climbing (including skills like gear placement, rope management, and endurance for long days on the wall). Things we actively worked on to prepare for the Nose:</p><ul><li>We wanted to be comfortable enough to on-sight 5.10c in the valley, so we could free or french free most pitches on the Nose. So, we trained in the gym and in the valley until we felt comfortable at that grade. This training included “heavy bottom girls” gym sessions, where we would climb with a double rack on our harnesses and/or several liters of water, to simulate the weight we’d be carrying while climbing on the Nose. We also did a “tour de craque”, where we spent a day climbing every single crack in every single Planet Granite gym in the bay area, totaling about <a href="https://www.mxi2000.net/mudworm/2016/03/a-climbers-guide-to-planet-granite-cracks/comment-page-1">52 pitches</a>.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M4VOS4j6nitfoD3a14IOwA.jpeg" /><figcaption>Blood, sweat, and tears — these were my hands after a few “heavy bottom girls” training sessions, and climbing Washington Column. Training wasn’t always easy, but it was always a good time :)</figcaption></figure><ul><li>We learned big wall skills — how to aid climb, haul and dock bags, fix and jug lines. This was the biggest step for us, since neither of us were very experienced big wall climbers (I had climbed Moonlight Buttress many years ago, but my skills were rusty). We practiced aiding bolts in the gym, at least until we got in trouble for it. I set up a fixed line on a tree in my backyard, where I practiced jugging and hauling/docking Hauly with weights in it — I timed each lap, and was able to get about a 2x speedup! Chris McNamara’s books and videos helped a lot with learning aid skills, and Bryan Bornholdt gave us some great advice for dialing efficiency.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NpjdK5cBxqpYsElDAVRdxw.jpeg" /><figcaption>Teaching “Adam the Boulderer” how to jug the fixed line in my backyard, while Arya watches on (really, I just needed an excuse to include an Arya photo)</figcaption></figure><ul><li>We also practiced our big wall skills in Yosemite itself. We practiced jugging by ascending the fixed lines to Heart Ledges, and hauling Hauly (with 4 gallons of water) the whole way. This is how we decided we really wanted to stick to a 1:1 (instead of 2:1) haul! We climbed Washington Column with Mel 4 weekends before, did a Nose practice run to Sickle 3 weekends before, and did another Nose practice run all the way to the Boot Flake (sleeping on Dolt Tower) 2 weekends before our final push. The Nose practice run to the Boot Flake felt smooth and efficient, so we were confident enough with our skills to go for the full route!</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qpEMC0ozsjHP5z_VBS6UmA.jpeg" /><figcaption>Julie’s shot of me following on Washington Column — you can see Dinner Ledge and Honeymoon Ledge below!</figcaption></figure><ul><li>We studied the Nose topo extensively, including reading others’ pitch-by-pitch breakdowns and tips. We annotated the topo with our most critical notes, and split up pitches (red = Cathie, blue = Julie, purple = ?).</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7Ds__YsBFNyFYoADbRGTeQ.png" /><figcaption>Our annotated Nose SuperTopo, with pitch-by-pitch gear recommendations and reminders</figcaption></figure><ul><li>We got all our gear together and packed! We ended up bringing: a triple rack, 2 ropes (lead rope and haul line), personal climbing gear (harness, ascenders, etc), 2 G7 pods, 2 sleeping pads with ground sheets, 2 sleeping bags, headlamps (including a backup), 4 gallons of water, backpacking dinners and a jetboil, sandwiches and a LOT of fun snacks, the Poopmaster and several El Craps, clothes, toiletries, a first aid kit, and of course Hauly. We had a follower pack which contained warm layers, the first aid kit, and food for the day. We each carried a fanny pack with a phone, printed topo, tape, headlamp, and snacks — at least, I did until I yeeted mine off El Cap.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*BUVdoDBM2mTQalpS" /><figcaption>The yard sale in the driveway as we packed up our gear</figcaption></figure><ul><li>We picked the Juneteenth weekend for our big push, since it looked like a surprisingly cool weather window. We blocked off vacation days at work, got unreasonably excited, and then had the experience of a lifetime!!!</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WaH7LHUAMeqTqTaX" /><figcaption>Watching sunset over Tuolumne from the top of El Cap, while savoring our success!</figcaption></figure><p>Thanks for reading, and happy adventuring!<br>❤ Cathie + Julie</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=54f0aeac788" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Adventures with RSA Blind Signing]]></title>
            <link>https://medium.com/swlh/adventures-with-rsa-blind-signing-397035585121?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/397035585121</guid>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[blind-signature]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[vpn]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Thu, 25 Feb 2021 00:11:25 GMT</pubDate>
            <atom:updated>2024-06-07T21:22:10.480Z</atom:updated>
            <content:encoded><![CDATA[<p>Let’s try (and fail) to break RSA blind signatures today! Google One recently released a VPN service, with the goal of protecting users’ privacy as they browse the web (<a href="https://www.gstatic.com/subscriptions/marketing_page/vpn/white_paper_4f995ab5d7c7edc3d3f14f2e0593f790.pdf">explainer</a>, <a href="https://github.com/google/vpn-libraries/blob/main/krypton/crypto/rsa_fdh_blinder.cc">implementation</a>). One interesting detail is that it uses RSA Blind Signing to decouple a user’s authentication (signing) from their internet browsing (redemption), so that users have a stronger guarantee that their online activity won’t be tied back to their identity. I was the cryptography reviewer for this project, so I took the opportunity to understand how RSA Blind Signatures work. In this writeup, I’ll first give a brief primer on blind signatures. Then the fun part: I’ll walk you through two RSA Blind Signature “non-attacks” — things I thought were vulnerabilities, but actually weren’t — so others can learn from my mistakes! I’ll wrap up with some advice for anyone who is looking to use blind signing protocols in the future.</p><h3>Background on Blind Signing</h3><p><em>Blind signing</em> is exactly what it sounds like: a protocol where someone signs something without knowing (being <em>blind</em> to) what they are signing. This concept was first described by Chaum in 1982 in his paper, <a href="http://www.hit.bme.hu/~buttyan/courses/BMEVIHIM219/2009/Chaum.BlindSigForPayment.1982.PDF">Blind Signatures for Untraceable Payments</a>. Basically, blind signing allows you to decouple the signing step (since the signer is <em>blind</em>) from the redemption step, giving nice privacy guarantees. The concept might seem a bit contrived, but is actually useful in a few situations, including digital cash schemes and voting protocols. For a really good explanation of how this works using the voting analogy, see the <a href="https://blog.cloudflare.com/cloudflare-supports-privacy-pass/">Cloudflare blog post on Privacy Pass</a>; if you like talks more, I explained the concept in my <a href="https://youtu.be/hY0M8N32qAg?t=375">talk at 0x0G</a>.</p><p>The VPN by Google One, Cloudflare, and Google Chrome are all interested in blind signing protocols as well. This is because they all have something in common: they want to make sure that users are actually valid users (as opposed to bots, scrapers, etc) before serving them content, but they also want to preserve the privacy of those users as they browse. Blind signing allows them to do both. The users prove that they are valid users by authenticating to a service, and giving the service a <em>blinded</em> value to sign (so the service doesn’t actually know what token it’s signing). Then, when the user wants to retrieve content, they unblind and redeem this signed value (token). The redeemed <em>unblinded</em> value that the redemption endpoint sees is unlinkable to the <em>blinded</em> value the authentication service saw and signed! Therefore with blind signing, a VPN by Google One user can have peace of mind that the VPN operator is not able to link their identity with their browsing activity using session IDs, which gives a stronger anonymity guarantee.</p><h3>RSA blind signatures</h3><p>The simplest blind signing scheme is based on RSA signing. I will not cover RSA signing here, other than to link to the <a href="https://people.csail.mit.edu/rivest/Rsapaper.pdf">RSA paper</a> and to mention that it is extremely easy to implement insecurely, leading to a long and storied history of <a href="https://crypto.stanford.edu/~dabo/papers/RSA-survey.pdf">attacks on RSA</a> and a general <a href="https://blog.trailofbits.com/2019/07/08/fuck-rsa/">recommendation not to use RSA</a> by cryptographers. I will discuss later why RSA based blind signatures were still the right choice for VPN by Google One.</p><p>RSA parameters, oversimplified (assume that these are chosen correctly):</p><p>e = public exponent<br>d = private exponent (known by signing server)<br>x^e^d == x (mod N) for all x in [0, N)</p><p>Protocol:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/706/1*IHerZUj8IzvFxlNrJMlMFw.png" /></figure><p>Notes: r must be relatively prime to N. The Client and Redemption Point must know the correct public key e.</p><h3>“Non-attack” #1: token malleability</h3><p>Suppose you are a malicious client, and want to run a bot farm. You&#39;d like to legitimately get one signed token, and then use it to create many new illegitimate but valid signed tokens, for your bots to use, by taking advantage of token malleability.</p><p>First, you authenticate to the Signing Server and get a signed blinded token back: T = sig(BM). Next, you create a bunch of new tokens from this signed token without having to authenticate again, by multiplying your token by a constant. For example, you can make T’ = T/2:</p><p>T&#39; = sig(BM) / 2<br> = (m*r^e)^d / 2<br> = m^d * r / 2</p><p>Now you can unblind your new, evilly procured token T&#39;: <br>sig(m&#39;) = T&#39; / r<br> = m^d / 2</p><p>Send your evil unblinded token to the Redemption Point, which does the validity check without suspecting a thing:<br>given signed token: sig(m&#39;) = m^d / 2<br>given message: m&#39; = m / 2^e<br>check: m&#39; == sig(m&#39;)^e<br>which gives: m / 2^e == (m^d / 2)^e<br>expanded: m / 2^e == m / 2^e</p><p>So the Redemption Point sees this check as passing, meaning they have unwittingly accepted the evil token! Using this approach, you could produce near-infinite evil tokens using just one honest token: just multiply the honest token by different constants, and tweak m&#39; accordingly.</p><p>Now why doesn’t this work? Moti pointed out to me graciously: it actually would work fine if you were only operating over plain messages m… the attack works because of the ability to tweak m freely, since the receiver doesn’t actually know ahead of time what the message should be. In fact, this is the way that RSA blind signatures are initially written up on the <a href="https://en.wikipedia.org/wiki/Blind_signature#Blind_RSA_signatures">Wikipedia page</a> (though hashing is mentioned at the end of that section). However, the correct way to implement RSA blind signatures is to operate on the hash of the message, instead of the message itself. If you replace all instances above of m and m&#39; with h(m)and h(m&#39;), you will see that in order to successfully create a malicious h(m&#39;) to fool the Redemption Point, you would have to find a preimage to the hash function. We assume that this is a computationally infeasible task, if the hash function is well chosen.</p><p>This is yet another example of low-level asymmetric crypto pitfalls… and also why it’s important to reference the correct writeup when analyzing cryptographic protocols! Of course, Google One’s VPN implements this correctly, and I was just chasing a false lead.</p><h3>“Non-attack” #2: nonce reconstruction</h3><p>Here’s a more subtle non-attack. RSA blind signing is constructed so that even if the Signing Server and Redemption Point collude, they should not be able to link a token signing from redemption. Let’s poke around to see what they could learn by colluding. Say the Signing Server saw a blinded token BM, and the Redemption Point saw a redeemed token with message m. They think that these two are linked, meaning that BM was a blinded token made from m. Working together, they will try to reconstruct r from these pieces.</p><p>Signer knows: BM, d (privkey)<br>Redemption point knows: m, sig(h(m)), h(m)<br>Everyone knows: e (pubkey)<br>Solve for r: BM = h(m) * r^e mod N<br>Divide by shared h(m): BM / h(m) = r^e mod N<br>Raise by privkey d: (BM / h(m))^d = r^e^d mod N = r&#39;</p><p>So, the evil Signing Server and Redemption Point have reconstructed the secret nonce r (their guess is denoted as r&#39;). They can now check if this r&#39; actually corresponds to the original BM and m that were received:</p><p>BM == h(m) * r&#39; ^ e mod N<br> == h(m) * ((BM / h(m))^d)^e mod N<br> == h(m) * BM / h(m) mod N<br> == BM mod N</p><p>So, the original BM and m received do correspond with r&#39;, meaning that the Signing Server and Redemption Point have successfully linked a token signing with a token redemption! This breaks the anonymity and privacy guarantees of RSA Blind Signing, and means that a malicious browser / CDN / VPN can track your behavior across the internet…</p><p>Or does it? Before reading on, maybe try to figure out why this attack actually doesn’t work? It’s a fun exercise! Credit to Thai for pointing this out first.</p><p>Okay, here’s why this doesn’t work… because any reconstructed r&#39;, from any BM and m values even if they are not correlated, will pass this check! Let’s work through it with example BM_1 that corresponds to m_1, and sig(h(m_2)), m_2 where m_1 != m_2:</p><p>Signer knows: BM_1, d (privkey)<br>Redemption point knows: m_2, sig(h(m_2))<br>Everyone knows: e (pubkey)<br>Solve for r: BM_1 = h(m_1) * r_1^e mod N<br>Divide by h(m_2): BM_1 / h(m_2) = h(m_1) * r_1^e / h(m_2) mod N<br>Raise by privkey d: (BM_1 / h(m_2))^d = (h(m_1)/h(m_2))^d * r_1 mod N = r&#39;</p><p>Notice how in the original attack, when we divided by h(m) it cancelled out on the right, since we assumed that the signer and redemption point were looking at the same message. In this example, it doesn’t cancel out nicely because we are assuming that m_1 != m_2. Since the Signing Server and Redemption Point don’t know whether the messages are correlated, they set their guess r&#39; to this messy value (BM_1 / h(m_2))^d. Let’s see how the equivalence check plays out:</p><p>BM_1 == h(m_2) * r&#39; ^ e mod N<br> == h(m_2) * (h(m_1)/h(m_2))^d * r_1)^e mod N<br> == h(m_2) * h(m_1)/h(m_2) * r_1^e mod N<br> == h(m_1) * r_1^e mod N</p><p>And this check actually still succeeds, as we end up with the original definition of BM_1 = h(m_1) * r_1^e! So what this means is that whether you are reconstructing r&#39; from two related or unrelated values doesn’t matter, as no matter what, your reconstructed r&#39; will pass the faulty check of relatedness. So you don’t actually learn any information, either way.</p><h3>Alternatives</h3><p>There are many other protocols to <em>blindly</em> create tokens, which can be broadly grouped under blind signatures and anonymous tokens. Blind signatures include RSA, Schnorr/DSA, BLS, and Abe; <a href="https://blog.cryptographyengineering.com/a-note-on-blind-signature-schemes/">this post</a> is a great introduction to the field. Some well-known examples of anonymous token protocols are <a href="https://blog.cloudflare.com/cloudflare-supports-privacy-pass/">Privacy Pass</a>, used by Cloudflare, and <a href="https://www.chromestatus.com/feature/5078049450098688">Trust Tokens</a>, used by Google Chrome. (I was also lucky enough to review Trust Tokens before it launched; I gave a <a href="https://youtu.be/hY0M8N32qAg">talk at 0x0G</a> about my findings).</p><p>The drawback for anonymous token schemes such as VOPRF-based Privacy Pass and Trust Tokens is that they are not publicly verifiable — that is, any redemption point would have to know the secret key d in order to check that a signature is valid. RSA, Schnorr, Abe, and other blind signatures are publicly verifiable: you only need the pubkey e to perform a signature validity check. In the case of VPN by Google One, it was highly desirable for the signatures to be publicly verifiable so that the private key wouldn’t have to be distributed to all exit nodes. Therefore, it made sense to choose a publicly verifiable signature scheme in this setting. Schnorr blind signatures are shown to be <a href="https://eprint.iacr.org/2020/945.pdf">broken</a>, BLS blind signatures are computationally expensive, and Abe blind signatures have large signatures; given design requirements, RSA blind signatures were the best fit for VPN by Google One.</p><p>For both anonymous tokens and blind signature schemes, one critical component is for all clients to see the same public key (or in the case of Trust Tokens, the same set of public keys) — this is the only way the unlinkability property can hold. If different users see different public keys, then the signer and redemption endpoints will be able to differentiate between groups of users based on which public key they are working with — therefore grouping the users into different anonymity sets.</p><h3>Conclusion</h3><p>My main takeaway from all this is that RSA is weird! As a result, RSA blind signing has strange properties, and its security relies on subtle things such as hashing and correct RSA parameter selection. But the core protocol is not broken; in fact, <a href="https://eprint.iacr.org/2001/002.pdf">this paper</a> proves it to be secure under the random oracle model. So our attempts to break RSA blind signatures were doomed to fail all along, but hopefully it was a fun adventure! If you want to learn more or be involved in discussions on this topic, <a href="https://github.com/chris-wood/draft-wood-cfrg-blind-signatures">here</a> is a recent draft for the Crypto Forum Research Group (CFRG) on RSA blind signatures.</p><h3>Thanks</h3><p>With contributions from <a href="https://vnhacker.blogspot.com/">Thai Duong</a>, <a href="http://www.cs.columbia.edu/~moti/">Moti Yung</a>, <a href="https://tlepoint.github.io/">Tancrède Lepoint</a>, and Scott Hendrickson — thanks for working with me on this review! Thanks also to <a href="https://andres.systems/">Andres Erbsen</a>, <a href="https://rubin.io/">Jeremy Rubin</a>, and <a href="https://www.chromatocosmos.com/about-me">Geoff Bradway</a> for giving feedback on this blog post and making it more readable.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=397035585121" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swlh/adventures-with-rsa-blind-signing-397035585121">Adventures with RSA Blind Signing</a> was originally published in <a href="https://medium.com/swlh">The Startup</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building on Bulletproofs]]></title>
            <link>https://cathieyun.medium.com/building-on-bulletproofs-2faa58af0ba8?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/2faa58af0ba8</guid>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[confidentiality]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[bulletproofs-protocol]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Fri, 12 Apr 2019 22:55:15 GMT</pubDate>
            <atom:updated>2021-07-11T09:36:42.800Z</atom:updated>
            <content:encoded><![CDATA[<h3>Preface</h3><p>In this post, I will explain how the Bulletproofs zero knowledge proof protocol works, as well as talk about the confidential asset protocol and confidential smart contract language we are building using Bulletproofs.</p><p>This post is a condensed version of previous <a href="https://interstellar.com/protocol">talks and blog posts</a> and our <a href="https://doc.dalek.rs/bulletproofs/index.html">Bulletproofs library documentation</a>. It has also been featured in the MIT <a href="https://mitcryptocurrencyresearch.substack.com/p/mit-dcis-cryptocurrency-research-350">Digital Currency Review</a>.</p><h3>Background</h3><p>Zero-knowledge range proofs are a key building block for confidential transaction systems, such as Confidential Transactions for Bitcoin, Chain’s Confidential Assets, and many other protocols. Range proofs allow a verifier to ensure that secret values, such as asset amounts, are nonnegative. This prevents a user from forging value by secretly using a negative amount. Since every transaction involves one or more range proofs, their efficiency, both in terms of proof size and verification time, is key to transaction performance.</p><p>In 2017, Bünz, Bootle, Boneh, Poelstra, Wuille, and Maxwell published <a href="https://crypto.stanford.edu/bulletproofs/">Bulletproofs</a>, which dramatically improves proof performance both in terms of proof size and verification time. In addition, it allows for proving a much wider class of statements than just range proofs.</p><h3>Definitions</h3><p>Commitment — a commitment Com(m) to message m is hiding, which means it does not reveal m. It is also binding, which means that if you make a commitment to m, you cannot open it to a different message m’. In the context of Bulletproofs, commitment refers to a Pedersen commitment, which has the additional property of being additively homomorphic, which means that Com(a) + Com(b) = Com(c) only if a + b = c.</p><p>Zero-knowledge proof — a proof that a certain statement is true, without revealing the secret that the statement is about. This is usually done by making a commitment to the secret that the statement is about, and sharing the commitment along with the proof.</p><p>Zero-knowledge range proof — a proof that a secret value is in a certain range (from 0 to 2^n — 1). The proof is usually shared with a commitment to the secret value so that it can be verified.</p><p>Inner product — the sum of an entry-wise multiplication of two vectors.</p><p>Notation: vectors are written in bold, such as <strong>a</strong>, <strong>2</strong>^n (which is an n length vector 2^0, 2^1, ... , 2^{n-1}), and <strong>0</strong>^n (which is an n length vector of 0s). Inner products are written as c = &lt;<strong>a</strong>, <strong>b</strong>&gt;, where <strong>a</strong> and <strong>b</strong> are vectors of the same length, and c is a scalar.</p><h3>Range Proof</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*h3vI-TEmSeeWZ0PczT2tlA.png" /><figcaption>Oleg Andreev’s stylized illustration of the Bulletproofs range proof protocol</figcaption></figure><p>We’d like to make a proof of the following statement: 0 ≤ v &lt; 2^n</p><p>We know that if this is true, then v must be a binary number of length n. For example, if n=4 and v=3 (we’re checking if 3 is in range of 0 to 2^4 — 1), then this means that v must be able to be broken up into a bit representation that is 4 bits long, if it is actually in range:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/634/0*XKx7JLVyewHfx-4v" /></figure><p>We would like to represent this claim in the form of an inner product because of the extremely efficient inner product proof that Bulletproof introduces, which we will talk about in the next section.</p><p>First, let’s name the bit representation of v: <strong>v_bits</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wG1rLJrCJzQwFUGE" /></figure><p>v should be equal to the inner product of <strong>v_bits</strong> and the vector <strong>2</strong>^n (which is an n length vector 2^0, 2^1, ... , 2^{n-1}) if <strong>v_bits</strong> is actually the bit representation of v. We can do that by adding check 1 in the figure below.</p><p>Also, we need to make sure that <strong>v_bits</strong> is actually composed only of bits (no other pesky numbers, like 5 or -1000… that would be bad!) We can do that by adding check 2 in the figure below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*IikS1pOyrEmudnpg" /></figure><p>Next, we combine these two statements using challenge scalars, and add blinding factors to them. The math behind this is not difficult — just tedious — and ends up giving us an inner product statement in the form of c = &lt;<strong>a, b</strong>&gt;. That is, we arrive at a statement where if the statement is true, then we know that v is in range of 0 and 2^n. You can follow along with the step-by-step math for how that statement is created in our <a href="https://doc-internal.dalek.rs/bulletproofs/notes/index.html#range-proofs-from-inner-products">range proof notes</a>.</p><h3>Inner Product Proof</h3><p>In the range proof section, I mentioned that our goal was to create a statement in the form of an inner product, for efficiency reasons. Let’s go into more detail on what an inner product is, and how we can prove an inner product efficiently!</p><p>An inner product proof is a proof that c is the inner product of vectors <strong>a</strong> and <strong>b</strong>. That is, c = &lt;<strong>a, b</strong>&gt;.</p><p>This may be a helpful visual for what an inner product is:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dGjjIb7Y1ncEmp1y" /></figure><p>Naively, a prover could prove this to the verifier by sending over <strong>a</strong> and <strong>b</strong> and c, and then the verifier could verify that c = &lt;<strong>a, b</strong>&gt; by computing it themself. However, this would take O(n) space to send, and O(n) time to verify, where n is the length of <strong>a</strong> and <strong>b</strong>. The great thing about the bulletproofs inner product proof is that it allows us to do this proof in O(log(n)) time and space instead!</p><p>The intuition for how the inner product proof is achieves this efficiency, is that in each step it halves the size of the <strong>a</strong> and <strong>b</strong> vectors it is working with. Therefore, it requires log(n) steps since after that many steps, the lengths of <strong>a</strong> and <strong>b</strong> are 1 (the base case).</p><p>So if we started with the original <strong>a</strong> and <strong>b</strong> vectors, and their product c, then we can divide each of the vectors into a hi and lo half:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*hc7YKtCyC-eadAD3" /></figure><p>And then, we get a random challenge scalar x that we use to combine the hi and lo halves of <strong>a</strong> and <strong>b</strong> to create <strong>a</strong>’ and <strong>b</strong>’, which also gives us a new c’ = &lt;<strong>a</strong>’,<strong> b</strong>’&gt;.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*RRnwsPSW4eS-ZT_-" /></figure><p>When doing the math to expand c’, notice that the first two terms of c’ are the same as c! Therefore, we can simplify the expression for c’ to be written in relation to c, and what we can call terms L and R:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FSjhFGgU7LEdFQ9c" /></figure><p>In each round, the prover sends L and R to the verifier, and repeats the next round using the <strong>a</strong>’, <strong>b</strong>’, c’ as <strong>a</strong>, <strong>b</strong>, c. Notice how at each step, this halves the lengths of the vectors <strong>a</strong> and <strong>b</strong>!</p><p>After log(n) steps, we arrive at the base case, where <strong>a</strong>’ and <strong>b</strong>’ are both of length 1. Then, there is no more compression to be done, and the prover can simply send <strong>a</strong>’, <strong>b</strong>’, c’ to the verifier.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/0*7sNmaJm_ChRNAEXD" /></figure><p>The verifier now has scalars <strong>a</strong>’, <strong>b</strong>’, c’ from the base case, and scalars L and R from each of the log(n) steps. The verifier can then reverse the process, starting at the base case. They can trivially verify the base case by checking that c’ = a’ * b’. They can check that the computation is done correctly at each higher step by verifying the calculation of c by using the c’, L, R from that step, until they have completed all checks.</p><p>To see the full math behind the inner product proof, read our <a href="https://doc-internal.dalek.rs/bulletproofs/notes/inner_product_proof/index.html">inner product proof notes</a>. To see the prover and verifier’s algorithms, read our <a href="https://doc-internal.dalek.rs/bulletproofs/inner_product_proof/index.html">inner product proof protocol notes</a>.</p><h3>Aggregated Range Proof</h3><p>Aggregated range proofs are great for performance, because they allow m parties to produce an aggregated proof of their individual statements (m range proofs), such that the aggregated proof is smaller and faster to verify than m individual range proofs. The protocol for creating aggregated proofs is slightly more complex than creating individual range proofs, and requires a multi-party computation involving the parties. In our implementation, we used a centralized dealer to coordinate the communication between the m participating parties.</p><p>To see the math behind the aggregated proof, see our <a href="https://doc-internal.dalek.rs/bulletproofs/notes/index.html#aggregated-range-proof">aggregated range proof notes</a>. To see the prover and verifier’s algorithms, read our <a href="https://doc-internal.dalek.rs/bulletproofs/range_proof/index.html">range proof protocol notes</a>. Also of potential interest is our <a href="https://doc-internal.dalek.rs/bulletproofs/notes/index.html#aggregated-range-proof">notes on the aggregation multi-party computation protocol</a> and corresponding <a href="https://blog.chain.com/bulletproof-multi-party-computation-in-rust-with-session-types-b3da6e928d5d">blog post</a>.</p><h3>Constraint System Proof</h3><p>A constraint system is a collection of two kinds of constraints:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dcCoyZR8NG-IwFz-" /></figure><p>Constraint systems are very powerful because they can represent any efficiently verifiable program. A zero knowledge constraint system proof is a proof that all of the constraints in a constraint system are satisfied by certain secret inputs, without revealing what those secret inputs are.</p><p>For example, we can make a set of constraints (a “gadget”) that enforces that some outputs are a valid permutation of some inputs. Let’s call this a shuffle gadgets. In a simple shuffle gadget with only two inputs and two outputs, we could represent the possible states as the following:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/886/0*PYz5oJnePHRxfZJi" /></figure><p>If we get a random scalar x, then we can actually express this requirement in the form of an equation: (A — x) * (B — x) = (C — x) * (D — x). Because of the equality of polynomials when roots are permuted, we know that if the equation holds for a random x, then {A, B} must equal {C, D} in any order.</p><p>When we implement this 2-shuffle gadget in our constraint system, it looks like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oo-dJyzA9PpjE79f" /><figcaption>A two-shuffle gadget, which adds constraints over variables that enforce that {C, D} are a valid shuffle of {A, B}.</figcaption></figure><p>In line 6, we get our challenge scalar x.</p><p>In line 8 and 10, we make two multiplication constraints: (A — x) * (B — x) = input_mul and (C — x) * (D — x) = output_mul.</p><p>In line 12, we make one linear constraint: input_mul — output_mul = 0, which constrains input_mul = output_mul.</p><p>For the full sample code of the 2-shuffle gadget, including tests, see our <a href="https://github.com/interstellar/slingshot/tree/main/spacesuit">GitHub repo</a>. For an overview of how and why we implemented constraint system proofs, read our <a href="https://medium.com/interstellar/programmable-constraint-systems-for-bulletproofs-365b9feb92f7">blog post here</a>. To see the math behind constraint system proofs, read our <a href="https://doc-internal.dalek.rs/develop/bulletproofs/notes/r1cs_proof/index.html">R1CS proof notes</a>.</p><h3>Cloak</h3><p>The goal of a Confidential Assets scheme is to make transactions in which the asset value and asset type are kept hidden, thereby allowing for multi-asset transactions in which external observers cannot deduce what is being transacted but can verify that the transactions are correct. Cloak is a Confidential Assets scheme built using Bulletproofs.</p><p>Cloak is focused on one thing: proving that some number of values with different asset types is correctly transferred from inputs to outputs. Cloak ensures that values are balanced per asset type (so that one type is not transmuted to any other), that quantities do not overflow the group order (in other words, negative quantities are forbidden) and that both quantities and asset types are kept secret. Cloak does not specify how the transfers are authenticated or what kind of ledger represents those transfers: these are left to be defined in a protocol built around Cloak.</p><p>Cloak builds a constraint system using a collection of gadgets like “shuffle”, “merge”, “split” and “range proof” all combined together under a single gadget called a “cloaked transaction”. The layout of all the gadgets is determined only by the number of inputs and outputs and not affected by actual values of the assets. This way, all transactions of the same size are indistinguishable. For example, this is what a 3 input 3 output cloak transaction looks like to a verifier or a viewer of the blockchain:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*v_NPUtQSXFrOWf4C" /></figure><p>This is what a 3 input 3 output cloak transaction would look like to a prover trying to make a proof of validity for a transaction with an input of $5, ¥3, $4 and an output of ¥3, $6, $3. Notice how the assets of the same type ($) are grouped, merged together, and then split and rearranged into the target amounts:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4ECNMMLV9V7OMViOXNwBWQ.png" /></figure><p>Cloak turns out to be surprisingly efficient: compared to a single-asset transaction (such as the Confidential Transactions proposal for Bitcoin) where only range proofs are necessary, the additional constraints and gadgets needed to support the issued assets add less than 20% of the multipliers. And thanks to the inner product proof, the impact on the proof size is close to zero. This is an illustration of the number of multipliers required by each gadget in the Cloak protocol:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wnG63cQoVAjLb-Y5" /></figure><p>To learn more about Cloak, check out <a href="https://github.com/interstellar/spacesuit/blob/main/spec.md">its specification</a>. To see the implementation, check out the open-source <a href="https://github.com/interstellar/slingshot/tree/main/spacesuit">Cloak GitHub repo</a>.</p><h3>ZkVM</h3><p>The goal of ZkVM is to make a smart contract language that allows for confidentiality. It builds upon previous smart contract language work, aiming for an expressive language that runs in a safe environment and outputs a deterministic log. It uses Cloak to validate that encrypted asset flows are correct, and uses Bulletproofs constraint system proofs to add constraints that values are being operated on and contracts are being executed correctly.</p><p>ZkVM is still being developed, and you can follow along with progress in the open-source <a href="https://github.com/interstellar/slingshot/tree/main/zkvm">ZkVM GitHub repo</a>.</p><h3>Summary</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BYWhFymU5ZetkfU8atJT2Q.png" /><figcaption>Overview of how the pieces of this post fit together</figcaption></figure><p>Hopefully this post has helped you understand how the Bulletproofs zero knowledge proof protocol works, as well as what we’ve been building over that protocol. This just scratches the surface; I encourage you to read more in our notes and dive into our repo if you have more interest!</p><h3>Acknowledgements</h3><p>I worked with Henry de Valence and Oleg Andreev to understand and implement the Bulletproofs paper, as well as design and implement the Cloak protocol. The <a href="https://interstellar.com/protocol">protocol research team</a> at Interstellar is currently designing and implementing ZkVM.</p><p>Thanks to Benedikt Bünz for answering all our questions about the Bulletproofs paper! Also, thanks to Andrew Poelstra for his feedback on this writeup.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2faa58af0ba8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Programmable Constraint Systems for Bulletproofs]]></title>
            <link>https://medium.com/interstellar/programmable-constraint-systems-for-bulletproofs-365b9feb92f7?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/365b9feb92f7</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Mon, 19 Nov 2018 21:13:30 GMT</pubDate>
            <atom:updated>2019-02-04T19:48:31.208Z</atom:updated>
            <content:encoded><![CDATA[<p>We are excited to share our progress on extending our <a href="http://github.com/dalek-cryptography/bulletproofs/">Bulletproofs implementation</a> with a constraint system API which enables zero-knowledge proofs of arbitrary statements.</p><p>In our <a href="https://medium.com/interstellar/bulletproofs-pre-release-fcb1feb36d4b">previous article</a>, we announced a pre-release of Bulletproofs 1.0, the Rust implementation of range proofs. We (Cathie Yun, Henry de Valence and Oleg Andreev) have been working on extending it to support proving arbitrary statements in zero knowledge using a constraint system, which we would like to share with you today. We are also excited to publish our work on the next generation of Chain’s Confidential Assets protocol called Cloak, which builds directly on top of these Bulletproofs constraint system proofs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w2vywDx8F_AHHJEk1ndJVw.png" /></figure><h3>Constraint System</h3><p>Bulletproofs are an optimization to an <a href="https://eprint.iacr.org/2016/263.pdf">earlier paper</a> by Bootle, Cerulli, Chaidos, Groth, and Petit, which showed that it was possible to prove arithmetic circuit satisfiability in the discrete log setting. Their paper introduced the logarithmic-sized inner-product argument, as well as a technique to convert an arithmetic circuit into a rank-1 constraint system (R1CS). The <a href="https://eprint.iacr.org/2017/1066.pdf">Bulletproofs paper</a> optimizes the inner-product argument by a constant factor, and shows how to use Pedersen commitments as inputs to the constraint system.</p><p>R1CS expresses linear combinations of various variables and their multiplications. The Bulletproofs paper uses the following format for the constraint system: an array of n multiplications that gives 3*n low-level variables: left, right and output “wires” of each multiplication “gate”, and an array of q linear constraints between these variables and additional m high-level variables that represent external facts.</p><p>We realized that it is more efficient to bypass arithmetic circuits altogether and provide the API for building a constraint system directly. This way we do not have to construct the graph or arithmetic expressions and then transform them into constraints: higher-level protocols can often keep that graph represented statically by their source code and build constraints on the fly.</p><p>Moreover, since the matrices representing the constraints are usually very sparse, we only store the non-zero terms. The only operation that needs to be done on the constraints is flattening with a challenge variable, and the result is defined solely by the non-zero terms.</p><h3>Variables</h3><p>The constraint system has three kinds of variables: high-level witness variables, low-level witness variables, and instance variables.</p><p><strong>Instance variables</strong> are public parameters, known to both the prover and the verifier. In other proving systems that require a setup for each constraint system, this allows public inputs to the circuit. In Bulletproofs, no setup is required, so there’s no difference between a constraint system with public inputs and a family of constraint systems parameterized by those inputs. This means we can internally fold all instance variables into a single constant parameter.</p><p><strong>High-level witness variables</strong> are known only to the prover, and represent external inputs to the constraint system. In Bulletproofs, these are represented as individual Pedersen commitments to the external variables, for which we construct and prove some relation. For instance, in the Cloak protocol (described below), the transacted amounts are represented as commitments to high-level variables.</p><p><strong>Low-level witness variables</strong> are known only to the prover, and are internal to the constraint system, representing the inputs and outputs of the multiplication gates. For instance, in Cloak these represent bits inside a range proof or intermediate amounts as they are passed through shuffle, merge and split stages. Low-level variables are computed per-proof and committed using a single vector Pedersen commitment.</p><h3>Challenges</h3><p>As noted above, instance variables can select the constraint system out of a family for each proof. This enables a novel approach: by generating some of them as a challenge from a verifier to a prover, <strong>the constraint system itself can be thought of as a challenge</strong> from a verifier to a prover, where some constraints are generated randomly in response to the prover’s commitments.</p><p>The use of challenges to parametrize constraint systems can enable significantly fewer multipliers, which makes the resulting proof smaller. For instance, a verifiable shuffle may require O(n²) multiplications in a static constraint system, but by using challenges we reduce the overhead to O(n) multiplications — inputs and outputs can be used as permuted roots of the polynomials that are randomly sampled at a challenge point and constrained to be equal:</p><pre>{a,b} = {c,d} ⟺ (a−x)⋅(b−x)=(c−x)⋅(d−x)</pre><p>Our implementation performs the Fiat-Shamir transform using <a href="https://doc.dalek.rs/merlin/index.html">Merlin</a> transcripts to generate such challenges. The challenges are bound to the high-level variable commitments which are added to the transcript before any of the constraints are created. Then, the prover and verifier can compute weights for some constraints with the use of the challenges.</p><p>The use of challenges comes with an important caveat: the challenges are bound only to the high-level witness variables (the external inputs to the constraint system), not the low-level ones, so it requires careful analysis to ensure that the construction is safe. That said, we are working on an improvement to the protocol that would allow challenges to be bound to a subset of the low-level witness variables, and have a safer API using features of Rust’s type system.</p><h3>Gadgets</h3><p>The resulting API is largely inspired by the <a href="https://z.cash/blog/bellman-zksnarks-in-rust/">Bellman API</a> used in Zcash: there is a single code path used by both the prover and verifier to allocate variables and define constraints, organized into a hierarchy of task-specific “gadgets”. This way the allocation, assignment and constraints on the variables all happen in one place, providing assurance that variables are not accidentally left unconstrained. In other words, each gadget can be verified independently, without having to analyze correctness of the entire constraint system as a whole (see also the caveat about challenges in the previous section).</p><p>Each gadget is a function that interacts with a mutable “constraint system” object represented by a trait. The prover and verifier use their specific implementations of this trait respectively. The gadget receives secret variables and public parameters, allocates and assigns variables, generates challenges and adds constraints to the constraint system object.</p><p>Gadgets can be composed. For instance, in the Cloak protocol, a “merge” gadget takes M inputs and M outputs and calls a sequence of M-1 “mix” gadgets that operate on pairs of values. Then, the whole collection of gadgets in Cloak is abstracted away with a single “transaction” gadget that takes all input and output values, which could be used either directly or as a part of a higher-level protocol.</p><p>The Bulletproofs library does not provide any standard gadgets, but only an API for the constraint system. It is the job of each protocol on top of it to create a collection of gadgets for its use and build a complete constraint system out of them. For an example of a protocol built using a collection of gadgets, see our Cloak implementation (described below).</p><h3>Cloak</h3><p>Cloak is the redesign of the Chain’s <a href="https://blog.chain.com/hidden-in-plain-sight-transacting-privately-on-a-blockchain-835ab75c01cb">Confidential Assets</a> scheme using Bulletproofs. We are making its implementation open source and calling it <a href="https://github.com/interstellar/spacesuit">Spacesuit</a> as in <em>interstellar cloak</em>.</p><p><strong>Cloak is focused on one thing: proving that some number of values with different asset types is correctly transferred from inputs to outputs.</strong> Cloak ensures that values are balanced per asset type (so that one type is not transmuted to any other), that quantities do not overflow the group order (in other words, negative quantities are forbidden) and that both quantities and asset types are kept secret. Cloak does not specify how the transfers are authenticated or what kind of ledger represents those transfers: these are left to be defined in a protocol built around Cloak.</p><p>Cloak builds a constraint system using a collection of gadgets like “shuffle”, “merge”, “split” and “range proof” all combined together under a single gadget called a “cloaked transaction”. The layout of all the gadgets is determined only by the number of inputs and outputs and not affected by actual values of the assets. This way, all transactions of the same size are indistinguishable.</p><p>Bulletproofs constraint system turns out surprisingly efficient: compared to a single-asset transaction (such as the Confidential Transactions proposal for Bitcoin) where only range proofs are necessary, the additional constraints and gadgets needed to support the issued assets add less than 20% of the multipliers. And thanks to the inner product proof, the impact on the proof size is close to zero.</p><p>The work on Cloak and Spacesuit is far from complete, and now will continue in the open in our <a href="https://github.com/interstellar/spacesuit">repository</a>. To learn more about Cloak check out its <a href="https://github.com/interstellar/spacesuit/blob/main/spec.md">specification</a>.</p><h3>Next steps</h3><p>The work on constraint systems and Cloak is still ongoing. For the R1CS implementation, there are two major improvements that we will focus on:</p><p>First, we would like to extend the Bulletproofs protocol slightly, to enable committing to a portion of low-level variables using a single vector Pedersen commitment without an overhead of additional individual high-level Pedersen commitments. This will also come with a change in the API that would ensure that challenge-based variables cannot be inspected, preventing the user from accidentally breaking soundness of their gadgets.</p><p>Second, we want to enable multi-party proving of a single constraint system. This is different from the existing <a href="https://blog.chain.com/bulletproof-multi-party-computation-in-rust-with-session-types-b3da6e928d5d">aggregation MPC</a> that we’ve done for the range proofs: instead of aggregating proofs of distinct statements purely to make proofs smaller, we want to enable building a joint proof of a single constraint system by multiple parties, without sharing their secret inputs with each other. This not only makes the proofs smaller, but could also improve privacy in Cloak by enabling a zero-knowledge version of a <a href="https://bitcointalk.org/?topic=279249">CoinJoin protocol</a>.</p><h3>Further reading on constraint system proofs</h3><ul><li><a href="https://doc-internal.dalek.rs/develop/bulletproofs/notes/r1cs_proof/index.html">How to build a constraint system proof</a></li><li><a href="https://doc-internal.dalek.rs/develop/bulletproofs/r1cs/notes/index.html">Prover and verifier algorithms for a constraint system proof</a></li><li>Example: <a href="https://doc.dalek.rs/develop/bulletproofs/r1cs/index.html">a proof-of-shuffle constraint system</a></li><li>Example: <a href="https://github.com/interstellar/spacesuit/blob/master/spec.md">Cloak constraint system specs</a></li></ul><h3>Thanks</h3><p>We’d like to thank Sean Bowe, Daira Hopwood, and Jack Grigg from the Zcash team, as well as Mary Maller from University College of London, for their helpful suggestions and discussion.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=365b9feb92f7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/interstellar/programmable-constraint-systems-for-bulletproofs-365b9feb92f7">Programmable Constraint Systems for Bulletproofs</a> was originally published in <a href="https://medium.com/interstellar">Interstellar</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bulletproof Multi-Party Computation in Rust with Session Types]]></title>
            <link>https://cathieyun.medium.com/bulletproof-multi-party-computation-in-rust-with-session-types-b3da6e928d5d?source=rss-2e148c34dad4------2</link>
            <guid isPermaLink="false">https://medium.com/p/b3da6e928d5d</guid>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[cryptography]]></category>
            <dc:creator><![CDATA[Cathie Yun]]></dc:creator>
            <pubDate>Fri, 11 May 2018 22:25:19 GMT</pubDate>
            <atom:updated>2019-11-03T01:41:23.015Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*idtWBrZWFvn-EP3Jvlgd9w.png" /><figcaption>Range proof multi-party computation aggregation protocol in a nutshell</figcaption></figure><p>At Chain, we’ve been working on a pure-Rust library for Bulletproofs, which we described in a <a href="https://blog.chain.com/faster-bulletproofs-with-ristretto-avx2-29450b4490cd">previous post</a>. Our initial release only proved single ranges, but Bulletproofs allow <em>aggregated</em> range proofs. These harness the logarithmic size of the inner-product protocol to create a proof for m values that is smaller and faster to verify than m individual proofs.</p><p>The aggregation is performed by a multi-party computation protocol involving multiple parties and one dealer. Each party has a secret value and wishes to create a range proof aggregated with the others, revealing only a commitment to the secret value and not the secret itself. The dealer is a coordinating party that facilitates this process.</p><p>In our implementation, the parties share their commitments with the dealer, and the dealer generates and returns challenge variables. Each party sends its share of the proof to the dealer, and the dealer combines their shares using the inner-product proof to create an aggregated proof.</p><p>There are multiple ways to model these party and dealer interactions. One way would be to implement the parties and dealers as mutable objects, with a function that mutates the party or dealer state for each step of the protocol. But it’s possible to use this API incorrectly: to call the functions out of order, or forget to call a function, or to call a function more than once. Ensuring that the API is used correctly is made more difficult when running it asynchronously over a network.</p><p>A deviation from the protocol could result in invalid proofs, and opens up the user to potential vulnerabilities that might result in the dealer learning a party’s secret value. For instance, each party constructs a vector polynomial and reveals the result of its evaluation at a single challenge point to construct its proof share. However, if the party could be tricked into revealing multiple evaluation results (a multiple-evaluation attack), it would be possible to cancel out the party’s blinding factors to reveal the party’s secrets.</p><p>We wanted a foolproof model that would prevent users from performing any step other than the correct next step of the protocol. With this in mind, we modeled each party and dealer state as a distinct type, and used move semantics to enforce state transitions.</p><p>In Rust, objects are either owned or borrowed. While there can be multiple borrows of the same object, each object has a unique owner. When objects are passed by value, ownership is transferred to the new scope, and the old scope can no longer access it. This makes it possible to implement “consuming” methods which take self by value, and therefore can only be called once. In the party and dealer types, such methods consume the previous state and return the next state in the protocol.</p><p>Due to the Rust type system, we have a guarantee that a step of the protocol can’t be performed twice. Since the first evaluation consumes the object, rustc guarantees that it can’t be referenced to perform another evaluation. This ensures that the implementation is invulnerable to multiple-evaluation attacks. We also have a guarantee that the user can’t perform steps out of order or skip steps, since it is impossible to call a function on an object that is not of the correct type.</p><p>This is an example of an implementation of session types, a type theory formalism that was proposed to structure interactions over communicating processes. An overview of session types can be found <a href="http://www.di.unito.it/~dezani/papers/sto.pdf">here</a>, and details on a more general implementation of a session type library for Rust can be found <a href="http://munksgaard.me/papers/laumann-munksgaard-larsen.pdf">here</a>.</p><p>Our implementation of aggregated range proofs is still at an early stage and will continue in a public <a href="http://github.com/chain/ristretto-bulletproofs">GitHub repository</a>. For more details about our implementation, see our <a href="https://doc.dalek.rs/bulletproofs/aggregation/index.html">aggregation protocol notes</a>; for an explanation of how the range proof algorithm works, see our <a href="https://doc-internal.dalek.rs/bulletproofs/range_proof/index.html">range proof notes</a>.</p><p><em>Thanks to David Tolnay for pointing us to the </em>Session Types in Rust<em> paper, and to Henry de Valence and Oleg Andreev for all their work on the Bulletproofs implementation. This post was originally published on the Chain blog.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b3da6e928d5d" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>