ส่วนที่ II: การออกแบบ Smart Contracts: ข้อควรพิจารณาที่เกี่ยวข้อง

ส่วนที่ II: การออกแบบ Smart Contracts: ข้อควรพิจารณาที่เกี่ยวข้อง

จุดเริ่มต้นของยุคของบล็อกเชนได้นำมาซึ่งประโยชน์มากมายในด้านต่างๆ สัญญาอัจฉริยะเป็นหนึ่งในวิวัฒนาการที่สำคัญที่สุดของกรณีการใช้งานบล็อกเชน ถึงตอนนี้ เราทราบแล้วว่าสัญญาอัจฉริยะเป็นสัญญาอัตโนมัติที่มีเงื่อนไขที่กำหนดไว้ล่วงหน้า โพสต์นี้จะก้าวไปข้างหน้าเพื่อช่วยให้คุณเข้าใจวิธีการออกแบบสัญญาอัจฉริยะระบบอัตโนมัติ:โดยปกติแล้ว ในช่วงแรก สัญญาจริงอาจเป็นเพียงสัญญา

อัจฉริยะที่มีลอจิกนอกเชนและกลไกการดำเนินการบางอย่าง 

อย่างไรก็ตาม เมื่อวิวัฒนาการกลายเป็นสัญญาอัจฉริยะที่ดำเนินการด้วยบล็อกเชนอย่างสมบูรณ์ ซึ่งหมายความว่าสัญญาอัจฉริยะสามารถทำงานอัตโนมัติได้อย่างสมบูรณ์ อย่างไรก็ตาม สัญญาอื่นๆ อาจประกอบด้วยข้อกำหนดที่ดำเนินการเองร่วมกับข้อกำหนดที่มีอยู่นอกรหัสซอฟต์แวร์ โดยหลักแล้วไม่ใช่การตัดสินใจ/ขั้นตอนทั้งหมดในสัญญาอัจฉริยะอาจถูกย่อเป็นข้อความเชิงตรรกะสำหรับสัญญาดังกล่าว

รหัสสัญญาอัจฉริยะ : ตัวอย่างเช่น รหัส Ethereum Solidity (ที่จัดเก็บ ตรวจสอบ และดำเนินการบนบล็อกเชน)

สัญญาทางกฎหมายอัจฉริยะ : สิ่งเหล่านี้เขียนเป็นข้อกำหนดสำหรับการใช้รหัสสัญญาอัจฉริยะเป็นส่วนเสริม/ทดแทนสัญญาทางกฎหมายที่ดำเนินการในการใช้งานแบบดั้งเดิม

การออกแบบสัญญาอัจฉริยะ

อย่างน้อยที่สุด การออกแบบสัญญาอัจฉริยะก็เป็นเพียงชุดของรหัสที่มีโครงสร้างซึ่งบังคับใช้ข้อผูกมัด ข้อดีทั้งหมดของการออกแบบที่ทันสมัยนำไปใช้ได้อย่างแน่นอนในขณะที่ทำสัญญาที่ชาญฉลาด อันที่จริง ยิ่งกว่านั้น เนื่องจากธรรมชาติของบล็อกเชนไม่เปลี่ยนแปลง: การออกแบบที่ชัดเจน การรักษาความปลอดภัยที่ผ่านการคิดมาอย่างดี การทดสอบอย่างละเอียดถี่ถ้วน และการจัดการวงจรชีวิตเป็นสิ่งจำเป็นสำหรับการทำสัญญาอัจฉริยะ

ด้านล่างนี้คือแง่มุมบางประการเกี่ยวกับการออกแบบสัญญาอัจฉริยะที่ทุกคนที่ทำสัญญาดังกล่าวต้องรู้

อินเทอร์เฟซและโมดูล

สำหรับการเขียนโค้ดแบบดั้งเดิม การแยกโค้ดออกเป็นส่วนต่างๆ เป็นวิธีปฏิบัติที่แพร่หลาย ซึ่งก็จริงเช่นกันในการออกแบบสัญญาอัจฉริยะ มีไลบรารีจำนวนหนึ่งที่มีโมดูลที่สามารถใช้เมื่อเขียนสัญญา นอกจากนี้ยังดีกว่าที่จะนำโมดูลที่มีอยู่แล้วมาใช้ซ้ำเนื่องจากจะช่วยลดความเสี่ยงในการเกิดข้อผิดพลาดได้อย่างกว้างขวางและช่วยประหยัดเวลาอันมีค่าในการมุ่งเน้นไปที่คุณสมบัติ “เฉพาะ” ของสัญญาที่มีอยู่ แม้ว่าโมดูลจะต้องมีการปรับเปลี่ยนให้เหมาะกับบางโมดูลโดยเฉพาะ ความต้องการ แนะนำให้ใช้การทดสอบที่เกี่ยวข้องซ้ำเพื่อให้แน่ใจว่าไม่มีอะไรเสียหาย

