рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкрд╛рдпрдердирдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдХрд╕рд╛ рд▓рд┐рд╣рд╛рдпрдЪрд╛. рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо API

рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкрд╛рдпрдердирдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдХрд╕рд╛ рд▓рд┐рд╣рд╛рдпрдЪрд╛. рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо API

рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдмреНрд▓реЙрдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкрд╛рдпрдердирдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╡рд░реАрд▓ рд╢реИрдХреНрд╖рдгрд┐рдХ рд▓реЗрдЦрд╛рдВрдЪреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрддреАрд▓ рд╣рд╛ рддрд┐рд╕рд░рд╛ рднрд╛рдЧ рдЖрд╣реЗ. рдорд╛рдЧреАрд▓ рд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ рдЖрдкрд▓реА рдУрд│рдЦ рдЭрд╛рд▓реА

  1. рдмреНрд▓реЙрдХрдЪреЗрди рдЖрдгрд┐ рдмреНрд▓реЙрдХ API
  2. рд╕реНрдЯреЛрд░реЗрдЬ API.

рдЖрддрд╛ рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкрд╛рдпрдерди рд╡рд╛рдкрд░реВрди рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛ рдпреЛрдЧреНрдп рдкрд░реНрд╕рд┐рд╕реНрдЯрдВрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдкреАрдЖрдпрд▓рд╛ рдХрд╕реЗ рдХреЙрд▓ рдХрд░рд╛рдпрдЪреЗ рдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд▓реА рдЖрд╣реЗ, рдЪрд▓рд╛ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рддреЗ рд╢рд┐рдХреВрдпрд╛. рд░рдирдЯрд╛рдЗрдо API (рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди API). рд░рдирдЯрд╛рдЗрдо API рдордзреНрдпреЗ 8 рд╕рдВрдмрдВрдзрд┐рдд API рдЖрд╣реЗрдд рдЬреЗ рдХрд░рд╛рд░рд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд, рд░реВрдкрд╛рдВрддрд░ рдЖрдгрд┐ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рддрд╛рдд.

рдЦрд╛рд▓реА 8 API рдбреЗрдЯрд╛рдЪреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд░реНрдгрди рдЖрд╣реЗ:

рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкрд╛рдпрдердирдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдХрд╕рд╛ рд▓рд┐рд╣рд╛рдпрдЪрд╛. рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо API

рдЪрд▓рд╛ 8 API рдбреЗрдЯрд╛ рдХрд╕рд╛ рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рддреЗ рдЬрд╡рд│реВрди рдкрд╛рд╣реВ. рдпрд╛рдЖрдзреА, рддреБрдореНрд╣реА рдСрдиреНрдЯреЛрд▓реЙрдЬреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓рдордзреНрдпреЗ рдирд╡реАрди рдХрд░рд╛рд░ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рд╕реНрдорд╛рд░реНрдЯрдПрдХреНрд╕ рдЖрдгрд┐ рдЦрд╛рд▓реАрд▓ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛.

рд░рдирдЯрд╛рдЗрдо 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")

рдЖрдкрдг рд╣реЗ рд▓реЙрдЧрдордзреНрдпреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛:

рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкрд╛рдпрдердирдордзреНрдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд░рд╛рд░ рдХрд╕рд╛ рд▓рд┐рд╣рд╛рдпрдЪрд╛. рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо API

GetTime API

GetTime рдлрдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдЯрд╛рдЗрдорд╕реНрдЯреЕрдореНрдк рдкрд░рдд рдХрд░рддреЗ, рдЬреЗ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗрд▓реЗрд▓реЗ рдпреБрдирд┐рдХреНрд╕ рд╡реЗрд│ рдкрд░рдд рдХрд░рддреЗ. рдореЛрдЬрдгреНрдпрд╛рдЪреЗ рдПрдХрдХ рджреБрд╕рд░реЗ рдЖрд╣реЗ.

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

рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рд╛

