በኦንቶሎጂ አውታረመረብ ላይ በ Python ውስጥ ብልጥ ውል እንዴት እንደሚፃፍ። ክፍል 1፡ Blockchain & Block API

በኦንቶሎጂ አውታረመረብ ላይ በ Python ውስጥ ብልጥ ውል እንዴት እንደሚፃፍ። ክፍል 1፡ Blockchain & Block API

ይህ የስማርት ኮንትራት ልማት መሳሪያን በመጠቀም በኦንቶሎጂ blockchain አውታረመረብ ላይ የፓይዘን ስማርት ኮንትራቶችን ስለመፍጠር በተከታታይ በሚደረጉ ትምህርቶች ውስጥ የመጀመሪያው ክፍል ነው። SmartX.

በዚህ ጽሑፍ ውስጥ ከኦንቶሎጂ ስማርት ኮንትራት ኤፒአይ ጋር መተዋወቅ እንጀምራለን ። የኦንቶሎጂ ስማርት ኮንትራት ኤፒአይ በ 7 ሞጁሎች ተከፍሏል፡

  1. ብሎክቼይን እና አግድ ኤፒአይ፣
  2. የአሂድ ጊዜ ኤፒአይ
  3. የማከማቻ ኤፒአይ፣
  4. ቤተኛ ኤፒአይ፣
  5. ኤፒአይ አሻሽል፣
  6. የማስፈጸሚያ ሞተር ኤፒአይ እና
  7. የማይለዋወጥ እና ተለዋዋጭ ጥሪ ኤፒአይ።

Blockchain & Block API የ Ontology ስማርት ኮንትራት ስርዓት ዋና አካል ነው። የብሎክቼይን ኤፒአይ መሰረታዊ የብሎክቼይን መጠይቅ ስራዎችን ይደግፋል፣ ለምሳሌ የአሁኑን የማገጃ ቁመት ማግኘት፣ ብሎክ ኤፒአይ ደግሞ ለአንድ ብሎክ የግብይቶች ብዛት መጠየቅን የመሳሰሉ መሰረታዊ ብሎክ መጠይቅ ስራዎችን ይደግፋል።

እንጀምር!

በመጀመሪያ ፣ አዲስ ውል ይፍጠሩ SmartXእና ከዚያ ከታች ያሉትን መመሪያዎች ይከተሉ.

1. Blockchain API እንዴት መጠቀም እንደሚቻል

ወደ ዘመናዊ የኮንትራት ተግባራት የሚወስዱ አገናኞች ከፓይዘን አገናኞች ጋር ተመሳሳይ ናቸው። እንደ አስፈላጊነቱ ተጓዳኝ ተግባራትን ማስገባት ይችላሉ. ለምሳሌ፣ የሚከተለው መግለጫ የGetHeight ተግባርን ያስተዋውቃል የአሁኑን ብሎክ ቁመት ለማግኘት እና የብሎክን ራስጌ ለማግኘት የጌትሄደር ተግባርን ያሳያል።

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 በግብይት ሃሽ በኩል ግብይት ለማግኘት ይጠቅማል። የግብይቱ ሃሽ ይላካል በሐሽ ያግኙ በባይቴሬይ ቅርጸት እንደ መለኪያዎች። የዚህ ተግባር ቁልፉ የግብይቱን ሃሽ በሄክስ ፎርማት ወደ ግብይቱ ሃሽ በባይተራራይ ቅርጸት መለወጥ ነው። ይህ ጠቃሚ እርምጃ ነው። ያለበለዚያ ከዚያ ብሎክ ሃሽ ጋር ምንም ብሎክ እንደሌለ የሚጠቁም ስህተት ያጋጥምዎታል። የግብይቱን ሃሽ በሄክስ ቅርጸት እንደ ምሳሌ እንውሰድ ወደ ባይተራራይ ቅርጸት። አንድ ምሳሌ ይህን ይመስላል።

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

መጀመሪያ የግብይቱን ሃሽ ይቀይሩት፡-

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

ገንቢዎች በ SmartX የቀረበውን የሄክስ ቁጥር(ትንሽ ኢንዲያን) የቁጥር መለወጫ መሳሪያን በመጠቀም ይህንን እርምጃ ማከናወን ይችላሉ።

ከዚያም ውጤቱን ወደ ባይተራሬይ ቅርጸት ቀይር፡-

{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 ልወጣ መሳሪያ በመጠቀም ሊከናወን ይችላል። በመጨረሻ፣ የተገኘውን ባይተራራይ ወደ ተመሳሳይ ሕብረቁምፊ ቀይር፡-

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

በውሉ ሃሽ በኩል ውል ለማግኘት ገንቢዎች የ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. አግድ ኤፒአይን እንዴት መጠቀም እንደሚቻል

በብሎክ ኤፒአይ ውስጥ ሶስት የሚገኙ ተግባራት አሉ፡- GetTransactions, GetTransactionCountGetTransactionByIndex. አንድ በአንድ እንከፋፍላቸዋለን።

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

በአንድ እገዳ ውስጥ ሁሉንም ግብይቶች ለማግኘት ገንቢዎች የ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

የተሟላ መመሪያ በእኛ ላይ ሊገኝ ይችላል የፊልሙ.

ከቃል በኋላ

የብሎክቼይን እና አግድ ኤፒአይ የብልጥ ኮንትራቶች በጣም አስፈላጊ አካል ነው ምክንያቱም የብሎክቼይን መረጃን ለመጠየቅ እና በስማርት ኮንትራቶች ውስጥ ውሂብን ለማገድ ሊጠቀሙባቸው ይችላሉ። በሚቀጥሉት መጣጥፎች፣ የተቀሩትን ኤፒአይዎች እንዴት መጠቀም እንዳለብን እና ከኦንቶሎጂ blockchain ጋር እንዴት እንደሚገናኙ ለማወቅ እንነጋገራለን ።

ጽሑፉ የተተረጎመው በ Hashrate&Shares አዘጋጆች በተለይ ለኦንቶሎጂ ሩሲያ ነው። ማልቀስ

ገንቢ ነህ? የእኛን የቴክኖሎጂ ማህበረሰብ በ ላይ ይቀላቀሉ ክርክር. በተጨማሪም, ይመልከቱ የገንቢ ማዕከል በድረ-ገጻችን ላይ የገንቢ መሳሪያዎችን, ሰነዶችን እና ሌሎችንም ማግኘት ይችላሉ.

ተዋረዳዊ

ምንጭ: hab.com

አስተያየት ያክሉ