
CKB का vm, ओपन सोर्स RISC-V ISA पर आधारित
CKB VM, RISC-V निर्देश सेट का एक शुद्ध सॉफ़्टवेयर कार्यान्वयन है जिसका उपयोग CKB में स्क्रिप्टिंग VM के रूप में किया जाता है। अभी यह 32-बिट और 64-बिट रजिस्टर आकार समर्थन दोनों के लिए पूर्ण IMCB निर्देशों को लागू करता है। भविष्य में हम बेहतर क्रिप्टो कार्यान्वयन को सक्षम करने के लिए V एक्सटेंशन भी लागू कर सकते हैं।
Nervos CKB MIT लाइसेंस की शर्तों के तहत जारी किया गया है। अधिक जानकारी के लिए COPYING देखें या https://opensource.org/licenses/MIT देखें।
यह अब प्रोडक्शन CKB मेननेट में तैनात और उपयोग किया जा रहा है।
develop ब्रांच नियमित रूप से बनाई और परीक्षण की जाती है, लेकिन पूरी तरह से स्थिर होने की गारंटी नहीं है। CKB, CKB VM के रिलीज़ किए गए संस्करणों का उपयोग करेगा जो परीक्षण किए गए और अधिक स्थिर हैं।
योगदान कार्यप्रवाह CONTRIBUTING.md में वर्णित है, और सुरक्षा नीति SECURITY.md में वर्णित है। Nervos के लिए नया प्रोटोकॉल या मानक प्रस्तावित करने के लिए, Nervos RFC देखें।
CKB VM वर्तमान में मुख्य रूप से 64-बिट Linux, macOS और Windows पर stable Rust संस्करण के साथ परीक्षण किया जाता है।
# download CKB VM
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build
आप परीक्षण भी चला सकते हैं:
make test
CKB VM में पहले से ही परीक्षणों में उपयोग किए जाने वाले RISC-V बाइनरी शामिल हैं, इसलिए आपको बाइनरी बनाने के लिए RISC-V कंपाइलर की आवश्यकता नहीं है। हालांकि यदि आप अपने स्वयं के बाइनरी के साथ प्रयोग करना चाहते हैं, तो RISC-V कंपाइलर की आवश्यकता हो सकती है। riscv-tools यहाँ एक अच्छा प्रारंभिक बिंदु हो सकता है, या यदि आप GNU टूलचेन के विशेषज्ञ हैं, तो आप RISC-V समर्थन के साथ स्रोत से अपस्ट्रीम GCC भी संकलित कर सकते हैं, यहाँ एक उदाहरण है। CKB VM मानक RISC-V निर्देशों और ELF बाइनरी प्रारूप का उपयोग कर रहा है, इसलिए सैद्धांतिक रूप से कोई भी RISC-V संगत कंपाइलर CKB VM में उपयोग किए जाने वाले अनुबंधों का उत्पादन करने में सक्षम है (हालांकि यदि आपको कोई टूट-फूट मिलती है तो बग रिपोर्ट का स्वागत है)।
अभी CKB VM के 2 अलग-अलग मोड हैं:
सुसंगत व्यवहार के लिए, आपको केवल ASM मोड का उपयोग करना चाहिए। Rust मोड मुख्य रूप से विकास में सहायता के लिए विकसित किया गया है, और हमारे द्वारा प्रोडक्शन में कभी उपयोग नहीं किया जाता है। बग की स्थिति में, Rust मोड और ASM मोड के बीच असंगत व्यवहार हो सकते हैं।