Chapter 10 : Hashcash

แปลโดย : Claude 3 Opus (Pro)

Chapter 10 : Hashcash

Growing up in the East Midlands of England, Adam Back had at thirteen years old saved enough money to buy the popular Sinclair ZX81 home computer. First released in January 1981, the black fax machine-sized device with built-in keyboard could be plugged into his family’s home television set, bringing its 8-bit magic to the boy’s fingertips right in the middle of his own living room.

As he played with the machine in his after-school hours—besides actual video games, this could also just mean having it do calculations to achieve some effect he found interesting—the young Adam Back became fascinated with the potential of computing.

And he had a knack for it, too. Lacking a native assembler to turn human-readable source code into machine-readable binaries (ones and zeroes), the youngster figured out how to code one up for the ZX81 himself. It required him to reverse-engineer the most basic inner workings of the computer, even having to convert binaries back to source code to understand how other programs worked.

By the time Back headed to college around age sixteen, he’d gained an advanced grasp of the operation of computers, and he knew that this was the field he wanted to keep exploring. Although computer science wasn’t a formal course at his school at the time, the campus did have a computer lab. Back gratefully made use of the facility, often spending long days in the lab teaching himself more advanced programming languages.

After college, Back went on to study computer science at the University of Exeter, in the southwest of England. During his studies, he became particularly interested in distributed computing, where several computers connect through a network to collaborate on the same problem, typically by dividing the problem into smaller parts (“parallel computing”).

Intrinsically motivated to master the curriculum, Back would regularly top his class throughout his three years as undergraduate student, which would by the early 1990s set him up to really pursue his interest in-depth. At twenty-one years old, the University of Exeter allowed him to skip his Masters, and accepted Back straight into a PhD program focused entirely on distributed computing. For the next four years, he’d study various coordination methods for networked computers—and their potential failure modes.

It was here that Back was introduced to long-standing challenges in distributed computing like the Byzantine Generals Problem, which computer scientists had struggled with since the late 1970s. The essence of this problem was that coordination across multiple computers could be tricky on open networks, where malicious (or even just unintentionally unreliable) nodes could join and frustrate the efforts of honest participants to reach a consensus.

The classic allegory, first described by computer scientist Leslie Lamport, was that of a group of (indeed) Byzantine generals surrounding a city. As each of them staked out the situation, they’d communicate through messengers to coordinate whether to attack or retreat. Although either of these options would be acceptable, they’d have to all agree on which option to take; it would be a disaster if some of the generals were to attack, while others decide to retreat.

The problem, however, is that there are also some treacherous generals (and/or treacherous messengers, depending on the version of the allegory), who might send conflicting messages—“attack” or “retreat”—to various generals, causing discord. Since instant communication across different parties is impossible, some would see one instruction first (“attack”), while others would initially see the other instruction (“retreat”).

The challenge, therefore, was to design a protocol that each honest participant could independently follow, so that they would all reach the same conclusion, whether that would be the conclusion to attack a city or not, or find consensus on how to coordinate some shared computational task.

These were the types of challenges that Adam Back loved to rack his brain on.

บทที่ 10 : Hashcash

แอดัม แบ็ก เติบโตขึ้นมาในภูมิภาค East Midlands ของอังกฤษ ตอนอายุสิบสามปี เขาเก็บเงินได้มากพอที่จะซื้อคอมพิวเตอร์ส่วนบุคคลยอดนิยม Sinclair ZX81 อุปกรณ์สีดำขนาดเท่าเครื่องแฟกซ์ที่มาพร้อมกับคีย์บอร์ดในตัว ซึ่งวางจำหน่ายครั้งแรกในเดือนมกราคม 1981 สามารถเสียบเข้ากับชุดโทรทัศน์ในบ้านของครอบครัวเขาได้ นำพาเวทมนตร์ 8 บิตมาสู่ปลายนิ้วของเด็กชายได้ในห้องนั่งเล่นของเขาเอง

ขณะที่เขาเล่นกับเครื่องในช่วงหลังเลิกเรียน—นอกจากวิดีโอเกมจริงๆ แล้ว อาจหมายถึงการให้มันคำนวณเพื่อให้ได้ผลที่เขาพบว่าน่าสนใจเท่านั้น—แอดัม แบ็กวัยเยาว์หลงใหลในศักยภาพของการคำนวณ

และเขาก็มีความถนัดในเรื่องนี้ด้วย เนื่องจากไม่มีแอสเซมเบลอร์ดั้งเดิมที่จะแปลงซอร์สโค้ดที่อ่านได้โดยมนุษย์เป็นไบนารีที่อ่านได้ด้วยเครื่อง (เลขหนึ่งและเลขศูนย์) เด็กหนุ่มจึงคิดวิธีเขียนโค้ดขึ้นมาเองสำหรับ ZX81 มันจะต้องอาศัยวิศวกรรมย้อนกลับการทำงานภายในขั้นพื้นฐานที่สุดของคอมพิวเตอร์ แม้กระทั่งต้องแปลงไบนารีกลับเป็นซอร์สโค้ดเพื่อทำความเข้าใจว่าโปรแกรมอื่นๆ ทำงานอย่างไร

