Как Π΄Π° напиша ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π² Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology. Част 3: API Π·Π° изпълнСниС

Как Π΄Π° напиша ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π² Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology. Част 3: API Π·Π° изпълнСниС

Π’ΠΎΠ²Π° Π΅ част 3 ΠΎΡ‚ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ ΡƒΡ€ΠΎΡ†ΠΈ Π·Π° създаванС Π½Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ Π² Python Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology. Π’ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ статии видяхмС

  1. Blockchain & Block API
  2. API Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.

Π‘Π΅Π³Π°, слСд ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ прСдстава ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ подходящия API Π·Π° постоянно ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ с Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology, Π½Π΅ΠΊΠ° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към Π½Π°ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ API Π·Π° изпълнСниС (API Π·Π° изпълнСниС Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ). Runtime API ΠΈΠΌΠ° 8 ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ API, ΠΊΠΎΠΈΡ‚ΠΎ прСдоставят ΠΎΠ±Ρ‰ΠΈ интСрфСйси Π·Π° изпълнСниС Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚, трансформират ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Ρ‚ Π΄Π°Π½Π½ΠΈ.

По-Π΄ΠΎΠ»Ρƒ Π΅ Π΄Π°Π΄Π΅Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ описаниС Π½Π° API Π·Π° Π΄Π°Π½Π½ΠΈ 8:

Как Π΄Π° напиша ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π² Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology. Част 3: API Π·Π° изпълнСниС

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ 8 API. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ² Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π² инструмСнта Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ Ontology SmartX ΠΈ слСдвайтС инструкциитС ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ API Π·Π° изпълнСниС

Има Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ API Π·Π° изпълнСниС: ontology.interop.System.Runtime ΠΈ ontology.interop.Ontology.Runtime. ΠžΠ½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈΡΡ‚ ΠΏΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½ΠΎΠ²ΠΎΠ΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ API. Π Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Ρ‚ API Π΄Π°Π½Π½ΠΈΡ‚Π΅.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

API Π·Π° извСстяванС

Ѐункцията Notify ΠΈΠ·Π»ΡŠΡ‡Π²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π² цялата ΠΌΡ€Π΅ΠΆΠ°. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ функцията Notify Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Π΅ΡΠ΅Ρ‚ΠΈΡ‡Π½ΠΈΡ Π½ΠΈΠ· "hello word" ΠΈ Ρ‰Π΅ Π³ΠΎ разпространи Π² цялата ΠΌΡ€Π΅ΠΆΠ°.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π² рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅:

Как Π΄Π° напиша ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π² Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology. Част 3: API Π·Π° изпълнСниС

GetTime API

Ѐункцията GetTime Π²Ρ€ΡŠΡ‰Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΎ ΠΊΠ»Π΅ΠΉΠΌΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Ρ€ΡŠΡ‰Π° Unix Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° функцията. ΠœΠ΅Ρ€Π½Π°Ρ‚Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π΅ сСкундата.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

GetCurrentBlockHash API

Ѐункцията GetCurrentBlockHash Π²Ρ€ΡŠΡ‰Π° Ρ…Π΅ΡˆΠ° Π½Π° тСкущия Π±Π»ΠΎΠΊ.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ дСсСриализиранС

Π’ΠΎΠ²Π° Π΅ Π΄Π²ΠΎΠΉΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° сСриализация ΠΈ дСсСриализация. Ѐункцията Serialize ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° ΠΎΠ±Π΅ΠΊΡ‚ Π² ΠΎΠ±Π΅ΠΊΡ‚ bytearray, Π° функцията Deserialize ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° bytearray Π² оригиналния ΠΌΡƒ ΠΎΠ±Π΅ΠΊΡ‚. БлСдният ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° входящитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΈ Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² постоянното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠ·Π²Π»ΠΈΡ‡Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ постоянното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π° ΠΈ Π³ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² оригиналния ΠΎΠ±Π΅ΠΊΡ‚.

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

Base58ToAddress ΠΈ AddressToBase58

Π’Π°Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° адрСси. Ѐункцията Base58ToAddress ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° base58 ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ адрСс Π² bytearray адрСс, Π° AddressToBase58 ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° bytearray адрСс Π² 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(fromAcct) ΠΈΠΌΠ° Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‰ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° функция, Π΅ fromAcct. Ако Π΄Π° (Ρ‚.Π΅. ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° подписа Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π»Π°), функцията сС Π²Ρ€ΡŠΡ‰Π°.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‰ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° функция, Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€. Ако Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ ΠΈ функцията сС изпълнява ΠΎΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π»Π°. ВоСст ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ fromAcct Π΅ Π²ΡŠΡ€Π½Π°Ρ‚Π°Ρ‚Π° стойност Π½Π° GetCallingScriptHash(). Ѐункцията GetCallingScriptHash() ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ Ρ…Π΅Ρˆ стойността Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π° Π½Π° тСкущия ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€.

GetCallingScriptHash():

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π½Π° Guthub

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

ΠŸΠΎΠ²Π΅Ρ‡Π΅ информация ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Guthub. Π’ слСдващата статия Ρ‰Π΅ прСдставим Π ΠΎΠ΄Π΅Π½ APIΠ·Π° Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΡ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈ Π² ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Ontology.

Бтатията Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Π₯Π΅ΡˆΡ€Π΅ΠΉΡ‚ ΠΈ сподСляния спСциално Π·Π° OntologyRussia.

Π’ΠΈΠ΅ стС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ? ΠŸΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½Π΅Ρ‚Π΅ сС към Π½Π°ΡˆΠ°Ρ‚Π° тСхничСска общност Π½Π° Ρ€Π°Π·Π΄ΠΎΡ€. ОсвСн Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ Π¦Π΅Π½Ρ‚ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠžΠ½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΡ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ инструмСнти, докумСнтация ΠΈ Π΄Ρ€.

ΠžΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ. Π—Π°Ρ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° - Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π½Π°Π³Ρ€Π°Π΄Π°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° Ρ‚Π°Π»Π°Π½Ρ‚ΠΈ Ontology Π·Π° студСнти

ΠžΠ½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΡ

ΠžΠ½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅Π½ уСбсайт - GitHub - Ρ€Π°Π·Π΄ΠΎΡ€ - Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° руски - Twitter - Reddit

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€