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