በኦንቶሎጂ blockchain አውታረመረብ ላይ በ Python ውስጥ ብልጥ ኮንትራቶችን ስለመፍጠር በተከታታይ ትምህርታዊ መጣጥፎች ውስጥ ይህ 3ኛው ክፍል ነው። በቀደሙት ጽሁፎች ተዋወቅን።
አሁን ፒቲንን በኦንቶሎጂ አውታረመረብ ላይ በመጠቀም ብልጥ ውል ሲያዘጋጁ ተገቢውን የቋሚ ማከማቻ ኤፒአይ እንዴት እንደሚደውሉ ሀሳብ ስላሎት፣ እንዴት መጠቀም እንዳለቦት ወደ መማር እንሂድ። የአሂድ ጊዜ ኤፒአይ (የኮንትራት አፈጻጸም ኤፒአይ)። የአሂድ ጊዜ ኤፒአይ ለኮንትራት ማስፈጸሚያ የጋራ በይነገጾች የሚያቀርቡ እና ገንቢዎች ውሂብ እንዲያነሱ፣ እንዲቀይሩ እና እንዲያረጋግጡ የሚያግዙ 8 ተዛማጅ ኤፒአይዎች አሉት።
ከዚህ በታች የ8 API ውሂብ አጭር መግለጫ አለ፡-
የ8 ኤፒአይ መረጃን እንዴት መጠቀም እንዳለብን በዝርዝር እንመልከት። ከዚህ በፊት በኦንቶሎጂ ስማርት ኮንትራት ልማት መሳሪያ ውስጥ አዲስ ውል መፍጠር ይችላሉ።
Runtime API እንዴት መጠቀም እንደሚቻል
የማስመጣት ሁለት መንገዶች አሉ። የአሂድ ጊዜ ኤፒአይ፡ ontology.interop.System.Runtime и ontology.interop.ኦንቶሎጂ.የሩጫ ጊዜ. የኦንቶሎጂ ዱካ አዲስ የተጨመሩትን ኤፒአይዎችን ይዟል። ከዚህ በታች ያሉት መስመሮች የኤፒአይ ውሂብን ያስመጡታል።
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
ኤፒአይ አሳውቅ
የማሳወቂያ ተግባር ክስተቱን በመላው አውታረመረብ ያሰራጫል። ከታች ባለው ምሳሌ የማሳወቂያ ተግባር የሄክስ ሕብረቁምፊውን "ሄሎ ቃል" ይመልሳል እና በአውታረ መረቡ ውስጥ ያሰራጫል.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
ይህንን በምዝግብ ማስታወሻዎች ውስጥ ማየት ይችላሉ-
GetTime ኤፒአይ
የ GetTime ተግባር የአሁኑን የጊዜ ማህተም ይመልሳል፣ ይህም ተግባሩ የተጠራበትን የዩኒክስ ጊዜ ይመልሳል። የመለኪያ አሃድ ሁለተኛ ነው.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash ኤፒአይ
የ GetCurrentBlockHash ተግባር የአሁኑን ብሎክ ሃሽ ይመልሳል።
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hash
ተከታታይ ማድረግ እና መሰረዝ
ይህ ጥንድ ተከታታይ እና የዲሴሪያላይዜሽን ተግባራት ናቸው. የሴሪያላይዝ ተግባር አንድን ነገር ወደ ባይተራይ ነገር ይለውጠዋል፣ እና የ Deserialize ተግባር ባይተarrayን ወደ ዋናው ነገር ይለውጠዋል። ከዚህ በታች ያለው የኮድ ናሙና ገቢ መለኪያዎችን ይለውጣል እና በውሉ ቋሚ ማከማቻ ውስጥ ያከማቻል። እንዲሁም ከኮንትራቱ ቋሚ ማከማቻ መረጃን ሰርስሮ ወደ ዋናው ነገር ይለውጠዋል።
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext
def Main(operation, args):
if operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
if operation == 'deserialize_from_bytearray':
key = args[0]
return deserialize_from_bytearray(key)
return False
def serialize_to_bytearray(data):
sc = GetContext()
key = "1"
byte_data = Serialize(data)
Put(sc, key, byte_data)
def deserialize_from_bytearray(key):
sc = GetContext()
byte_data = Get(sc, key)
data = Deserialize(byte_data)
return data
Base58ለአድራሻ እና አድራሻ ወደ ቤዝ58
ይህ ጥንድ የአድራሻ ትርጉም ተግባራት። የBase58ToAddress ተግባር ቤዝ58 ኢንኮድ የተደረገ አድራሻን ወደ ባይተራራይ አድራሻ ይለውጣል፣ እና AddressToBase58 bytearray አድራሻን ወደ ቤዝ58 ኢንኮድ አድራሻ ይቀይራል።
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)
ምስክርን አረጋግጥ
የCheckWitness(fromAcct) ተግባር ሁለት ተግባራት አሉት፡-
- የአሁኑ ተግባር ደዋይ ከAcct መሆኑን ያረጋግጡ። አዎ ከሆነ (ይህም የፊርማ ማረጋገጫ አልፏል) ተግባሩ ይመለሳል።
- የአሁኑን ተግባር የሚጠራው ዕቃ ውል መሆኑን ያረጋግጡ። ውል ከሆነ እና ተግባሩ ከውሉ ላይ ከተፈፀመ, ማረጋገጫው አልፏል. ማለትም ከAcct የ GetCallingScriptHash() መመለሻ ዋጋ መሆኑን ያረጋግጡ። የጌት ካሊንግ ስክሪፕት ሃሽ() ተግባር የአሁኑን ዘመናዊ ውል የውል ሃሽ ዋጋ ሊወስድ ይችላል።
GetCallingScriptHash()፡
የበለጠ ያንብቡ
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
ተጨማሪ መረጃ በ ላይ ይገኛል።
ጽሑፉ በአዘጋጆቹ ተተርጉሟል
Hashrate& ማጋራቶች በተለይ ለኦንቶሎጂ ሩሲያ.
ገንቢ ነህ? የእኛን የቴክኖሎጂ ማህበረሰብ በ ላይ ይቀላቀሉ
ተዋረዳዊ
ምንጭ: hab.com