โมดูลที่ 8 จาก 10

การทำงานของ Bitcoin

8.0 บทนำ

Bitcoin ไม่ได้ "ไร้การควบคุม"; มันถูกควบคุมด้วยอัลกอริทึมแทนที่จะถูกควบคุมโดยข้าราชการของรัฐบาล ปราศจากการทุจริต
Andreas M. Antonopoulos

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

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

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

กลไกของโปรโตคอล Bitcoin
  • การพิสูจน์ด้วยงาน (Proof-of-Work)
  • การประทับเวลาแบบเข้ารหัส
  • การปรับความยาก
  • สถาปัตยกรรมเครือข่ายแบบเพียร์ทูเพียร์
  • ฟังก์ชันแฮชและเมอร์เคิลทรี
  • การเข้ารหัสคีย์สาธารณะ
  • การลดรางวัลบล็อกลงครึ่งหนึ่ง

8.1 ความปลอดภัยผ่านการเข้ารหัส

สิ่งที่ Bitcoin มอบให้เราคือคำสัญญาที่แน่นอน: โปรแกรมจะทำงานตามที่ระบุไว้เป๊ะ ๆ
Andreas M. Antonopoulos

การเข้ารหัสคีย์สาธารณะ/คีย์ส่วนตัว

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

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

ในระบบการเข้ารหัสแบบดั้งเดิม คนสองคนที่ต้องการสื่อสารกันแบบส่วนตัวจะต้องมีคีย์ลับเดียวกันก่อน เหมือนกับการใช้รหัสผ่านร่วมกัน คนหนึ่งใช้คีย์นี้ในการเข้ารหัสข้อความก่อนส่ง และอีกคนใช้คีย์เดียวกันในการถอดรหัสและอ่านข้อความนั้น

ปัญหาของระบบนี้คือทั้งสองฝ่ายต้องมีคีย์ลับเดียวกันอยู่ก่อนแล้ว หากมีคนอื่นได้คีย์นี้ไป เขาก็สามารถอ่านข้อความที่ถูกดักจับได้ทั้งหมด

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

การเข้ารหัสคีย์สาธารณะ/คีย์ส่วนตัวช่วยแก้ปัญหาการแบ่งปันความลับ แทนที่จะใช้รหัสผ่านร่วมกัน แต่ละคนจะมีคีย์สองชุด: คีย์สาธารณะและคีย์ส่วนตัว

  • คีย์สาธารณะ สามารถแบ่งปันให้ใครก็ได้
  • คีย์ส่วนตัว ต้องเก็บไว้เป็นความลับเสมอ

ถ้าเจษฎาต้องการส่งบางอย่างให้แอนนา เขาสามารถใช้คีย์สาธารณะของแอนนาได้ มีแต่แอนนาเท่านั้นที่ปลดล็อกได้ด้วยคีย์ส่วนตัวของเธอ แม้จะมีใครดักจับข้อความก็ไม่สามารถอ่านหรือใช้ได้หากไม่มีคีย์ส่วนตัว

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

ธุรกรรม Bitcoin คือการโอนความเป็นเจ้าของ bitcoin จากที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง

การเข้ารหัสถูกใช้เพื่อให้แน่ใจว่ามีแต่เจ้าของ bitcoin ตัวจริงเท่านั้นที่มีสิทธิ์ส่งเงินของตนให้ผู้อื่นได้ มันช่วยปกป้องทรัพย์สินของพวกเขาจากผู้ไม่หวังดี

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

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

