เรื่องสั้น: การอัพเกรด Cancun กำลังใกล้เข้ามา และการอัปเกรดนี้ส่วนใหญ่ประกอบด้วยการเปลี่ยนแปลงระดับผู้บริหารที่เสนอโดย EIP หกรายการ ได้แก่ EIP-1153, EIP-4788, EIP-4844, EIP-5656, EIP-6780 และ EIP-7516 EIP-4844 เป็นตัวเอกของการอัพเกรดนี้ ซึ่งมีจุดมุ่งหมายเพื่อปรับปรุงความสามารถในการปรับขนาดของ Ethereum ลดต้นทุนการทำธุรกรรม และเพิ่มความเร็วของการทำธุรกรรมสำหรับ L2 การอัปเกรด Cancun เสร็จสิ้นแล้วบนเครือข่ายทดสอบ Ethereum Goerli, Sepolia และ Holesky ในวันที่ 17 มกราคม, 30 มกราคม และ 7 กุมภาพันธ์ ตามลำดับ และมีกำหนดเปิดใช้งานบนเครือข่ายหลัก Ethereum ในวันที่ 13 มีนาคม ก่อนที่จะอัปเกรด Salus ได้รวบรวมข้อควรระวังด้านความปลอดภัยที่สำคัญสำหรับการอัปเกรดนี้เพื่อให้นักพัฒนาตรวจสอบด้วยตนเอง
ข้อควรพิจารณาด้านความปลอดภัยที่เปิดเผยอย่างเป็นทางการ
ความเสี่ยงที่เกี่ยวข้องกับสัญญาอัจฉริยะ
การทบทวนข้อเสนอ EIP
EIP-1153
EIP-1153 เปิดตัว opcode ของพื้นที่เก็บข้อมูลชั่วคราว ซึ่งใช้เพื่อจัดการสถานะและทำงานเกือบจะเหมือนกับที่เก็บข้อมูล แต่พื้นที่เก็บข้อมูลชั่วคราวจะถูกยกเลิกหลังจากการทำธุรกรรมแต่ละครั้ง ซึ่งหมายความว่าที่เก็บข้อมูลชั่วคราวจะไม่ดีซีเรียลไลซ์ค่าจากหรือซีเรียลไลซ์ค่าไปยังที่เก็บข้อมูล ดังนั้นที่เก็บข้อมูลชั่วคราวจึงมีราคาถูกกว่าเนื่องจากไม่จำเป็นต้องเข้าถึงดิสก์ สัญญาอัจฉริยะสามารถเข้าถึงที่เก็บข้อมูลชั่วคราวผ่าน opcode ใหม่สองรหัส ได้แก่ TLOAD และ TSTORE (โดยที่ T ย่อมาจาก temporary) ข้อเสนอนี้มีจุดมุ่งหมายเพื่อมอบโซลูชันเฉพาะและมีประสิทธิภาพสำหรับการสื่อสารระหว่างเฟรมเวิร์กการดำเนินการที่ซ้อนกันหลายรายการในการดำเนินการธุรกรรมของ Ethereum
EIP-4788
EIP-4788 มีเป้าหมายที่จะเปิดเผยรากต้นไม้แฮชของบล็อกลูกโซ่บีคอนไปยัง EVM เพื่อให้สามารถเข้าถึงรากเหล่านี้ภายในสัญญาอัจฉริยะ สิ่งนี้ให้การเข้าถึงสถานะเลเยอร์ฉันทามติอย่างน่าเชื่อถือ โดยรองรับกรณีการใช้งานที่หลากหลาย เช่น Stake Pool โครงสร้างการพักใหม่ สะพานสัญญาอัจฉริยะ การบรรเทา MEV และอื่นๆ ข้อเสนอจะจัดเก็บรากเหล่านี้ผ่านสัญญาอัจฉริยะ และใช้บัฟเฟอร์วงแหวนเพื่อจำกัดการใช้พื้นที่จัดเก็บข้อมูล เพื่อให้มั่นใจว่าแต่ละบล็อกการดำเนินการต้องการเพียงพื้นที่คงที่ในการแสดงข้อมูลนี้
EIP-4844
EIP-4844 แนะนำรูปแบบธุรกรรมใหม่ที่เรียกว่า"ธุรกรรม Blob ที่แบ่งส่วน"ออกแบบมาเพื่อขยายความพร้อมใช้งานของข้อมูล Ethereum ด้วยวิธีที่เรียบง่ายและเข้ากันได้กับไปข้างหน้า ข้อเสนอนี้แนะนำข้อมูลจำนวนมาก"blob-carrying transactions"ข้อมูลนี้ไม่สามารถเข้าถึงได้โดยการดำเนินการ EVM แต่สามารถเข้าถึงข้อผูกพันได้ รูปแบบนี้เข้ากันได้โดยสมบูรณ์กับรูปแบบที่ใช้โดยการแบ่งส่วนข้อมูลแบบเต็มในอนาคต โดยให้การผ่อนปรนชั่วคราวแต่สำคัญสำหรับการขยายแบบกลิ้ง
EIP-5656
EIP-5656 แนะนำ MCOPY คำสั่ง EVM ใหม่เพื่อการคัดลอกขอบเขตหน่วยความจำที่มีประสิทธิภาพ ข้อเสนอนี้มีจุดมุ่งหมายเพื่อลดค่าใช้จ่ายในการดำเนินการคัดลอกหน่วยความจำบน EVM โดยการคัดลอกข้อมูลระหว่างหน่วยความจำโดยตรงผ่านคำสั่ง MCOPY MCOPY ช่วยให้ที่อยู่ต้นทางและปลายทางซ้อนทับกัน ได้รับการออกแบบโดยคำนึงถึงความเข้ากันได้แบบย้อนหลัง และมีเป้าหมายเพื่อปรับปรุงประสิทธิภาพการดำเนินการในสถานการณ์ต่างๆ รวมถึงการสร้างโครงสร้างข้อมูล การเข้าถึงและการคัดลอกอ็อบเจ็กต์หน่วยความจำอย่างมีประสิทธิภาพ
EIP-6780
EIP-6780 แก้ไขการทำงานของ opcode SELFDESTRUCT ในข้อเสนอนี้ SELFDESTRUCT จะลบบัญชีและโอนอีเทอร์ทั้งหมดในธุรกรรมเดียวกับที่สร้างสัญญาเท่านั้น นอกจากนี้ เมื่อดำเนินการ SELFDESTRUCT สัญญาจะไม่ถูกลบ แต่อีเทอร์ทั้งหมดจะถูกโอนไปยังปลายทางที่ระบุ การเปลี่ยนแปลงนี้มีขึ้นเพื่อปรับให้เข้ากับการใช้งาน Verkle tree ในอนาคต โดยมีเป้าหมายเพื่อทำให้การใช้งาน EVM ง่ายขึ้น และลดความซับซ้อนของการเปลี่ยนแปลงสถานะ ในขณะที่ยังคงรักษาสถานการณ์ทั่วไปบางประการของ SELFDESTRUCT
EIP-7516
EIP-7516 แนะนำคำสั่ง EVM ใหม่ BLOBBASEFEE ที่จะส่งคืนค่าฐาน blob ในการดำเนินการบล็อกปัจจุบัน คำสั่งนี้คล้ายกับ opcode BASEFEE จาก EIP-3198 ยกเว้นว่าจะส่งกลับค่าธรรมเนียมฐาน blob ตามที่กำหนดไว้ใน EIP-4844 คุณลักษณะนี้ช่วยให้สัญญาคำนึงถึงราคาก๊าซของข้อมูล Blob โดยทางโปรแกรม เช่น การอนุญาตให้สัญญาแบบรวมสามารถคำนวณต้นทุนการใช้ข้อมูล Blob ได้อย่างน่าเชื่อถือ หรือใช้ Blob Gas Futures ตามสิ่งนี้เพื่อทำให้ต้นทุนข้อมูล Blob ราบรื่น
ข้อควรพิจารณาด้านความปลอดภัยที่เปิดเผยอย่างเป็นทางการ
EIP-1153
นักพัฒนาสัญญาอัจฉริยะควรเข้าใจวงจรชีวิตของตัวแปรการจัดเก็บข้อมูลชั่วคราวก่อนใช้งาน เนื่องจากพื้นที่เก็บข้อมูลชั่วคราวจะถูกล้างโดยอัตโนมัติเมื่อสิ้นสุดธุรกรรม นักพัฒนาสัญญาอัจฉริยะจึงอาจพยายามหลีกเลี่ยงการล้างช่องระหว่างการโทรเพื่อประหยัดน้ำมัน อย่างไรก็ตาม สิ่งนี้อาจป้องกันการโต้ตอบเพิ่มเติมกับสัญญาภายในธุรกรรมเดียวกัน (ตัวอย่างเช่น ในกรณีของการล็อกผู้เข้าใหม่) หรือทำให้เกิดข้อผิดพลาดอื่นๆ ดังนั้นนักพัฒนาสัญญาอัจฉริยะควรระมัดระวังในการจองช่องเก็บข้อมูลที่ไม่ใช่ชั่วคราวเท่านั้นเมื่อมีการจองไว้ ค่าเป็นศูนย์ มีไว้สำหรับใช้โดยการโทรในอนาคตภายในธุรกรรมเดียวกัน มิฉะนั้น opcode เหล่านี้จะทำงานเหมือนกับ SSTORE และ SLOAD ทุกประการ ดังนั้นจึงต้องคำนึงถึงความปลอดภัยตามปกติทั้งหมด โดยเฉพาะอย่างยิ่งเกี่ยวกับความเสี่ยงในการกลับเข้าใหม่
นักพัฒนาสัญญาอัจฉริยะอาจลองใช้ที่เก็บข้อมูลชั่วคราวเป็นทางเลือกแทนการทำแผนที่หน่วยความจำ พวกเขาควรทราบว่าที่เก็บข้อมูลชั่วคราวจะไม่ถูกทิ้งเหมือนหน่วยความจำเมื่อมีการโทรกลับหรือดำเนินการต่อ และควรเลือกใช้หน่วยความจำในกรณีการใช้งานเหล่านี้ เพื่อหลีกเลี่ยงพฤติกรรมที่ไม่คาดคิดในการกลับเข้าใหม่ภายในธุรกรรมเดียวกัน ค่าใช้จ่ายพื้นที่จัดเก็บชั่วคราวในหน่วยความจำจำเป็นต้องสูง ซึ่งน่าจะไม่สนับสนุนรูปแบบการใช้งานนี้ การใช้งานการแมปในหน่วยความจำส่วนใหญ่จะถูกนำไปใช้ได้ดีกว่าด้วยรายการรายการที่เรียงลำดับคีย์ และการแมปในหน่วยความจำนั้นแทบจะไม่จำเป็นในสัญญาอัจฉริยะ (เช่น ผู้เขียนทราบว่าไม่มีกรณีการใช้งานที่ทราบในการผลิต)
EIP-4844
EIP นี้เพิ่มข้อกำหนดแบนด์วิดท์ได้สูงสุดถึงประมาณ 0.75 MB ต่อบล็อกบีคอน ซึ่งใหญ่กว่าขนาดสูงสุดตามทฤษฎีของบล็อกในปัจจุบันถึง 40% (30 M Gas / 16 Gas ต่อไบต์ข้อมูลการโทร = 1.875 M Bytes) ดังนั้นจึงไม่ได้เพิ่มแบนด์วิดท์ในกรณีที่เลวร้ายที่สุดอย่างมีนัยสำคัญ หลังจากการควบรวมกิจการ เวลาของบล็อกจะคงที่มากกว่าการกระจายปัวซองที่ไม่สามารถคาดเดาได้ ซึ่งเป็นการรับประกันระยะเวลาสำหรับการแพร่กระจายของบล็อกขนาดใหญ่
แม้ว่าจะมีข้อมูลการโทรที่จำกัด แต่ภาระที่ต่อเนื่องของ EIP นี้ก็ยังต่ำกว่าทางเลือกอื่นที่ช่วยลดต้นทุนของข้อมูลการโทรได้มาก เนื่องจากไม่จำเป็นต้องจัดเก็บ Blob ตราบใดที่มีการดำเนินการโหลด ซึ่งทำให้สามารถใช้นโยบายที่ต้องรักษา Blob เหล่านี้ไว้อย่างน้อยสักระยะหนึ่ง ค่าเฉพาะที่เลือกคือยุค MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS ซึ่งก็คือประมาณ 18 วัน ซึ่งเป็นเวลาแฝงที่สั้นกว่าการหมุนเวียนหนึ่งปีที่แนะนำ (แต่ยังไม่ได้นำไปใช้) มากสำหรับการดำเนินการประวัติเพย์โหลด
EIP-5656
ไคลเอนต์ควรทราบว่าการใช้งานของพวกเขาไม่ได้ใช้บัฟเฟอร์ระดับกลาง (ตัวอย่างเช่น ฟังก์ชัน C stdlibmemmove ไม่ได้ใช้บัฟเฟอร์ระดับกลาง) เนื่องจากนี่คือเวกเตอร์ที่อาจเกิดขึ้นจากการปฏิเสธการบริการ (DoS) ฟังก์ชันไลบรารีในตัว/มาตรฐานของภาษาส่วนใหญ่สำหรับการย้ายไบต์มีลักษณะการทำงานที่ถูกต้องที่นี่
มิฉะนั้น การวิเคราะห์การโจมตีแบบปฏิเสธการให้บริการ (DoS) และหน่วยความจำหมดจะเหมือนกับ opcode อื่นๆ ที่สัมผัสหน่วยความจำ เนื่องจากส่วนขยายหน่วยความจำเป็นไปตามกฎการกำหนดราคาเดียวกัน
EIP-6780
แอปพลิเคชัน SELFDESTRUCT ต่อไปนี้จะใช้งานไม่ได้ และแอปพลิเคชันที่ใช้ในลักษณะนี้จะไม่ปลอดภัยอีกต่อไป:
โดยที่ CREATE 2 ใช้เพื่อปรับใช้สัญญาอีกครั้งในตำแหน่งเดียวกันเพื่อให้สามารถอัปเกรดสัญญาได้ ไม่รองรับฟีเจอร์นี้อีกต่อไป และควรใช้ ERC-2535 หรือสัญญาพร็อกซีประเภทอื่นแทน
หากสัญญาอาศัยการเผาอีเทอร์โดยมีสัญญา SELFDESTRUCT เป็นผู้รับผลประโยชน์ สัญญาจะไม่ถูกสร้างขึ้นในธุรกรรมเดียวกัน
ความเสี่ยงที่เกี่ยวข้องกับสัญญาอัจฉริยะ
EIP 1153
พิจารณาสองสถานการณ์โดยใช้ opcodes TLOAD และ TSTORE:
สัญญาที่เรียกว่าใช้ opcode นี้
ใช้ opcode นี้เพื่อเริ่มต้นการเรียกสัญญา
ความเสี่ยง 1:
เมื่อเปรียบเทียบกับ SSTORE และ SLOAD แบบเดิม พื้นที่เก็บข้อมูลชั่วคราวใหม่จะเปลี่ยนระยะเวลาการจัดเก็บข้อมูลเป็นหลัก ข้อมูลที่เก็บไว้ใน tstore จะถูกอ่านผ่าน tload ข้อมูลจะถูกเผยแพร่หลังจากการดำเนินการของธุรกรรม แทนที่จะเป็นในเวลาเดียวกัน มีสัญญาเป็นลายลักษณ์อักษร ที่จะจัดเก็บจะถูกบันทึกอย่างถาวร นักพัฒนาควรจดจำลักษณะของ opcode นี้เมื่อใช้งานเพื่อหลีกเลี่ยงการใช้งานที่ไม่ถูกต้องซึ่งอาจทำให้ข้อมูลถูกเขียนลงในสัญญาอย่างไม่ถูกต้องและทำให้เกิดการสูญเสีย นอกจากนี้ ข้อมูลใน tstore ยังเป็นตัวแปรส่วนตัวและสามารถเข้าถึงได้โดยสัญญาเท่านั้น หากคุณต้องการใช้ข้อมูลภายนอก คุณสามารถส่งผ่านได้ในรูปแบบของพารามิเตอร์เท่านั้น หรือจัดเก็บไว้ชั่วคราวในตัวแปรการจัดเก็บสาธารณะ
ความเสี่ยง 2:
ความเสี่ยงที่อาจเกิดขึ้นอีกประการหนึ่งคือ หากนักพัฒนาสัญญาอัจฉริยะไม่จัดการอายุการใช้งานของตัวแปรการจัดเก็บข้อมูลชั่วคราวอย่างเหมาะสม อาจส่งผลให้ข้อมูลถูกล้างเมื่อไม่ควรถูกเก็บไว้หรือถูกเก็บรักษาไว้อย่างไม่ถูกต้อง หากสัญญาคาดว่าจะใช้ข้อมูลที่จัดเก็บไว้ในที่จัดเก็บข้อมูลชั่วคราวในการเรียกธุรกรรมครั้งต่อๆ ไป แต่ไม่สามารถจัดการวงจรการใช้งานของข้อมูลนี้ได้อย่างเหมาะสม ข้อมูลอาจถูกแชร์อย่างไม่ถูกต้องหรือสูญหายระหว่างการโทร ส่งผลให้เกิดข้อผิดพลาดทางตรรกะหรือช่องโหว่ด้านความปลอดภัย เมื่อพิจารณาว่าข้อมูลยอดคงเหลือหรือค่าอนุญาตที่คล้ายกับโครงการ Token ไม่สามารถจัดเก็บได้อย่างถูกต้อง จะทำให้เกิดข้อผิดพลาดในตรรกะของสัญญาและทำให้เกิดการสูญเสีย หรือใช้ opcode นี้เมื่อตั้งค่าที่อยู่ของเจ้าของจะส่งผลให้ที่อยู่สิทธิพิเศษไม่ได้รับการบันทึกอย่างถูกต้องและทำให้สูญเสียการแก้ไขพารามิเตอร์ที่สำคัญของสัญญา
พิจารณาสัญญาอัจฉริยะที่ใช้พื้นที่เก็บข้อมูลชั่วคราวเพื่อบันทึกราคาธุรกรรมชั่วคราวในการแลกเปลี่ยนสกุลเงินดิจิทัล สัญญาจะอัปเดตราคาเมื่อการซื้อขายแต่ละครั้งเสร็จสมบูรณ์ และอนุญาตให้ผู้ใช้ค้นหาราคาล่าสุดในช่วงเวลาสั้นๆ อย่างไรก็ตาม หากการออกแบบสัญญาไม่ได้คำนึงถึงคุณลักษณะที่จัดเก็บข้อมูลชั่วคราวจะถูกล้างโดยอัตโนมัติเมื่อสิ้นสุดธุรกรรม ผู้ใช้อาจได้รับธุรกรรมที่ไม่ถูกต้องหรือล้าสมัยในช่วงเวลาตั้งแต่สิ้นสุดธุรกรรมหนึ่งจนถึงจุดเริ่มต้นของธุรกรรมถัดไป การทำธุรกรรม. ราคา. สิ่งนี้อาจไม่เพียงแต่ทำให้ผู้ใช้ตัดสินใจโดยอาศัยข้อมูลที่ไม่ถูกต้อง แต่ยังอาจถูกนำไปใช้ในทางที่ผิด ซึ่งส่งผลกระทบต่อความน่าเชื่อถือของแพลตฟอร์มและความปลอดภัยของทรัพย์สินของผู้ใช้
EIP-6780
ข้อเสนอนี้เปลี่ยนพฤติกรรมของ opcode การทำลายตนเองก่อนหน้านี้ ซึ่งไม่ทำลายสัญญา โอนเฉพาะโทเค็น และเฉพาะสัญญาที่สร้างขึ้นในธุรกรรมเดียวกันกับการทำลายตนเองเท่านั้นที่จะถูกทำลาย ผลกระทบของ EIP นี้ค่อนข้างมาก
ใช้ create 2 เพื่อปรับใช้สัญญาอีกครั้งในที่อยู่เดียวกันเพื่ออัปเกรดสัญญา ไม่รองรับฟีเจอร์นี้อีกต่อไป ควรใช้ ERC-2535 หรือสัญญาพร็อกซีประเภทอื่นแทน (ซึ่งอาจส่งผลต่อการใช้ create 2 เพื่อใช้สัญญาที่อัปเกรดได้สัญญาออนไลน์ความปลอดภัย)
การดำเนินการ SELFDESTRUCT ในสัญญาอัจฉริยะช่วยให้สัญญาถูกทำลายและส่งยอดคงเหลือของสัญญาไปยังที่อยู่ปลายทางที่ระบุ ในกรณีนี้ สัญญาใช้ SELFDESTRUCT เพื่อทำลายอีเทอร์และส่งอีเทอร์ที่ถูกทำลายไปยังสัญญา แต่สัญญาจะเป็นสัญญาที่สร้างขึ้นในธุรกรรมเดียวกันเท่านั้น (สัญญาที่สร้างโดยสัญญานี้หรือสัญญาอื่นในธุรกรรมเดียวกัน) มิฉะนั้น จะมีเพียงอีเธอร์เท่านั้นที่จะถูกถ่ายโอนโดยไม่ทำลายสัญญา (เช่น หากมันทำลายตัวเองและผู้รับผลประโยชน์เป็นสัญญาที่ทำลายตัวเอง สิ่งนี้จะไม่ทำให้เกิดการเปลี่ยนแปลงใดๆ ) สิ่งนี้จะส่งผลต่อทุกสิ่งที่ต้องอาศัยการทำลายตนเองสำหรับการถอนหรือการดำเนินการอื่น ๆสัญญา。
Gas Token ที่คล้ายกับโทเค็น CHI ขนาด 1 นิ้วทำงานโดยรักษาออฟเซ็ตและดำเนินการ CREATE 2 หรือ SELFDESTRUCT ที่ออฟเซ็ตนี้เสมอ หลังจากการอัปเดตนี้ ถ้าสัญญาที่ออฟเซ็ตปัจจุบันไม่ได้ทำลายตัวเองอย่างถูกต้อง CREATE 2 ที่ตามมาจะไม่สามารถปรับใช้สัญญาได้สำเร็จ
การดำเนินการตามข้อเสนอนี้จะไม่นำไปสู่การโจมตีสัญญาโดยตรง แต่จะทำลายตรรกะปกติของสัญญาที่ใช้งานเดิมซึ่งอาศัยการดำเนินการทำลายตนเอง (สัญญาที่อาศัยการทำลายตนเองเท่านั้นสำหรับการโอนเงินจะไม่ได้รับผลกระทบ หากในภายหลัง การดำเนินการจะต้องทำลายตัวเองหากสัญญาถูกลบออกไปจะได้รับผลกระทบ) ทำให้สัญญาทำงานโดยไม่คาดคิดเฉพาะตัวสัญญาและผู้ใช้เท่านั้นอาจทำให้เกิดการนัดหยุดงานการสูญเสียเงินทุนและอันตรายอื่น ๆ (สำหรับ เช่น เดิมทีใช้ create 2 เพื่อปรับใช้สัญญาใหม่ ณ ที่อยู่เดิม ทำลายสัญญาเดิมด้วยตนเอง สัญญาที่อัปเกรดแล้วไม่สามารถปรับใช้ได้สำเร็จอีกต่อไป) ในระยะยาว การปรับเปลี่ยนฟังก์ชันการทำงานของ opcode อาจนำไปสู่ปัญหาการรวมศูนย์
ตัวอย่างเช่น มี vault สัญญา vault ที่มีอยู่ให้อัปเดต:
สร้าง 2 สัญญาการจัดเก็บชั่วคราวใช้เพื่อสำรองกองทุนตู้นิรภัยชั่วคราว
สัญญาตู้นิรภัยทำลายตัวเอง เงินจะถูกโอนไปเป็นสัญญาชั่วคราว (เฉพาะเงินเท่านั้นที่โอนโดยไม่ทำลายสัญญา)
สร้างสัญญา vault ใหม่ 2 สัญญาที่ที่อยู่เดิม (ล้มเหลวเนื่องจากสัญญา vault เดิมไม่ถูกทำลาย)
สัญญาชั่วคราวแบบทำลายตัวเองจะส่งเงินกลับเข้าตู้นิรภัย (เงินสูญหาย สัญญาตู้นิรภัยไม่ได้ถูกสร้างขึ้น)
อ่านเพิ่มเติม
การอัพเกรด Cancun จะช่วยเพิ่มความได้เปรียบในการแข่งขันของ Ethereum ต่อไป อย่างไรก็ตาม การอัปเกรดนี้นำความเสี่ยงมาสู่การเปลี่ยนแปลงเลเยอร์สัญญาอัจฉริยะหลัก ซึ่งจะส่งผลต่อการทำงานที่ปลอดภัยของ DApps ที่มีอยู่ ในระหว่างการพัฒนาสัญญาอัจฉริยะ การเปลี่ยนแปลงเหล่านี้และความเสี่ยงที่อาจเกิดขึ้นยังต้องได้รับการดูแลเป็นอย่างดี คุณสามารถทำได้ด้วยSalusติดต่อเพื่อตรวจสอบความเสี่ยงหรือสนับสนุนการตรวจสอบ หรืออ่านเพิ่มเติมเพื่อเรียนรู้เกี่ยวกับการเปลี่ยนแปลง


