<100 subscribers
Share Dialog
Share Dialog
แปลจากต้นฉบับที่นี่ ขอบคุณ Lindsay Presswell และ Maurelian
https://dev.optimism.io/bedrock-security/
หลังจากที่ Optimism Goerli Testnet ทำการ Migrate สู่ Bedrock ได้อย่างราบรื่น ก็มาถึงขั้นตอนสำคัญในการลอนช์ของ Bedrock ก่อน Migrate จริงสู่ Optimism Mainnet
ด้วยขนาดและความซับซ้อนของ Bedrock ช่วยสร้างความมั่นใจในความปลอดภัยและความเสถียรของระบบได้อย่างดี ซึ่งเป็นหนึ่งในความทะเยอทะยานในการสร้างสิ่งนี้ ระหว่างทางเราได้เรียนรู้สิ่งใหม่ๆ มากมายและหลายๆ เรื่องเราก็ตื่นเต้นที่จะเล่าให้ทุกคนได้ฟัง
ในบทความนี้จึงมีตั้งแต่เรื่องความปลอดภัยที่เราให้ความสำคัญและและขอถือโอกาสนี้ในการแนะนำให้ผู้เชี่ยวชาญเรื่องโปรโตคอลและสมาร์ทคอนแทร็กมาร่วมกันตามล่าหาบัคโดยมีรางวัลตอบแทน 👀
Bedrock คือที่สุดของการจินตนาการแบบนอกกรอบทั้งในส่วนที่เป็น OP Stack และรื้อสร้างวิธีการทำงานของ Optimism แบบใหม่หมดจด เพื่อให้ตรงกับความต้องการของเราในการปล่อยสิ่งนี้ หลายๆ ระบบถูกดีไซน์ใหม่ตั้งแต่ต้นเพื่อให้ได้โค้ดที่สะอาดหมดจด เรียบง่าย และสามารถใช้ได้ยืนยาวต่อไปในอนาคต
เราใช้กระบวนการนี้เป็นโอกาสในการทำงานร่วมมือกับ third-party ที่ไว้ใจได้ เพื่อมาตรวจสอบความปลอดภัยมาร่วมเรียนรู้กระบวนการต่างๆ ไปพร้อมๆ กันในฐานะทีมโดยมีเป้าหมายสำคัญคือการสร้างความปลอดภัยขั้นสุดให้ตัวโค้ด
ด้วยกระบวนการที่ทำตั้งแต่ต้นจบจบนี้ทำให้ผลที่ออกมามีความปลอดภัยสูงสุดและมีโค้ดเบสที่เสถียรที่สุด ซึ่งสิ่งนี้สามารถต่อยอดไปสู่โซลูชั่นใหม่ๆ ที่ทำให้ความปลอดภัยของ L2 ecosystems เติบโตขึ้น
บ่อยครั้งเหลือเกินที่ third-party ตรวจสอบความปลอดภัยโดยใช้วิธีการติ๊กเป็นข้อๆ ก่อนส่งมอบเท่านั้น แต่เป็นโชคดีของเราได้ร่วมงานกับพาร์ทเนอร์ด้านซอฟแวร์ที่มีความเป็นมืออาชีพสูง ในการสร้างเกมส์บน Bedrock ในช่วงที่ยัง Early มากๆ
เราได้รับฟีดแบ็กอย่างต่อเนื่องในเรื่องของความปลอดภัยซึ่งเราก็ค่อยๆ แก้ไขเป็นจุดๆ ทำให้เราสามารถยกระดับความปลอดภัยให้กับซอฟแวร์ต่างๆ ที่จะมาใช้งานร่วมกันบน Bedrock ได้
นี่คือสรุปการตรวจสอบเรื่องความปลอดภัยต่างๆ ที่เกิดขึ้นระหว่างการพัฒนานี้ :
เมษา 2022 เราทำงานร่วมกับ OpenZeppelin เพื่อตรวจสอบเวอร์ชั่นแรกๆ ของ Bedrock contracts
ในเดือนเดียวกัน Trail of Bits ทำการตรวจสอบ Rollup Node ของเราและ Optimistic Geth
ต้นเดือนกรกฎาคม Sigma Prime ดำเนินการตรวจสอบส่วนประกอบสำคัญของ Bedrock’s Golang ( Rollup Node และ Optimistic Geth)
กลางเดือนกรกฎา (ระหว่างที่การตรวจสอบของ Sigma Prime ดำเนินควบคู่ไป) OpenZeppelin ตรวจสอบ contracts อีกครั้ง โดยโฟกัสไปที่การบริดจ์ รวมถึงบริดจ์ตัวใหม่อย่าง ERC721
กันยายนเราถามพาร์ทเนอร์ของเราที่ Trail of Bits เพื่อตรวจสอบและทดสอบค่า Invariant ของระบบ ซึ่งผลที่ออกมาไม่ใช่แค่ได้ลิสต์ค่า Invariant ที่เป็นประโยชน์ แต่ยังได้ทดสอบ Fuzz จำนวนมากสำหรับโค้ดทั้ง Golang และ Solidity
พฤษจิกายน Bedrock codebase ก็สมบูรณ์ หน้าที่ที่ตามมาของเหล่าวิศวกรของเราคือการคลีนอัพ โค้ดที่ไม่จำเป็น ทดสอบ และวางแผนในการอัพเกรด ซึ่งเราได้ขอให้ Trail of Bits ทำการตรวจสอบ Bedrock เป็นครั้งสุดท้าย
ปี 2022 คือปีที่ชุมชนคริปโตได้เรียนรู้ว่าการสร้างความปลอดภัยให้ Cross Chain Bridge เป็นเรื่องยาก มีช่องโหว่หลายจุดได้รับการรีพอร์ท (หรือไม่ก็โดนแฮค) บางคนใช้ความผิดพลาดของการระบบ Proof ในการโจมตี
การที่เราจะเพิ่มความปลอดภัยให้สินทรัพย์ใน Bridge Contracts นี้ เราจำเป็นต้อง implement กระบวนการถอนแบบ 2 สเต็ป (two-step withdrawal) เพื่อเคลื่อนย้ายสินทรัพย์จาก Optimism สู่ Ethereum Mainnet และนี่คือสิ่งที่เราเปลี่ยนแปลง:
ตอนนี้ เมื่อผู้ใช้ทำการถอนจาก Optimism Network ไปยัง Ethereum Mainnet พวกเขาจะต้องดำเนินการถอนบน Optimism และค่อยไป finalize การถอน 7 days หลังจากนั้นบน Ethereum Mainnet
เมื่อมีระบบถอนแบบ 2 สเต็ป ผู้ใช้จะทำการถอนจาก Optimism Network และไปยืนยัน ความถูกต้องในการถอนบน Ethereum Mainnet ประมาณหนึ่งชั่วโมงหลังจากนั้น และรอ Finalize 7 วันเพื่อถอนบน Ethereum Mainnet ระบบถอนแบบ 2 สเต็ปจะช่วยให้เราสามารถยืนยันได้ตั้งแต่เนิ่นๆ เพื่อป้องกันการทำธุรกรรมซ้ำ ทำให้มั่นใจได้เวลาทุกๆ การบริดจ์มายัง Ethereum Mainnet นั้นถูกต้องและสอดคล้องกับการถอนบน Optimism และทำให้มีช่องโหว่ของระบบบริดจ์น้อยลง แฮคยากขึ้น
อ่านรายละเอียดการแข่งขัน (รวมทั้งเรื่องรางวัลต่างๆ!) ที่เว็บไซต์ Sherlock
ลงทะเบียนสมัครเข้าร่วมผ่าน Sherlock
ส่องโค้ดของเรา มองหาบัค ถ้าเจอก็รับรางวัลไป การแข่งขันเริ่มตั้งแต่ 23 ม.ค. ถึง 6 ก.พ.
ขอบคุณทุกคนที่มาร่วมทำให้ Optimism ปลอดภัยยิ่งกว่าเดิม
แปลจากต้นฉบับที่นี่ ขอบคุณ Lindsay Presswell และ Maurelian
https://dev.optimism.io/bedrock-security/
หลังจากที่ Optimism Goerli Testnet ทำการ Migrate สู่ Bedrock ได้อย่างราบรื่น ก็มาถึงขั้นตอนสำคัญในการลอนช์ของ Bedrock ก่อน Migrate จริงสู่ Optimism Mainnet
ด้วยขนาดและความซับซ้อนของ Bedrock ช่วยสร้างความมั่นใจในความปลอดภัยและความเสถียรของระบบได้อย่างดี ซึ่งเป็นหนึ่งในความทะเยอทะยานในการสร้างสิ่งนี้ ระหว่างทางเราได้เรียนรู้สิ่งใหม่ๆ มากมายและหลายๆ เรื่องเราก็ตื่นเต้นที่จะเล่าให้ทุกคนได้ฟัง
ในบทความนี้จึงมีตั้งแต่เรื่องความปลอดภัยที่เราให้ความสำคัญและและขอถือโอกาสนี้ในการแนะนำให้ผู้เชี่ยวชาญเรื่องโปรโตคอลและสมาร์ทคอนแทร็กมาร่วมกันตามล่าหาบัคโดยมีรางวัลตอบแทน 👀
Bedrock คือที่สุดของการจินตนาการแบบนอกกรอบทั้งในส่วนที่เป็น OP Stack และรื้อสร้างวิธีการทำงานของ Optimism แบบใหม่หมดจด เพื่อให้ตรงกับความต้องการของเราในการปล่อยสิ่งนี้ หลายๆ ระบบถูกดีไซน์ใหม่ตั้งแต่ต้นเพื่อให้ได้โค้ดที่สะอาดหมดจด เรียบง่าย และสามารถใช้ได้ยืนยาวต่อไปในอนาคต
เราใช้กระบวนการนี้เป็นโอกาสในการทำงานร่วมมือกับ third-party ที่ไว้ใจได้ เพื่อมาตรวจสอบความปลอดภัยมาร่วมเรียนรู้กระบวนการต่างๆ ไปพร้อมๆ กันในฐานะทีมโดยมีเป้าหมายสำคัญคือการสร้างความปลอดภัยขั้นสุดให้ตัวโค้ด
ด้วยกระบวนการที่ทำตั้งแต่ต้นจบจบนี้ทำให้ผลที่ออกมามีความปลอดภัยสูงสุดและมีโค้ดเบสที่เสถียรที่สุด ซึ่งสิ่งนี้สามารถต่อยอดไปสู่โซลูชั่นใหม่ๆ ที่ทำให้ความปลอดภัยของ L2 ecosystems เติบโตขึ้น
บ่อยครั้งเหลือเกินที่ third-party ตรวจสอบความปลอดภัยโดยใช้วิธีการติ๊กเป็นข้อๆ ก่อนส่งมอบเท่านั้น แต่เป็นโชคดีของเราได้ร่วมงานกับพาร์ทเนอร์ด้านซอฟแวร์ที่มีความเป็นมืออาชีพสูง ในการสร้างเกมส์บน Bedrock ในช่วงที่ยัง Early มากๆ
เราได้รับฟีดแบ็กอย่างต่อเนื่องในเรื่องของความปลอดภัยซึ่งเราก็ค่อยๆ แก้ไขเป็นจุดๆ ทำให้เราสามารถยกระดับความปลอดภัยให้กับซอฟแวร์ต่างๆ ที่จะมาใช้งานร่วมกันบน Bedrock ได้
นี่คือสรุปการตรวจสอบเรื่องความปลอดภัยต่างๆ ที่เกิดขึ้นระหว่างการพัฒนานี้ :
เมษา 2022 เราทำงานร่วมกับ OpenZeppelin เพื่อตรวจสอบเวอร์ชั่นแรกๆ ของ Bedrock contracts
ในเดือนเดียวกัน Trail of Bits ทำการตรวจสอบ Rollup Node ของเราและ Optimistic Geth
ต้นเดือนกรกฎาคม Sigma Prime ดำเนินการตรวจสอบส่วนประกอบสำคัญของ Bedrock’s Golang ( Rollup Node และ Optimistic Geth)
กลางเดือนกรกฎา (ระหว่างที่การตรวจสอบของ Sigma Prime ดำเนินควบคู่ไป) OpenZeppelin ตรวจสอบ contracts อีกครั้ง โดยโฟกัสไปที่การบริดจ์ รวมถึงบริดจ์ตัวใหม่อย่าง ERC721
กันยายนเราถามพาร์ทเนอร์ของเราที่ Trail of Bits เพื่อตรวจสอบและทดสอบค่า Invariant ของระบบ ซึ่งผลที่ออกมาไม่ใช่แค่ได้ลิสต์ค่า Invariant ที่เป็นประโยชน์ แต่ยังได้ทดสอบ Fuzz จำนวนมากสำหรับโค้ดทั้ง Golang และ Solidity
พฤษจิกายน Bedrock codebase ก็สมบูรณ์ หน้าที่ที่ตามมาของเหล่าวิศวกรของเราคือการคลีนอัพ โค้ดที่ไม่จำเป็น ทดสอบ และวางแผนในการอัพเกรด ซึ่งเราได้ขอให้ Trail of Bits ทำการตรวจสอบ Bedrock เป็นครั้งสุดท้าย
ปี 2022 คือปีที่ชุมชนคริปโตได้เรียนรู้ว่าการสร้างความปลอดภัยให้ Cross Chain Bridge เป็นเรื่องยาก มีช่องโหว่หลายจุดได้รับการรีพอร์ท (หรือไม่ก็โดนแฮค) บางคนใช้ความผิดพลาดของการระบบ Proof ในการโจมตี
การที่เราจะเพิ่มความปลอดภัยให้สินทรัพย์ใน Bridge Contracts นี้ เราจำเป็นต้อง implement กระบวนการถอนแบบ 2 สเต็ป (two-step withdrawal) เพื่อเคลื่อนย้ายสินทรัพย์จาก Optimism สู่ Ethereum Mainnet และนี่คือสิ่งที่เราเปลี่ยนแปลง:
ตอนนี้ เมื่อผู้ใช้ทำการถอนจาก Optimism Network ไปยัง Ethereum Mainnet พวกเขาจะต้องดำเนินการถอนบน Optimism และค่อยไป finalize การถอน 7 days หลังจากนั้นบน Ethereum Mainnet
เมื่อมีระบบถอนแบบ 2 สเต็ป ผู้ใช้จะทำการถอนจาก Optimism Network และไปยืนยัน ความถูกต้องในการถอนบน Ethereum Mainnet ประมาณหนึ่งชั่วโมงหลังจากนั้น และรอ Finalize 7 วันเพื่อถอนบน Ethereum Mainnet ระบบถอนแบบ 2 สเต็ปจะช่วยให้เราสามารถยืนยันได้ตั้งแต่เนิ่นๆ เพื่อป้องกันการทำธุรกรรมซ้ำ ทำให้มั่นใจได้เวลาทุกๆ การบริดจ์มายัง Ethereum Mainnet นั้นถูกต้องและสอดคล้องกับการถอนบน Optimism และทำให้มีช่องโหว่ของระบบบริดจ์น้อยลง แฮคยากขึ้น
อ่านรายละเอียดการแข่งขัน (รวมทั้งเรื่องรางวัลต่างๆ!) ที่เว็บไซต์ Sherlock
ลงทะเบียนสมัครเข้าร่วมผ่าน Sherlock
ส่องโค้ดของเรา มองหาบัค ถ้าเจอก็รับรางวัลไป การแข่งขันเริ่มตั้งแต่ 23 ม.ค. ถึง 6 ก.พ.
ขอบคุณทุกคนที่มาร่วมทำให้ Optimism ปลอดภัยยิ่งกว่าเดิม
ส่วนประกอบสำคัญของระบบความปลอดภัยใน Bedrock เกิดขึ้นผ่านกระบวนการสุดเคี่ยวเพื่อกำหนดค่า Invariant ในโค้ดของเรา เราตรวจสอบค่า invariants โดยใช้ Echidna สำหรับ fuzzing และ Foundry สำหรับ fuzzing และการทดสอบ invariant ทำให้เราสามารถพบวิธีที่ชัดเจนในการกำหนดค่า Invariant ของเราด้วยวิธีที่มีประสิทธิภาพเพื่อให้เข้าใจพฤติกรรมพื้นฐานของระบบที่ตรงกันระหว่างทีมวิศวกร
ช่องทางการฝาก (Deposit) ของ Bedrock นั้นใช้กลไกในการกำหนดราคาแบบผันแปร (เหมือนกับ EIP1559) ที่จะชาร์จโดยเบสจากความต้องการในการใช้แก๊สบน L2 สำหรับการฝาก
เราเพิ่งเสร็จสิ้นการร่วมมือกับ Runtime Verification เพื่อยืนยันอย่างเป็นทางการว่าการฝากเงินจะสำเร็จเสมอเมื่อผู้ใช้ทำการฝากเงินเข้าสู่ Optimism โดยเราจะแชร์รีพอร์ทของร่วมมือนี้เมื่อพร้อมอีกครั้ง
เราใช้ความพยายามอย่างมากเพื่อให้แน่ใจว่าการเปิดตัว OP Stack ของ Bedrock นั้นเสถียรและปลอดภัย แต่มีอีกหนึ่งขั้นตอนที่เราอยากทำเพื่อช่วยยืนยันว่าเราไม่ได้มองข้ามเรื่องไหนไป
โดยเราได้ Sherlock มาช่วยในการจัดกิจกรรม audit contest เพื่อทดสอบความแกร่งของ Bedrock
การเปิดตัว Bedrock นั้นมีความสำคัญมากสำหรับเรา เราเลยขอเป็นเจ้าภาพในการจัดงานตามล่าหาบัคนี้ เพื่อให้คนภายนอกสามารถมีส่วนในการตรวจสอบความปลอดภัยของระบบรวมทั้ง client software (เช่น Geth และ Golang) โดยคุณสามารถเข้าไปส่องระบบที่เราเพิ่ง Live บน Testnet แทนการส่อง Source Code เกี่ยวข้องกับการดูระบบที่ใช้งานจริงบนเครือข่ายทดสอบแทนที่จะใช้ซอร์สโค้ดเพียงอย่างเดียวใน Github แค่อย่างเดียว
นี่เป็นอีกหนึ่งกิจกรรมที่ฟังดูน่าสนุกสำหรับเหล่านักล่าบัคที่มีสกิลเซ็ตที่แตกต่างกันสามารถมาโชว์สกิลความเชี่ยวชาญของคุณได้อย่างเต็มที่
สำหรับการแข่งขันครั้งนี้ เหล่าผู้ออดิทจะต้องทำการตรวจสอบ Optimism Goerli Network ซึ่งเป็น Network ที่เพิ่งอัพเกรดระบบให้เป็น Bedrock ซึ่งหมายความว่านอกจากการตามล่าหาบัคจาก source code ของ contract แล้ว ผู้ร่วมกิจกรรมสามารถมีส่วนร่วมในการหาบัคบนระบบที่ Live อยู่ (Optimism Goerli) รวมทั้งสามารถขุดคุ้ยที่ block explorers และ infrastructure อื่นๆ สำหรับรายละเอียดเต็มของการแข่งขัน รวมทั้งคำแนะนำในการเริ่มต้นตรวจสอบ สามารถอ่านได้ที่เพจ Sherlock
ส่วนประกอบสำคัญของระบบความปลอดภัยใน Bedrock เกิดขึ้นผ่านกระบวนการสุดเคี่ยวเพื่อกำหนดค่า Invariant ในโค้ดของเรา เราตรวจสอบค่า invariants โดยใช้ Echidna สำหรับ fuzzing และ Foundry สำหรับ fuzzing และการทดสอบ invariant ทำให้เราสามารถพบวิธีที่ชัดเจนในการกำหนดค่า Invariant ของเราด้วยวิธีที่มีประสิทธิภาพเพื่อให้เข้าใจพฤติกรรมพื้นฐานของระบบที่ตรงกันระหว่างทีมวิศวกร
ช่องทางการฝาก (Deposit) ของ Bedrock นั้นใช้กลไกในการกำหนดราคาแบบผันแปร (เหมือนกับ EIP1559) ที่จะชาร์จโดยเบสจากความต้องการในการใช้แก๊สบน L2 สำหรับการฝาก
เราเพิ่งเสร็จสิ้นการร่วมมือกับ Runtime Verification เพื่อยืนยันอย่างเป็นทางการว่าการฝากเงินจะสำเร็จเสมอเมื่อผู้ใช้ทำการฝากเงินเข้าสู่ Optimism โดยเราจะแชร์รีพอร์ทของร่วมมือนี้เมื่อพร้อมอีกครั้ง
เราใช้ความพยายามอย่างมากเพื่อให้แน่ใจว่าการเปิดตัว OP Stack ของ Bedrock นั้นเสถียรและปลอดภัย แต่มีอีกหนึ่งขั้นตอนที่เราอยากทำเพื่อช่วยยืนยันว่าเราไม่ได้มองข้ามเรื่องไหนไป
โดยเราได้ Sherlock มาช่วยในการจัดกิจกรรม audit contest เพื่อทดสอบความแกร่งของ Bedrock
การเปิดตัว Bedrock นั้นมีความสำคัญมากสำหรับเรา เราเลยขอเป็นเจ้าภาพในการจัดงานตามล่าหาบัคนี้ เพื่อให้คนภายนอกสามารถมีส่วนในการตรวจสอบความปลอดภัยของระบบรวมทั้ง client software (เช่น Geth และ Golang) โดยคุณสามารถเข้าไปส่องระบบที่เราเพิ่ง Live บน Testnet แทนการส่อง Source Code เกี่ยวข้องกับการดูระบบที่ใช้งานจริงบนเครือข่ายทดสอบแทนที่จะใช้ซอร์สโค้ดเพียงอย่างเดียวใน Github แค่อย่างเดียว
นี่เป็นอีกหนึ่งกิจกรรมที่ฟังดูน่าสนุกสำหรับเหล่านักล่าบัคที่มีสกิลเซ็ตที่แตกต่างกันสามารถมาโชว์สกิลความเชี่ยวชาญของคุณได้อย่างเต็มที่
สำหรับการแข่งขันครั้งนี้ เหล่าผู้ออดิทจะต้องทำการตรวจสอบ Optimism Goerli Network ซึ่งเป็น Network ที่เพิ่งอัพเกรดระบบให้เป็น Bedrock ซึ่งหมายความว่านอกจากการตามล่าหาบัคจาก source code ของ contract แล้ว ผู้ร่วมกิจกรรมสามารถมีส่วนร่วมในการหาบัคบนระบบที่ Live อยู่ (Optimism Goerli) รวมทั้งสามารถขุดคุ้ยที่ block explorers และ infrastructure อื่นๆ สำหรับรายละเอียดเต็มของการแข่งขัน รวมทั้งคำแนะนำในการเริ่มต้นตรวจสอบ สามารถอ่านได้ที่เพจ Sherlock


No comments yet