
Block Confirmation คืออะไร ทำไมโอนบิตคอยน์ต้องรอนาน
Block Confirmation คืออะไร ทำไมโอนบิตคอยน์เข้ากระดานเทรดไทยแล้วเงินไม่เข้าทันที ทำไมต้องรอ 3-6 Confirmation เจาะกลไกบล็อกเชนแยกสายที่มาของกฎนี้
บทความนี้ต่อยอดจาก การขุด Bitcoin คืออะไร และ Proof of Work คืออะไร ถ้ายังไม่คุ้นกับกระบวนการขุดและการแข่งไขโจทย์ของนักขุด แนะนำให้อ่านสองบทความนั้นก่อน บทความนี้จะเจาะเฉพาะคำถามที่มาทีหลังคือ ทำไมโอนบิตคอยน์แล้วเงินไม่เข้าทันที และตัวเลข Confirmation ที่เห็นบนแอปกระเป๋าเงินหรือกระดานเทรดหมายถึงอะไรกันแน่
หลายคนที่เพิ่งเริ่มโอนบิตคอยน์ครั้งแรกมักเจอสถานการณ์เดียวกันคือ กดโอนเงินจากกระเป๋าตัวเองไปยังกระดานเทรด แล้วเห็นสถานะขึ้นว่า "รอการยืนยัน" หรือ "Confirming" อยู่นานหลายสิบนาที ทั้งที่เพื่อนที่โอนเงินผ่านแอปธนาคารเข้าบัญชีกันแทบจะทันที ความรู้สึกกังวลว่าเงินหายหรือระบบมีปัญหาจึงเกิดขึ้นได้ง่าย ทั้งที่จริงแล้วสิ่งที่กำลังเกิดขึ้นคือกลไกความปลอดภัยที่ตั้งใจออกแบบให้ทำงานแบบนี้
ธุรกรรมกับการยืนยันธุรกรรมเป็นคนละขั้นตอนกัน
จุดที่ทำให้หลายคนสับสนคือคิดว่าการกดปุ่ม "ส่ง" ในแอปกระเป๋าเงินคือจุดที่เงินเคลื่อนที่ไปแล้ว แต่ในความเป็นจริงนั่นเป็นแค่ขั้นตอนการสร้างธุรกรรม เทียบได้กับการเขียนเช็คสั่งจ่ายแล้วเซ็นชื่อกำกับไว้ เงินยังไม่ได้ย้ายออกจากบัญชีจนกว่าจะมีคนนำเช็คนั้นไปยื่นและธนาคารบันทึกรายการเข้าระบบจริง บล็อกเชนก็ใช้หลักการเดียวกันนี้ในการแยกขั้นตอน "สร้างธุรกรรม" ออกจากขั้นตอน "ยืนยันธุรกรรม" อย่างชัดเจน
เมื่อกดส่งบิตคอยน์ ธุรกรรมนั้นจะไปรออยู่ในที่ที่เรียกว่า Mempool ก่อน เหมือนกองเอกสารรอตรวจที่ยังไม่มีใครมาเซ็นรับรอง จากนั้นนักขุดจะเลือกธุรกรรมจาก Mempool มารวมกันเป็นบล็อกใหม่ โดยมักเลือกธุรกรรมที่จ่ายค่าธรรมเนียมสูงกว่าไปก่อน แล้วแข่งกันไขโจทย์ทางคณิตศาสตร์เพื่อให้ได้สิทธิ์ปิดบล็อกนั้น เมื่อนักขุดคนใดไขโจทย์สำเร็จก่อน บล็อกนั้นจะถูกต่อเข้าไปในสายโซ่บล็อกเชน และธุรกรรมทุกรายการในบล็อกนั้นก็จะได้รับสถานะ "ยืนยันแล้ว" เป็นครั้งแรก นี่คือที่มาของคำว่า Confirmation

