BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

นวัตกรรมและโอกาสในภาษา Move

HTX
特邀专栏作者
2022-11-17 09:55
บทความนี้มีประมาณ 9918 คำ การอ่านทั้งหมดใช้เวลาประมาณ 15 นาที
ตลอดประวัติศาสตร์การพัฒนาของ blockchain การเพิ่มขึ้นของเครือข่ายสาธารณะที่เกิดขึ้นใหม่แต่ละก
สรุปโดย AI
ขยาย
ตลอดประวัติศาสตร์การพัฒนาของ blockchain การเพิ่มขึ้นของเครือข่ายสาธารณะที่เกิดขึ้นใหม่แต่ละก

สรุป

ชื่อระดับแรก

ตามภาษา Solidity และ Rust แล้ว Move ซึ่งเป็นภาษาโปรแกรมรุ่นใหม่ที่เกิดจากโครงการ Libra ที่ล่มสลายได้กลับมาเป็นจุดสนใจเนื่องจากโครงการเครือข่ายสาธารณะ Aptos และ Sui ตลอดประวัติศาสตร์การพัฒนาของ blockchain การเพิ่มขึ้นของเครือข่ายสาธารณะที่เกิดขึ้นใหม่แต่ละชุดมักจะหมายถึงการเปลี่ยนแปลงในกระบวนทัศน์การพัฒนาในระดับหนึ่ง การปรากฏขึ้นอีกครั้งของ Move ดูเหมือนจะบอกเป็นนัยว่าการเล่าเรื่องของภาษาใหม่กำลังกลายเป็นสนามรบใหม่สำหรับการแข่งขันในเครือข่ายสาธารณะ

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

จากมุมมองของการยอมรับภาษา Move เป็นมิตรกับนักพัฒนามาก จุดประสงค์คือเพื่อลดเกณฑ์ความปลอดภัยสำหรับนักพัฒนา เพื่อให้นักพัฒนาสัญญาสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจ ง่ายต่อการเริ่มต้น และค่าใช้จ่ายโดยรวมของการย้ายถิ่นฐานของนักพัฒนาไม่สูง ; ในแง่นิเวศวิทยา ดูสิ สถานการณ์การใช้งานจริงของ Move ยังอยู่ในช่วงเริ่มต้น และระบบนิเวศของแอพพลิเคชั่นยังไม่ได้เปิดตัวในวงกว้าง ในปัจจุบันมีเพียง Aptos, Sui และ Starcoin ในประเทศเท่านั้นที่เป็นโครงการเครือข่ายสาธารณะเพียงโครงการเดียวที่ Move บ่มเพาะ ในอนาคต เนื่องจากปัจจัยต่างๆ เช่น ลักษณะของ Move for Finance และความสมบูรณ์ของเส้นทาง โครงสร้างพื้นฐานทางการเงิน เช่น DEX, DeFi และกระเป๋าเงินจะถูกนำไปใช้ก่อน ตามด้วยแอปพลิเคชันที่เกี่ยวข้องกับการเงิน เช่น Socialfi และ Gamefi

ภาพรวม

ชื่อระดับแรก

เมื่อเร็ว ๆ นี้ เส้นทางเครือข่ายสาธารณะมีการใช้งานอย่างมาก: เครือข่ายสาธารณะใหม่สองแห่ง ได้แก่ Aptos และ Sui ซึ่งได้เข้ามาในตลาดและระดมทุนได้เกือบ 500 ล้านเหรียญสหรัฐ ได้รับความสนใจอย่างกว้างขวางในอุตสาหกรรม เพื่อบอกว่าเหตุใดพวกเขาจึงมีความสามารถที่ยอดเยี่ยม นอกเหนือจากข้อเท็จจริงที่ว่าทีมผู้ก่อตั้งส่วนใหญ่มาจากเบื้องหลังอย่างลึกซึ้งของโครงการ Libra เหรียญ Stablecoin ที่เลิกใช้แล้ว (ภายหลังเปลี่ยนชื่อเป็น Diem) มีแนวโน้มว่าพวกเขาจะได้รับมรดกหลักจาก Diem . —— ย้ายภาษา

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

ชื่อระดับแรก

1. เหตุผลที่มูฟถือกำเนิดขึ้น

