⚔️ 51% Attack — รอกี่ Confirmation ถึงปลอดภัย

ลองโจมตีเองได้
สื่อสอนอินเทอร์แอกทีฟ

ทุกคนบอกให้ “รอ 6 confirmation” แต่ทำไมต้อง 6? และปลอดภัยแค่ไหนกันแน่? หน้านี้ให้คุณสวมบทเป็นผู้โจมตี — กำหนดพลังขุดเอง แล้วดูสองสายเชนแข่งกันจริง พร้อมความน่าจะเป็นที่คำนวณจากคณิตศาสตร์ของจริง

โจรจ่ายเงินให้ร้านค้า แล้วแอบขุดเชนของตัวเองที่ไม่มีธุรกรรมนั้น ถ้าเชนลับแซงเชนจริงได้ หลังร้านส่งของไปแล้ว เงินที่จ่ายจะหายกลับเข้ากระเป๋าโจร — นั่นคือ double-spend

⛓️ เชนจริง (นักขุดซื่อสัตย์)0 บล็อก
ยังไม่มีบล็อก
🥷 เชนลับของโจร0 บล็อก
ยังไม่มีบล็อก
ร้านยังไม่ส่งของ — รออีก 3 บล็อก
โอกาสสำเร็จตามทฤษฎี32.6%
ผลจริงที่คุณลองมายังไม่ได้ลอง

ในการจำลองนี้ โจรจะยอมแพ้เมื่อตามหลัง 10 บล็อก (ของจริงโจรมีงบจำกัด ไม่ได้ขุดไล่ไปตลอดกาล) ส่วน “โอกาสตามทฤษฎี” ด้านบนคิดแบบโจรมีเวลาไม่จำกัด ตัวเลขที่คุณลองได้จริงจึงมักต่ำกว่านิดหน่อย

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

51% Attack คืออะไร

51% attack คือการที่ใครสักคนคุมพลังขุดเกินครึ่งหนึ่งของเครือข่าย แล้วใช้พลังนั้น ขุดเชนของตัวเองให้ยาวกว่าเชนหลัก เพื่อย้อนธุรกรรมที่เคยยืนยันไปแล้ว สิ่งที่ทำได้จริงคือการใช้เงินซ้ำ (double-spend) เงินของตัวเอง — ไม่ใช่การขโมยเหรียญของคนอื่น เพราะการย้ายเหรียญคนอื่นยังต้องใช้ลายเซ็นจาก private key ของเจ้าของอยู่ดี (ดูเหตุผลที่ ลายเซ็นดิจิทัลทำงานยังไง)

Double-spend ทำงานยังไง

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

แล้วต้องรอกี่ confirmation

คำตอบขึ้นกับว่าคุณกลัวผู้โจมตีที่มีพลังขุดแค่ไหน และยอดเงินคุ้มให้เขาลงทุนหรือเปล่า สำหรับยอดทั่วไป 6 confirmation เป็นมาตรฐานที่ใช้กันเพราะเหลือความเสี่ยงระดับ 1 ใน 1,691 แม้เจอผู้โจมตีที่คุมพลังขุดถึง 10% ของทั้งเครือข่าย — ซึ่งในทางปฏิบัติแทบไม่มีใครทำได้ ลองปรับตัวเลขในฉากที่ 2 ด้านบนดูว่าสถานการณ์ของคุณควรรอเท่าไร หรืออ่านคำแนะนำตามยอดเงินที่ ต้องรอกี่ Confirmation ธุรกรรมถึงจะปลอดภัย

ทำไมไม่มีใครโจมตี Bitcoin จริงสักที

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

แต่กับเหรียญเล็กที่พลังขุดรวมน้อย ค่าเช่าพลังขุดชั่วคราวอาจถูกจนคุ้มที่จะโจมตี — และมีเหรียญหลายตัวโดน 51% attack จริงมาแล้ว นี่คือเหตุผลที่ “พลังขุดรวมของเครือข่าย” (hash rate) เป็นตัวชี้วัดความปลอดภัยที่สำคัญ ดูของ Bitcoin แบบสดได้ที่ ภาพรวมเครือข่าย Bitcoin

เรื่องตัวเลขในหน้านี้

ความน่าจะเป็นทั้งหมดคำนวณด้วยสูตรที่ถูกต้องแม่นยำ (Grunspan & Pérez-Marco, 2017) ไม่ใช่สูตรประมาณแบบ Poisson ที่อยู่ในเปเปอร์ต้นฉบับของ Satoshi ซึ่งให้ค่าต่ำกว่าความจริง — ที่พลังขุด 10% รอ 6 ครั้ง เปเปอร์บอกความเสี่ยง 1 ใน 4,119 แต่ค่าที่ถูกต้องคือ 1 ใน 1,691 เสี่ยงกว่าราว 2.4 เท่า ตัวเลขในหน้านี้ตรวจสอบแล้วสองทาง ทั้งเทียบกับตารางในเปเปอร์ และเทียบกับการจำลองการขุดจริง 200,000 รอบ

อยากเข้าใจว่าบล็อกถูกขุดและต่อกันยังไง ลองเล่น บล็อกเชนทำงานยังไง · หรือดูวิธีเก็บเงินให้ทนต่อกุญแจหาย/ถูกขโมยที่ Multisig 2-of-3 ทำงานยังไง · หรือกลับไปที่ เส้นทางเรียนรู้ Bitcoin สำหรับมือใหม่