The Block Chain

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

The Block Chain

The system Satoshi Nakamoto described in his white paper indeed resembled b-money—now included as the first of eight references—in several ways.

Like in Wei Dai’s electronic cash design, Bitcoin’s currency units (also called bitcoin, but typically written with a lowercase b) would be unbacked, while bitcoin ownership would be attributed to public keys. Transactions, then, would essentially be cryptographically signed messages specifying that the coins attributed to these public keys are transferred to some other public keys. Bitcoin ownership would therefore be cryptographically guaranteed; funds could only be moved with valid signatures.

Because of this, and also like b-money, Bitcoin users wouldn’t need to reveal their real names to use the system; they could send and receive money semi-anonymously, revealing only their public keys. To avoid that a public key becomes associated with their true identity, Nakamoto suggested that users generate a new key pair for each incoming transaction. This would go a long way to protect users’ privacy—though Nakamoto acknowledged in his white paper that it wouldn’t be quite perfect.

“Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner,” he wrote. “The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.”

But perhaps most interestingly, Nakamoto designed Bitcoin in line with the most ambitious variation of b-money, with all users maintaining a ledger to track currency ownership within the system. Every node (each peer on the network) would see all new transactions, check their validity, and update their ledgers accordingly—while invalid transactions (including double-spends) would be rejected.

Ten years earlier, Dai had concluded that such a distributed approach wasn’t practical. Absent a synchronous and unjammable anonymous broadcast channel, different parts of the network could see different transactions first, so double-spend transactions would essentially split the network, where different nodes maintain conflicting ownership ledgers. With potentially dishonest participants out to sow discord, and without anyone in charge to decide which version of the ledger is the one true state of the network, Dai saw no way to resolve such splits. Indeed, it was a perfect example of the Byzantine Generals Problem.

Now, Satoshi Nakamoto believed he had solved the Byzantine Generals problem.

In designing this system, Nakamoto seemed to have taken inspiration from Scott Stornetta and Stuart Haber: three out of the next four references in the white paper pointed to Stornetta and Haber’s trustless time-stamping papers (including the one they coauthored with Dave Bayer), while the fourth referred to a time-stamping proposal by Belgian researchers who leaned heavily on Stornetta and Haber’s work. In a separate reference, Nakamoto also credited Ralph Merkle’s foundational paper that first described Merkle Trees.

It was a natural fit. Wei Dai’s idea to distribute the ledger of ownership across all users was philosophically very close to Haber and Stornetta’s concept of sharing copies of the backbone record of a time-stamping protocol. In both cases, every participant would verify the important information themselves, so they’d be sure that no one could have cheated. Everyone would keep everyone honest.

In Stornetta and Haber’s most advanced proposal, users hashed documents together in a big Merkle Tree, for the Merkle Root—the tree’s final hash—to be included in the next Merkle Tree. It resulted in a mathematically provable chronological order of Merkle Trees, and therefore also a chronological order of documents embedded in the Merkle Trees. As long as the users of the system maintained their own backbone records, they could always prove that a particular document was included before another document, and at what time.

Nakamoto’s electronic cash system was designed in a very similar way: the documents from Haber and Stornetta’s time-stamping solutions were in Bitcoin essentially replaced by transactions. As transactions would be sent over Bitcoin’s peer-to-peer network, users would, with some regularity, hash them together into a Merkle Tree. Such a batch of transactions would make up the bulk of what was called a “block.” If two or more conflicting transactions circulated on the network, only one of them could be included in a block, and importantly: only transactions that were included in a block would be considered confirmed.

And, much like in Haber and Stornetta’s backbone records, each new Bitcoin block would also contain the hash of the previous block, called the “block hash.” This would make it impossible to edit an older block and still have it mathematically fit in the chain of all blocks, as this would necessarily change the entire chain since that block, which all users would therefore notice.

Indeed, the contents of Bitcoin blocks, their chronological order, and therefore the order of all transactions in them, would in effect be cryptographically sealed.