มีภาษามากมายในโลก ทำไม Libra ถึงออกแบบ Move "อย่างท่วมท้น"? เราทราบดีว่าวิสัยทัศน์ของ Libra คือการกลายเป็นโครงสร้างพื้นฐานทางการเงินของสกุลเงินทั่วโลก ซึ่งให้อำนาจแก่ผู้คนหลายพันล้านคน ดังนั้น Move จะต้องวางการรักษาความปลอดภัยสินทรัพย์ไว้ที่ด้านบนสุดของเป้าหมายการออกแบบ อย่างไรก็ตามภาษาโปรแกรมในอดีตไม่ตอบสนองความต้องการนี้ได้เป็นอย่างดี

ตามสถิติที่ไม่สมบูรณ์จาก SlowMist Hacked ในปี 2021 เพียงปีเดียว จะมีเหตุการณ์ด้านความปลอดภัยที่เผยแพร่มากกว่า 200 เหตุการณ์ในระบบนิเวศบล็อกเชน ซึ่งมีมูลค่าความเสียหายมากกว่า 9.8 พันล้านเหรียญสหรัฐ ในหมู่พวกเขา ปัญหาด้านความปลอดภัยส่วนใหญ่ปรากฏในโปรโตคอล DApp หรือ DeFi ในระบบนิเวศ

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

ดังนั้น Libra จึงละทิ้งภาษาโปรแกรมสัญญาอัจฉริยะแบบเก่าอย่างเด็ดขาด และพัฒนาภาษา Move ที่ปลอดภัยยิ่งขึ้น บทความนี้จะอธิบายถึงคุณลักษณะด้านความปลอดภัยต่างๆ ของ Move เป็นหลัก

2. Move รับประกันความปลอดภัยของทรัพย์สินได้อย่างไร

ประสิทธิภาพการรักษาความปลอดภัยสินทรัพย์ของ Move นั้นเหนือกว่าภาษาการเขียนโปรแกรมก่อนหน้านี้เนื่องจากได้ทำการปรับปรุงนวัตกรรมบนไหล่ของรุ่นก่อน ๆ การปรับปรุงเหล่านี้ส่วนใหญ่สะท้อนให้เห็นในสามด้าน ได้แก่ การออกแบบภาษา เครื่องเสมือน และเครื่องมือตรวจสอบแบบออฟไลน์

ชื่อเรื่องรอง

2.1 การออกแบบภาษา: เกิดมาเพื่อการเงินดิจิทัล

Move ค่อยๆ ลดทอนแอตทริบิวต์ "ดิจิทัล" และเน้นแอตทริบิวต์ "สินทรัพย์" ทำไมคุณพูดแบบนั้น? ก่อนอื่นเรามาดูว่าภาษาสัญญาอัจฉริยะที่สมบูรณ์ของทัวริงกำหนดสินทรัพย์ดิจิทัลในอดีตอย่างไร

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

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

ความสัมพันธ์ของการทำแผนที่นี้สะท้อนให้เห็นโดยหลักจากยอดคงเหลือในฟิลด์สำคัญของบัญชี Ethereum โดยสัญชาตญาณ นี่คือคู่คีย์-ค่า KV ทั่วไป (การแมป (ที่อยู่ => uint256) ยอดคงเหลือสาธารณะ) และค่าดังกล่าวจะสะท้อนให้เห็นในยอดโทเค็นบางประเภทในบัญชี ดังนั้น โทเค็นจึงแสดงด้วยตัวแปรค่าจำนวนเต็ม (uint) ใน Solidity และกระบวนการโอนโทเค็นระหว่างบัญชีต่างๆ จะดำเนินการโดยการบวกและการลบแบบดิจิทัล