рд╣реЗ рдЕрдиреБрдХреНрд░рдореАрдХрд░рдг рдЖрдгрд┐ рдбрд┐рд╕рд┐рд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдЬреЛрдбреА рдЖрд╣реЗ. рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдлрдВрдХреНрд╢рди рдПрдЦрд╛рджреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд▓рд╛ рдмрд╛рдпрдЯрд┐рдпрд░ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдбрд┐рд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЭ рдлрдВрдХреНрд╢рди рдмрд╛рдпрдЯрд┐рдпрд░рд▓рд╛ рдореВрд│ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ. рдЦрд╛рд▓реАрд▓ рдХреЛрдб рдирдореБрдирд╛ рдЗрдирдХрдорд┐рдВрдЧ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪреНрдпрд╛ рдкрд░реНрд╕рд┐рд╕реНрдЯрдВрдЯ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд╕реНрдЯреЛрдЕрд░ рдХрд░рддреЛ. рд╣реЗ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдЪреНрдпрд╛ рдкрд░реНрд╕рд┐рд╕реНрдЯрдВрдЯ рд╕реНрдЯреЛрд░реЗрдЬрдордзреВрди рдбреЗрдЯрд╛ рджреЗрдЦреАрд▓ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рдЖрдгрд┐ рдореВрд│ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ.

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 рдлрдВрдХреНрд╢рди рдмреЗрд╕58 рдПрдиреНрдХреЛрдбреЗрдб рдЕреЕрдбреНрд░реЗрд╕рд▓рд╛ рдмрд╛рдпрдЯрд┐рдпрд░ рдЕреЕрдбреНрд░реЗрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдЕреЕрдбреНрд░реЗрд╕рдЯреЙрдмреЗрд╕58 рдмрд╛рдпрдЯрд┐рдпрд░ рдЕреЕрдбреНрд░реЗрд╕ рдмреЗрд╕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(fromActt) рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рджреЛрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрд╣реЗрдд:

  • рд╡рд░реНрддрдорд╛рди рдлрдВрдХреНрд╢рдирдЪрд╛ рдХреЙрд▓рд░ Acct рдордзреВрди рдЖрд╣реЗ рдХрд╛ рддреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рд╛. рдЬрд░ рд╣реЛрдп (рдореНрд╣рдгрдЬреЗ, рд╕реНрд╡рд╛рдХреНрд╖рд░реА рд╕рддреНрдпрд╛рдкрди рдЙрддреНрддреАрд░реНрдг рдЭрд╛рд▓реЗ), рдлрдВрдХреНрд╢рди рдкрд░рдд рдпреЗрдИрд▓.
  • рд╡рд░реНрддрдорд╛рди рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рдгрд╛рд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯ рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛. рдЬрд░ рддреЛ рдХрд░рд╛рд░ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдХрд╛рд░реНрдп рдХрд░рд╛рд░рд╛рддреВрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЕрд╕реЗрд▓, рддрд░ рд╕рддреНрдпрд╛рдкрди рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдореНрд╣рдгрдЬреЗрдЪ, fromAcct рд╣реЗ GetCallingScriptHash() рдЪреЗ рд░рд┐рдЯрд░реНрди рд╡реНрд╣реЕрд▓реНрдпреВ рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛. 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

рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рдпреЗрдереЗ рдорд┐рд│реВ рд╢рдХрддреЗ рдЧреБрдереБрдм. рдкреБрдвреАрд▓ рд▓реЗрдЦрд╛рдд рдЖрдкрдг рдкрд░рд┐рдЪрдп рдХрд░реВрди рджреЗрдК рдореВрд│ APIрдСрдиреНрдЯреЛрд▓реЙрдЬреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реЕрдХреНрдЯрдордзреНрдпреЗ рдорд╛рд▓рдорддреНрддрд╛ рдХрд╢реА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рд╡реА рд╣реЗ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА.

рд▓реЗрдЦрд╛рдЪрд╛ рдЕрдиреБрд╡рд╛рдж рд╕рдВрдкрд╛рджрдХрд╛рдВрдиреА рдХреЗрд▓рд╛ рдЖрд╣реЗ рд╣реЕрд╢рд░реЗрдЯ рдЖрдгрд┐ рд╢реЗрдЕрд░реНрд╕ рд╡рд┐рд╢реЗрд╖рддрдГ рдСрдиреНрдЯреЛрд▓реЙрдЬреА рд░рд╢рд┐рдпрд╛рд╕рд╛рдареА.

рддреБрдореНрд╣реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЖрд╣рд╛рдд рдХрд╛? рдпреЗрдереЗ рдЖрдордЪреНрдпрд╛ рдЯреЗрдХ рд╕рдореБрджрд╛рдпрд╛рдд рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ рд╡рд┐рдЪрд┐рддреНрд░. рддрд╕реЗрдЪ, рдПрдХ рдХрдЯрд╛рдХреНрд╖ рд╡рд┐рдХрд╕рдХ рдХреЗрдВрджреНрд░ рдСрдиреНрдЯреЛрд▓реЙрдЬреА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗрдереЗ рдЖрдгрдЦреА рд╕рд╛рдзрдиреЗ, рдХрд╛рдЧрджрдкрддреНрд░реЗ рдЖрдгрд┐ рдмрд░реЗрдЪ рдХрд╛рд╣реА рдорд┐рд│реВ рд╢рдХрддреЗ.

рд╡рд┐рдХрд╕рдХрд╛рдВрд╕рд╛рдареА рдХрд╛рд░реНрдпреЗ рдЙрдШрдбрд╛. рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдХрд░рд╛ рдЖрдгрд┐ рдмрдХреНрд╖реАрд╕ рдорд┐рд│рд╡рд╛.

рдЕрд░реНрдЬ рдХрд░рд╛ рд╡рд┐рджреНрдпрд╛рд░реНрдереНрдпрд╛рдВрд╕рд╛рдареА рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдЯреЕрд▓реЗрдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рд╛рдареА

Ontology

рдСрдиреНрдЯреЛрд▓реЙрдЬреА рд╡реЗрдмрд╕рд╛рдЗрдЯ - GitHub - рд╡рд┐рдЪрд┐рддреНрд░ - рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЗрдВрдЧреНрд░рдЬреА - Twitter - рдкрдВрдЪрдХрд░реНрдо

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