Nakamoto called this chain of blocks: the block chain.

บล็อกเชน

ระบบที่ซาโตชิ นากาโมโต้อธิบายในเอกสารไวท์เปเปอร์ของเขา มีหลายแง่มุมที่คล้ายคลึงกับ b-money ซึ่งตอนนี้ถูกอ้างอิงเป็นข้อแรกในบรรณานุกรมทั้ง 8 รายการ

เหมือนในแนวคิดเงินสดอิเล็กทรอนิกส์ของเว่ย ได หน่วยเงินของบิตคอยน์ (ก็เรียกว่าบิตคอยน์ แต่มักเขียนด้วยตัวพิมพ์เล็ก b) จะไม่มีสินทรัพย์ใดหนุนหลัง ในขณะที่กรรมสิทธิ์บิตคอยน์จะถูกระบุด้วยคีย์สาธารณะ (public key) ธุรกรรมจะเป็นข้อความที่มีลายเซ็นเข้ารหัส ระบุว่าเหรียญที่เชื่อมโยงกับคีย์สาธารณะเหล่านี้ถูกโอนไปยังคีย์สาธารณะอื่น ดังนั้น กรรมสิทธิ์บิตคอยน์จะได้รับการรับประกันด้วยการเข้ารหัส เงินทุนจะถูกโอนได้ก็ต่อเมื่อมีลายเซ็นที่ถูกต้องเท่านั้น

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

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

แต่ที่น่าสนใจที่สุดอาจเป็นการที่นากาโมโต้ออกแบบบิตคอยน์ตามแบบที่ทะเยอทะยานที่สุดของ b-money โดยให้ผู้ใช้ทุกคนเก็บบัญชีแยกประเภทเพื่อติดตามกรรมสิทธิ์เงินตราในระบบ ทุกโหนด (เพียร์แต่ละตัวในเครือข่าย) จะเห็นธุรกรรมใหม่ทั้งหมด ตรวจสอบความถูกต้อง และอัปเดตบัญชีตามนั้น ในขณะที่ธุรกรรมที่ไม่ถูกต้อง (รวมถึง double-spend) จะถูกปฏิเสธ

สิบปีก่อนหน้านี้ ได สรุปว่าแนวทางแบบกระจายศูนย์เช่นนี้ไม่เป็นไปได้ในทางปฏิบัติ เนื่องจากไม่มีช่องทางการกระจายข้อมูลแบบไม่ระบุตัวตนที่สอดคล้องและแจมไม่ได้ ส่วนต่างๆ ของเครือข่ายอาจเห็นธุรกรรมที่แตกต่างกันก่อน ดังนั้นธุรกรรม double-spend จะแยกเครือข่ายออกจากกัน โดยโหนดต่างๆ จะเก็บบัญชีกรรมสิทธิ์ที่ขัดแย้งกัน ด้วยผู้ร่วมที่อาจไม่ซื่อสัตย์คอยหว่านความแตกแยก และไม่มีใครรับผิดชอบตัดสินว่าบัญชีฉบับไหนคือสถานะที่แท้จริงของเครือข่าย ได จึงไม่เห็นทางแก้ปัญหาการแตกแยกเช่นนี้ มันเป็นตัวอย่างที่สมบูรณ์แบบของปัญหาเหล่านายพลไบแซนไทน์ (Byzantine Generals Problem)

ตอนนี้ ซาโตชิ นากาโมโต้เชื่อว่าเขาได้แก้ปัญหาเหล่านายพลไบแซนไทน์แล้ว