ต่อไปนี้คือลอจิกการถ่ายโอน ERC20 ที่ใช้งานโดยใช้ Solidity "จากผู้ใช้" (นั่นคือ ผู้ส่งถ่ายโอนค่าของโทเค็นไปยัง "ไปยังผู้ใช้" (ผู้รับ) กระบวนการหลักคือ:

i. แมปยอดคงเหลือเริ่มต้นจากที่อยู่ผู้ส่ง (จาก) และกำหนดให้กับตัวแปร oldFromVal

ii. ต้องการให้ oldFromVal มากกว่ามูลค่า นั่นคือ ผู้ส่งมียอดคงเหลือเพียงพอ

iii. แมปยอดคงเหลือเริ่มต้นจากที่อยู่ผู้รับ (ถึง) และกำหนดให้กับตัวแปร oldToVal

iv. กำหนดค่า oldToVal + ให้กับ newToVal;

v. กำหนด oldFromVal — ค่าให้กับ newFromVal;

vi. ตั้งค่า newFromVal เป็นยอดคงเหลือใหม่ของที่อยู่ผู้ส่ง (จาก);

vii. ตั้งค่า newToVal เป็นยอดคงเหลือใหม่ของผู้รับ (ถึง)

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

อย่างไรก็ตาม โลกออนไลน์นั้นแตกต่างออกไป ตัวอย่างเช่น จะมีสถานการณ์ที่ยอดคงเหลือของ Bob เพิ่มขึ้น 10 แต่ยอดคงเหลือของ Alice ไม่เปลี่ยนแปลงหรือไม่? คำตอบคือใช่ เราทราบดีว่าพฤติกรรมบนเครือข่ายส่วนใหญ่อาศัยสัญญาอัจฉริยะ และสัญญาอัจฉริยะจะถูกดำเนินการโดยอัตโนมัติตามกฎที่กำหนดไว้ล่วงหน้า ย้อนกลับไปที่ตัวอย่างข้างต้น หากที่อยู่ต้นทางและปลายทางเหมือนกัน นั่นคือเมื่อส่งโทเค็นถึงตัวคุณเอง ตามลำดับของการดำเนินการโค้ด แม้ว่าค่าการโอนจะถูกลบออกจากที่อยู่ของผู้ส่งก่อน แต่ค่าของ newToVal จะถูกเขียนทับด้วยค่าของ newFromVal ในภายหลัง ส่งผลให้ยอดเงินในบัญชีเพิ่มขึ้น แต่ไม่มีการหักเงิน ได้ทำ. สิ่งนี้นำไปสู่ช่องโหว่ในการออกโทเค็นอย่างไม่จำกัด

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

ก) ทรัพยากรชั้นหนึ่ง — — ตระหนักถึงสินทรัพย์ดิจิทัล

เพื่อแก้ปัญหาข้างต้น Move กำหนดประเภทข้อมูลใหม่อย่างเฉพาะเจาะจงว่า First-class Resource สำหรับสินทรัพย์ดิจิทัล ซึ่งแปลตามตัวอักษรว่าทรัพยากรเป็นพลเมืองชั้นหนึ่ง ความหมายของพลเมืองชั้นหนึ่งนั้นเข้าใจง่าย กล่าวคือ ภาษาโปรแกรมควรถือเอาพลเมืองชั้นหนึ่งเป็นวัตถุชั้นหนึ่งที่จะโปรแกรม ส่วนทรัพยากร พูดสั้น ๆ ก็คือทรัพยากรที่มีอยู่อย่างจำกัด และสามารถสร้างมูลค่าได้ Move ทำตามแนวคิดนี้และสรุปข้อจำกัด 2 ข้อที่ทรัพยากรควรปฏิบัติตามเมื่อตั้งโปรแกรม ได้แก่ ความขาดแคลนและสิทธิ์ในการเข้าถึง

● ความขาดแคลน

