
The DAO แฮ็กปี 2016 เงินหายหนึ่งในสาม และวันที่ Ethereum แยกเป็นสองเชน
มิถุนายน 2016 กองทุน The DAO ที่ระดมได้ราว 12 ล้าน ETH ถูกดูดเงินออกไปราวหนึ่งในสามด้วยช่องโหว่แบบเรียกซ้ำ หนึ่งเดือนต่อมา Ethereum ฮาร์ดฟอร์กที่บล็อก 1,920,000 เพื่อคืนเงิน และคนที่ไม่เห็นด้วยก็เดินต่อบนเชนเดิมที่กลายเป็น Ethereum Classic บทความนี้เปิดประกาศต้นฉบับของ Ethereum Foundation รายงาน ก.ล.ต. สหรัฐ และข้อมูลบนเชนทั้งสองเส้น
วันที่ 17 มิถุนายน 2016 ใครบางคนเริ่มดูดเงินออกจากกองทุนที่ใหญ่ที่สุดบน Ethereum ในตอนนั้น กองทุนชื่อ The DAO ระดมเงินมาได้ราว 12 ล้าน ETH จากคนทั่วโลก และราวหนึ่งในสามของเงินก้อนนั้นก็ไหลไปอยู่ในที่อยู่ที่ผู้โจมตีควบคุม ไม่มีใครเจาะระบบของ Ethereum ผู้โจมตีแค่เรียกใช้โค้ดของกองทุนตามที่มันถูกเขียนไว้ สิ่งที่เกิดหลังจากนั้นหนึ่งเดือนคือการตัดสินใจที่ยังถูกถกเถียงมาถึงวันนี้ เครือข่ายเลือกเปลี่ยนกฎเพื่อเอาเงินคืน และคนที่ไม่เห็นด้วยก็เดินต่อบนเชนเดิม บล็อกเชนหนึ่งเส้นจึงกลายเป็นสองเส้น บทความนี้เปิดเอกสารต้นฉบับของ Ethereum Foundation รายงานของ ก.ล.ต. สหรัฐ และข้อมูลบนเชนทั้งสองเส้น ไล่ดูว่าเกิดอะไรขึ้นจริง
The DAO คืออะไร
DAO ย่อมาจาก Decentralized Autonomous Organization หรือองค์กรที่ไม่มีผู้บริหาร กฎทั้งหมดเขียนเป็นโค้ดบนบล็อกเชน ใครอยากรู้พื้นฐานเรื่องนี้ก่อน อ่านต่อได้ที่Governance Token และ DAO คืออะไร
The DAO คือ DAO ตัวแรกๆ ที่ใหญ่พอให้คนทั้งวงการจับตา มันเป็นสัญญาอัจฉริยะบน Ethereum ที่ทำงานเหมือนกองทุนร่วมลงทุน คนเอา ETH มาแลกเป็นโทเคน DAO แล้วใช้โทเคนนั้นโหวตว่าจะให้เงินกองทุนกับโครงการไหน ผลตอบแทนจากโครงการจะกลับมาหาผู้ถือโทเคน
ตามรายงานของ ก.ล.ต. สหรัฐ แนวคิดนี้มาจากเอกสารที่ Christoph Jentzsch ประธานฝ่ายเทคโนโลยีของ Slock.it บริษัทสตาร์ทอัพจากเยอรมนีเขียนขึ้น เขาเผยแพร่ฉบับสุดท้ายราววันที่ 23 มีนาคม 2016 และเคยนำเสนอแนวคิดนี้ตั้งแต่เดือนพฤศจิกายน 2015 ในงานสัมมนานักพัฒนา Ethereum ที่ลอนดอน
ตัวเลขการระดมทุนตามรายงานเดียวกัน
- ขายโทเคนตั้งแต่วันที่ 30 เมษายน ถึง 28 พฤษภาคม 2016
- ขายโทเคน DAO ได้ราว 1,150 ล้านโทเคน แลกกับ ETH ราว 12 ล้าน ETH
- ตอนปิดการขาย มูลค่ารวมราว 150 ล้านดอลลาร์
ถ้าเทียบง่ายๆ 150 ล้านดอลลาร์หารด้วย 12 ล้าน ETH คือราว 12.5 ดอลลาร์ต่อ ETH ในตอนนั้น
มีรายละเอียดหนึ่งที่มักถูกเล่าข้าม The DAO ไม่ได้ไร้คนดูแลเสียทีเดียว รายงานของ ก.ล.ต. เขียนว่า ทุกข้อเสนอต้องผ่านการตรวจของกลุ่มคนที่เรียกว่า Curator ก่อนจะถูกนำไปโหวตได้ และ Curator ชุดแรกคือกลุ่มคนที่ Slock.it เลือกมา เอกสารต้นฉบับของ The DAO เองก็เขียนว่า Curator มีอำนาจมาก
วันที่ 17 มิถุนายน 2016
ขายโทเคนจบได้ไม่ถึงสามสัปดาห์ ก่อนที่กองทุนจะได้ให้เงินกับโครงการไหนเลย ผู้โจมตีก็เริ่มลงมือ Vitalik Buterin ผู้ร่วมก่อตั้ง Ethereum เขียนประกาศด่วนลงบล็อกของ Ethereum Foundation ในวันเดียวกัน
ภาพ: ประกาศของ Vitalik Buterin บนบล็อก Ethereum Foundation วันที่ 17 มิถุนายน 2016
"พบการโจมตีและมีการใช้ช่องโหว่ใน DAO แล้ว และผู้โจมตีกำลังดูด ether ที่อยู่ใน DAO ออกไปใส่ DAO ลูก"
Vitalik Buterin, CRITICAL UPDATE Re: DAO Vulnerability, Ethereum Foundation Blog ต้นฉบับ "An attack has been found and exploited in the DAO, and the attacker is currently in the process of draining the ether contained in the DAO into a child DAO."
รายงานของ ก.ล.ต. ให้ตัวเลขว่าเงินที่ถูกย้ายออกไปคือราว 3.6 ล้าน ETH หรือหนึ่งในสามของ ETH ทั้งหมดที่กองทุนระดมได้ ประกาศของ Vitalik เน้นอีกเรื่องที่สำคัญมากในตอนนั้น คือปัญหานี้เป็นปัญหาของ The DAO เท่านั้น ตัว Ethereum เองยังปลอดภัยดี
ช่องโหว่ทำงานอย่างไร
The DAO มีฟังก์ชันชื่อ split ที่ให้คนที่ไม่เห็นด้วยกับเสียงส่วนใหญ่แยกตัวออกไปตั้ง DAO ลูกของตัวเอง พร้อมเอาส่วนแบ่ง ETH ของตัวเองออกไปด้วย ฟีเจอร์นี้ตั้งใจสร้างมาเพื่อปกป้องเสียงข้างน้อย
ปัญหาอยู่ที่ลำดับการทำงานของโค้ด เมื่อมีคนขอแยกตัว สัญญาจะส่ง ETH ออกไปให้ก่อน แล้วค่อยหักยอดในบัญชีของคนนั้นทีหลัง ช่วงเวลาสั้นๆ ระหว่างส่งเงินกับหักยอด คือช่องที่ผู้โจมตีใช้
ผู้โจมตีสร้างสัญญาของตัวเองที่เมื่อได้รับเงิน จะเรียกฟังก์ชัน split ของ The DAO ซ้ำทันที ก่อนที่ The DAO จะทันหักยอด สัญญาของ The DAO เห็นว่ายอดของผู้โจมตียังเต็มอยู่ ก็ส่งเงินให้อีก แล้วก็ถูกเรียกซ้ำอีก วนไปเรื่อยๆ ในธุรกรรมเดียว ประกาศของ Vitalik อธิบายไว้ว่า
"การโจมตีนี้เป็นช่องโหว่แบบเรียกซ้ำ ผู้โจมตีเรียกฟังก์ชัน split แล้วเรียก split ซ้ำอีกข้างในการ split ครั้งแรก จึงเก็บ ether ได้หลายรอบในธุรกรรมเดียว"
Vitalik Buterin, Ethereum Foundation Blog, 17 มิถุนายน 2016 ต้นฉบับ "The attack is a recursive calling vulnerability, where an attacker called the "split" function, and then calls the split function recursively inside of the split, thereby collecting ether many times over in a single transaction."
นักพัฒนาเรียกช่องโหว่แบบนี้ว่า reentrancy หรือการกลับเข้ามาซ้ำ และมันกลายเป็นหนึ่งในบทเรียนแรกๆ ที่คนเขียนสัญญาอัจฉริยะทุกคนต้องรู้ หลักที่ใช้กันหลังจากนั้นเรียบง่ายมาก คือ หักยอดก่อน แล้วค่อยส่งเงิน
ภาพที่แปลกของเหตุการณ์นี้คือทุกอย่างเกิดขึ้นในที่แจ้ง ประกาศของ Vitalik ระบุที่อยู่ของ DAO ลูกที่เงินไหลไปอยู่ไว้ตรงๆ ใครก็เปิดดูบนบล็อกเชนได้ว่าเงินอยู่ที่ไหนและมีเท่าไร แต่การที่ทุกคนเห็นเงิน ไม่ได้แปลว่ามีใครมีสิทธิ์หยุดมัน ในเครือข่ายที่ไม่มีเจ้าของ ทางเดียวที่จะหยุดได้คือให้ทั้งเครือข่ายตกลงกันเปลี่ยนกฎ ซึ่งคือสิ่งที่ทุกคนต้องถกเถียงกันในเดือนต่อมา
ทำไมเงินยังไม่หายไปทันที
สิ่งที่ทำให้ทั้งวงการมีเวลาคิดคือกฎของ The DAO เอง เงินที่ถูกแยกออกไปอยู่ใน DAO ลูก และ DAO ลูกทุกตัวต้องผ่านช่วงเวลาสร้างตัวก่อนจะถอนเงินออกได้ ประกาศของ Vitalik เขียนว่า ต่อให้ไม่มีใครทำอะไรเลย ผู้โจมตีก็จะถอนเงินไม่ได้อย่างน้อยอีกราว 27 วัน รายงานของ ก.ล.ต. ก็ยืนยันตัวเลขเดียวกันว่าโค้ดของ The DAO ล็อกเงินไว้ 27 วัน
ถ้านับจากวันที่ 17 มิถุนายน ไปอีก 27 วัน จะตกราววันที่ 14 กรกฎาคม 2016 ซึ่งตรงกับที่ประกาศเตือนความปลอดภัยของ Ethereum Foundation ในวันที่ 28 มิถุนายนเขียนไว้ว่า เท่าที่ทีมรู้ ยังไม่มีใครถอนเงินออกจาก DAO ที่ได้รับผลกระทบได้จนถึงวันที่ 14 กรกฎาคม ทุกฝ่ายจึงมีเวลาไม่ถึงหนึ่งเดือนในการตัดสินใจ และนี่คือเหตุผลที่บทความเรื่องฮาร์ดฟอร์กในภายหลังเขียนว่าเวลากำลังบีบให้ต้องรีบ
กลไกที่ตั้งใจสร้างไว้ปกป้องเสียงข้างน้อยกลายเป็นทั้งช่องให้ผู้โจมตีเข้ามา และเป็นตัวที่ซื้อเวลาให้ทุกคนหาทางแก้ในเวลาเดียวกัน
ตลาดตอบสนองอย่างไร
ข่าวการโจมตีกระทบราคา ETH ทันที ข้อมูลราคารายวันจาก Etherscan แสดงให้เห็นว่า ราคาที่ไต่ขึ้นมาตลอดช่วงระดมทุนร่วงลงแรงภายในสองวัน
เปิดขายโทเคน
$8.83
ก่อนโจมตี
$20.61
หลังโจมตี
$11.36
ฮาร์ดฟอร์ก
$12.54
$11.21
วันที่ 16 มิถุนายน 2016 ก่อนการโจมตีหนึ่งวัน ราคา ETH อยู่ที่ 20.61 ดอลลาร์ วันที่ 17 มิถุนายน ลงมาที่ 15.49 ดอลลาร์ และวันที่ 18 มิถุนายนเหลือ 11.36 ดอลลาร์ ลดลงราว 45% ในสองวัน จากนั้นราคาก็แกว่งอยู่แถว 11 ถึง 14 ดอลลาร์ตลอดช่วงหนึ่งเดือนที่ชุมชนถกเถียงกันว่าจะทำอย่างไรต่อ
ข้อสังเกตคือราคาก่อนการโจมตีเองก็ขึ้นมาเร็วมาก จาก 8.83 ดอลลาร์ในวันเปิดขายโทเคน DAO เป็นกว่า 20 ดอลลาร์ในเวลาเจ็ดสัปดาห์ ส่วนหนึ่งของการร่วงจึงอาจเป็นการคืนกำไรจากการขึ้นเร็วด้วย ข้อมูลราคาอย่างเดียวแยกสองส่วนนี้ออกจากกันไม่ได้
ทางแรกที่ล้มเหลว: ซอฟต์ฟอร์ก
ข้อเสนอแรกที่ Vitalik เขียนไว้ในประกาศวันเดียวกันคือซอฟต์ฟอร์ก ให้เครือข่ายปฏิเสธธุรกรรมใดก็ตามที่พยายามลดยอดเงินในสัญญาของ The DAO และ DAO ลูก ประกาศเน้นตัวใหญ่ว่าทางนี้ไม่มีการย้อนเวลา ไม่มีธุรกรรมหรือบล็อกไหนถูกยกเลิก แค่ขังเงินไว้ไม่ให้ผู้โจมตีถอนออกไปได้ แล้วค่อยหาทางคืนเงินให้ผู้ถือโทเคนทีหลัง
แต่วันที่ 28 มิถุนายน 2016 Felix Lange เขียนเตือนความปลอดภัยลงบล็อกเดียวกันว่า โค้ดซอฟต์ฟอร์กที่เพิ่งปล่อยออกมาในโปรแกรม Geth และโปรแกรมอื่นมีช่องโหว่ใหม่ โค้ดนี้ยอมให้รันคำสั่งได้โดยไม่ต้องจ่ายค่า gas ซึ่งคนร้ายอาจใช้ถล่มเครือข่ายด้วยงานที่ไม่ต้องเสียเงิน ทำให้การขุดช้าลงและธุรกรรมปกติขึ้นบล็อกไม่ได้
ทางแก้ที่ง่ายกว่าจึงกลายเป็นว่าอาจสร้างปัญหาใหม่ที่หนักกว่าเดิม ข้อเสนอซอฟต์ฟอร์กถูกพักไป และตัวเลือกที่เหลือคือทางที่แรงกว่า
ทางที่สอง: ฮาร์ดฟอร์ก
วันที่ 15 กรกฎาคม 2016 Jeffrey Wilcke เขียนสเปกของฮาร์ดฟอร์กไว้ในบล็อกของ Ethereum Foundation เริ่มต้นด้วยประโยคที่ยอมรับตรงๆ ว่าเรื่องนี้ไม่มีคำตอบที่ถูก
"ฮาร์ดฟอร์กเป็นเรื่องละเอียดอ่อน และในมุมของเรา ไม่มีการตัดสินใจไหนเป็นการตัดสินใจที่ถูก"
Jeffrey Wilcke, To fork or not to fork, Ethereum Foundation Blog, 15 กรกฎาคม 2016 ต้นฉบับ "The Hard Fork is a delicate topic and the way we see it, no decision is the right one."
ภาพ: บทความ To fork or not to fork บนบล็อก Ethereum Foundation วันที่ 15 กรกฎาคม 2016
บทความเดียวกันเขียนไว้ด้วยว่า The DAO ไม่ใช่ผลิตภัณฑ์ที่ Ethereum Foundation พัฒนาขึ้น และการตัดสินใจเรื่องฟอร์กไม่ใช่สิ่งที่มูลนิธิหรือใครคนใดคนหนึ่งจะตัดสินได้ มูลนิธิจึงหันไปถามความเห็นของชุมชนอีกครั้ง
สเปกที่เขียนไว้มีรายละเอียดชัดเจน
- รวบรวมรายชื่อบัญชีของ The DAO บัญชีเงินส่วนเกิน และ DAO ลูกทุกตัว ณ บล็อก 1,880,000
- ที่จุดเริ่มต้นของบล็อก 1,920,000 ย้าย ETH ทั้งหมดในบัญชีเหล่านั้นไปไว้ในสัญญาคืนเงินตัวเดียว
- ผู้ถือโทเคน DAO เอาโทเคนมาแลกคืนเป็น ETH ในอัตรา 100 DAO ต่อ 1 ETH
- ใช้เครื่องมือโหวตของชุมชนชื่อ carbonvote เพื่อตั้งค่าเริ่มต้นของโปรแกรมว่าจะฟอร์กหรือไม่ นับคะแนนที่บล็อก 1,894,000
อัตรา 100 ต่อ 1 คือราคาเดียวกับตอนขายโทเคน 1,150 ล้านโทเคนหาร 100 ได้ราว 11.5 ล้าน ETH ใกล้กับยอดที่ระดมได้ ผู้ถือโทเคนจึงได้เงินคืนในราคาทุน
ต้องแยกให้ชัดว่าฮาร์ดฟอร์กต่างจากซอฟต์ฟอร์กที่เสนอไว้ก่อนตรงไหน ซอฟต์ฟอร์กแค่ขังเงินไว้ แต่ฮาร์ดฟอร์กคือการเปลี่ยนยอดเงินในบัญชีตรงๆ ด้วยกฎพิเศษที่ใช้ครั้งเดียว ประกาศหลังฟอร์กของ Ethereum Foundation เองก็เรียกสิ่งนี้ว่าการเปลี่ยนสถานะแบบไม่ปกติ ใครอยากเข้าใจความต่างของฟอร์กสองแบบนี้ อ่านเพิ่มได้ที่Hard Fork ในโลกคริปโตคืออะไร
บล็อก 1,920,000: เชนเดียวกลายเป็นสองเชน
วันที่ 20 กรกฎาคม 2016 เวลา 13:20 น. ตามเวลา UTC บล็อกที่ 1,920,000 ถูกขุดขึ้น ประกาศของ Vitalik ในวันเดียวกันรายงานว่า
"บล็อก 1920000 มีการเปลี่ยนสถานะแบบไม่ปกติ ซึ่งย้าย ETH ราว 12 ล้านจากสัญญา Dark DAO และ Whitehat DAO ไปยังสัญญาคืนเงิน WithdrawDAO"
Vitalik Buterin, Hard Fork Completed, Ethereum Foundation Blog, 20 กรกฎาคม 2016 ต้นฉบับ "Block 1920000 contained the execution of an irregular state change which transferred ~12 million ETH from the "Dark DAO" and "Whitehat DAO" contracts into the WithdrawDAO recovery contract."
ประกาศเดียวกันบอกว่านักขุดราว 85% ขุดต่อบนเชนที่ฟอร์กแล้ว และโปรแกรมโหนดหลักทั้งสามตัวคือ Go, Java และ Parity ซิงก์กับเชนใหม่ได้สำเร็จ ส่วนการคืนเงิน ประกาศรายงานว่า ณ วันนั้นสัญญาคืนเงินส่ง ETH คืนผู้ถือโทเคนไปแล้วราว 4.5 ล้าน ETH อีกราว 463,000 ETH อยู่ในความดูแลของ Curator เพื่อใช้จัดการกรณีที่ซับซ้อน และสัญญาสำหรับจ่ายเงินส่วนเกินอยู่ระหว่างการตรวจความปลอดภัย
แต่ราว 15% ที่เหลือไม่ได้หายไปไหน คนกลุ่มหนึ่งเห็นว่าบล็อกเชนไม่ควรถูกแก้ยอดเงินย้อนหลัง ไม่ว่าจะด้วยเหตุผลอะไร และเดินต่อบนเชนเดิมที่ไม่มีการย้ายเงิน เชนนั้นคือ Ethereum Classic ที่ยังมีอยู่ถึงวันนี้ ข้อมูลบนเชนทั้งสองเส้นแสดงจุดแยกนี้ได้ชัดมาก
ภาพ: บล็อก 1,920,000 บนเชน Ethereum หน้า Blockscout เวลาที่แสดงเป็นเวลาประเทศไทย
ภาพ: บล็อก 1,920,000 บนเชน Ethereum Classic หน้า Blockscout
ที่ความสูงเดียวกัน สองเชนมีบล็อกคนละบล็อก ฝั่ง Ethereum ถูกขุดเวลา 13:20:40 น. UTC ฝั่ง Ethereum Classic ถูกขุดเวลา 13:20:39 น. คนขุดคนละราย ค่า hash ของบล็อกคนละค่า แต่เมื่อดูข้อมูลจาก API ของ Blockscout ทั้งสองบล็อกชี้กลับไปที่บล็อกก่อนหน้าบล็อกเดียวกัน ค่า hash ของบล็อก 1,919,999 ตรงกันทุกตัวอักษร ประวัติของสองเชนจึงเหมือนกันทุกบล็อกจนถึงบล็อก 1,919,999 และแยกทางกันตั้งแต่บล็อกนี้เป็นต้นไป
ประกาศของ Ethereum Foundation ยังเตือนคนที่จะใช้เชนเดิมต่อให้ระวังการโจมตีแบบเล่นซ้ำธุรกรรม เพราะในช่วงแรกสองเชนใช้รูปแบบธุรกรรมแบบเดียวกัน ธุรกรรมที่ส่งบนเชนหนึ่งจึงอาจถูกคนเอาไปส่งซ้ำบนอีกเชนได้
คำถามที่ยังไม่มีคำตอบเดียว
เหตุการณ์นี้เป็นศูนย์กลางของข้อถกเถียงที่ใหญ่ที่สุดข้อหนึ่งในวงการ คือโค้ดควรเป็นกฎสูงสุดหรือไม่
ฝั่งที่สนับสนุนฮาร์ดฟอร์กมองว่า การปล่อยให้คนคนเดียวเอาเงินหนึ่งในสามของโครงการที่ใหญ่ที่สุดในระบบไป ทั้งที่ทุกคนเห็นตรงกันว่าเป็นการใช้ช่องโหว่ จะทำลายความเชื่อมั่นใน Ethereum ในวันที่ระบบยังเด็กมาก และการตัดสินใจก็ผ่านการเลือกของชุมชน ทั้งการโหวตและการที่นักขุดส่วนใหญ่เลือกฝั่งฟอร์ก
ฝั่งที่ไม่เห็นด้วยมองว่า จุดขายของบล็อกเชนคือการที่ไม่มีใครแก้ประวัติได้ ถ้าวันนี้แก้ได้เพราะเหตุผลที่ดี วันหน้าก็อาจมีคนขอแก้ด้วยเหตุผลที่ฟังดูดีเหมือนกัน และคำว่าชุมชนตัดสินใจ ก็อาจหมายถึงคนกลุ่มเล็กที่มีอิทธิพลมากก็ได้
บทความนี้ไม่ตัดสินว่าฝั่งไหนถูก ประโยคของ Jeffrey Wilcke ที่บอกว่าไม่มีการตัดสินใจไหนถูก อาจเป็นคำสรุปที่ซื่อตรงที่สุด สิ่งที่พูดได้แน่นอนคือทั้งสองฝั่งได้ทำตามที่ตัวเองเชื่อ และทั้งสองเชนยังทำงานอยู่ทั้งคู่
ก.ล.ต. สหรัฐ: โทเคน DAO คือหลักทรัพย์
หนึ่งปีหลังเหตุการณ์ ผลกระทบที่ใหญ่ที่สุดของ The DAO อาจไม่ได้อยู่ที่ตัวเงิน แต่อยู่ที่กฎหมาย วันที่ 25 กรกฎาคม 2017 ก.ล.ต. สหรัฐออกรายงานผลการสอบสวนเรื่อง The DAO
ภาพ: หน้าแรกของรายงาน Release No. 81207 ของ ก.ล.ต. สหรัฐ เอกสารของรัฐบาลกลางสหรัฐเป็นสมบัติสาธารณะ
ข้อสรุปหลักของรายงานคือ โทเคน DAO เข้าข่ายเป็นหลักทรัพย์ เพราะคนลงเงินโดยคาดหวังผลตอบแทนจากความพยายามของคนอื่น คือ Slock.it และ Curator ที่เป็นคนคัดข้อเสนอ ดังนั้นการขายโทเคนแบบนี้ต้องจดทะเบียนตามกฎหมายหลักทรัพย์ เว้นแต่จะได้รับการยกเว้น
แต่ ก.ล.ต. ก็เลือกที่จะไม่ดำเนินคดีในกรณีนี้
"คณะกรรมการตัดสินใจที่จะไม่ดำเนินการบังคับใช้กฎหมายในเรื่องนี้ ตามพฤติการณ์และการกระทำที่คณะกรรมการทราบในขณะนี้"
ก.ล.ต. สหรัฐ, Report of Investigation Pursuant to Section 21(a) of the Securities Exchange Act of 1934: The DAO, Release No. 81207 ต้นฉบับ "The Commission has determined not to pursue an enforcement action in this matter based on the conduct and activities known to the Commission at this time."
รายงานนี้ออกมาในช่วงที่การระดมทุนด้วยการขายโทเคนหรือ ICO กำลังบูมสุดขีด และกลายเป็นเอกสารแรกๆ ที่หน่วยงานรัฐของสหรัฐบอกชัดว่า การเรียกตัวเองว่าองค์กรไร้ศูนย์กลางไม่ได้ทำให้พ้นจากกฎหมายหลักทรัพย์
เรื่องนี้เกี่ยวกับคนที่ใช้คริปโตวันนี้อย่างไร
บทเรียนแรกคือ โค้ดที่เปิดให้ทุกคนอ่านได้ ไม่ได้แปลว่าโค้ดนั้นปลอดภัย The DAO เป็นโค้ดโอเพนซอร์ส มีคนจำนวนมากดูมาก่อน และถูกโจมตีด้วยวิธีที่หลังจากนั้นกลายเป็นเรื่องพื้นฐาน ก่อนฝากเงินในโปรโตคอลไหน การเช็คว่าผ่านการตรวจสอบโค้ดจากทีมอิสระหรือยัง และเปิดให้บริการมานานแค่ไหน ช่วยลดความเสี่ยงได้ แต่ไม่ได้ทำให้ความเสี่ยงเป็นศูนย์
บทเรียนที่สองมาจากประกาศวันแรกของ Vitalik เอง ในย่อหน้าท้ายๆ เขาแนะนำคนเขียนสัญญาอัจฉริยะสองข้อ ข้อแรกคือระวังบั๊กแบบเรียกซ้ำให้มาก ข้อที่สองคืออย่าสร้างสัญญาที่เก็บมูลค่าเกินราว 10 ล้านดอลลาร์ จนกว่าชุมชนจะมีประสบการณ์รับมือบั๊กมากกว่านี้ หรือมีเครื่องมือที่ดีกว่านี้
ภาพ: คำแนะนำท้ายประกาศของ Vitalik Buterin บนบล็อก Ethereum Foundation วันที่ 17 มิถุนายน 2016
เทียบกับ The DAO ที่เก็บเงินไว้ราว 150 ล้านดอลลาร์ คำแนะนำนี้บอกเป็นนัยว่ากองทุนใหญ่เกินกว่าที่เครื่องมือในตอนนั้นจะรองรับได้อย่างปลอดภัย สำหรับคนใช้งานทั่วไป หลักเดียวกันใช้ได้ คือยิ่งโปรโตคอลใหม่และยิ่งเก็บเงินไว้มาก ยิ่งเป็นเป้าที่คนร้ายอยากเจาะ
บทเรียนสุดท้ายคือ คำว่าแก้ไม่ได้ของบล็อกเชนมีเงื่อนไขซ่อนอยู่ ถ้าคนส่วนใหญ่ในเครือข่ายตกลงกันได้ กฎก็เปลี่ยนได้ เหตุการณ์ The DAO พิสูจน์ทั้งสองด้านพร้อมกัน เครือข่ายหนึ่งเลือกเปลี่ยน และอีกเครือข่ายเลือกไม่เปลี่ยน
คำถามที่พบบ่อย
The DAO ถูกแฮ็กเมื่อไร และเสียเงินไปเท่าไร
เริ่มวันที่ 17 มิถุนายน 2016 ตามรายงานของ ก.ล.ต. สหรัฐ เงินที่ถูกย้ายออกคือราว 3.6 ล้าน ETH หรือหนึ่งในสามของราว 12 ล้าน ETH ที่กองทุนระดมได้
ผู้โจมตีเจาะระบบของ Ethereum หรือเปล่า
ไม่ใช่ ประกาศของ Ethereum Foundation วันเดียวกันยืนยันว่าเป็นปัญหาของ The DAO เท่านั้น ผู้โจมตีใช้ช่องโหว่แบบเรียกซ้ำในโค้ดของกองทุน ตัว Ethereum ทำงานตามปกติ
ผู้ถือโทเคนได้เงินคืนไหม
บนเชน Ethereum ได้คืน ฮาร์ดฟอร์กที่บล็อก 1,920,000 ย้ายเงินไปไว้ในสัญญาคืนเงิน และผู้ถือโทเคนแลกคืนได้ในอัตรา 100 DAO ต่อ 1 ETH
Ethereum Classic เกิดขึ้นได้อย่างไร
คือเชนเดิมที่ไม่ได้ทำฮาร์ดฟอร์ก คนที่ไม่เห็นด้วยกับการแก้ยอดเงินย้อนหลังขุดต่อบนเชนนี้ ข้อมูลบนเชนแสดงว่าสองเชนมีประวัติเหมือนกันจนถึงบล็อก 1,919,999
ETH ที่ใช้กันทุกวันนี้อยู่บนเชนไหน
อยู่บนเชนที่ทำฮาร์ดฟอร์ก ซึ่งยังใช้ชื่อ Ethereum ต่อ ส่วนเชนเดิมที่ไม่ฟอร์กใช้ชื่อ Ethereum Classic และมีเหรียญของตัวเองคือ ETC
ก.ล.ต. สหรัฐว่าอย่างไรกับ The DAO
รายงานวันที่ 25 กรกฎาคม 2017 สรุปว่าโทเคน DAO เป็นหลักทรัพย์ แต่ ก.ล.ต. เลือกไม่ดำเนินคดีในกรณีนี้
สรุป
The DAO ระดมเงินได้ราว 12 ล้าน ETH ในเดือนเดียว และเสียไปหนึ่งในสามในวันเดียวเพราะลำดับการทำงานของโค้ดที่ส่งเงินก่อนหักยอด ไม่มีใครเจาะ Ethereum ผู้โจมตีแค่ใช้โค้ดตามที่มันถูกเขียนไว้ ความพยายามแก้ด้วยซอฟต์ฟอร์กล้มเพราะเจอช่องโหว่ใหม่ ส่วนฮาร์ดฟอร์กที่บล็อก 1,920,000 คืนเงินให้ผู้ถือโทเคนได้ แต่แลกกับการที่เครือข่ายแยกเป็นสองเชน
หนึ่งปีต่อมา รายงานของ ก.ล.ต. สหรัฐทำให้เรื่องนี้กลายเป็นหมุดหมายทางกฎหมายด้วย ทั้งเรื่องความปลอดภัยของสัญญาอัจฉริยะ เรื่องใครมีสิทธิ์เปลี่ยนกฎของบล็อกเชน และเรื่องโทเคนแบบไหนนับเป็นหลักทรัพย์ คำถามทั้งสามข้อที่เริ่มจาก The DAO ยังเป็นคำถามที่วงการคริปโตถกเถียงกันอยู่จนถึงทุกวันนี้