ในการออกแบบระบบนี้ ดูเหมือนนากาโมโต้ได้รับแรงบันดาลใจจากสก็อตต์ สตอร์เน็ตตาและสจวร์ต ฮาเบอร์: ในบรรณานุกรม 8 ข้อนั้น ข้ออ้างอิง 3 จาก 4 ข้อถัดจาก b-money ชี้ไปที่บทความประทับเวลาแบบไม่ต้องไว้ใจผู้ใดของสตอร์เน็ตตาและฮาเบอร์ (รวมถึงบทความหนึ่งที่พวกเขาเขียนร่วมกับเดฟ เบเยอร์) ส่วนอีกหนึ่งข้ออ้างถึงข้อเสนอประทับเวลาของนักวิจัยชาวเบลเยี่ยมที่พิงพาอย่างหนักกับงานของสตอร์เน็ตตาและฮาเบอร์ ในอีกข้ออ้างอิงหนึ่ง นากาโมโต้ยังให้เครดิตบทความพื้นฐานของราล์ฟ เมิร์กเคิลที่อธิบายเมิร์เคิลทรี (Merkle Trees) เป็นครั้งแรกด้วย

มันเป็นการผสมผสานที่เป็นธรรมชาติ แนวคิดของเว่ย ได ที่จะกระจายบัญชีกรรมสิทธิ์ไปยังผู้ใช้ทุกคนนั้น ในเชิงปรัชญาใกล้เคียงมากกับแนวคิดของฮาเบอร์และสตอร์เน็ตตาที่จะแบ่งปันสำเนาของระเบียนหลัก (backbone record) ในโปรโตคอลประทับเวลา ในทั้งสองกรณี ผู้ร่วมทุกคนจะตรวจสอบข้อมูลสำคัญด้วยตัวเอง เพื่อให้แน่ใจว่าไม่มีใครโกงได้ ทุกคนจะคอยสอดส่องกันและกัน

ในข้อเสนอที่ก้าวหน้าที่สุดของสตอร์เน็ตตาและฮาเบอร์ ผู้ใช้จะแฮชเอกสารรวมกันในเมิร์เคิลทรีขนาดใหญ่ เพื่อให้รากของเมิร์เคิล (Merkle Root) ซึ่งคือแฮชสุดท้ายของต้นไม้ ถูกรวมเข้าในเมิร์เคิลทรีถัดไป ผลลัพธ์คือลำดับเวลาของเมิร์เคิลทรีที่พิสูจน์ได้ทางคณิตศาสตร์ และดังนั้นจึงเป็นลำดับเวลาของเอกสารที่ฝังอยู่ในเมิร์เคิลทรีด้วย ตราบใดที่ผู้ใช้ระบบเก็บระเบียนหลัก (backbone records) ของตัวเอง พวกเขาก็จะพิสูจน์ได้เสมอว่าเอกสารใดเอกสารหนึ่งถูกรวมเข้าไปก่อนอีกเอกสารหนึ่ง และเมื่อไหร่

ระบบเงินสดอิเล็กทรอนิกส์ของนากาโมโต้ถูกออกแบบในลักษณะที่คล้ายกันมาก: เอกสารจากวิธีประทับเวลาของฮาเบอร์และสตอร์เน็ตตา ถูกแทนที่ด้วยธุรกรรมในบิตคอยน์ เมื่อธุรกรรมถูกส่งผ่านเครือข่าย peer-to-peer ของบิตคอยน์ ผู้ใช้จะนำมาแฮชรวมกันเป็นเมิร์เคิลทรีเป็นระยะ ชุดธุรกรรมดังกล่าวจะกลายเป็นส่วนใหญ่ของสิ่งที่เรียกว่า "บล็อก (block)" หากมีธุรกรรมที่ขัดแย้งกันสองรายการขึ้นไปหมุนเวียนอยู่ในเครือข่าย จะมีเพียงรายการเดียวเท่านั้นที่สามารถรวมเข้าไปในบล็อกได้ และที่สำคัญ: เฉพาะธุรกรรมที่อยู่ในบล็อกเท่านั้นจะถือว่าได้รับการยืนยัน

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

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

นากาโมโต้เรียกห่วงโซ่ของบล็อกนี้ว่า บล็อกเชน (block chain)

Last updated