ஆன்டாலஜி நெட்வொர்க்கில் பைத்தானில் ஸ்மார்ட் ஒப்பந்தத்தை எழுதுவது எப்படி. பகுதி 1: Blockchain & Block API

ஆன்டாலஜி நெட்வொர்க்கில் பைத்தானில் ஸ்மார்ட் ஒப்பந்தத்தை எழுதுவது எப்படி. பகுதி 1: Blockchain & Block API

ஸ்மார்ட் கான்ட்ராக்ட் டெவலப்மென்ட் டூலைப் பயன்படுத்தி ஒன்டாலஜி பிளாக்செயின் நெட்வொர்க்கில் பைதான் ஸ்மார்ட் ஒப்பந்தங்களை உருவாக்குவது குறித்த தொடர் பயிற்சிகளின் முதல் பகுதி இதுவாகும். SmartX.

இந்தக் கட்டுரையில், ஆன்டாலஜி ஸ்மார்ட் ஒப்பந்த API உடன் எங்கள் அறிமுகத்தைத் தொடங்குவோம். ஒன்டாலஜி ஸ்மார்ட் ஒப்பந்த API 7 தொகுதிகளாக பிரிக்கப்பட்டுள்ளது:

  1. Blockchain & Block API,
  2. இயக்க நேர API,
  3. சேமிப்பு API,
  4. சொந்த API,
  5. மேம்படுத்து API,
  6. எக்ஸிகியூஷன் எஞ்சின் API மற்றும்
  7. நிலையான & டைனமிக் அழைப்பு API.

பிளாக்செயின் & பிளாக் ஏபிஐ என்பது ஆன்டாலஜி ஸ்மார்ட் ஒப்பந்த அமைப்பின் முக்கிய பகுதியாகும். Blockchain API ஆனது தற்போதைய பிளாக் உயரத்தைப் பெறுவது போன்ற அடிப்படை பிளாக்செயின் வினவல் செயல்பாடுகளை ஆதரிக்கிறது, அதே சமயம் Block API ஆனது கொடுக்கப்பட்ட தொகுதிக்கான பரிவர்த்தனைகளின் எண்ணிக்கையை வினவுவது போன்ற அடிப்படை பிளாக் வினவல் செயல்பாடுகளை ஆதரிக்கிறது.

தொடங்குவோம்!

முதலில், ஒரு புதிய ஒப்பந்தத்தை உருவாக்கவும் SmartXபின்னர் கீழே உள்ள வழிமுறைகளைப் பின்பற்றவும்.

1. Blockchain API ஐ எவ்வாறு பயன்படுத்துவது

ஸ்மார்ட் ஒப்பந்த செயல்பாடுகளுக்கான இணைப்புகள் பைதான் இணைப்புகளைப் போலவே இருக்கும். தேவையான செயல்பாடுகளை நீங்கள் உள்ளிடலாம். எடுத்துக்காட்டாக, பின்வரும் அறிக்கையானது தற்போதைய தொகுதி உயரத்தைப் பெற GetHeight செயல்பாட்டையும், தொகுதியின் தலைப்பைப் பெற GetHeader செயல்பாட்டையும் அறிமுகப்படுத்துகிறது.

from ontology.interop.System.Blockchain import GetHeight, GetHeader

GetHeight

கீழே உள்ள எடுத்துக்காட்டில் காட்டப்பட்டுள்ளபடி, பிளாக்செயினில் கடைசி தொகுதி வரிசை எண்ணைப் பெற GetHeight பயன்படுத்தப்படுகிறது. கடைசி எடுத்துக்காட்டில், நாங்கள் வசதிக்காக முக்கிய செயல்பாட்டைத் தவிர்ப்போம், ஆனால் தேவைப்பட்டால் நீங்கள் அதைச் சேர்க்கலாம்.

from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeight
def Main(operation):
    if operation == 'demo':
        return demo()
    return False

def demo():
    height=GetHeight()
    Notify(height) # print height
    return height #return height after running the function

GetHeader

பிளாக் ஹெடரைப் பெற GetHeader பயன்படுத்தப்படுகிறது, அளவுரு என்பது பிளாக்செயினில் உள்ள தொகுதியின் வரிசை எண். உதாரணமாக:

from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeader
def demo():
    block_height=10
    header=GetHeader(block_height) 
    Notify(header)
return header

GetTransactionByHash

GetTransactionByHash பரிவர்த்தனை ஹாஷ் மூலம் பரிவர்த்தனையைப் பெறப் பயன்படுகிறது. பரிவர்த்தனை ஹாஷ் அனுப்பப்பட்டது GetTransactionByHash bytearray வடிவத்தில் அளவுருக்களாக. இந்தச் செயல்பாட்டின் திறவுகோல் ஹெக்ஸ் வடிவத்தில் பரிவர்த்தனை ஹாஷை பைட்டேர்ரே வடிவத்தில் பரிவர்த்தனை ஹாஷாக மாற்றுவதாகும். இது ஒரு முக்கியமான படியாகும். இல்லையெனில், அந்த பிளாக் ஹாஷுடன் எந்தத் தொகுதியும் இல்லை என்பதைக் குறிக்கும் பிழையைப் பெறுவீர்கள். ஹெக்ஸ் வடிவத்தில் பரிவர்த்தனை ஹாஷை பைட்டேர்ரே வடிவத்திற்கு மாற்றுவதற்கு உதாரணமாக எடுத்துக்கொள்வோம். ஒரு எடுத்துக்காட்டு இதுபோல் தெரிகிறது:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

முதலில், பரிவர்த்தனை ஹாஷை மாற்றவும்:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

