рдпрд╣ рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдмреНрд▓реЙрдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдмрдирд╛рдиреЗ рдкрд░ рд╢реИрдХреНрд╖рд┐рдХ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рддреАрд╕рд░рд╛ рднрд╛рдЧ рд╣реИред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╣рдо рдкрд░рд┐рдЪрд┐рдд рд╣реБрдП рдереЗ
рдЕрдм рдЬрдм рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреБрдХреНрдд рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдкреАрдЖрдИ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдЗрдП рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ (рдЕрдиреБрдмрдВрдз рдирд┐рд╖реНрдкрд╛рджрди рдПрдкреАрдЖрдИ)ред рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдореЗрдВ 8 рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рд╣реИрдВ рдЬреЛ рдЕрдиреБрдмрдВрдз рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдмрджрд▓рдиреЗ рдФрд░ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
рдиреАрдЪреЗ 8 рдПрдкреАрдЖрдИ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЖрдЗрдП 8 рдПрдкреАрдЖрдИ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдУрдиреНрдЯреЛрд▓реЙрдЬреА рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрдиреБрдмрдВрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ: 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")
рдЖрдк рдЗрд╕реЗ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдЧреЗрдЯрдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ
рдЧреЗрдЯрдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпреВрдирд┐рдХреНрд╕ рд╕рдордп рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдорд╛рдк рдХреА рдЗрдХрд╛рдИ рджреВрд╕рд░реА рд╣реИ.
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
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ
рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╕рдВрдкрд╛рджрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рд╣реИрд╢рд░реЗрдЯ рдФрд░ рд╢реЗрдпрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдУрдиреНрдЯреЛрд▓реЙрдЬреАрд░реВрд╕ рдХреЗ рд▓рд┐рдПред
рдХреНрдпрд╛ рдЖрдк рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ? рд╣рдорд╛рд░реЗ рддрдХрдиреАрдХреА рд╕рдореБрджрд╛рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ
рдЖрдВрдЯрд▓рдЬреА
рд╕реНрд░реЛрдд: www.habr.com