
Ky është pjesa e tretë e një seri artikujsh trajnues mbi krijimin e kontratave inteligjente në Python në rrjetin blockchain Ontology. Në artikujt e mëparshëm u njohëm me
- .
Tani që keni një kuptim të mënyrës se si të thërrisni API-në e duhur për magazinat e përhershme ndërsa zhvilloni një kontratë inteligjente me Python në rrjetin Ontology, le të kalojmë në se si të përdorim Runtime API (API e Ekzekutimit të Kontratave). API Runtime ka 8 API të lidhura që ofrojnë ndërfaqe të përgjithshme për ekzekutimin e kontratave dhe ndihmojnë zhvilluesit të marrin, përpunojnë dhe verifikojnë të dhënat.
Më poshtë është një përmbledhje e këtyre 8 API-ve:

Le të shqyrtojmë më në detaje mënyrën e përdorimit të këtyre 8 API-ve. Para kësaj, mund të krijoni një kontratë të re në mjetin e zhvillimit të kontratave inteligjente Ontology dhe ndiqni udhëzimet më poshtë.
Si të përdorni API-në Runtime
Ekzistojnë dy mënyra për të importuar API-në Runtime: ontology.interop.System.Runtime dhe ontology.interop.Ontology.Runtime. Rruga Ontology përmban API që janë shtuar së fundmi. Rreshtat e mëposhtëm importojnë këto API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashAPI e Njoftimit
Funksioni Notify transmeton një ngjarje në të gjithë rrjetin. Në shembullin e mëposhtëm, funksioni Notify do të kthejë një varg hex "hello world" dhe do ta dërgojë në të gjithë rrjetin.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Mund ta shihni këtë në logët:

API e GetTime
Funksioni GetTime kthen stampën aktuale të kohës, e cila kthen kohën Unix, kur është thirrur funksioni. Njësia e matjes është sekonda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # kthe një numër uintAPI e GetCurrentBlockHash
Funksioni GetCurrentBlockHash kthen hash-in e bllokut aktual.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize dhe Deserialize
Kjo është një çift funksionesh për serializimin dhe deserializimin. Funksioni Serialize konverton një objekt në një objekt bytearray, ndërsa funksioni Deserialize e konverton bytearray në objektin fillestar. Shembulli i mëposhtëm i kodit realizon transformimin e parametrave hyrës dhe i ruan ato në magazinën e përhershme të kontratës. Ai gjithashtu nxjerr të dhënat nga magazina e përhershme e kontratës dhe i konverton në objektin fillestar.
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 dataBase58ToAddress dhe AddressToBase58
Ky është një çift funksionesh për konvertimin e adresave. Funksioni Base58ToAddress konverton një adresë të koduar base58 në një adresë në formën bytearray, ndërsa AddressToBase58 konverton një adresë në formën bytearray në adresë të koduar base58.
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
Funksioni CheckWitness(fromAcct) ka dy funksionalitete:
- Verifikoni nëse objekti që thërret aktualisht funksionin është fromAcct. Nëse po (dmth, kalimi i verifikimit të nënshkrimit), funksioni kthehet.
- Kontrolloni nëse objekti që thërret aktualisht funksionin është një kontratë. Nëse është një kontratë dhe funksioni ekzekutohet nga kontrata, atëherë verifikimi kalon. DMTH, verifikoni nëse fromAcct është vlera që kthehet nga GetCallingScriptHash(). Funksioni GetCallingScriptHash() mund të marrë vlerën e hash-it të kontratës së kontratës aktuale.
GetCallingScriptHash():
Më shumë detaje në
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resMë shumë informacion mund të gjendet në . Në artikullin e ardhshëm do të paraqesim API Native, për të mësuar se si të transferoni asete në kontratat inteligjente Ontology.
Artikulli është përkthyer nga ekipi vendosur posaçërisht për OntologyRussia.
Jeni zhvillues? Bashkohuni me komunitetin tonë teknik në . Për më tepër, shikoni në Ontology, aty mund të gjeni më shumë vegla, dokumentacion dhe shumë më tepër.
Mbylle det në mënyrë që të marrësh shpërblimin.
për programin e talenteve Ontology për studentët
Ontology
â â â â â
Burimi: habr.com