SmartX வழங்கிய ஹெக்ஸ் எண் (சிறிய எண்டியன்) எண் மாற்றும் கருவியைப் பயன்படுத்தி டெவலப்பர்கள் இந்தப் படியைச் செய்யலாம்.

பின்னர் முடிவை bytearray வடிவத்திற்கு மாற்றவும்:

{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}

SmartX வழங்கிய String Byte Array conversion tool ஐப் பயன்படுத்தி இதைச் செய்யலாம். இறுதியாக, விளைந்த பைட்டர்ரேயை இதே சரத்திற்கு மாற்றவும்:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

பரிவர்த்தனையின் ஹாஷைப் பயன்படுத்தி ஒரு பரிவர்த்தனையை மேற்கொள்ளும் GetTransactionByHash செயல்பாட்டின் உதாரணம் பின்வருமாறு:

from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
    # tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    tx=GetTransactionByHash(tx_hash)
    return tx

GetTransactionHeight

பரிவர்த்தனை ஹாஷ் மூலம் பரிவர்த்தனை உயரத்தைப் பெற GetTransactionHeight பயன்படுத்தப்படுகிறது. மேலே உள்ள எடுத்துக்காட்டில் இருந்து ஹாஷை எடுத்துக்கொள்வோம்:

from ontology.interop.System.Blockchain import  GetTransactionHeight
def demo():
    #   tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    height=GetTransactionHeight(tx_hash)
    return height

ஒப்பந்தத்தைப் பெறுங்கள்

ஒப்பந்தத்தின் ஹாஷ் மூலம் ஒப்பந்தத்தைப் பெற டெவலப்பர்கள் GetContract செயல்பாட்டைப் பயன்படுத்தலாம். ஒப்பந்த ஹாஷ் மாற்றும் செயல்முறை மேலே குறிப்பிட்டுள்ள பரிவர்த்தனை ஹாஷ் மாற்ற செயல்முறையைப் போன்றது.

from ontology.interop.System.Blockchain import GetContract
def demo():
    # contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"    
    contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
    contract=GetContract(contract_hash)
    return contract

GetBlock

ஒரு தொகுதியைப் பெற GetBlock பயன்படுத்தப்படுகிறது. ஒரு குறிப்பிட்ட தொகுதியைப் பெற இரண்டு வழிகள் உள்ளன.

1. தொகுதியின் உயரத்தைப் பெறுங்கள்:

from ontology.interop.System.Blockchain import GetBlock
def demo():
    block=GetBlock(1408)
    return block

2. பிளாக் ஹாஷ் மூலம் ஒரு தொகுதியைப் பெறவும்:

from ontology.interop.System.Blockchain import GetBlock
def demo():    
    block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
    block=GetBlock(block_hash)

2. Block API ஐ எவ்வாறு பயன்படுத்துவது

பிளாக் API இல் மூன்று செயல்பாடுகள் உள்ளன: பரிவர்த்தனைகளைப் பெறுங்கள், GetTransactioncountமற்றும் GetTransactionByIndex. அவற்றை ஒவ்வொன்றாக உடைப்போம்.

GetTransactioncount

கொடுக்கப்பட்ட தொகுதிக்கான பரிவர்த்தனைகளின் எண்ணிக்கையைப் பெற GetTransactionCount பயன்படுத்தப்படுகிறது.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
    block=GetBlock(1408)
    count=GetTransactionCount(block)
    return count

பரிவர்த்தனைகளைப் பெறுங்கள்

டெவலப்பர்கள் GetTransactions செயல்பாட்டைப் பயன்படுத்தி கொடுக்கப்பட்ட தொகுதியில் அனைத்து பரிவர்த்தனைகளையும் பெறலாம்.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions 
def demo():
    block=GetBlock(1408)
    txs=GetTransactions(block)
    return txs

GetTransactionByIndex

கொடுக்கப்பட்ட தொகுதியில் குறிப்பிட்ட பரிவர்த்தனையைப் பெற GetTransactionByIndex பயன்படுத்தப்படுகிறது.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
    block=GetBlock(1408)
    tx=GetTransactionByIndex(block,0) # index starts from 0.
    return tx

ஒரு முழுமையான வழிகாட்டியை எங்களிடம் காணலாம் மகிழ்ச்சியா.

பின்னுரை

பிளாக்செயின் & பிளாக் ஏபிஐ என்பது ஸ்மார்ட் ஒப்பந்தங்களின் இன்றியமையாத பகுதியாகும், ஏனெனில் பிளாக்செயின் தரவைக் கோரவும் ஸ்மார்ட் ஒப்பந்தங்களில் தரவைத் தடுக்கவும் அவற்றைப் பயன்படுத்தலாம். பின்வரும் கட்டுரைகளில், மீதமுள்ள API களை எவ்வாறு பயன்படுத்துவது மற்றும் அவை ஆன்டாலஜி பிளாக்செயினுடன் எவ்வாறு தொடர்புகொள்வது என்பதைக் கண்டுபிடிப்போம்.

குறிப்பாக OntologyRussia க்காக Hashrate&Shares இன் ஆசிரியர்களால் கட்டுரை மொழிபெயர்க்கப்பட்டது. கலங்குவது

நீங்கள் ஒரு டெவலப்பரா? எங்கள் தொழில்நுட்ப சமூகத்தில் சேரவும் கூறின. மேலும், பாருங்கள் டெவலப்பர் மையம் எங்கள் இணையதளத்தில், டெவலப்பர் கருவிகள், ஆவணங்கள் மற்றும் பலவற்றை நீங்கள் காணலாம்.

ஆண்டாலஜி

ஆதாரம்: www.habr.com

கருத்தைச் சேர்