ओन्टोलॉजी पर पायथन के साथ एक स्मार्ट अनुबंध कैसे लिखें? भाग 4: मूल निवासी एपीआई

छवि

इससे पहले, मैंने ओंटोलॉजी स्मार्ट कॉन्ट्रैक्ट पेश किया है
भाग 1: ब्लॉकचेन और ब्लॉक एपीआई और
भाग 2: भंडारण एपीआई
भाग 3: रनटाइम एपीआई
आज, आइए मूल निवासी के माध्यम से एक ओटोलोजी देशी स्मार्ट अनुबंध को कैसे लागू करें। देशी अनुबंध को लागू करने के सबसे विशिष्ट कार्यों में से एक संपत्ति हस्तांतरण है।

परिचय


नेटिव एपीआई में केवल एक एपीआई होता है। जब आप इनवोक फ़ंक्शन का उपयोग करते हैं, तो आपको मापदंडों को एन्कोड करने में मदद करने के लिए अंतर्निहित राज्य फ़ंक्शन का उपयोग करने की आवश्यकता होती है। कार्यों का उपयोग करने के बारे में जानने के लिए नीचे देखें।

छवि

अब आइए इन 2 एपीआई का उपयोग करने के तरीके के बारे में अधिक विस्तार से जाने। इससे पहले, आप ओन्टोगोलॉजी स्मार्ट अनुबंध विकास उपकरण स्मार्टएक्स में एक नया अनुबंध बना सकते हैं और नीचे दिए गए निर्देशों का पालन कर सकते हैं। हमेशा की तरह, लेख के अंत में, मैं स्रोत कोड का लिंक प्रदान करूंगा।

नेटिव एपीआई का उपयोग कैसे करें


हमेशा की तरह, आपको इनका उपयोग करने से पहले 2 फ़ंक्शन आयात करने की आवश्यकता है।

from ontology.interop.Ontology.Native import Invoke from ontology.builtins import state 

ओन्टोलोजी नेटिव कॉन्ट्रैक्ट की सूची


वर्तमान में डेवलपर्स के लिए 6 ओन्टोलॉजी देशी अनुबंध उपलब्ध हैं। नीचे 6 मूल अनुबंधों की सूची दी गई है, जिन्हें मूल निवासी द्वारा लागू किया जा सकता है।

छवि

अनुबंध में, आपको केवल अनुबंध के पते को एक बायट्रेयर प्रारूप में बदलना होगा और इसे लागू करना होगा।

उदाहरण के लिए , जब आपको ONT टोकन अनुबंध को कॉल करने की आवश्यकता होती है, तो आप पहले ONT टोकन अनुबंध के पते को bytearray प्रारूप में परिवर्तित कर सकते हैं, और फिर Invoke फ़ंक्शन को कॉल कर सकते हैं। इनवोक फ़ंक्शन को कॉल करते समय, आयातित पैरामीटर संस्करण संख्या, अनुबंध पता, अनुबंध विधि, और ट्रांसफर-संबंधित पैरामीटर राज्य फ़ंक्शन द्वारा एनकैप्सुलेट किए जाते हैं।

यहां ध्यान देने वाली एक विशेष बात यह है कि ओएनजी के लिए एक अनुबंध हस्तांतरण करते समय भरी गई मात्रा वास्तविक मात्रा का 10 to गुना है। यही है, अगर आपको 10 ओएनजी को स्थानांतरित करने की आवश्यकता है, तो मात्रा को 10¹⁰ में भरना होगा। स्थानांतरण के लिए ONTO या साइनो जैसे वॉलेट का उपयोग करते समय, आपके द्वारा दर्ज की जाने वाली मात्रा हस्तांतरण राशि है।

 contract_address_ONT = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01') param = state(from_acct, to_acct, ont_amount) res = Invoke(1, contract_address_ONT, 'transfer', [param]) 

अनुबंध कोड स्थानांतरण


