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

-- พื้นหลัง--

ในปัจจุบัน วิธีการเข้าถึงของแพลตฟอร์ม blockchain cross-chain ค่อนข้างแตกต่างกันในแง่ของการออกแบบสถาปัตยกรรม วิธีการเชื่อมต่อ application chain กับระบบ cross-chain อย่างรวดเร็วและสะดวกเป็นปัญหาเร่งด่วนที่ต้องแก้ไข แพลตฟอร์มบริการข้ามสายโซ่ของ BitXHub ใช้โซลูชันข้ามสายโซ่ของรีเลย์เชน + เกตเวย์ ซึ่งเกตเวย์ข้ามสายมีบทบาทในการรวบรวมและเผยแพร่ธุรกรรมระหว่างบล็อกเชน การออกแบบกลไกปลั๊กอินจะแยกโมดูลที่โต้ตอบระหว่างเกตเวย์ (Pier) และห่วงโซ่แอ็พพลิเคชันออกจากโมดูลฟังก์ชันหลักของเกตเวย์แบบครอสเชน เพื่อให้สามารถเชื่อมต่อแอ็พพลิเคชันเชนประเภทต่างๆ กับครอส-เชนได้อย่างมีประสิทธิภาพ ระบบโซ่. เมื่อ Pier กำลังทำงาน การปรับเปลี่ยนที่ยืดหยุ่นของห่วงโซ่แอปพลิเคชันต่างๆ จะเสร็จสมบูรณ์โดยการโหลดปลั๊กอินแบบไดนามิก เพื่อปรับปรุงการโต้ตอบระหว่าง Pier และ application chain ให้ดีขึ้น ปลั๊กอินของ application chain เฉพาะจำเป็นต้องใช้อินเทอร์เฟซเฉพาะตามลักษณะของ blockchains ต่าง ๆ อินเทอร์เฟซการโต้ตอบต้องเป็นไปตามฟังก์ชันต่อไปนี้:

1) ตรวจสอบเหตุการณ์ข้ามสายโซ่บนห่วงโซ่แอปพลิเคชันและส่งต่อไปยังโมดูลหลักสำหรับการประมวลผล

2) ดำเนินการคำขอข้ามเชนจากเกตเวย์ (จากแอพพลิเคชั่นเชนอื่น ๆ );

3) ความสามารถในการค้นหาสถานะของคำขอข้ามสายโซ่ที่ได้รับและดำเนินการในสายแอปพลิเคชัน

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

—— ปลั๊กอินเนทีฟ ——

ภาษา go รองรับการคอมไพล์เป็นปลั๊กอินจากเวอร์ชั่น 1.13 และการใช้งานมีดังนี้

  • go build --buildmode=plugin -o appchain.so *.go

โครงการ go สามารถระบุเป็นโหมดปลั๊กอินผ่าน --buildmode เมื่อคอมไพล์ และเอาต์พุตจะเป็นไฟล์ลิงก์แบบไดนามิกด้วยวิธีนี้ ไฟล์นี้ไม่ใช่ไฟล์ไบนารีที่สามารถเรียกใช้ได้โดยตรง แต่เป็นการเรียกแบบไดนามิกที่จัดเตรียมให้กับไบนารีรันไทม์อื่นๆ

ใช้ในไบนารีหลักดังนี้:

ข้อได้เปรียบ:

ข้อได้เปรียบ:

1) ประสบการณ์ของผู้ใช้สอดคล้องกับรหัสเนทีฟ คล้ายกับไบนารีของโมดูลรหัส

ข้อบกพร่อง:

ข้อบกพร่อง:

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

—— เปลี่ยนเป็นปลั๊กอิน RPC ——

ข้อจำกัดของเวอร์ชันที่เข้มงวดในปลั๊กอินเนทีฟทำให้เป็นไปได้ว่าเมื่ออัปเกรดฟังก์ชันหลักของโปรแกรมหลักปลั๊กอินและ/หรือเกตเวย์ การพึ่งพาบางอย่างของโปรแกรมหลักอาจได้รับการอัปเกรดโดยไม่ได้ตั้งใจ และปลั๊กอินต้องทำการปรับแบบเดียวกันด้วย อัปเกรด วิธีนี้ไม่เอื้อต่อการแยกปลั๊กอินทั้งหมด เราจึงหันไปใช้โปรเจ็กต์ปลั๊กอิน GO อื่นที่ใช้ RPC (ที่อยู่ GitHub ของโครงการ: https://github.com/hashicorp/go-plugin)

go-plugin ของ Hashicorp มีอยู่แล้วก่อนที่กลไกปลั๊กอินเนทีฟของ GO จะปรากฏขึ้น แต่หลังจากปลั๊กอินเนทีฟของ GO ออกมา พวกเขาไม่ได้เลิกสนับสนุนโครงการ เพราะโดยทั่วไปแล้ว ปลั๊กอินเนทีฟไม่ใช่ สมบูรณ์แบบมาก ในบางสถานการณ์ go-plugin จะสะดวกกว่า

ปลั๊กอิน go-plugin ใช้ดังนี้:

วิธีปลั๊กอินที่ใช้โดยโครงการ go-plugin ใช้โหมด C/S โปรแกรมหลักใช้เป็น RPC Client และปลั๊กอินเฉพาะใช้เป็น RPC Server การสื่อสารระหว่างเซิร์ฟเวอร์และ ไคลเอนต์ยังขึ้นอยู่กับข้อกำหนดของอินเทอร์เฟซ

ขั้นตอนการใช้งานเฉพาะมีดังนี้:

1) Abstraction ต้องการอินเทอร์เฟซปลั๊กอิน ที่นี่ คำจำกัดความอินเทอร์เฟซที่ใช้ในปลั๊กอินเนทีฟสามารถนำมาใช้ซ้ำได้โดยตรง

2) ทั้งไคลเอนต์และเซิร์ฟเวอร์ใช้อินเทอร์เฟซข้างต้น การใช้งานฝั่งเซิร์ฟเวอร์คือรหัสสำหรับตรรกะการประมวลผลปลั๊กอินเฉพาะ การใช้งานฝั่งไคลเอนต์จำเป็นต้องสรุปผลการประมวลผล gRPC และข้อมูลข้อยกเว้นเท่านั้น จากนั้นโปรแกรมหลักจะรับรู้ gRPC เพียงเล็กน้อยเมื่อใช้ปลั๊กอิน ใน.

ส่วนการใช้งานเซิร์ฟเวอร์:

ส่วนการใช้งานไคลเอนต์:

▲ควรให้ความสนใจเพิ่มเติมกับ:

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

  • โปรแกรมหลักใช้วัตถุ plugin.Client เพื่อเริ่มการทำงานของปลั๊กอิน ซึ่งทำงานในกระบวนการอื่น ดังนั้นการหยุดทำงานของปลั๊กอินจะไม่ส่งผลกระทบต่อโปรแกรมหลัก

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

-- บทสรุป--

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

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

ทีม FunChain Technology Data Grid Lab BitXHub

ทีม FunChain Technology Data Grid Lab BitXHub

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