ภาพ: สี่ขั้นตอนตั้งแต่กดส่งบิตคอยน์จนกว่าธุรกรรมจะได้รับการยืนยันครั้งแรก แสดงให้เห็นว่าทำไมการโอนถึงไม่เกิดขึ้นทันทีเหมือนโอนผ่านแอปธนาคาร
ทำไมได้ Confirmation แรกแล้วยังไม่พอ ต้องรอถึง 3-6 ครั้ง
จุดที่หลายคนสงสัยต่อคือ ในเมื่อบล็อกใหม่ถูกปิดแล้ว ทำไมกระดานเทรดหรือกระเป๋าเงินยังไม่ยอมให้ใช้เงินทันที คำตอบอยู่ที่ความเสี่ยงเล็กๆ ที่เรียกว่า Blockchain Reorganization หรือการที่บล็อกเชนแตกออกเป็นสองสายชั่วคราว
สถานการณ์นี้เกิดขึ้นได้เวลานักขุดสองคนไขโจทย์ของบล็อกเดียวกันสำเร็จในเวลาไล่เลี่ยกันมาก แล้วต่างคนต่างกระจายบล็อกของตัวเองออกไปในเครือข่ายพร้อมกัน ทำให้ชั่วขณะหนึ่งมีบล็อกเชนสองสายที่มีบล็อกล่าสุดไม่ตรงกัน เครือข่ายจะรอดูว่าบล็อกถัดไปจะถูกขุดต่อจากสายไหนก่อน แล้วยึดสายที่ยาวกว่าเป็นความจริงหนึ่งเดียว ส่วนบล็อกของอีกสายที่แพ้จะถูกทิ้งไป พร้อมกับธุรกรรมทั้งหมดในบล็อกนั้นที่ต้องกลับไปรอคิวใน Mempool ใหม่
"โหนดทุกตัวจะยึดถือสายโซ่ที่ยาวที่สุดว่าเป็นสายที่ถูกต้องเสมอ และจะทำงานต่อขยายสายนั้นต่อไป"
ซาโตชิ นากาโมโตะ ใน Bitcoin Whitepaper หัวข้อ Network (31 ตุลาคม 2008) อธิบายกลไก Longest Chain ที่เป็นรากฐานของการที่เครือข่ายตัดสินว่าสายไหนคือความจริงเวลาเกิดบล็อกเชนแยกสายชั่วคราว ต้นฉบับ "Nodes always consider the longest chain to be the correct one and will keep working on extending it."
ด้วยเหตุนี้ Confirmation แค่ครั้งเดียวจึงยังไม่น่าไว้ใจพอ เพราะบล็อกนั้นอาจเป็นบล็อกที่แพ้ในการแย่งชิงและถูกทิ้งไปในไม่ช้า ยิ่งมีบล็อกใหม่ต่อทับขึ้นไปบนบล็อกนั้นมากเท่าไหร่ โอกาสที่บล็อกนั้นจะถูกเขียนทับหรือยกเลิกก็ยิ่งลดลงเท่านั้น เพราะผู้ที่จะพยายามเขียนประวัติศาสตร์ใหม่ต้องไขโจทย์แข่งกับบล็อกที่ต่อกันไปแล้วหลายบล็อก ซึ่งต้องใช้กำลังขุดมหาศาลเกินกว่าจะทำได้จริงในทางปฏิบัติ มาตรฐานที่ใช้กันทั่วไปในวงการคือรอ 3-6 Confirmation ก่อนจะถือว่าธุรกรรมนั้นย้อนกลับไม่ได้แล้วอย่างปลอดภัย ซึ่งเมื่อบิตคอยน์ปิดบล็อกใหม่เฉลี่ยทุก 10 นาที การรอ 6 Confirmation จึงมักใช้เวลาราวหนึ่งชั่วโมง