ความขาดแคลนเป็นคุณสมบัติที่สำคัญของสินทรัพย์ที่มีมูลค่าทางกายภาพ เช่น ทองคำแท่งในโลกกายภาพ ไม่ว่าจะถูกหมุนเวียนไปตรงกลางกี่ครั้ง ทองคำแท่งนี้จะไม่เปลี่ยนจาก 1 เป็น 2 และจะไม่หายไปในทันที แต่ สินทรัพย์ดิจิทัลไม่มี ไม่มีความขาดแคลนทางกายภาพโดยเนื้อแท้ ดังนั้น Move เชื่อว่ากฎการคำนวณสินทรัพย์ดิจิทัลจะต้องบังคับใช้โปรแกรมที่ขาดแคลนนี้ กำหนดเงื่อนไขว่าอุปทานของสินทรัพย์ในระบบจะต้องมีจำกัด สินทรัพย์ไม่สามารถหายไปจากอากาศได้ ห้ามคัดลอกสินทรัพย์ที่มีอยู่ และการสร้างสินทรัพย์ใหม่ควรเป็นการดำเนินการที่ได้รับสิทธิพิเศษ วิธีการเขียนโปรแกรมที่กล่าวถึงในที่นี้หมายถึงความสามารถทางโครงสร้างทางไวยากรณ์ที่กำหนดโดย Move ประกอบด้วยแอตทริบิวต์ 4 รายการที่ย้ายบทคัดย่อสำหรับตัวแปรต่างๆ ซึ่งสามารถคัดลอก (คัดลอก) จัดทำดัชนี (คีย์) ทิ้ง (ปล่อย) และจัดเก็บ (จัดเก็บ) นักพัฒนาสามารถใช้ฟิลด์เหล่านี้ร่วมกันเพื่อให้ตัวแปรมีความสามารถที่แตกต่างกัน ควรสังเกตว่าเมื่อตัวแปรถูกประกาศเป็นประเภท Resource แล้ว ตัวแปรนั้นสามารถใช้ได้เฉพาะแอตทริบิวต์ของ Key และ Store และไม่สามารถเพิ่มลงใน Copy and Drop ด้วยวิธีนี้ Move รับประกันการขาดแคลนประเภททรัพยากรจากโครงสร้างไวยากรณ์ของโปรแกรม

● สิทธิ์การเข้าถึง

เจ้าของสินทรัพย์ควรสามารถปกป้องทรัพย์สินของตนผ่านนโยบายควบคุมการเข้าถึงบางประเภท เราทราบดีว่า Ethereum อาศัยกลไกลายเซ็นคีย์สาธารณะเป็นหลัก และ Move ได้จัดเตรียมระบบโมดูลใหม่บนพื้นฐานนี้ เราจะอธิบายโมดูลโดยละเอียดในภายหลัง ดังนั้นขอไม่แสดงไว้ที่นี่

โดยทั่วไป Move ใช้ทรัพยากรเพื่อสรุปแนวคิดของสินทรัพย์จากชั้นล่างสุด ทำให้สินทรัพย์ดิจิทัลกลายเป็นตัวแปรสัญญาอย่างแท้จริง ซึ่งไม่เพียงแต่สามารถจัดเก็บและกำหนดเท่านั้น แต่ยังใช้เป็นพารามิเตอร์และส่งคืนค่าของฟังก์ชัน/ขั้นตอนอีกด้วย ข้างต้นสะท้อนถึงกฎบังคับที่ Move ได้ทำขึ้นกับตัวแปรทรัพยากร ซึ่งรับประกันว่าสินทรัพย์จะไม่หายไปจากอากาศ และไม่สามารถคัดลอกได้โดยพลการ ซึ่งช่วยหลีกเลี่ยงความเสี่ยงด้านความปลอดภัย เช่น การคัดลอกไม่จำกัดจำนวนที่กล่าวถึงข้างต้นและช่องโหว่การออกเพิ่มเติมได้เป็นอย่างดี

b) โมดูล — — ใช้การควบคุมการอนุญาตและความสามารถในการจัดองค์ประกอบ

โมดูลคือโมดูลซึ่งคล้ายกับ Mod ใน Rust และ Contract ใน Solitidy มันสามารถประกาศชุดของประเภทข้อมูลและฟังก์ชันภายใน รวมถึง Resource, Struct และ Function ทั้ง Struct และ Resource ใช้เพื่อกำหนดประเภทโครงสร้างข้อมูลใหม่ ข้อแตกต่างคือ Resource ไม่สามารถคัดลอกและทิ้งได้ สำหรับฟังก์ชัน Function จะคล้ายกับภาษาอื่นๆ ส่วนใหญ่ และสามารถใช้เพื่อสร้าง ทำลาย และปรับปรุงประเภทที่ประกาศในโมดูล โดยรวมแล้วโมดูลมีลักษณะดังต่อไปนี้:

●นามธรรมข้อมูลที่แข็งแกร่ง

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

●ความยืดหยุ่นและความไร้สัญชาติ

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

c) ระบบกรรมสิทธิ์ - ตระหนักถึงความเป็นเจ้าของทรัพย์สิน

แนวคิดนี้สืบทอดมาจาก Rust ซึ่งกำหนดความเป็นเจ้าของดังนี้:

