ตอนที่ 20 เราเห็นแล้วว่าลายเซ็นดิจิทัลถูกฝังอยู่ในทุกธุรกรรมเพื่อใช้พิสูจน์ว่าเราคือเจ้าของเงินตัวจริง แต่เราทิ้งท้ายไว้ว่า ลายเซ็นพวกนี้กินพื้นที่ในบล็อกไม่น้อย และมันเคยทำให้เกิดปัญหาคลาสสิกที่ทำให้เลขอ้างอิงธุรกรรมสามารถเปลี่ยนไปเองได้!
วันนี้เราจะมาดูการอัปเกรดครั้งประวัติศาสตร์ของบิทคอยน์ที่แก้ปัญหานั้นได้อย่างหมดจด พร้อมกับช่วยขยายพื้นที่บล็อกและลดค่าธรรมเนียมไปในตัว นั่นคือ SegWit ครับ
🧾 ปัญหาดั้งเดิม: ใบเสร็จที่เลขเอกสารเปลี่ยนเองได้ (Transaction Malleability)
ลองนึกภาพว่าเราโอนเงินให้เพื่อน แล้วได้เลขใบเสร็จอ้างอิง TXID: 1234 เราเก็บเลขนี้ไว้ตรวจสอบว่าเงินถึงเพื่อนหรือยัง แต่พอเปิดดูอีกที ระบบดันบอกว่าไม่มีรายการ 1234 อยู่ในระบบ มีแต่รายการ 5678 ที่ยอดเงินและปลายทางเหมือนกันเป๊ะ!
เงินไม่ได้หายไปไหน เพื่อนได้รับเงินครบถ้วน แต่ เลขอ้างอิงที่เราถืออยู่กลับเพี้ยนไป ความวุ่นวายแบบนี้เคยเกิดขึ้นจริงในบิทคอยน์ยุคแรกครับ
🔍 ย้อนดูโครงสร้างธุรกรรมแบบเก่า
จากตอนที่ 14 และ 16 เรารู้ว่าธุรกรรมบิทคอยน์ประกอบด้วย:
- ข้อมูลขาเข้า (Inputs)
- ข้อมูลขาออก (Outputs)
- ส่วนปลดล็อก (ScriptSig): ซึ่งมีลายเซ็นดิจิทัลและกุญแจสาธารณะแปะติดอยู่คู่กับ Input แต่ละอัน
ในโครงสร้างธุรกรรมแบบดั้งเดิม ส่วนปลดล็อกเหล่านี้กระจายตัวปะปนอยู่ทั่วทั้งธุรกรรม และที่สำคัญคือ เลขอ้างอิงธุรกรรม (TXID) คำนวณมาจากการนำข้อมูลทั้งหมดของธุรกรรม (รวมถึงลายเซ็น) ไปเข้าฟังก์ชันแฮช SHA-256
⚠️ ทำไมลายเซ็นถึงทำให้เลขอ้างอิงเปลี่ยนตาม?
ในทางคณิตศาสตร์ ลายเซ็นดิจิทัล ECDSA หนึ่งอัน สามารถเขียนแทนได้มากกว่า 1 รูปแบบโดยที่ยังคงถูกต้องและตรวจผ่านเหมือนเดิม
และเพราะ TXID คิดคำนวณจากข้อมูลทุกไบต์รวมถึงลายเซ็น:
- ระหว่างที่ธุรกรรมลอยอยู่ใน Mempool ผู้ไม่หวังดีหรือโหนดระหว่างทางสามารถดัดแปลงตัวเลขในลายเซ็นเล็กน้อยแล้วส่งต่อ
- ธุรกรรมยังคงถูกต้อง เงินยังวิ่งไปหาผู้รับตามปกติ
- แต่ ค่าแฮช TXID ที่บันทึกลงบล็อกเชนจะกลายเป็นตัวเลขใหม่ทันที!
ปัญหานี้เรียกว่า ความดัดแปลงได้ของธุรกรรม (Transaction Malleability) แม้เงินจะไม่หาย แต่เลขอ้างอิงที่ไม่แน่นอนทำให้การสร้างระบบอย่าง Layer 2 หรือ Lightning Network ทำได้ยากลำบากมาก
✂️ SegWit แก้ปัญหานี้อย่างไร? (Segregated Witness)
คำว่า SegWit ย่อมาจาก Segregated Witness แปลตรงตัวว่า “การแยกพยานออกมา”
พยาน (Witness) ในที่นี้ก็คือข้อมูลส่วนปลดล็อกทั้งหมด (ลายเซ็นและกุญแจสาธารณะ) ที่ใช้พิสูจน์ความเป็นเจ้าของ:
- ย้ายที่อยู่ใหม่: ตัดส่วนปลดล็อกทั้งหมดออกจากตัวธุรกรรมหลัก แล้วนำไปจัดเก็บรวมกันไว้ในโซนใหม่ท้ายธุรกรรมที่เรียกว่า โครงสร้างพยาน (Witness Structure)
- เปลี่ยนสูตรคำนวณ TXID: ให้คำนวณแฮชเฉพาะเนื้อหาการโอนเงิน (ใครโอนหาใคร เท่าไหร่) โดย ไม่นำข้อมูล Witness มาคำนวณ TXID อีกต่อไป
ผลลัพธ์คือ ไม่ว่าใครจะดัดแปลงลายเซ็นอย่างไร ค่า TXID ก็จะคงที่และเชื่อถือได้ 100% ปัญหา Transaction Malleability จึงหมดไปอย่างสิ้นเชิง!
📦 ของแถมสุดคุ้ม: ขยายความจุบล็อกและลดค่าธรรมเนียม (Block Weight & Discount)
เมื่อย้ายส่วนปลดล็อกแยกออกมา นักพัฒนาจึงได้โอกาสปรับวิธีคิดขนาดของบล็อกใหม่:
- เดิมทีกำหนดเพดานตายตัวที่ขนาดไฟล์ไม่เกิน 1 MB
- SegWit เปลี่ยนมาใช้หน่วยใหม่ที่เรียกว่า น้ำหนักบล็อก (Block Weight) กำหนดเพดานไว้ที่ 4 ล้านหน่วย (4,000,000 Weight Units)
โดยมีกติกาการคิดน้ำหนักดังนี้:
- ข้อมูลธุรกรรมหลัก 1 ไบต์ มีน้ำหนักเท่ากับ 4 หน่วย
- ข้อมูล Witness (ลายเซ็น) 1 ไบต์ มีน้ำหนักเพียง 1 หน่วย (ได้ส่วนลด 75%)
เพราะข้อมูลลายเซ็นจะถูกใช้งานหนักเฉพาะตอนตรวจยืนยันครั้งแรก การให้ส่วนลดจึงช่วยส่งเสริมให้คนหันมาใช้ธุรกรรมแบบใหม่ ส่งผลให้ในทางปฏิบัติ 1 บล็อกสามารถจุธุรกรรมได้เทียบเท่ากับ 1.8 – 2 MB ขึ้นไป และผู้ใช้ที่ใช้ที่อยู่แบบ SegWit จะจ่ายค่าธรรมเนียมถูกลงอย่างเห็นได้ชัด!
🤔 ทำไมต้องเป็น Soft Fork? (การอัปเกรดโดยเครือข่ายไม่แตกแถว)
ทำไมผู้พัฒนาถึงไม่ขยายขนาดบล็อกเป็น 2 MB ดื้อ ๆ เลยล่ะ?
เพราะหากทำแบบนั้น บล็อกใหม่จะขัดกับกฎของโหนดรุ่นเก่า โหนดเก่าจะไม่ยอมรับและปฏิเสธบล็อกใหม่ ทำให้เครือข่ายแตกแยกเป็น 2 บล็อกเชน หรือที่เรียกว่า Hard Fork
SegWit จึงถูกออกแบบให้เป็นการอัปเกรดแบบ Soft Fork (เข้ากันได้กับระบบเดิมย้อนหลัง):
- ในสายตาของโหนดรุ่นเก่า บล็อกและธุรกรรม SegWit ยังคงมีขนาดไม่เกิน 1 MB และถูกต้องตามกฎเดิมทุกประการ (โหนดเก่าแค่มองไม่เห็นข้อมูลพยาน Witness)
- โหนดใหม่เท่านั้นที่จะนำข้อมูล Witness มาตรวจยืนยันเต็มรูปแบบ
- เครือข่ายจึงยังคงเดินอยู่บนสายโซ่เดียวกันอย่างปลอดภัยและไร้รอยต่อ
🗳️ ใครเป็นคนตัดสินใจเปิดใช้งาน? (การส่งสัญญาณของนักขุด)
บิทคอยน์ไม่มีผู้บริหารคอยกดปุ่มอัปเกรด การเปิดใช้งาน SegWit จึงใช้กระบวนการฉันทามติของเครือข่าย:
- ให้นักขุดส่งสัญญาณความพร้อมผ่านรหัสเวอร์ชันในหัวบล็อก (Block Header)
- กติกาคือ ในช่วง 2,016 บล็อก (ประมาณ 2 สัปดาห์) ต้องมีนักขุดส่งสัญญาณพร้อมเกิน 95%
- ผลปรากฏว่านักขุดส่งสัญญาณพร้อมเต็มที่ จนกระทั่ง SegWit เปิดใช้งานจริงอย่างเป็นทางการเมื่อวันที่ 24 สิงหาคม 2017 (ที่บล็อกหมายเลข 481,824)
🧠 สรุปวันนี้ จำแค่นี้
- SegWit (Segregated Witness) ย้ายข้อมูลลายเซ็น (Witness) ออกจากธุรกรรมหลักไปไว้ในโครงสร้างแยกต่างหาก
- TXID มีความแน่นอน: ตัดลายเซ็นออกจากการคำนวณแฮช แก้ปัญหา Transaction Malleability และเปิดทางให้ Lightning Network เกิดขึ้นได้จริง
- เพิ่มความจุบล็อก & ลดค่าธรรมเนียม: ข้อมูล Witness ได้รับส่วนลดน้ำหนัก 75% ทำให้จุข้อมูลได้เทียบเท่าราว 1.8 – 2 MB ต่อบล็อก
- Soft Fork: โหนดเก่าและโหนดใหม่ยังทำงานร่วมกันได้บนบล็อกเชนสายโซ่เดียวกันโดยไม่แตกแถว
🔮 ตอนหน้า:
ตอนนี้เราเข้าใจกลไกเชิงลึกของระบบบิทคอยน์ครบถ้วนแล้ว ตั้งแต่เครือข่าย, การขุด, บล็อกเชน, ธุรกรรม, คู่กุญแจ, ลายเซ็น ไปจนถึง SegWit!
ในตอนหน้า เราจะเปลี่ยนโหมดจาก “ระบบทำงานอย่างไร” มาสู่ภาคปฏิบัติจริงสำหรับผู้ใช้งานทั่วไป: กระเป๋าเงินบิทคอยน์ (Wallet) มีกี่แบบ ต่างกันอย่างไร และมือใหม่ควรเริ่มต้นอย่างไร? ห้ามพลาดครับ!