ภาพ: จำลองสถานการณ์บล็อกเชนแตกเป็นสองสายชั่วคราวเมื่อนักขุดสองคนไขโจทย์บล็อกเดียวกันพร้อมกัน และวิธีที่เครือข่ายตัดสินว่าสายไหนคือความจริง อธิบายว่าทำไม Confirmation เดียวจึงยังไม่น่าไว้ใจพอ
บล็อกเชนแยกสายจริงเคยเกิดขึ้นไหม ไม่ใช่แค่ทฤษฎี
ตัวอย่างนักขุด A และ B ที่ยกมาข้างต้นอาจฟังดูเหมือนสถานการณ์สมมติที่แทบไม่เคยเกิดขึ้นจริง แต่ในประวัติศาสตร์ของ Bitcoin มีเหตุการณ์บล็อกเชนแยกสายที่เกิดขึ้นจริงและถูกบันทึกไว้ชัดเจน แม้จะไม่ได้มาจากการโจมตี แต่มาจากบั๊กของซอฟต์แวร์เอง
เหตุการณ์ที่มีชื่อเสียงที่สุดเกิดขึ้นเมื่อวันที่ 11 ถึง 12 มีนาคม 2013 ตอนนั้นนักขุดบางส่วนอัปเดตซอฟต์แวร์ Bitcoin เป็นเวอร์ชัน 0.8.0 ซึ่งเปลี่ยนฐานข้อมูลภายในจาก BerkeleyDB มาเป็น LevelDB โดยไม่ตั้งใจ ความแตกต่างของฐานข้อมูลทั้งสองทำให้เวอร์ชัน 0.8.0 ยอมรับบล็อกที่มีขนาดใหญ่กว่าที่ BerkeleyDB ในเวอร์ชันเก่ารองรับได้ พอมีบล็อกที่หมายเลข 225,430 ถูกขุดออกมาใหญ่เกินขีดจำกัดของเวอร์ชันเก่า โหนดที่ยังใช้เวอร์ชัน 0.7.0 ลงมาจึงปฏิเสธไม่ยอมรับบล็อกนั้น ทำให้เครือข่ายแตกออกเป็นสองสายคู่ขนานจริงอยู่นานถึงประมาณ 24 บล็อกหรือราว 6 ชั่วโมงเต็ม แต่ละสายมีประวัติธุรกรรมของตัวเองที่ไม่ตรงกัน
สิ่งที่น่าสนใจคือวิธีที่เครือข่ายแก้ปัญหานี้ไม่ได้เกิดจากกลไกอัตโนมัติเพียงอย่างเดียว แต่นักขุดรายใหญ่ในตอนนั้นอย่าง BTC Guild และ Slush Pool ตัดสินใจร่วมมือกันดาวน์เกรดซอฟต์แวร์ของตัวเองกลับไปเป็นเวอร์ชัน 0.7.0 เพื่อให้กำลังขุดส่วนใหญ่ไปอยู่บนสายที่เก่ากว่าและปลอดภัยกว่า เมื่อกำลังขุดส่วนใหญ่ยึดสายเก่า สายที่ใช้เวอร์ชัน 0.8.0 ก็ต้องยอมรับความจริงและ Reorg กลับมาที่สายเก่าตามกติกาสายที่ยาวกว่าคือความจริง ธุรกรรมที่เกิดขึ้นเฉพาะบนสาย 0.8.0 ในช่วง 6 ชั่วโมงนั้นก็หายไปเหมือนไม่เคยเกิดขึ้น ผู้ใช้บางรายที่รับธุรกรรมโดยอิงจากสายที่แพ้ในตอนนั้นจึงได้รับผลกระทบโดยตรง
เหตุการณ์นี้ทำให้วงการเห็นสองอย่างชัดเจน อย่างแรกคือ Reorg ไม่ใช่แค่สถานการณ์ในตำราที่ไม่มีทางเกิดขึ้นจริง แต่เกิดขึ้นแล้วในระดับที่ยาวถึง 24 บล็อกซึ่งมากกว่ามาตรฐาน 6 Confirmation ที่ใช้กันทั่วไปเสียอีก อย่างที่สองคือ Bitcoin ไม่ได้ปลอดภัยเพราะโค้ดเพียงอย่างเดียว แต่ต้องอาศัยการประสานงานของคนที่ถือกำลังขุดจริงร่วมด้วยในสถานการณ์ฉุกเฉิน ซึ่งเป็นจุดที่มักถูกมองข้ามเวลาพูดถึงความปลอดภัยของเครือข่ายแบบกระจายศูนย์
ทำไมกระดานเทรดไทยถึงบังคับรอ Confirmation ก่อนเข้าเงิน
จุดเชื่อมที่เห็นภาพชัดที่สุดคือหน้าจอฝากเงินของกระดานเทรดคริปโตในไทยเอง เมื่อโอนบิตคอยน์เข้ากระดานเทรด ระบบจะไม่บวกยอดเงินให้ทันทีที่เห็นธุรกรรมเข้ามาใน Mempool แต่จะรอให้ธุรกรรมนั้นได้ Confirmation ครบตามจำนวนที่กระดานเทรดกำหนดไว้ก่อน ถึงจะปล่อยยอดเงินเข้าบัญชีให้ใช้งานได้จริง อย่างที่ศูนย์ช่วยเหลือของ Bitkub ระบุไว้ว่าแต่ละเหรียญและแต่ละเครือข่ายใช้เวลายืนยันบล็อกไม่เท่ากัน และแนะนำให้ผู้ใช้ตรวจสอบสถานะธุรกรรมด้วยหมายเลข Transaction ID ผ่าน Block Explorer ระหว่างรอ
เหตุผลที่กระดานเทรดต้องเข้มงวดเรื่องนี้เป็นพิเศษ เพราะกระดานเทรดรับความเสี่ยงแทนผู้ใช้ทุกคน หากปล่อยให้ถอนเงินออกไปได้ทันทีที่เห็นธุรกรรมเข้ามาโดยยังไม่รอ Confirmation แล้วธุรกรรมนั้นดันถูกเขียนทับจากเหตุการณ์บล็อกเชนแยกสายในภายหลัง กระดานเทรดจะเป็นฝ่ายต้องรับภาระเงินที่หายไปเอง จึงเป็นธรรมดาที่แพลตฟอร์มทางการเงินทุกแห่งจะเลือกฝั่งความปลอดภัยมากกว่าความเร็ว

