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

рдЫрд╡рд┐

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

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

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

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

рдЫрд╡рд┐

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

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


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

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 

рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдФрд░ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ


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

 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 рдЖрдзрд╛рд░ рдХреЗ рдПрдирдХреЛрдбреЗрдб рдкрддреЗ рдХреЗ рд▓рд┐рдП рдкрддреЗ рдХреЛ рдмрд╛рдпрдЯрд┐рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

 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) рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВ:

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

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


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

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


рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдЦреЛрд▓реЗрдВред рдХрд╛рд░реНрдп рдмрдВрдж рдХрд░реЗрдВ - рдПрдХ рдкреБрд░рд╕реНрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдУрдиреНрдЯреЛрд▓реЛрдЬреА рдЫрд╛рддреНрд░ рдкреНрд░рддрд┐рднрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░реЗрдВ

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


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

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


All Articles