ขั้นตอนการทำงานของธุรกรรม Bitcoin
  1. การสร้างธุรกรรม: ผู้ใช้เริ่มต้นธุรกรรม Bitcoin โดยระบุรายละเอียด เช่น ที่อยู่ผู้รับและจำนวน bitcoin ที่จะส่ง
  2. การสร้างลายเซ็นดิจิทัล: ผู้ส่งจะสร้าง ลายเซ็นดิจิทัล ที่ไม่ซ้ำกันโดยใช้ คีย์ส่วนตัว. ลายเซ็นนี้เป็นรหัสเฉพาะที่ใช้ยืนยันความถูกต้องของธุรกรรม
  3. การกระจายธุรกรรม: ธุรกรรมที่เซ็นแล้วจะถูกกระจายไปยังเครือข่าย Bitcoin เพื่อแสดงความตั้งใจในการโอน bitcoin จากผู้ส่งไปยังผู้รับ
  4. การตรวจสอบบนเครือข่าย: โหนดในเครือข่าย Bitcoin จะได้รับธุรกรรมและใช้ คีย์สาธารณะ เพื่อตรวจสอบความถูกต้องของลายเซ็นของธุรกรรม ในขณะเดียวกัน พวกเขาจะใช้ กุญแจสาธารณะ เพื่อตรวจสอบ ลายเซ็นดิจิทัล .
  5. การยืนยันบนเครือข่าย Bitcoin: หากการตรวจสอบสำเร็จ ธุรกรรมจะถูกเพิ่มลงในบัญชีแยกประเภท ซึ่งทำหน้าที่เป็นบันทึกที่ปลอดภัยและโปร่งใสของธุรกรรมทั้งหมด เมื่อได้รับการยืนยันแล้ว การเป็นเจ้าของ bitcoin จะถูกโอนอย่างเป็นทางการจากผู้ส่งไปยังผู้รับ

ลายเซ็นดิจิทัล, ที่สร้างขึ้นด้วย กุญแจส่วนตัว ของผู้ส่ง พิสูจน์ว่าธุรกรรมนั้นได้รับอนุญาตโดยเจ้าของ bitcoin เครือข่าย Bitcoin สามารถตรวจสอบหลักฐานนี้และบันทึกธุรกรรมได้

คำอธิบายเกี่ยวกับการแฮช

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

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

ฟังก์ชันคืออะไร?

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

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

ฟังก์ชันทางเดียวคืออะไร?

ฟังก์ชันทางเดียวเป็นฟังก์ชันชนิดพิเศษที่คำนวณไปข้างหน้าได้ง่ายแต่ย้อนกลับได้ยากมาก ตัวอย่างเช่น การปั่นส่วนผสมให้เป็นสมูทตี้นั้นง่าย แต่คุณไม่สามารถแยกสมูทตี้กลับเป็นส่วนผสมเดิมได้

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

แฮชฟังก์ชันคืออะไร?

แฮชฟังก์ชัน ก็เหมือนเครื่องสร้างรหัสลับ มันรับข้อความแล้วเปลี่ยนเป็นรหัส

วิธีการแฮชในธุรกรรม Bitcoin

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

บทบาทของการแฮชในความปลอดภัยของ Bitcoin

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

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

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

เอาต์พุต หรือแฮช จะมีความยาวเท่าเดิมเสมอ ไม่ว่าข้อมูลต้นฉบับจะยาวแค่ไหน Bitcoin ใช้แฮชฟังก์ชันบางประเภทที่เรียกว่า SHA-256 และ RIPEMD160 .

ตัวอย่างบางส่วนมีดังนี้:

  • SHA256 hash ของสตริง สวัสดีชาวโลก
    • b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
  • SHA256 แฮชของสตริง hello world.
    • 7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87
    • สังเกตว่าการเปลี่ยนแปลงเพียงเล็กน้อยในข้อมูลนำเข้าจะทำให้ผลลัพธ์เปลี่ยนไปโดยสิ้นเชิงเมื่อเทียบกับอันแรก
  • SHA256 แฮชของไฟล์ iso ที่ดาวน์โหลดได้ Ubuntu 18.10
    • 7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765
    • อินพุตนี้เป็นไฟล์ขนาดใหญ่มากแต่ผลลัพธ์ก็ยังคงมีความยาวคงที่เหมือนเดิม

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

โดยการเปรียบเทียบโน้ตดนตรีของบทเพลงกับการแสดงจริง นักดนตรีสามารถตรวจสอบได้ว่าการแสดงนั้นถูกต้องหรือไม่ ในทำนองเดียวกัน โดยการเปรียบเทียบค่าแฮชของข้อมูลที่ได้รับกับค่าแฮชต้นฉบับ เราสามารถตรวจสอบได้ว่าข้อมูลถูกเปลี่ยนแปลงระหว่างการส่งหรือไม่

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