ดังนั้นจึงเป็นคำแนะนำเสมอว่าอย่าหักโหมผู้รับเหมาเพื่อใช้เทคนิคการเข้ารหัสที่เพ้อฝัน แต่ให้รักษาความพอประมาณ โดยเฉพาะอย่างยิ่งเนื่องจากสัญญาส่วนใหญ่ที่ใช้โดยสาธารณะจะมีแหล่งที่มาที่เกี่ยวข้องแนบอยู่บนบล็อกเชนเพื่อให้ทุกคนตรวจสอบและตรวจสอบได้ การมีสัญญาที่ชัดเจน เรียบง่าย เข้าใจง่าย จะได้รับความไว้วางใจมากขึ้น และมีโอกาสน้อยที่จะมีข้อบกพร่องมากกว่าสัญญาขนาดใหญ่ที่ได้รับการออกแบบทางวิศวกรรมมากเกินไปซึ่งทำมากเกินความจำเป็นจริงๆ

เมื่อออกแบบสัญญาอัจฉริยะ สิ่งสำคัญคือต้องคำนึงถึงความปลอดภัย

ตั้งแต่เริ่มต้น เนื่องจากสัญญาเป็นแบบสาธารณะและมองเห็นได้บนบล็อกเชน ทุกคนสามารถเรียกใช้ทุกฟังก์ชันได้ แม้ว่าคุณจะไม่ได้ส่งซอร์สโค้ด แต่ก็ยังมี bytecode เพื่อให้ทุกคนที่มีความเข้าใจที่ถูกต้องเกี่ยวกับ EVM และความอดทนที่เหมาะสมสามารถเข้าใจได้ว่าสัญญานั้นทำอะไรและเรียกมันว่าอย่างไร ดังนั้นจึงไม่ใช่ความคิดที่ดีที่จะวางใจในความปลอดภัยโดยปิดบัง เพื่อหลีกเลี่ยงปัญหานี้ สัญญาส่วนใหญ่จะใช้รูปแบบเจ้าของที่สามารถใช้เพื่อจำกัดสถานะสูงสุดของฟังก์ชันการเปลี่ยนแปลง “ผู้ดูแลระบบ” เช่น การตั้งค่า เริ่ม ต้นหยุด และฆ่า

นอกจากนี้ ในกรณีที่เกิดเหตุการณ์ที่ไม่คาดคิด (เช่น ข้อผิดพลาดร้ายแรงใน EVM หรือการค้นพบช่องโหว่ภายในโค้ด) ทรัพย์สินภายในสัญญาอาจตกอยู่ในอันตราย ในกรณีนี้ จะเป็นการดีที่จะหยุดการทำงานโดยหยุดกิจกรรมส่วนใหญ่ (แต่ไม่ใช่ทั้งหมด) ภายในสัญญาในขณะที่ประเมินสถานการณ์ จากมุมมองด้านความปลอดภัย การตัดสินใจหยุดสัญญาควรพร้อมใช้งานสำหรับผู้ให้บริการระบบส่วนกลางและหน่วยงานรักษาความปลอดภัย ในขณะที่การหยุดการทำงานควรจำกัดไว้เฉพาะเจ้าของ เหมือนกับปุ่มฉุกเฉินทั่วไปที่คนจำนวนมากสามารถหยุดเครื่องจักรได้ แต่มีเพียงไม่กี่คนเท่านั้น สามารถเริ่มต้นใหม่ได้

การออกแบบสัญญาเดียว

เมื่อสัญญามีการพัฒนาและมีคุณสมบัติเพิ่มมากขึ้นเรื่อย ๆ มันเป็นเรื่องง่ายที่จะลงเอยด้วยสัญญาอ้วน ๆ ที่ทำมากเกินไปและยากต่อการจัดการ หากไม่ทำอย่างอื่น การพัฒนาจะสิ้นสุดลงอย่างกะทันหันในวันหนึ่ง เพียงเพราะต้นทุนรวมของการฝากโค้ดและการดำเนินการสร้างเกินกว่าปริมาณทั้งหมดที่มีอยู่ภายในการดำเนินการบล็อกเดียว สิ่งนี้เรียกว่า block gas limit (BGL) วิธีสังเกตสิ่งนี้คือการดูค่าประมาณของก๊าซในเอาต์พุตJSON ของการคอมไพล์

Credit : สล็อตโรม่าเว็บตรง / สล็อตแท้