
Π’ΠΎΠ²Π° Π΅ ΡΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠ΅ΡΠΈΡΡΠ° ΠΎΠ±ΡΡΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° Python Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Ontology. Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ
ΠΌΠ΅ Ρ
- .
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ API Π·Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Python Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° Ontology, Π½Π΅ΠΊΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Ρ Runtime API (API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ). API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ° 8 ΡΠ²ΡΡΠ·Π°Π½ΠΈ API, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΎΠ±ΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈ.
ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ 8 API:

ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅Π·ΠΈ 8 API. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ² Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ Ontology ΠΈ Π΄Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π΄Π²Π° Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΈΠΌΠΏΠΎΡΡ Π½Π° API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅: ontology.interop.System.Runtime ΠΈ ontology.interop.Ontology.Runtime. ΠΡΡΡΡ Ontology ΡΡΠ΄ΡΡΠΆΠ° Π½Π°ΡΠΊΠΎΡΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡΠ΅ API. Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Ρ ΡΠ΅Π·ΠΈ API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashAPI Notify
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Notify ΠΏΡΠ΅Π΄Π°Π²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ Π² ΡΡΠ»Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Notify ΡΠ΅ Π²ΡΡΠ½Π΅ hex-ΡΡΡΠΈΠ½Π³ "hello world" ΠΈ ΡΠ΅ Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠ²Π° Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅:

API GetTime
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° GetTime Π²ΡΡΡΠ° ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π²Π° ΠΎΡΠΌΠ΅ΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Unix Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π² ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π΅ Π±ΠΈΠ»Π° ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π°. ΠΠ΄ΠΈΠ½ΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ Π΅ ΡΠ΅ΠΊΡΠ½Π΄Π°.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numAPI GetCurrentBlockHash
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° GetCurrentBlockHash Π²ΡΡΡΠ° Ρ Π΅Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ Π±Π»ΠΎΠΊ.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize ΠΈ Deserialize
Π’ΠΎΠ²Π° Π΅ Π΄Π²ΠΎΠΉΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Serialize ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΎΠ±Π΅ΠΊΡ Π² ΠΎΠ±Π΅ΠΊΡ bytearray, Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Deserialize ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° bytearray ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΈ Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·Π²Π»ΠΈΡΠ° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΠΈ Π³ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ.
ΠΎΡ ontology.interop.System.Runtime ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
ΠΎΡ ontology.interop.System.Storage ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Put, Get, GetContext
def Main(operation, args):
Π°ΠΊΠΎ operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
Π°ΠΊΠΎ 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 dataBase58ToAddress ΠΈ AddressToBase58
Π’Π°Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π°Π΄ΡΠ΅ΡΠΈ. Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Base58ToAddress ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Π°Π΄ΡΠ΅Ρ base58 Π² Π°Π΄ΡΠ΅Ρ Π² ΡΠΎΡΠΌΠ°Ρ bytearray, Π° AddressToBase58 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π°Π΄ΡΠ΅Ρ Π² ΡΠΎΡΠΌΠ°Ρ bytearray Π² ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Π°Π΄ΡΠ΅Ρ base58.
ΠΎΡ ontology.interop.Ontology.Runtime ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ 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()οΌ
ΠΠ°ΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π°
ΠΎΡ ontology.interop.System.Runtime ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ CheckWitness
ΠΎΡ ontology.interop.Ontology.Runtime ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° . Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Native API, Π·Π° Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈ Π² ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π½Π° Ontology.
Π‘ΡΠ°ΡΠΈΡΡΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° OntologyRussia.
ΠΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ? ΠΡΠΈΡΡΠ΅Π΄ΠΈΠ½Π΅ΡΠ΅ ΡΠ΅ ΠΊΡΠΌ Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Π½Π° . ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π² Ontology, ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ.
ΠΠ°Π²ΡΡΡΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ° β ΠΏΠΎΠ»ΡΡΠ΅ΡΠ΅ Π½Π°Π³ΡΠ°Π΄Π°.
Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° ΡΠ°Π»Π°Π½ΡΠΈ Π½Π° Ontology Π·Π° ΡΡΡΠ΄Π΅Π½ΡΠΈ
Ontology
β β β β β
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
