рдУрдиреНрдЯреЛрд▓рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдЗрдердирдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗред рднрд╛рдЧ рей: рд░рдирдЯрд╛рдЗрдо API

рдУрдиреНрдЯреЛрд▓рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдЗрдердирдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗред рднрд╛рдЧ рей: рд░рдирдЯрд╛рдЗрдо API

рдпреЛ рдУрдиреНрдЯреЛрд▓рдЬреА рдмреНрд▓рдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдЗрдердирдорд╛ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд╢реИрдХреНрд╖рд┐рдХ рд▓реЗрдЦрд╣рд░реВрдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдХреЛ рддреЗрд╕реНрд░реЛ рднрд╛рдЧ рд╣реЛред рдЕрдШрд┐рд▓реНрд▓реЛ рд▓реЗрдЦрд╣рд░реВрдорд╛ рд╣рд╛рдореАрд▓реЗ рдЪрд┐рдиреНрдпреМрдВ

  1. Blockchain рд░ Block API
  2. рднрдгреНрдбрд╛рд░рдг API.

рдЕрдм рдЬрдм рддрдкрд╛рдИрдВрд╕рдБрдЧ рдУрдиреНрдЯреЛрд▓рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдЗрдерди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдорд╛рд░реНрдЯ рд╕рдореНрдЭреМрддрд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрд╛ рдЙрдкрдпреБрдХреНрдд рдкрд░реНрд╕рд┐рд╕реНрдЯреЗрдиреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ API рд▓рд╛рдИ рдХрд╕рд░реА рдХрд▓ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЫ, рдЖрдЙрдиреБрд╣реЛрд╕реН рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВред рд░рдирдЯрд╛рдЗрдо API (рдЕрдиреБрдмрдВрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди API)ред рд░рдирдЯрд╛рдЗрдо API рд╕рдБрдЧ 8 рд╕рдореНрдмрдиреНрдзрд┐рдд API рд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рд╕рдореНрдЭреМрддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЭрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдбреЗрдЯрд╛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

рддрд▓ 8 API рдбрд╛рдЯрд╛рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдЫ:

рдУрдиреНрдЯреЛрд▓рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдЗрдердирдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗред рднрд╛рдЧ рей: рд░рдирдЯрд╛рдЗрдо API

8 API рдбрд╛рдЯрд╛ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реМрдВред рдпреЛ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рддрдкрд╛рдИрдВрд▓реЗ Ontology рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдгрдорд╛ рдирдпрд╛рдБ рд╕рдореНрдЭреМрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╕реНрдорд╛рд░реНрдЯ рдПрдХреНрд╕ рд░ рддрд▓рдХрд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

Runtime API рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ

рдЖрдпрд╛рдд рдЧрд░реНрди рджреБрдИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН рд░рдирдЯрд╛рдЗрдо API: ontology.interop.System.Runtime ╨╕ ontology.interop.Ontology.Runtimeред Ontology рдкрдердорд╛ рдирдпрд╛рдБ рдердкрд┐рдПрдХрд╛ API рд╣рд░реВ рдЫрдиреНред рддрд▓рдХрд╛ рд░реЗрдЦрд╛рд╣рд░реВрд▓реЗ API рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдЧрд░реНрджрдЫред

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

API рд▓рд╛рдИ рд╕реВрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╕реВрдЪрдирд╛ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдШрдЯрдирд╛ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрджрдЫред рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рд╣реЗрдХреНрд╕ рд╕реНрдЯреНрд░рд┐рдЩ "рд╣реЗрд▓реЛ рд╢рдмреНрдж" рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХрднрд░ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрдиреЗрдЫред

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

рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд▓рдЧрд╣рд░реВрдорд╛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

рдУрдиреНрдЯреЛрд▓рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрд╛рдЗрдердирдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗред рднрд╛рдЧ рей: рд░рдирдЯрд╛рдЗрдо 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

рдХреНрд░рдордмрджреНрдз рд░ рдбрд┐рд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдпреЛ рдХреНрд░рдордмрджреНрдзрддрд╛ рд░ deserialization рдкреНрд░рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдЬреЛрдбреА рд╣реЛред 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 (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

рдердк рдЬрд╛рдирдХрд╛рд░реА рдорд╛ рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ рдЧреБрдереБрдмред рдЕрд░реНрдХреЛ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рдкрд░рд┐рдЪрдп рджрд┐рдиреЗрдЫреМрдВ рдиреЗрдЯрд┐рдн APIOntology рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзрд╣рд░реВрдорд╛ рд╕рдореНрдкрддреНрддрд┐рд╣рд░реВ рдХрд╕рд░реА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрдирдХреЛ рд▓рд╛рдЧрд┐ред

рд▓реЗрдЦ рд╕рдореНрдкрд╛рджрдХрд╣рд░реВрд▓реЗ рдЕрдиреБрд╡рд╛рдж рдЧрд░реЗрдХрд╛ рдерд┐рдП рд╣реИрд╕рд░реЗрдЯ рд░ рд╕реЗрдпрд░рд╣рд░реВ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА Ontology рд░реВрд╕ рдХреЛ рд▓рд╛рдЧреАред

рддрдкрд╛рдИрдВ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдиреБрд╣реБрдиреНрдЫ? рд╣рд╛рдореНрд░реЛ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╕рдореБрджрд╛рдпрдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрд╣реЛрд╕реН рддреНрдпрд╛рдЧред рд╕рд╛рдереИ, рдПрдХ рдирдЬрд░ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдХреЗрдиреНрджреНрд░ рдУрдиреНрдЯреЛрд▓рдЬреА, рддрдкрд╛рдЗрдБ рддреНрдпрд╣рд╛рдБ рдердк рдЙрдкрдХрд░рдгрд╣рд░реВ, рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд░ рдзреЗрд░реИ рдзреЗрд░реИ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЗрдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдирд┐рд╡реЗрджрди рдЧрд░реНрдиреБ рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдУрдиреНрдЯреЛрд▓рдЬреА рдкреНрд░рддрд┐рднрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рд▓рд╛рдЧрд┐

рдУрдиреНрдЯреЛрд▓реЛрдЬреА

рдУрдиреНрдЯреЛрд▓рдЬреА рд╡реЗрдмрд╕рд╛рдЗрдЯ - GitHub - рддреНрдпрд╛рдЧ - рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд░реВрд╕реА - twitter - Reddit

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди