Π’ΠΎΠ²Π° Π΅ ΡΠ°ΡΡ 3 ΠΎΡ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΡΠΎΡΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ Π² Python Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Ontology. Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΡΠ°ΡΠΈΠΈ Π²ΠΈΠ΄ΡΡ
ΠΌΠ΅
Π‘Π΅Π³Π°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΡ API Π·Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Ρ Python Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° Ontology, Π½Π΅ΠΊΠ° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ Π½Π°ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ). Runtime API ΠΈΠΌΠ° 8 ΡΠ²ΡΡΠ·Π°Π½ΠΈ API, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΎΠ±ΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ, ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Ρ ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈ.
ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ Π΄Π°Π΄Π΅Π½ΠΎ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° API Π·Π° Π΄Π°Π½Π½ΠΈ 8:
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡΠ±Π»ΠΈΠ·ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅Π·ΠΈ 8 API. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ² Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ Ontology
ΠΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ 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 Π²ΡΡΡΠ° ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π²ΠΎ ΠΊΠ»Π΅ΠΉΠΌΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΡΡΠ° Unix Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π² ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°. ΠΠ΅ΡΠ½Π°ΡΠ° Π΅Π΄ΠΈΠ½ΠΈΡΠ° Π΅ ΡΠ΅ΠΊΡΠ½Π΄Π°ΡΠ°.
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 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΎΠ±Π΅ΠΊΡ Π² ΠΎΠ±Π΅ΠΊΡ bytearray, Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Deserialize ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° bytearray Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΌΡ ΠΎΠ±Π΅ΠΊΡ. Π‘Π»Π΅Π΄Π½ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΈ Π³ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·Π²Π»ΠΈΡΠ° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΠΈ Π³ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ.
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 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° base58 ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Π°Π΄ΡΠ΅Ρ Π² bytearray Π°Π΄ΡΠ΅Ρ, Π° AddressToBase58 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° bytearray Π°Π΄ΡΠ΅Ρ Π² base58 ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Π°Π΄ΡΠ΅Ρ.
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) ΠΈΠΌΠ° Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΠΎΠ±Π΅ΠΊΡΡΡ, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, Π΅ fromAcct. ΠΠΊΠΎ Π΄Π° (Ρ.Π΅. ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ° Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»Π°), ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ΅ Π²ΡΡΡΠ°.
- ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΠΎΠ±Π΅ΠΊΡΡΡ, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ. ΠΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΎΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°, ΡΠΎΠ³Π°Π²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»Π°. Π’ΠΎΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ 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
ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π°
Π‘ΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈΡΠ΅
Π₯Π΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° OntologyRussia.
ΠΠΈΠ΅ ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ? ΠΡΠΈΡΡΠ΅Π΄ΠΈΠ½Π΅ΡΠ΅ ΡΠ΅ ΠΊΡΠΌ Π½Π°ΡΠ°ΡΠ° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ Π½Π°
ΠΠ½ΡΠΎΠ»ΠΎΠ³ΠΈΡ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com