ΠΡΠΎ 3-Ρ ΡΠ°ΡΡΡ ΠΈΠ· ΡΠ΅ΡΠΈΠΈ ΠΎΠ±ΡΡΠ°ΡΡΠΈΡ
ΡΡΠ°ΡΠ΅ΠΉ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Π½Π° Python Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΡΠ΅ΡΠΈ Ontology. Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΡΡΠ°ΡΡΡΡ
ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΡ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ·Π²Π°ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅Π΅ API Π΄Π»Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python Π² ΡΠ΅ΡΠΈ Ontology, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Ρ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Runtime API (Contract Execution API). Runtime API ΠΈΠΌΠ΅Π΅Ρ 8 ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
API, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΈΠΆΠ΅ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
8 API:
ΠΠ°Π²Π°ΠΉΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ 8 API. ΠΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Ontology
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Runtime API
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΠΏΡΡΠΈ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Runtime 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, GetCurrentBlockHash
Notify API
Π€ΡΠ½ΠΊΡΠΈΡ Notify ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΡΠ΅ΡΠΈ. Π Π½ΠΈΠΆΠ΅ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Notify Π²Π΅ΡΠ½ΡΡ hex- ΡΡΡΠΎΠΊΡ β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 ΠΈ Deserialize
ΠΡΠΎ ΠΏΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ 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
Π€ΡΠ½ΠΊΡΠΈΡ 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
ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π°
Π‘ΡΠ°ΡΡΡ Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΠ΅ΠΉ
Hashrate&Shares ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ OntologyRussia.
ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ? ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ Π½Π°
Ontology
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com