ภาพ: ตัวอย่างหน้าจอจริงจากเว็บ Block Explorer สาธารณะที่แสดงจำนวน Confirmation ของธุรกรรมหนึ่งรายการ ซึ่งเป็นวิธีเดียวกับที่ผู้ใช้ทั่วไปใช้ตรวจสอบสถานะธุรกรรมของตัวเองระหว่างรอเงินเข้ากระดานเทรด
ค่าธรรมเนียมที่จ่ายมีผลต่อความเร็วในการได้ Confirmation แรก
อีกปัจจัยที่หลายคนมองข้ามคือค่าธรรมเนียมธุรกรรมมีผลโดยตรงต่อว่าธุรกรรมจะได้ Confirmation แรกเร็วแค่ไหน เพราะนักขุดมีสิทธิ์เลือกว่าจะหยิบธุรกรรมไหนจาก Mempool มาใส่ในบล็อกก่อน และธรรมชาติของนักขุดที่ต้องการรายได้สูงสุดจากค่าธรรมเนียมย่อมเลือกหยิบธุรกรรมที่จ่ายแพงกว่าไปก่อนเสมอ ธุรกรรมที่จ่ายค่าธรรมเนียมต่ำในช่วงที่เครือข่ายมีธุรกรรมค้างอยู่ใน Mempool จำนวนมากอาจต้องรอข้ามหลายบล็อกกว่าจะถูกหยิบขึ้นมาใส่ในบล็อกสักครั้ง
สถานการณ์นี้ชัดเจนที่สุดในช่วงที่ตลาดคริปโตคึกคักและมีคนโอนเงินพร้อมกันจำนวนมาก ทำให้ Mempool แน่นขึ้นและค่าธรรมเนียมเฉลี่ยที่ต้องจ่ายเพื่อให้ธุรกรรมถูกหยิบเร็วก็สูงขึ้นตามไปด้วย ผู้ใช้ที่รีบใช้เงินจึงมักเลือกจ่ายค่าธรรมเนียมสูงกว่าค่าเฉลี่ยเพื่อแลกกับความเร็ว ขณะที่คนที่ไม่รีบก็สามารถตั้งค่าธรรมเนียมต่ำแล้วรอได้โดยไม่เสียหาย เพราะสุดท้ายธุรกรรมก็จะถูกหยิบไปใส่บล็อกในที่สุด เพียงแต่อาจใช้เวลานานกว่า
เหตุการณ์ที่เห็นภาพชัดคือช่วงกลางปี 2023 ตอนที่กระแส Bitcoin Ordinals และเหรียญมาตรฐาน BRC-20 บนเชน Bitcoin ได้รับความนิยมพุ่งขึ้นอย่างรวดเร็ว คนจำนวนมากแห่กันส่งธุรกรรมเพื่อสร้างและซื้อขาย Ordinals จนพื้นที่ในแต่ละบล็อกไม่พอรองรับ ทำให้ Mempool บวมขึ้นมากและค่าธรรมเนียมเฉลี่ยต่อธุรกรรมพุ่งสูงกว่าปกติหลายเท่าในช่วงพีค ธุรกรรมโอนเงินธรรมดาที่จ่ายค่าธรรมเนียมต่ำในช่วงนั้นต้องรอนานผิดปกติกว่าจะได้ Confirmation แรก สะท้อนให้เห็นว่าค่าธรรมเนียมไม่ได้เป็นแค่ตัวเลขคงที่ แต่ขยับขึ้นลงตามความหนาแน่นของ Mempool ในแต่ละช่วงเวลาจริง
ธุรกรรม 0 Confirmation เสี่ยงแค่ไหน ทำไมบางร้านถึงยอมรับเลย
ระหว่างที่ธุรกรรมยังรออยู่ใน Mempool และยังไม่ได้ Confirmation แม้แต่ครั้งเดียว สถานะนี้เรียกว่า 0-conf หรือ Zero Confirmation หลายคนอาจสงสัยว่าในเมื่อยังไม่ได้รับการยืนยันจากเครือข่ายเลย ทำไมร้านกาแฟหรือร้านอาหารบางร้านที่รับบิตคอยน์ถึงยอมส่งของให้ทันทีโดยไม่รอ Confirmation สักครั้ง
คำตอบอยู่ที่การชั่งน้ำหนักระหว่างความเสี่ยงกับมูลค่าของธุรกรรม ความเสี่ยงหลักของธุรกรรม 0-conf คือสิ่งที่เรียกว่า Race Attack ซึ่งเกิดขึ้นเมื่อผู้ไม่หวังดีส่งธุรกรรมสองรายการพร้อมกันโดยใช้เหรียญชุดเดียวกัน รายการหนึ่งส่งให้ร้านค้าเพื่อรับสินค้า อีกรายการส่งกลับเข้ากระเป๋าตัวเอง แล้วหวังว่ารายการที่สองจะถูกนักขุดหยิบไปใส่บล็อกก่อน ทำให้รายการแรกที่ร้านค้าเห็นกลายเป็นโมฆะ สำหรับธุรกรรมมูลค่าต่ำอย่างกาแฟแก้วหนึ่ง ต้นทุนและความยุ่งยากในการวางแผนโจมตีแบบนี้มักไม่คุ้มกับผลตอบแทนที่ได้ ร้านค้าจึงยอมรับความเสี่ยงเล็กน้อยนี้แลกกับความเร็วในการให้บริการลูกค้า แต่สำหรับธุรกรรมมูลค่าสูงอย่างการโอนเข้ากระดานเทรดหรือซื้อสินค้าราคาแพง ความเสี่ยงนี้ไม่คุ้มที่จะรับ จึงต้องรอ Confirmation ตามเกณฑ์เสมอ
อีกปัจจัยที่ทำให้ 0-conf เสี่ยงขึ้นไปอีกคือฟีเจอร์ที่เรียกว่า RBF หรือ Replace-By-Fee ซึ่งเป็นกลไกที่กระเป๋าเงินสมัยใหม่เปิดให้ผู้ส่งสามารถส่งธุรกรรมใหม่มาแทนที่ธุรกรรมเดิมที่ยังไม่ได้ Confirmation ได้ โดยปกติฟีเจอร์นี้ออกแบบมาเพื่อให้ผู้ใช้ปรับค่าธรรมเนียมขึ้นได้เองถ้าธุรกรรมค้างนานเกินไป แต่ก็เปิดช่องให้ผู้ไม่หวังดีใช้แทนที่ธุรกรรมเดิมด้วยธุรกรรมใหม่ที่ส่งเงินกลับเข้ากระเป๋าตัวเองแทนได้ง่ายกว่าการทำ Race Attack แบบเดิม ด้วยเหตุนี้ Block Explorer และกระเป๋าเงินหลายเจ้าจึงแสดงป้ายเตือนชัดเจนเวลาธุรกรรมนั้นเปิดใช้ RBF อยู่ เพื่อให้ผู้รับรู้ว่าควรรอ Confirmation อย่างน้อยหนึ่งครั้งก่อนเชื่อได้เต็มที่ ไม่ควรเชื่อสถานะ 0-conf เพียงอย่างเดียวถ้าธุรกรรมนั้นเปิด RBF ไว้
กระเป๋าเงินแบบ SPV เช็ค Confirmation ต่างจากโหนดเต็มรูปแบบยังไง
อีกรายละเอียดที่คนทั่วไปมักไม่รู้คือ กระเป๋าเงินบิตคอยน์ที่ใช้กันบนมือถือส่วนใหญ่ไม่ได้ดาวน์โหลดบล็อกเชนทั้งหมดมาเก็บไว้ในเครื่อง เพราะข้อมูลทั้งหมดของบล็อกเชน Bitcoin มีขนาดหลายร้อยกิกะไบต์แล้วในปัจจุบัน กระเป๋าเงินมือถือส่วนใหญ่จึงใช้วิธีที่เรียกว่า SPV หรือ Simplified Payment Verification แทน
หลักการของ SPV คือกระเป๋าเงินจะดาวน์โหลดมาแค่ส่วนหัวของบล็อก หรือ Block Header ซึ่งมีขนาดเล็กมากเมื่อเทียบกับข้อมูลธุรกรรมทั้งหมดในบล็อก แล้วใช้โครงสร้างข้อมูลที่เรียกว่า Merkle Tree มาพิสูจน์ว่าธุรกรรมของตัวเองถูกรวมอยู่ในบล็อกนั้นจริงโดยไม่ต้องโหลดธุรกรรมอื่นทั้งหมดในบล็อกมาตรวจสอบเอง วิธีนี้ทำให้กระเป๋าเงินมือถือใช้พื้นที่เก็บข้อมูลน้อยกว่าการรันโหนดเต็มรูปแบบมาก และยังคำนวณจำนวน Confirmation ได้จากส่วนหัวของบล็อกที่ต่อทับขึ้นไปเช่นเดียวกัน
ข้อแลกเปลี่ยนของวิธีนี้คือกระเป๋าเงินแบบ SPV ต้องเชื่อใจโหนดอื่นในเครือข่ายว่าส่งข้อมูลส่วนหัวของบล็อกที่ถูกต้องมาให้ ต่างจากการรันโหนดเต็มรูปแบบที่ตรวจสอบทุกกฎของเครือข่ายด้วยตัวเองทั้งหมดโดยไม่ต้องเชื่อใครเลย นี่คือเหตุผลที่คนที่จริงจังกับความปลอดภัยระดับสูงสุด เช่น กระดานเทรดขนาดใหญ่หรือธุรกิจที่รับบิตคอยน์จำนวนมาก มักเลือกรันโหนดเต็มรูปแบบของตัวเองแทนที่จะพึ่งพากระเป๋าเงินแบบ SPV เพียงอย่างเดียว เพราะการตรวจสอบ Confirmation ด้วยโหนดของตัวเองมั่นใจได้มากกว่าการเชื่อข้อมูลจากคนอื่น แม้จะต้องแลกกับต้นทุนด้านพื้นที่จัดเก็บข้อมูลและการดูแลระบบที่สูงกว่าก็ตาม
ประเมินเวลารอ Confirmation ครบล่วงหน้าได้ยังไง
เมื่อรู้แล้วว่าบิตคอยน์ปิดบล็อกใหม่เฉลี่ยทุก 10 นาที การประเมินเวลารอ Confirmation ครบจึงทำได้ไม่ยาก แต่ต้องเข้าใจว่าตัวเลข 10 นาทีนี้คือค่าเฉลี่ย ไม่ใช่ตัวเลขตายตัวที่เกิดขึ้นตรงเวลาทุกครั้ง เพราะเวลาที่นักขุดจะไขโจทย์คณิตศาสตร์สำเร็จเป็นเรื่องของความน่าจะเป็น บางบล็อกอาจถูกขุดได้ในเวลาไม่ถึงนาที ขณะที่บางบล็อกอาจใช้เวลานานถึงครึ่งชั่วโมงหรือมากกว่านั้นก็เป็นไปได้ เพียงแต่เมื่อนับเฉลี่ยระยะยาวแล้วจะออกมาใกล้เคียง 10 นาทีต่อบล็อกเสมอ เพราะระบบมีกลไกที่เรียกว่า Difficulty Adjustment ปรับความยากของโจทย์ทุก 2,016 บล็อกโดยอัตโนมัติเพื่อรักษาค่าเฉลี่ยนี้ไว้ไม่ว่ากำลังขุดรวมของเครือข่ายจะเพิ่มขึ้นหรือลดลงแค่ไหนก็ตาม
ด้วยเหตุนี้ การรอ 6 Confirmation ในทางทฤษฎีควรใช้เวลาประมาณหนึ่งชั่วโมง แต่ในทางปฏิบัติอาจสั้นกว่าหรือยาวกว่านั้นได้ในแต่ละครั้งขึ้นอยู่กับดวงของแต่ละบล็อก วิธีที่ผู้ใช้ทั่วไปเช็คความคืบหน้าแบบเรียลไทม์ได้ดีที่สุดคือการนำ TxID ไปค้นหาบน Block Explorer สาธารณะ ซึ่งจะแสดงตัวเลข Confirmation ปัจจุบันที่อัปเดตทันทีที่มีบล็อกใหม่ถูกขุดออกมา แทนที่จะพยายามคำนวณเวลาล่วงหน้าเองซึ่งมีโอกาสคลาดเคลื่อนได้พอสมควร โดยเฉพาะในช่วงที่ความยากของโจทย์เพิ่งถูกปรับหรือกำลังขุดรวมของเครือข่ายเพิ่งเปลี่ยนแปลงอย่างรวดเร็ว
Lightning Network เกี่ยวข้องกับ Confirmation ยังไง
อีกเรื่องที่หลายคนเริ่มได้ยินมากขึ้นคือ Lightning Network ซึ่งเป็นระบบที่สร้างขึ้นมาซ้อนอยู่เหนือบล็อกเชนหลักของ Bitcoin เพื่อให้โอนเงินได้เร็วและมีค่าธรรมเนียมถูกกว่ามาก จุดที่น่าสนใจคือ Lightning Network มีความสัมพันธ์กับ Block Confirmation ในแบบที่ตรงข้ามกันโดยสิ้นเชิงในสองจุด
จุดแรกคือตอนเปิดและปิดช่องทางการชำระเงินที่เรียกว่า Payment Channel ขั้นตอนนี้ยังต้องพึ่งพาบล็อกเชนหลักและต้องรอ Confirmation ตามปกติเหมือนธุรกรรมทั่วไป เพราะการเปิดช่องทางคือการล็อกเงินจำนวนหนึ่งไว้ในธุรกรรมพิเศษบนบล็อกเชนหลัก ซึ่งต้องได้รับการยืนยันจากเครือข่ายก่อนถึงจะเริ่มใช้งานช่องทางนั้นได้อย่างปลอดภัย เช่นเดียวกับตอนปิดช่องทางที่ต้องส่งธุรกรรมสุดท้ายกลับไปบันทึกบนบล็อกเชนหลักอีกครั้ง
แต่จุดที่สองคือระหว่างที่ช่องทางเปิดใช้งานอยู่ ธุรกรรมที่เกิดขึ้นภายในช่องทางนั้นไม่ต้องรอ Confirmation จากบล็อกเชนหลักเลยแม้แต่ครั้งเดียว เพราะเป็นการอัปเดตยอดคงเหลือกันเองระหว่างสองฝ่ายที่เปิดช่องทางไว้ด้วยกัน โดยมีกลไกทางการเข้ารหัสรับประกันว่าฝ่ายใดฝ่ายหนึ่งจะโกงยอดเงินไม่ได้ ทำให้การโอนผ่าน Lightning Network เกิดขึ้นแทบจะทันทีในระดับวินาที ต่างจากการโอนผ่านบล็อกเชนหลักที่ต้องรอเป็นนาทีหรือชั่วโมงตามที่อธิบายมาตลอดทั้งบทความ
ข้อแลกเปลี่ยนของความเร็วนี้คือ Lightning Network เหมาะกับธุรกรรมมูลค่าไม่สูงมากและการใช้งานที่ต้องการความเร็วเป็นหลัก เช่น จ่ายค่ากาแฟหรือทิปเล็กๆ น้อยๆ ส่วนธุรกรรมมูลค่าสูงหรือการโอนเข้ากระดานเทรดที่ต้องการความปลอดภัยระดับสูงสุด ยังคงต้องพึ่งพาบล็อกเชนหลักและรอ Confirmation ตามมาตรฐานเดิมอยู่ดี Lightning Network จึงไม่ได้มาแทนที่ระบบ Confirmation แบบเดิม แต่เป็นทางเลือกเสริมสำหรับกรณีที่เน้นความเร็วมากกว่า
คำถามที่พบบ่อย
Block Confirmation คืออะไร?
คือจำนวนบล็อกที่ถูกขุดต่อทับบนบล็อกที่บรรจุธุรกรรมของเราไว้ นับตั้งแต่บล็อกนั้นถูกปิดครั้งแรก ยิ่งมีบล็อกต่อทับมากเท่าไหร่ ยิ่งมั่นใจได้มากว่าธุรกรรมนั้นจะไม่ถูกเขียนทับหรือยกเลิกอีก
ทำไมต้องรอ 3-6 Confirmation ไม่ใช่แค่ 1?
เพราะบล็อกแรกที่ปิดอาจเป็นบล็อกที่แพ้ในเหตุการณ์บล็อกเชนแยกสายชั่วคราว การรอให้มีบล็อกใหม่ต่อทับขึ้นไปหลายบล็อกช่วยลดความเสี่ยงที่ธุรกรรมจะถูกยกเลิกในภายหลัง เพราะการเขียนประวัติศาสตร์ใหม่ยากขึ้นเรื่อยๆ ตามจำนวนบล็อกที่ต่อทับไปแล้ว
โอนบิตคอยน์เข้ากระดานเทรดไทยแล้วทำไมเงินไม่เข้าทันที?
เพราะกระดานเทรดต้องรอให้ธุรกรรมได้ Confirmation ครบตามจำนวนที่กำหนดไว้ก่อนถึงจะปล่อยยอดเงินให้ใช้งานได้ เป็นมาตรการป้องกันความเสี่ยงจากเหตุการณ์บล็อกเชนแยกสาย ระหว่างรอสามารถตรวจสอบสถานะได้ด้วยหมายเลข Transaction ID ผ่าน Block Explorer
จ่ายค่าธรรมเนียมแพงขึ้นช่วยให้ได้ Confirmation ครบเร็วขึ้นไหม?
ค่าธรรมเนียมมีผลแค่กับความเร็วในการได้ Confirmation แรก เพราะนักขุดเลือกหยิบธุรกรรมที่จ่ายแพงกว่าไปใส่บล็อกก่อน แต่หลังจากได้ Confirmation แรกแล้ว การรอ Confirmation ถัดไปจนครบจะขึ้นอยู่กับความเร็วเฉลี่ยในการปิดบล็อกใหม่ของเครือข่ายเท่านั้น ไม่เกี่ยวกับค่าธรรมเนียมอีกต่อไป
ทุกเหรียญคริปโตต้องรอ Confirmation จำนวนเท่ากันไหม?
ไม่เท่ากัน แต่ละเครือข่ายบล็อกเชนมีความเร็วในการปิดบล็อกและมาตรฐานความปลอดภัยต่างกัน กระดานเทรดแต่ละแห่งจึงกำหนดจำนวน Confirmation ที่ต้องรอแตกต่างกันไปตามเหรียญและเครือข่ายที่ใช้
เช็คสถานะ Confirmation ของธุรกรรมตัวเองได้ที่ไหน?
สามารถนำหมายเลข Transaction ID (TxID) จากแอปกระเป๋าเงินต้นทางไปค้นหาบนเว็บ Block Explorer สาธารณะ ซึ่งจะแสดงจำนวน Confirmation ปัจจุบันของธุรกรรมนั้นแบบเรียลไทม์
📖 เรื่องนี้ผู้เขียนเล่าไว้ละเอียดกว่านี้ในหนังสือ Bitcoin & Blockchain 101 บทที่ว่าด้วยการขุด Bitcoin