नीचे हम ONT और ONG को स्थानांतरित करने के लिए पायथन का उपयोग करने का एक विस्तृत उदाहरण देते हैं। नीचे दिए गए कोड में, आयातित भेजने वाले खाते का पैरामीटर प्रकार और पता प्राप्त करना एक स्ट्रिंग है। इसके अलावा, यह एक खाता पैरामीटर प्रकार के पते के साथ भी दिया जा सकता है, जिससे अनुबंध को लागू करने के लिए गैस शुल्क की बचत होती है। प्रक्रिया इस प्रकार है:

  1. कॉन्ट्रैक्ट एड्रेस वैरिएबल contract_address_ONT और contract_address_ong परिभाषित करें;
  2. बेस 58 प्रारूप से भेजने और प्राप्त करने के पते को बाईटियर प्रारूप में परिवर्तित करें;
  3. हस्ताक्षर की पुष्टि करें और पुष्टि करें कि भेजने का पता अनुबंध के पते के समान है;
  4. राज्य फ़ंक्शन हस्तांतरण से संबंधित मापदंडों को इनकैप्सुलेट करता है;
  5. इनवोक फ़ंक्शन ट्रांसफर के लिए ONT टोकन और ONG टोकन देशी अनुबंध कहता है;
  6. यह निर्धारित करें कि क्या रेज को वापस करके स्थानांतरण सफल था। यदि रिटर्न वैल्यू b '\ x01' है, तो ट्रांसफ़र सफल है और ईवेंट "ट्रांसफ़र सफ़ल" को बाहर धकेल दिया जाएगा।

 from ontology.interop.System.Runtime import Notify, CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress from ontology.interop.Ontology.Native import Invoke from ontology.builtins import state # contract address contract_address_ONT = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01') contract_address_ONG = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02') def Main(operation, args): if operation == 'transfer': from_acct = args[0] to_acct = args[1] ont_amount = args[2] ong_amount = args[3] return transfer(from_acct,to_acct,ont_amount,ong_amount) return False def transfer(from_acct, to_acct, ont_amount, ong_amount): # convert base58 address to address in the form of byte array from_acct=Base58ToAddress(from_acct) to_acct=Base58ToAddress(to_acct) # check whether the sender is the payer if CheckWitness(from_acct): # transfer ONT if ont_amount > 0: param = state(from_acct, to_acct, ont_amount) res = Invoke(1, contract_address_ONT, 'transfer', [param]) if res and res == b'\x01': Notify('transfer succeeded') else: Notify('transfer failed') # transfer ONG if ong_amount > 0: param = state(from_acct, to_acct, ong_amount) res = Invoke(1, contract_address_ONG, 'transfer', [param]) if res and res == b'\x01': Notify('transfer succeeded') else: Notify('transfer failed') else: Notify('CheckWitness failed') 

स्मार्टएक्स पर अभ्यास करें


आप नीचे दिए गए चरणों का अनुसरण करके SmarX पर ऊपर दिए गए कोड नमूने को संकलित और चला सकते हैं:

  • अनुबंध संकलित करें। सबसे पहले, स्मार्टएक्स पर एक प्रोजेक्ट बनाएं और इस प्रोजेक्ट में कोड संकलित करें।

छवि
  • अनुबंध पर तैनात करें। यदि आपको अनुबंध को तैनात करने के लिए एक परीक्षण टोकन की आवश्यकता है, तो यहां आवेदन करें । परिनियोजन परिणाम निम्नानुसार है:

छवि

  • स्थानांतरण फ़ंक्शन चलाएँ। स्थानांतरण फ़ंक्शन को चलाने से पहले, आपको आवश्यकतानुसार पैरामीटर कॉन्फ़िगर करना होगा। नीचे दिए गए उदाहरण में, आपको भेजने के पते, प्राप्त करने वाले पते, और स्थानांतरित ONT और ONG राशि पर इनपुट करने की आवश्यकता है:

छवि

  • स्थानांतरण सफल हुआ। आपके द्वारा मापदंडों को ठीक से कॉन्फ़िगर करने के बाद, स्थानांतरण फ़ंक्शन चलाते समय स्थानांतरण सफल होगा। हस्तांतरित टोकन ऊपर प्राप्त पते में प्रदर्शित किया जाएगा:

छवि

सारांश


इस लेख में, हमने ओन्टोलोजी ब्लॉकचैन का मूल निवासी एपीआई पेश किया। डेवलपर्स ओन्टोलॉजी के मूल अनुबंधों को लागू करने के लिए इस एपीआई का उपयोग कर सकते हैं। अगले लेख में, हम अपग्रेड एपीआई का परिचय देंगे कि कैसे ओन्टोलोजी स्मार्ट कॉन्ट्रैक्ट्स में अनुबंध को अपग्रेड किया जाए।

यहाँ GitHub पर ट्यूटोरियल खोजें।



यह एक आधिकारिक ट्यूटोरियल है जिसे पहले ओन्टोलोजी मीडियम ब्लॉग पर प्रकाशित किया गया था
क्या आप एक डेवलपर हैं? सुनिश्चित करें कि आप हमारे तकनीकी समुदाय में शामिल हो गए हैं। इसके अलावा, हमारी वेबसाइट पर डेवलपर केंद्र पर एक नज़र डालें, वहां आप डेवलपर टूल, प्रलेखन और बहुत कुछ पा सकते हैं।

ऑन्कोलॉजी को कहीं और खोजें


ओंटोलॉजी वेबसाइट
गितूब / कलह
टेलीग्राम अंग्रेजी / रूसी
ट्विटर / रेडिट

Source: https://habr.com/ru/post/hi471358/


All Articles