1. แต่ละค่ามีตัวแปรที่เกี่ยวข้องซึ่งเรียกว่าเจ้าของ

2. มูลค่ามีเจ้าของเพียงรายเดียวได้ตลอดเวลา

3. เมื่อเจ้าของอยู่นอกขอบเขต ค่าจะถูกยกเลิก

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

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

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

ชื่อเรื่องรอง

2.2 เครื่องเสมือน: Runtime Bytecode Verifier — — ค้นหาช่องโหว่ระหว่างการดำเนินการ

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

ปัจจุบัน เวอร์ชวลแมชชีนเป็นหนึ่งในการนำสัญญาอัจฉริยะมาใช้ในกระแสหลัก และ Move ก็ไม่มีข้อยกเว้น สามารถให้โปรแกรมที่มีสภาพแวดล้อมการดำเนินการที่โปร่งใสอย่างสมบูรณ์จนถึงเลเยอร์ล่างสุด และจุดประสงค์ของโปรแกรมคือเพื่อตระหนักถึงคุณลักษณะของ "เขียนครั้งเดียว เรียกใช้ทุกที่" แทนที่จะอนุญาตให้นักพัฒนาโปรแกรมเขียนโปรแกรมเวอร์ชันต่างๆ เพื่อให้เข้ากันได้กับแต่ละเซิร์ฟเวอร์ที่แตกต่างกัน เหตุผลในการออกแบบนี้คือ Smart Contract ทำงานในสภาพแวดล้อมของระบบแบบกระจายซึ่งต้องการ Byzantine Fault Tolerance เพื่อให้บรรลุฉันทามติ โหนดทั้งหมดต้องสร้างผลการคำนวณที่เหมือนกันตามกฎที่ระบุไว้ใน Smart Contract มิฉะนั้น ผลลัพธ์ของสัญญา แต่ละโหนดไม่สามารถเข้าถึงการประมวลผล ฉันทามติ ; ในขณะที่เครื่องเสมือนสามารถป้องกันความแตกต่างในสภาพแวดล้อมการดำเนินการของโหนด blockchain เองและทำงานอย่างสม่ำเสมอบนโหนดทั้งหมดโดยตระหนักถึงความแน่นอนของสัญญาอัจฉริยะ

Move virtual machine เป็นตัวแปล bytecode ตามสแต็กทั่วไป อินพุตคือ bytecode บวกสถานะโลกปัจจุบัน และเอาต์พุตคือการเปลี่ยนแปลงสถานะโลก มีชุดคำสั่งอิสระเพื่อดำเนินการและประมวลผลระบบทั้งหมด เมื่อสถานะเปลี่ยน ผู้ใช้สามารถค้นหาความหมายที่สอดคล้องกันของคำสั่งในตารางเปรียบเทียบ bytecode ที่จัดทำโดย Move

●เวิร์กโฟลว์

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

ข้อผิดพลาดประเภทที่อาจเกิดขึ้นเมื่อตรวจสอบซอร์สโค้ดผ่านกระบวนการนี้ส่วนใหญ่ประกอบด้วย:

ผม. กองตรวจสอบนอกขอบเขต ตรวจสอบขอบเขตของแต่ละฟังก์ชันเพื่อเข้าถึงโอเปอเรเตอร์สแต็กและดูว่าความสูงของสแต็กนั้นถูกต้องหรือไม่ สแต็กในที่นี้ คือบล็อกคำสั่ง (บล็อกพื้นฐาน) ของแต่ละไบต์โค้ดที่สร้างขึ้นโดยตัวตรวจสอบไบต์โค้ด

ii ตรวจสอบประเภท & ชนิด ตรวจสอบว่าประเภทเฉพาะของตัวแปรในสแต็กการสืบทอดนั้นถูกต้องหรือไม่ ตัวอย่างเช่น คลาสสแต็กไม่สามารถใช้ CopyLoc bytecode สำหรับตัวแปรประเภททรัพยากรได้

iii. การตรวจสอบการอ้างอิง เพื่อป้องกันการอ้างอิงที่ห้อย การอ้างอิงแต่ละรายการต้องชี้ไปยังตำแหน่งที่จัดเก็บที่จัดสรรไว้

