рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ

рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ

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

  1. рдмреНрд▓реЙрдХрдЪреЗрди рдФрд░ рдмреНрд▓реЙрдХ рдПрдкреАрдЖрдИ
  2. рднрдВрдбрд╛рд░рдг рдПрдкреАрдЖрдИ.

рдЕрдм рдЬрдм рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреБрдХреНрдд рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдкреАрдЖрдИ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдЗрдП рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ (рдЕрдиреБрдмрдВрдз рдирд┐рд╖реНрдкрд╛рджрди рдПрдкреАрдЖрдИ)ред рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдореЗрдВ 8 рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рд╣реИрдВ рдЬреЛ рдЕрдиреБрдмрдВрдз рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдмрджрд▓рдиреЗ рдФрд░ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

рдиреАрдЪреЗ 8 рдПрдкреАрдЖрдИ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ

рдЖрдЗрдП 8 рдПрдкреАрдЖрдИ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдУрдиреНрдЯреЛрд▓реЙрдЬреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрдиреБрдмрдВрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ SmartX рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ.

рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ: ontology.interop.System.Runtime ╨╕ рдСрдиреНрдЯреЛрд▓реЙрдЬреА.рдЗрдВрдЯрд░рдСрдк.рдСрдиреНрдЯреЛрд▓реЙрдЬреА.рд░рдирдЯрд╛рдЗрдо. рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдкрде рдореЗрдВ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдПрдкреАрдЖрдИ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдиреАрдЪреЗ рджреА рдЧрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ API рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИрдВред

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")

рдЖрдк рдЗрд╕реЗ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рднрд╛рдЧ 3: рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ

рдЧреЗрдЯрдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ

рдЧреЗрдЯрдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпреВрдирд┐рдХреНрд╕ рд╕рдордп рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдорд╛рдк рдХреА рдЗрдХрд╛рдИ рджреВрд╕рд░реА рд╣реИ.

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

рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдЕрдХреНрд░рдорд╛рдВрдХрди

рдпрд╣ рдХреНрд░рдордмрджреНрдзрддрд╛ рдФрд░ рдЕрдХреНрд░рдорд╛рдВрдХрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╣реИред рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╛рдЗрдЯрд░реЗрд░реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреАрд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝ рдлрд╝рдВрдХреНрд╢рди рдмрд╛рдЗрдЯрд░реЗрд░реЗ рдХреЛ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдирдореВрдирд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдмрдВрдз рдХреЗ рд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдмрдВрдз рдХреЗ рдирд┐рд░рдВрддрд░ рднрдВрдбрд╛рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рднреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

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

рдмреЗрд╕58рдЯреВрдПрдбреНрд░реЗрд╕ рдФрд░ рдПрдбреНрд░реЗрд╕рдЯреВрдмреЗрд╕58

рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рдХреА рдпрд╣ рдЬреЛрдбрд╝реА рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред 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(fromAcct) рдлрд╝рдВрдХреНрд╢рди рдХреА рджреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдБ рд╣реИрдВ:

  • рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЙрд▓рд░ Accct рд╕реЗ рд╣реИред рдпрджрд┐ рд╣рд╛рдВ (рдЕрд░реНрдерд╛рдд, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ), рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
  • рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдПрдХ рдЕрдиреБрдмрдВрдз рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдЕрдиреБрдмрдВрдз рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдЕрдиреБрдмрдВрдз рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рддреНрдпрд╛рдкрди рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ 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

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЧреБрдереБрдм. рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдкрд░рд┐рдЪрдп рджреЗрдВрдЧреЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдПрдкреАрдЖрдИрдУрдиреНрдЯреЛрд▓реЙрдЬреА рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзреЛрдВ рдореЗрдВ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдПред

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

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

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рдХрд╛рд░реНрдп. рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░реЗрдВ рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдСрдиреНрдЯреЛрд▓реЙрдЬреА рдкреНрд░рддрд┐рднрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП

рдЖрдВрдЯрд▓рдЬреА

рдУрдиреНрдЯреЛрд▓реЙрдЬреА рд╡реЗрдмрд╕рд╛рдЗрдЯ - GitHub - рдХрд▓рд╣ - рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд░реВрд╕реА - рдЯреНрд╡рд┐рдЯрд░ - рд░реЗрдбрд┐рдЯ

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