ตอนที่แบ็กเข้าวิทยาลัยตอนอายุประมาณสิบหก ปี เขาได้เข้าใจการทำงานของคอมพิวเตอร์ในระดับสูงแล้ว และเขารู้ว่านี่คือสาขาที่เขาอยากจะศึกษาต่อไป แม้ว่าวิทยาการคอมพิวเตอร์จะไม่ใช่หลักสูตรที่เป็นทางการในโรงเรียนของเขาในขณะนั้น แต่แคมปัสก็มีห้องปฏิบัติการคอมพิวเตอร์ แบ็กใช้สิ่งอำนวยความสะดวกนี้ด้วยความขอบคุณ มักจะใช้เวลาทั้งวันในห้องปฏิบัติการเพื่อสอนตัวเองภาษาโปรแกรมขั้นสูงกว่านี้

หลังจากเรียนจบวิทยาลัย แบ็กไปเรียนต่อด้านวิทยาการคอมพิวเตอร์ที่มหาวิทยาลัยเอ็กซิเตอร์ ทางตะวันตกเฉียงใต้ของอังกฤษ ในระหว่างการเรียน เขาสนใจการประมวลผลแบบกระจายเป็นพิเศษ ซึ่งคอมพิวเตอร์หลายเครื่องจะเชื่อมต่อกันผ่านเครือข่ายเพื่อร่วมมือกันแก้ปัญหาเดียวกัน โดยปกติจะแบ่งปัญหาออกเป็นส่วนย่อยๆ ("การประมวลผลแบบขนาน")

ด้วยแรงจูงใจที่จะเชี่ยวชาญในหลักสูตร แบ็กจะเป็นอันดับต้นๆ ของห้องตลอดระยะเวลาสามปีในฐานะนักศึกษาปริญญาตรี ซึ่งในช่วงต้นทศวรรษ 1990 จะทำให้เขาสามารถไล่ตามความสนใจของเขาได้อย่างลึกซึ้ง ในวัย 21 ปี มหาวิทยาลัยเอ็กซิเตอร์อนุญาตให้เขาข้ามปริญญาโท และรับแบ็กเข้าโปรแกรมปริญญาเอกที่เน้นด้านการประมวลผลแบบกระจายโดยตรง ในอีกสี่ปีต่อมา เขาจะศึกษาวิธีการประสานงานต่างๆ สำหรับคอมพิวเตอร์ที่เชื่อมต่อเป็นเครือข่าย—และโหมดความล้มเหลวที่อาจเกิดขึ้นได้

ที่นี่เอง ที่แบ็กได้รู้จักกับความท้าทายที่มีมานานในการประมวลผลแบบกระจาย เช่น ปัญหาพลเรือนไบแซนไทน์ ซึ่งนักวิทยาศาสตร์คอมพิวเตอร์ประสบปัญหากันมาตั้งแต่ปลายทศวรรษ 1970 แก่นแท้ของปัญหานี้คือ การประสานงานกันข้ามคอมพิวเตอร์หลายเครื่องอาจจะยุ่งยากบนเครือข่ายเปิด ที่ซึ่งโหนดที่ไม่หวังดี (หรือแม้แต่โหนดที่ไม่น่าเชื่อถือโดยไม่ได้ตั้งใจ) อาจเข้าร่วมและขัดขวางความพยายามของผู้เข้าร่วมที่ซื่อสัตย์ในการหาฉันทามติ

คำอุปมาคลาสสิกที่ Leslie Lamport นักวิทยาศาสตร์คอมพิวเตอร์กล่าวถึงครั้งแรก คือการที่กลุ่มนายพล (อันที่จริงคือ) ไบแซนไทน์ล้อมรอบเมืองหนึ่ง ขณะที่แต่ละคนสำรวจสถานการณ์ พวกเขาจะสื่อสารผ่านผู้ส่งสารเพื่อประสานงานว่าจะโจมตีหรือถอยร่น ถึงแม้ว่าทางเลือกใดก็ยอมรับได้ แต่พวกเขาจะต้องเห็นพ้องต้องกันว่าจะเลือกทางเลือกไหน มันจะเป็นหายนะหากนายพลบางคนโจมตีในขณะที่คนอื่นๆ ตัดสินใจถอยร่น

อย่างไรก็ตาม ปัญหาคือ ยังมีนายพลทรยศบางคน (และ/หรือผู้ส่งสารทรยศ ขึ้นอยู่กับเวอร์ชันของคำอุปมา) ที่อาจส่งข้อความที่ขัดแย้งกัน—"โจมตี" หรือ "ถอยร่น"—ให้กับนายพลต่างๆ ทำให้เกิดความขัดแย้ง เนื่องจากการสื่อสารแบบทันทีระหว่างฝ่ายต่างๆ เป็นไปไม่ได้ บางคนจะเห็นคำสั่งหนึ่งก่อน ("โจมตี") ในขณะที่คนอื่นจะเห็นคำสั่งอื่นก่อน ("ถอยร่น")

ดังนั้น ความท้าทายจึงอยู่ที่การออกแบบโปรโตคอลที่ผู้เข้าร่วมที่ซื่อสัตย์แต่ละคนสามารถปฏิบัติตามได้อย่างอิสระ เพื่อให้พวกเขาทั้งหมดได้ข้อสรุปเดียวกัน ไม่ว่าจะเป็นข้อสรุปในการโจมตีเมืองหรือไม่ หรือหาฉันทามติเกี่ยวกับวิธีการประสานงานบางงานคำนวณที่ใช้ร่วมกัน

นี่คือประเภทของความท้าทายที่แอดัม แบ็กชอบใช้สมองไตร่ตรอง

Last updated