28 มิ.ย. 2021 เวลา 06:19 • คริปโทเคอร์เรนซี
รู้จักกับ 51% attack
ตอนที่ 1 double spending
double spending แปลเป็นไทยๆ ว่า การจ่ายเงินซ้ำ ซึ่งเป็นความเสี่ยงชนิดหนึ่งของกระบวนการการให้รางวัลกับคนที่ชนะในการสร้าง block ในระบบ blockchain ของเหรียญดิจิทัลทุกชนิด … เมื่อเกิดเหตุการณ์ double spending จะมีการจ่ายรางวัลออกไป 2 ครั้งซ้อนกันใน 1 block ปัญหานี้เป็นปัญหาที่สำคัญของทุกๆ เหรียญดิจิทัลที่ต้องคำนึงถึง ... เนื่องจากข้อมูลดิจิทัลสามารถทำซ้ำได้ค่อนข้างง่ายโดยบุคคลที่เข้าใจเครือข่าย blockchain และเข้าใจหลักการของ PoW ที่จำเป็นต่อการจัดการ block ใหม่
สำหรับเงินที่เราใช้จริงๆ ในโลกจะไม่มีปัญหานี้เนื่องจาก “ไม่สามารถ” สร้างตัวเงินซ้ำ และไม่สามารถแก้ไขธุรกรรมได้ดัวตัวเอง … นอกจากนั้นยังมีฝ่ายที่เกี่ยวข้องหลายๆ ฝ่ายในธุรกรรมทางการเงิน ที่สามารถตรวจสอบความถูกต้องและตรวจสอบความเป็นเจ้าของเงินทั้งก่อนทำธุรกรรมและหลังทำธุรกรรม… แน่นอนอันนี้ไม่รวมเรื่องที่เกี่ยวข้องกับการทำธุรกรรมด้วยเงินสดน่ะ
จุดอ่อนของสกุลเงินดิจิทัลคือมีความเสี่ยงที่เจ้าของเงินจะทำสำเนาของ digital token และส่งตัวสำเนาไปยังผู้ค้าหรือบุคคลอื่นโดยที่เจ้าของเงินยังคงรักษาต้นฉบับไว้กับตัว … ประมาณว่ามีเหรียญเพียงแค่เหรียญเดียวแต่ถูกนำไปใช้ 2 ครั้ง … นี่เป็นข้อกังวลอันดับแรกๆ ของ cryptocurrency ที่ได้รับความนิยมมากที่สุดในโลกอย่าง bitcoin เนื่องจากเป็นสกุลเงินที่มีกระจายอำนาจ (decentralized ) และไม่มีหน่วยงานกลางใดๆ มาตรวจสอบว่ารางวัลสำหรับการสร้าง blcok ถูกจ่ายแค่ครั้งเดียวจริงๆ … ซึ่ง bitcoin ได้แก้ปัญหานี้โดยใช้ blockchain บันทึกทุกๆ ธุรกรรมเพื่อตรวจสอบความถูกต้องของแต่ละธุรกรรมดังนั้นจึงป้องกันการจ่ายรางวัลซ้ำได้ .. หรือถ้าตรวจสอบย้อนหลังว่ามีการจ่ายซ้ำ chian ที่ถูกจ่ายซ้ำก็จะถูกหยุดไป ..ซึ่งการตัดตอน blockchain ในลักษณะนี้เคยเกิดขึ้นแล้วที่ block 666,833 (อ้างอิงจาก https://forkmonitor.info/stale/btc/666833) โดย block ที่มีปัญหาก็จะถูกหยุด chain ไปเอง
แล้วการเกิด double spending เกิดขึ้นได้ยังไง?
การเกิด double spending จะเกิดขึ้นเมื่อ blockchian ถูกหยุดชะงัก ณ ในช่วงเวลาหนึ่ง … และในช่วงเวลาที่ถูกหยุดชะงักนั้นเอง เหรียญที่เตรียมเอาไว้เป็นรางวัลสำหรับคนที่ชนะในการสร้าง block ก็จะถูกขโมยไปเรียบร้อยแล้ว โดยโจรจะส่งสำเนาธุรกรรมเพื่อให้ดูว่าการจ่ายเงินรางวัลนั้นดูถูกต้อง คือจ่ายให้ตัวเองไปก่อน เมื่อคนที่ชนะ block ยังไม่ได้รับรางวัลจึงมีการร้องขอและถูกจ่ายเข้าไปใหม่ … หรือโจรอาจจะลบธุรกรรมที่จ่ายให้กับโจรหลังจากที่ได้รับรางวัลแล้ว ระบบก็จะสร้างธุรกรรมใหม่โดยจ่ายให้กับผู้ชนะที่แท้จริง … ถึงแม้ว่าเหตุการณ์นี้จะไม่ใช่เรื่องปกติ แต่ก็มีโอกาสที่การใช้จ่ายซ้ำซ้อนเกิดขึ้นได้ … แต่ก็เกิดขึ้นได้ยากมากๆ … ซึ่งในความเป็นจริง การขโมยเงินจากกระเป๋าเงินดิจิทัลที่ไม่ได้รับการรักษาความปลอดภัยอย่างดีพอ
จะมีความเป็นไปได้มากกว่าที่จะมาทำให้ blockchian ชะงักเพื่อทำ double spening
Bitcoin ป้องกัน double spening ยังไง
เนื่องจาก Bitcoin มีการรวมธุรกรรมทั้งหมดไว้ ในblockchian โดย “ไม่มีข้อยกเว้น” .. นั้นหมายถึงใน blockchain จะบันทึกทุกๆ เหตุการณ์แม้กระทั่งช่วงเวลาที่ blcokchain ชะงัก และด้วยกลไกนี้ ทำให้มั่นใจได้ว่าใครก็ตามที่ทำธุรกรรมเกี่ยวกับ bitcoin เป็นเจ้าของ bitcoin จริงๆ และยังป้องกันการนับซ้ำรวมถึงการฉ้อโกงในรูปแบบอื่นๆ ด้วย … สำหรับ block ใหม่ใน blockchian ของธุรกรรมใดๆ ต้องผ่านการตรวจสอบแล้วเท่านั้น block ใหม่จึงจะถูกสร้างโดยสมบูรณ์ … ดังนั้นทุกๆ ธุรกรรมใน bitcoin จึงมีการคำนวณตัวเลขอย่างเข้มข้นด้วยอัลกอริธึมที่ซับซ้อนซึ่งใช้พลังงานในการประมวลผลอย่างมากดังนั้นจึงเป็นเรื่องยากอย่างยิ่งที่จะทำซ้ำหรือปลอมแปลง blockchian ของ bitcoin …. ฟังแล้วก็ดูปลอดภัยดีแต่ด้วย concept แบบนี้ก็มีข้อเสียตรงที่ว่า ต้องใช้เวลานานมากในการตรวจสอบเพราะคำนวณตรวจสอบกันอุตลุด … และนี้จึงเป็นอุปสรรคที่สำคัญที่ทำให้ไม่สามารถนำ bitcoin เอาไปใช้ในชีวิตประจำวัน … ยกตัวอย่างง่ายๆ สมมุติว่าคุณจะจ่ายค่าน้ำอัดลม 10 บาทที่ 7-11 ด้วย bitcoin … คุณอาจจะต้องรอถึง 1 วันกว่าจะ confirm ว่าการชำระเงินนั้นเรียบร้อย (transaction complete)
แล้ว Chia ป้องกัน double spending ยังไง
Chia จะใช้ระบบ proof of time ซึ่งจะใช้เวลาสั้นๆ ในการสร้าง block (ที่แตกต่างโดยสิ้นเชิงกับ bitcoin ที่ใช้พลังงานการคำนวณมหาศาลเพื่อใช้ในการตรวจสอบ) โดย Proof of Time จะถูกดำเนินการโดย Verifiable Delay Function (VDF) ที่คำนวณการ verify block โดยใช้เวลาไม่นาน (ฝรั่งใช้คำว่า very fast) Key ที่สำคัญของ VDF คือการคำนวณแบบตามลำดับ (sequential computation) ดังนั้นต่อให้มีเครื่องหลายๆ เครื่องก็ไม่มีประโยชน์เพราะผู้ที่ได้เข้าชิงจะถูกจัดเรียงลำดับการเข้ามารายงานตัวกับ VDF ใครมาเร็วก่อนได้รายงานตัวก่อน …. จากนั้นก็จะถูก verify ตามลำดับของคิว …. ทั้งคิวและการ verify จะถูกจัดการโดย VDF server ซึ่ง Chia dev ตั้งชื่อเจ้า VDF server อย่างเท่ๆ ว่า “Timeloard” ... ดังนั้น new block ของ blockchian จึงถูกสร้างอย่างรวดเร็วและยุติธรรม … การจบ block ของ blockchian เพื่อที่จะรอรับ block ใหม่ก็จะรวดเร็วกว่าของ bitcoin มากๆ ทั้งยังไม่ต้องใช้พลังการคำนวณมหาศาลอีกด้วย… นี้จึงเป็นจุดเด่นอีกขอของ Chia ที่นำมาท้าชิง bitcoin
สำหรับคนที่ใช้ chia version 1.1.5 แล้วจะเจอ log แบบข้างล่าง
.
2021-05-15T07:28:08.139 full_node chia.full_node.full_node: WARNING Wasn't able to add transaction with id 43316bb24a5f9197154d8507d2b332dd44665102d4f93a4af68b617ecf538324, status 3 error: Err.DOUBLE_SPEND
.
หมายความว่าเราผ่าน filter และได้ proof แล้วด้วย Timelord ให้เราเป็นผู้ชนะแล้ว .. และพร้อมที่จะไปขึ้นเงินแล้ว … แต่ …. ดันช้ากว่า Timelord ของคนอื่นที่ verify เร็วกว่า … ดังนั้นตอนที่เราไปขึ้นเงินแต่ตัว blcok ของ challenge ถูกสร้างเสร็จไปแล้ว ตัว blockchain จึงปฏิเศษการขึ้นเงินด้วยเหตุผล DOUBLE SPEND (ขอขึ้นเงินซ้ำ)…
.
แต่เนื่องจากมีคนถามมากว่าจะลด error นี้ได้ยังไง เพื่อที่จะหาวิธีชนะรางวัล … ทั้งๆ ที่มันเป็นไปไม่ได้เพราะมันขึ้นอยู่กับความเร็วของ network …. Chia dev เลยตัดปัญหาเอา information นี้ออกจาก log file สำหรับ version ตั้งแต่ 1.1.7 เป็นต้นไป
แล้ว VDF server (Timeloard) คือใคร
Timelord เป็นใครก็ได้ที่สามารถรันโปรแกรม Timelord ที่เป็น open source และถูกพัฒนามาจาก Chia Network นอกจากนั้นยังต้องมี network ที่รวดเร็วพอที่จะไปแข่งกับ Timelord เจ้าอื่นๆ เพื่อทีจะสามารถ verify plot ได้อย่างรวดเร็ว ….
แล้วเราสามารถเป็น Timelord ที่เร็วที่สุดแล้วแอบทำ double spending ได้ไหม?
สำหรับคำถามนี้ผมขออ้างอิงคำตอบ ของ Mariano - Chia dev ที่ได้ตอบไว้ที่นี้ ครับ https://github.com/Chia.../chia-blockchain/discussions/987
Mariano ตอบคำถามนี้ว่าเป็นไปได้อยากที่จะ attack timelord แล้วทำ double spending เพราะถ้าจะ attack timeload … เราจะต้องเป็น Timelord ที่เร็วที่สุด “ทุกครั้ง”… ประมาณว่า challenge มาเมื่อไรเราสามารถ proof plot ได้เร็วกว่า Timelord ตัวอื่นๆ ทุกๆ challenge ซึ่งในทางปฏิบัติมันเป็นไปได้ยากมากๆ เพราะมันเป็นเรื่องของ network traffic…. แต่สิ่งหนึ่งที่มีโอกาสเป็นไปได้คือ เป็น Timelord ที่เร็ว (แม้จะไม่เร็วที่สุดก็ตาม) และเมื่อได้ challenge ก็จะเลือกให้รางวัล กับเฉพาะ plot ของ farmer ที่รู้จักกัน … เหตุการณ์แบบนี้เป็นไปได้ แต่อย่าลืมว่าเป็นไปได้ยากที่ plot ของ farmer ที่ ซูเอี๋ย กับ Timelord ต้องผ่าน pass filter ของ Timelord ที่ซูเอี๋ยกันด้วย … แต่ต่อให้ผ่านมาได้ก็จะได้รางวัลแค่ 2XCH … ซึ่งเป็นคำถามที่ว่า …. มันจะคุ้มที่จะลงทุน hardware เพื่อ attach แบบนี้หรือเปล่า
.
Mariano อธิบายว่า ถ้า Timelord ที่มี network ที่รวดเร็วจับมือกับ farmer ที่มี netspace 33% ของ netspace ทั้งหมดมีโอกาสที่จะเกิด “51% attack” คือ Timelord ของโจรเร็วกว่า Timelord ของคนอื่นๆและทุกๆ port ที่ผ่าน filter ก็จะเป็นของ farmer ที่มี netspace มากกว่า 33% … นี่เป็นหนึ่งในเหตุผลที่ Chia Network หวังว่าจะสนับสนุนโครงการวิจัยแบบเปิดในอนาคต เพื่อสร้าง opensource algorithm ที่ออกแบบเวลาได้เร็วที่สุดและพร้อมให้ทุกคนใช้งานได้ … นอกจากนั้นยังช่วยกันหาข้อบกพร่องร่วมกันได้อีกด้วย
*** ตรงนี้ผมยังไม่เข้าใจ Mariano ที่บอกว่า Timelord ที่มี network ที่รวดเร็วที่สุด ร่วมมือกับ farmer ที่มี netspace 33% ของ netspace ทั้งหมดและจะสามารถทำ “51% attack” ได้ … ซึ่ง คหสต คิดว่ามี netspace 33% ก็เหมือนมีโอากาสชนะรางวัลแค่ 33% .. ไม่น่าจะทำ “51% attack” ได้ … แต่ post นี้ถูกเขียนเมื่อ Feb 2021 ก่อน mainnet release ดังนั้นข้อมูลตรงนี้อาจจะไม่ชัดเจน … เอาเป็นว่ารับรู้ไว้เป็นข้อมูลเพื่อไปพิสูจน์ในอนาคตครับ
แล้วถ้าทำให้ Timelord คนอื่นๆ พิการล่ะ ... (ไอ้คนถามนี้จ้องจะโกงอย่างเดียว)
เนื่องจาก Timelord ไม่ได้รับผลตอบแทนใดๆ จากการเป็นคน verify plot ของ farmer ดังนั้นจำนวน Timelord ใน mainnet จึงมีอยู่อย่างจำกัด … ถ้าเราสืบได้ว่า Timelord เป็นใครบ้างแล้วทำการ attack timelord เหล่านั้น อาจจะเป็น DoS (denial-of-service คือทำให้ server busy ตลอดเวลาจนไปทำงานอย่างอื่นไม่ได้) ดังนั้นเราก็จะได้เป็น Timloard ที่เร็วที่สุด …Mariano บอกว่ามันก็เป็นไปได้ ... ดังนั้นเขาจึงแนะนำว่า farmer นอกจากจะทำ farm แล้วน่าจะรัน Timelord ไปด้วย เพราะถึงแม้ว่า timelord จะไม่ได้ผลตอบแทนแต่มันจะเป็น benefit ให้กับ farmer ในเรื่องของความรวดเร็วของ transaction และยังเป็นคนช่วย backup ข้อมูล ในตอนที่มี bad network ซึ่งในความเป็นจริง cpu intel ธรรมดาก็เพียงพอที่จะเป็น timelord ได้แล้ว … ในอนาคต Chia อาจจะออก standard hardware ที่ให้ farmer สามารถรัน Timelord ได้เพื่อป้องกันปัญหาการโจมตี Timelord
คหสต ผมคิดว่าเมื่อวันใดที่ Chia เป็นที่นิยมระดับองค์กรได้ .. บริษัทชั้นนำจะทำตัวเป็น timelord เองเพื่อช่วยให้ transaction รวดเร็วและตรวจอสอบข้อมูลของ transaction เพื่อปกป้องผลประโยชน์ขององค์กรเอง ... เหมือนกับ time server ที่คอย sync time ของ server ระหว่างกันทำให้ server ทุกตัวบนโลกมีเวลาที่เท่ากัน… และนี้คือสิ่งที่ Chia Network วางไว้ คือให้คนทั่วไปเป็นคนช่วยตรวจสอบ transaction ซึ่งต่างจากระบบธนาคารและสถาบันการเงินในปัจจุบันที่มีการตรวจสอบเฉพาะกลุ่มเท่านั้น
โดยสรุปสำหรับ Chia กับ bitcoin เป็นไปได้ยากมากที่จะเกิดเหตุการณ์ double spending เพราะ concept และ algorithm ของทั้งคู่ปิดช่องโหว่ไว้หมดแล้ว … สำหรับ Chia ทีอายุยังน้อย ณ ตอนนี้เลยยังไม่เห็นจุดอ่อน … ต้องรอเวลาสักพัก รอให้มีคนใช้เยอะกว่านี้ transaction วิ่งมากกว่านี้… อาจจะมีอะไรแปลกๆ ก็ได้ … สำหรับ ETH เจอกันตอนที่ 3 ครับ .... ETH โดนโจรทำ double spending มาแล้ว ถึง 2 ครั้ง ในตอนที่ 3 จะอธิบายเหตุการณ์นี้ครับ ... ฝากติดตามด้วยน่ะครับ
สุดท้ายขอให้ทุกคนโชคดีในการทำฟาร์มครับ
โฆษณา