กระบวนการเข้ารหัส public key ด้วยการแฮชถูกใช้เพื่อเพิ่มความปลอดภัยของข้อมูลโดยแปลงให้อยู่ในรูปแบบที่อ่านไม่ออกและมีความยาวคงที่ Bitcoin ใช้อัลกอริทึม SHA-256 และ RIPEMD160 เพื่อสร้างที่อยู่สาธารณะ ผลลัพธ์ที่ได้จะเป็นตัวระบุเฉพาะสำหรับ public key และช่วยรับรองความสมบูรณ์และความปลอดภัยของธุรกรรมที่บันทึกไว้ในบัญชีแยกประเภท ด้วยการเข้ารหัสข้อมูลในลักษณะนี้ จะทำให้บุคคลที่ไม่ได้รับอนุญาตเข้าถึงและแก้ไขข้อมูลได้ยากขึ้น

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

กิจกรรม: สร้างค่าแฮช SHA 256

อยากรู้ไหมว่าการแฮชทำงานอย่างไร? สแกน QR โค้ดเพื่อสร้างค่าแฮช SHA256 จากคำ ประโยค หรือข้อมูลอะไรก็ได้ที่คุณเลือกทันที ฟังก์ชันแฮชเปรียบเสมือนลายนิ้วมือดิจิทัล: เป็นทางเดียว หมายความว่าเมื่อข้อมูลถูกแฮชแล้วจะไม่สามารถย้อนกลับได้ ลองดูด้วยตัวคุณเอง!

8.2 โมเดล UTXO

UTXO คืออะไร?

อย่าเพิ่งตกใจกับชื่อที่ดูแปลก คุณสามารถนึกถึง UTXO ว่าเป็นชิ้นส่วนของ bitcoin คล้ายกับธนบัตรและเหรียญในกระเป๋าสตางค์ของคุณ ตัวอย่างเช่น หากคุณจ่ายค่าสินค้า 200 บาท ด้วยธนบัตร 500 บาท คุณจะได้รับเงินทอน 300 บาท Bitcoin ก็ทำงานในลักษณะคล้ายกัน

bitcoin ทั้งหมดที่คุณเป็นเจ้าของนั้นประกอบด้วย UTXO หลายชิ้น เมื่อคุณส่ง bitcoin กระเป๋าสตางค์ของคุณจะใช้หนึ่งหรือมากกว่าหนึ่งชิ้นเหล่านี้เพื่อทำการชำระเงิน

ถ้าชิ้นที่คุณใช้มีมูลค่ามากกว่าจำนวนที่คุณส่ง ส่วนที่เหลือจะถูกส่งคืนให้คุณเป็นเงินทอนในรูปแบบของ UTXO ใหม่ ในขณะเดียวกัน ผู้รับก็จะได้รับ UTXO ใหม่ที่แทนจำนวน bitcoin ที่คุณส่งไป

ยอดคงเหลือในกระเป๋าสตางค์ของคุณก็คือมูลค่ารวมของ UTXO ทั้งหมดที่คุณควบคุมอยู่

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

ตัวอย่าง
  1. สมชายต้องการส่ง 5 BTC ให้สมปอง
  2. กระเป๋าสตางค์ของเขาใช้ UTXO สองชิ้นที่รวมกันมีมูลค่า 6 BTC
  3. ธุรกรรมนี้จะส่ง 5 BTC ให้สมปอง, สร้าง UTXO ใหม่ในกระเป๋าสตางค์ของสมปอง
  4. ส่วนที่เหลือ 0.99 BTC กลับคืนให้สมชายเป็นเงินทอน, หลังจากหัก ค่าธรรมเนียมธุรกรรม 0.01 BTC.
  5. เมื่อธุรกรรมได้รับการยืนยันแล้ว จะถูกเพิ่มลงในบัญชีแยกประเภทของ Bitcoin และ UTXO ที่สมชายใช้จะถูกทำเครื่องหมายว่าใช้ไปแล้ว ไม่สามารถนำกลับมาใช้ซ้ำได้อีก
แหล่งข้อมูล
How Bitcoin Works Under the Hood
ชมวิดีโอ “How Bitcoin Works under the Hood”

↑ กลับไปที่สารบัญ