EVM เป็นสภาพแวดล้อมแซนด์บ็อกซ์แบบแยกและกำหนดได้ซึ่งสร้างขึ้นโดยโหนดลูกโซ่สำหรับสัญญาอัจฉริยะ โปรแกรมสัญญาหลายโปรแกรมทำงานในแซนด์บ็อกซ์ของเครื่องเสมือนที่แตกต่างกันในกระบวนการเดียวกัน ซึ่งหมายความว่าการโทรระหว่างสัญญา Ethereum เป็นการเรียกระหว่างเครื่องเสมือนสัญญาอัจฉริยะที่แตกต่างกันในกระบวนการเดียวกัน และความปลอดภัยขึ้นอยู่กับการแยกระหว่างเครื่องเสมือนสัญญาอัจฉริยะ

เครื่องเสมือน Move รองรับการดำเนินการแบบขนาน การเรียกระหว่างสัญญาจะอยู่ที่ส่วนกลางใน Sandbox ภายใต้สถาปัตยกรรมนี้ ความปลอดภัย ของสถานะของสัญญาจะถูกแยกออกเป็นหลักผ่านการรักษาความปลอดภัยภายในของภาษาโปรแกรม

ชื่อเรื่องรอง

2.3 Off-Chain Tools: การยืนยันอย่างเป็นทางการ — ค้นหาช่องโหว่ก่อนดำเนินการ

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

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

● การโทรแบบคงที่

เป็นมูลค่าการกล่าวขวัญว่า Move Prover เป็นเครื่องมือตรวจสอบแบบคงที่ เนื่องจาก Move ไม่รองรับการโทรแบบไดนามิกเลยจากการออกแบบกลไก การโทรแบบไดนามิกหมายความว่าหากโปรแกรมเรียกโปรแกรมอื่น เป้าหมายของการโทรจะต้องถูกกำหนดที่รันไทม์ ดังนั้นการเรียกสัญญาประเภทนี้จึงเรียกว่าไดนามิก จากมุมมองของกลไก มันค่อนข้างคล้ายกับการโทรระยะไกลของเซิร์ฟเวอร์ อย่างไรก็ตาม การโทรแบบไดนามิกอาจทำให้เกิดปัญหาพร้อมกันได้เมื่อเรียกใช้แบบวนซ้ำ ตัวอย่างเช่น สัญญา A เรียกสัญญา B และสัญญา B เรียกสัญญา A การดำเนินการตามสัญญา A ก่อนหน้านี้ไม่เสร็จสมบูรณ์และการดำเนินการครั้งต่อไปจะดำเนินการ ส่งผลให้การดำเนินการที่ตามมาล้มเหลวในการอ่านสถานะขั้นกลางก่อนหน้า ซึ่งนำไปสู่ ช่องโหว่ด้านความปลอดภัย อุบัติเหตุ The DAO อันโด่งดังเกิดจากปัญหาของสัญญาไดนามิกคอล ดังนั้น ในการออกแบบ Move การเรียกใช้ฟังก์ชันแต่ละครั้งจะเป็นแบบคงที่ และนักพัฒนาสามารถทราบได้ว่าฟังก์ชันใดที่เรียกใช้ตามลำดับที่แน่นอนก่อนที่โปรแกรมจะทำงาน ระบบประเภทสแตติกประเภทนี้เหมาะสมกว่าสำหรับการให้เหตุผลผ่านการตรวจสอบอย่างเป็นทางการ และเปิดเผยปัญหาก่อนขั้นตอนการคอมไพล์ เพื่อลดความเป็นไปได้ของบั๊กขณะรันไทม์ และแบ่งปันแรงกดดันจากการตรวจสอบความปลอดภัย

ชื่อระดับแรก

3. สรุปและ Outlook

หากการเปลี่ยนจาก Bitcoin Script เป็น Ethereum Solidity เป็นการเปลี่ยนแปลงความสามารถในการแสดงออกของสัญญา การเปลี่ยนจาก Solidity เป็น Move จะเป็นวิวัฒนาการของความสามารถในการรักษาความปลอดภัยของสัญญา ดังนั้นมูฟยังได้รับความไว้วางใจจากความคาดหวังของตลาดที่สูงขึ้น

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

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

อ้างอิง

1. https://diem-developers-components.netlify.app/papers/diem-move-a-language-with-programmable-resources/2020-05-26.pdf

