คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
[คอลัมน์เครื่องเสมือน] ทำความเข้าใจกับการประยุกต์ใช้สัญญาอัจฉริยะของสนิมในสามนาที
趣链科技 QTech
特邀专栏作者
2021-09-02 09:44
บทความนี้มีประมาณ 2655 คำ การอ่านทั้งหมดใช้เวลาประมาณ 4 นาที
แม้ว่าประสิทธิภาพของ HVM จะได้รับการปรับปรุงอย่างมากเมื่อเทียบกับ EVM แต่เนื่องจากจำนวนไบต์

【แนะนำ】

ในประเด็นก่อนหน้าของ "อดีตและปัจจุบันของ Smart Contract Execution Engines" และ "A Familiar New Friend - On-Chain JVM" เราได้แนะนำที่มาของ Smart Contract และ HVM ของเครื่องมือดำเนินการที่พัฒนาขึ้นเองซึ่งสามารถดำเนินการ Java Smart Contract ได้ แม้ว่าประสิทธิภาพของ HVM จะได้รับการปรับปรุงอย่างมากเมื่อเทียบกับ EVM แต่เนื่องจากจำนวนไบต์จำนวนมาก ประสิทธิภาพการดำเนินการในสถานการณ์จำลองการดำเนินการตีความจึงถูกจำกัดอย่างมาก ในทางกลับกัน ปัญหาด้านความปลอดภัยที่เกิดจากช่องโหว่ของสัญญา (โดยไม่คำนึงถึงช่องโหว่ของตรรกะทางธุรกิจ) เกิดขึ้นทุกปี ทำให้เกิดการสูญเสียทางเศรษฐกิจอย่างร้ายแรง มีวิธีแก้ปัญหาที่ช่วยให้ผู้ใช้สามารถทิ้งปัจจัยส่วนตัวและเขียนสัญญาที่ปลอดภัยได้มากที่สุดหรือไม่?

เพื่อแก้ปัญหาเร่งด่วนทั้งสองนี้ เราได้แนะนำ Wasm Virtual Machine FVM และเฟรมเวิร์กการเขียนสัญญาของ Rust บทความต่อไปนี้จะแนะนำการประยุกต์ใช้สองส่วนนี้ในด้านของสัญญาอัจฉริยะโดยละเอียด

【ความปลอดภัย】

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

สนิมในฐานะภาษาสำหรับใช้งานทั่วไปที่มีประสิทธิภาพและเชื่อถือได้คือทางออกที่ดีที่สุดอย่างไม่ต้องสงสัย

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

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

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

【ประสิทธิผล】

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

WASM (WebAssembly) หมายถึงเว็บแอสเซมบลีอย่างแท้จริง ซึ่งเป็นภาษาแอสเซมบลีที่ปรับแต่งสำหรับเว็บเบราว์เซอร์ แม้ว่าจะมีการกล่าวถึงการปรับแต่งที่นี่ แต่ด้วยการพัฒนาของจิตวิญญาณ มันไม่ได้ใช้ได้กับเว็บเท่านั้น และ "ข้อมูลจำเพาะหลัก" ของมันไม่มีส่วนเกี่ยวข้องกับแพลตฟอร์ม เนื่องจากเรียกว่าแอสเซมบลีจึงมีลักษณะเฉพาะของภาษาแอสเซมบลี:

1) ระดับต่ำ ใกล้กับภาษาเครื่อง ปรับปรุงประสิทธิภาพการทำงาน

2) เหมาะเป็นรหัสออบเจ็กต์ที่สร้างโดยคอมไพเลอร์ภาษาระดับสูงอื่น ๆ (C/C++/Rust/Go ฯลฯ) เพื่อขยายการบังคับใช้

นอกจากนี้ โมดูลยังเป็นหน่วยของการรวบรวม การส่ง และการโหลดโปรแกรม wasm wasm กำหนดรูปแบบโมดูลสองรูปแบบ:

รูปแบบไบนารี: เป็นรูปแบบการเข้ารหัสหลักของโมดูล wasm และไฟล์ต่อท้ายด้วย .wasm เนื่องจากการออกแบบรูปแบบที่กะทัดรัดมาก จึงสามารถลดขนาดไบนารีได้ และมีประสิทธิภาพการส่งและดำเนินการที่เร็วขึ้น

รูปแบบข้อความ: ไฟล์นี้ต่อท้ายด้วย .wat และจะไม่ขยายรายละเอียดที่นี่

การแบ่งโมดูลทำให้โครงสร้างองค์กรของ Wasm ชัดเจนขึ้น การวิเคราะห์สะดวกยิ่งขึ้น และประสิทธิภาพของการวิเคราะห์ดีขึ้นมาก

[คำอธิบายโดยละเอียดของ FVM]

ดังนั้น นอกเหนือจากการใช้ Rust เพื่อเขียนสัญญาและคอมไพล์สัญญาเป็น wasm bytecode เพื่อเรียกใช้สัญญาจริงแล้ว ยังจำเป็นต้องจัดเตรียมสภาพแวดล้อมการทำงานสำหรับ wasm ซึ่งเป็นสิ่งที่ FVM ทำ

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

(1) องค์ประกอบของ FVM

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

ข้อความ

ข้อความ

(3) กระบวนการโดยรวม

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

ขั้นตอนที่ 1: ผู้ใช้เขียนสัญญาอัจฉริยะผ่านกรอบสัญญาสนิม (ต้องทดสอบ)

ขั้นตอนที่ 2: รวบรวมสัญญาเป็นไฟล์ wasm

ขั้นตอนที่ 3: ปรับใช้ไฟล์สัญญา wasm กับ FVM

หลังจากทำตามขั้นตอนข้างต้นเสร็จสิ้น คุณก็ทำสัญญาได้สำเร็จ❤

ข้อความ

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

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

1) การเพิ่มประสิทธิภาพของแคชเครื่องเสมือน

2) แนะนำ AOT (Ahead-of-Time) นั่นคือวิธีการคอมไพล์ล่วงหน้า แทนที่การตีความและการดำเนินการ bytecode ที่มีอยู่ คอมไพล์โมดูล wasm ลงในโค้ด go โดยตรง ใช้กลไกปลั๊กอินของ go เพื่อโหลดโดยตรง และเรียกใช้และรับประสบการณ์ประสิทธิภาพขั้นสูงสุด

เทคโนโลยีนำเสนอสิ่งใหม่ ๆ อย่างต่อเนื่องและงานเพิ่มประสิทธิภาพจะดำเนินต่อไป "ก้าวไปข้างหน้า" คือเป้าหมายของเรา

【สรุป】

เกี่ยวกับผู้เขียน

เกี่ยวกับผู้เขียน

ลี่ไค

อ้างอิง

อ้างอิง

[1] ภาษาโปรแกรมสนิม

[2] "หลักการ WebAssembly และเทคโนโลยีหลัก"


สัญญาที่ชาญฉลาด
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
แม้ว่าประสิทธิภาพของ HVM จะได้รับการปรับปรุงอย่างมากเมื่อเทียบกับ EVM แต่เนื่องจากจำนวนไบต์
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android