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

рдЫрд╡рд┐

рдкрд░рд┐рдЪрдп


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

рдЫрд╡рд┐

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

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


Runtime API, ontology.interop.System.Runtime рдФрд░ ontology.interop.Ontology.Runtime рдХреЛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ 2 рд░рд╛рд╕реНрддреЗ рд╣реИрдВред рдУрдиреНрдЯреЛрд▓реЛрдЬреА рдкрде рдореЗрдВ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдПрдкреАрдЖрдИ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЗрди 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 API


GetCurrentBlockHash рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХрд╛ рд╣реИрд╢ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

 from ontology.interop.Ontology.Runtime import GetCurrentBlockHash def demo(): block_hash = GetCurrentBlockHash() return block_hash 

рд╕реАрд░рд┐рдпрд▓ рдФрд░ рд╡рд░реНрдгрди рдХрд░реЗрдВ


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

 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 рдПрдиреНрдХреЛрдбреЗрдб рдкрддреЗ рдХреЛ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдкреНрд░рдкрддреНрд░ рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ AddressToBase58 рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдкреНрд░рдкрддреНрд░ рдкрддреЗ рдХреЛ рдПрдХ рдмреЗрд╕ 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


CheckWitness (fromAcct) рдлрд╝рдВрдХреНрд╢рди рдХреА рджреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдБ рд╣реИрдВ:

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

GetCallingScriptHash () H


рдУрдиреНрдЯреЛрд▓реЙрдЬреА рдкрд╛рдЗрдерди рд╕рдВрдХрд▓рдХ

 from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res 

рдкреВрд░реНрдг рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдпрд╣рд╛рдБ рдЦреЛрдЬреЗрдВред

рд╕рд╛рд░рд╛рдВрд╢


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



рдпрд╣ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдУрдиреНрдЯреЛрд▓реЛрдЬреА рдореАрдбрд┐рдпрдо рдмреНрд▓реЙрдЧ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

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

рдСрдиреНрдХреЛрд▓реЙрдЬреА рдХреЛ рдХрд╣реАрдВ рдФрд░ рдЦреЛрдЬреЗрдВ


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

Source: https://habr.com/ru/post/hi470722/


All Articles