2. https://move-book.com/cn/index.html

3. https://move-dao.github.io/move-book-zh/modules-and-scripts.html

4. https://jolestar.com/why-move-1/

5.https://mirror.xyz/0xbuidlerdao.eth/MePeSGYe63OX8xXb8IwIrXzGk_S606NG7SR879XMXRE

6. https://mp.weixin.qq.com/s/bSS9GAcVp6tuWjedpTysQw

7. https://starcoin.org/zh/developers/others/starcoin_ecology/

8. https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/virtual_machine/evm.html

9. https://doc.rust-lang.org/book/

10. https://solidity-cn.readthedocs.io/zh/develop/

ชื่อระดับแรก

เว็บไซต์อย่างเป็นทางการ:

ติดต่อเรา:

อีเมลให้คำปรึกษา: research@huobi.com

เว็บไซต์อย่างเป็นทางการ:https://research.huobi.com/

Twitter: Huobi_Research

https://twitter.com/Huobi_Research

Medium: Huobi Research

https://medium.com/huobi-research

Telegram: Huobi Research

https://t.me/HuobiResearchOfficial

ข้อจำกัดความรับผิดชอบ

1. Huobi Blockchain Research Institute ไม่มีความสัมพันธ์ใด ๆ กับโครงการหรือบุคคลที่สามอื่น ๆ ที่เกี่ยวข้องกับรายงานนี้ ซึ่งอาจส่งผลกระทบต่อความเป็นกลาง ความเป็นอิสระ และความเป็นกลางของรายงาน

2. เนื้อหาและข้อมูลที่อ้างถึงในรายงานนี้ทั้งหมดมาจากช่องทางที่สอดคล้องกัน Huobi Blockchain Research Institute พิจารณาแหล่งที่มาของข้อมูลและแหล่งข้อมูลที่เชื่อถือได้ สถาบันวิจัยไม่รับประกันความถูกต้อง ความถูกต้อง หรือความสมบูรณ์ใดๆ

3. เนื้อหาของรายงานมีไว้สำหรับอ้างอิงเท่านั้น และข้อสรุปและความคิดเห็นในรายงานไม่ถือเป็นคำแนะนำในการลงทุนใด ๆ ในสินทรัพย์ดิจิทัลที่เกี่ยวข้อง Huobi Blockchain Research Institute จะไม่รับผิดชอบต่อความสูญเสียใดๆ ที่เกิดขึ้นจากการใช้เนื้อหาของรายงานนี้ เว้นแต่กฎหมายและข้อบังคับจะกำหนดไว้อย่างชัดเจน ผู้อ่านไม่ควรตัดสินใจลงทุนโดยอิงจากรายงานนี้เพียงอย่างเดียว และไม่ควรสูญเสียความสามารถในการตัดสินใจอย่างเป็นอิสระจากรายงานนี้

4. ข้อมูล ความคิดเห็น และการคาดคะเนในรายงานนี้สะท้อนถึงวิจารณญาณของผู้วิจัย ณ วันที่สรุปรายงานนี้เท่านั้น ในอนาคต ตามการเปลี่ยนแปลงของอุตสาหกรรมและการอัปเดตข้อมูล ข้อมูล มีความเป็นไปได้ในการปรับปรุงความคิดเห็นและการตัดสิน .

3. เนื้อหาของรายงานมีไว้สำหรับอ้างอิงเท่านั้น และข้อสรุปและความคิดเห็นในรายงานไม่ถือเป็นคำแนะนำในการลงทุนใด ๆ ในสินทรัพย์ดิจิทัลที่เกี่ยวข้อง Huobi Blockchain Research Institute จะไม่รับผิดชอบต่อความสูญเสียใดๆ ที่เกิดขึ้นจากการใช้เนื้อหาของรายงานนี้ เว้นแต่กฎหมายและข้อบังคับจะกำหนดไว้อย่างชัดเจน ผู้อ่านไม่ควรตัดสินใจลงทุนโดยอิงจากรายงานนี้เพียงอย่างเดียว และไม่ควรสูญเสียความสามารถในการตัดสินใจอย่างเป็นอิสระจากรายงานนี้

Aptos
Sui
นักพัฒนา
สัญญาที่ชาญฉลาด
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android