Как Π΄Π° напишСм смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology. Част 1: Blockchain & Block API

Как Π΄Π° напишСм смарт-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π½Π° Python Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Ontology. Част 1: Blockchain & Block API

Π’ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° част ΠΎΡ‚ сСрия ΠΎΠ±ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΈ статии Π·Π° създаванС Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ Π½Π° Python Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инструмСнт Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ. SmartX.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅Ρ‚ΠΎ с API Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Ontology. API Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Ontology Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° 7 ΠΌΠΎΠ΄ΡƒΠ»Π°:

  1. Blockchain & Block API,
  2. Runtime API,
  3. Storage API,
  4. Native API,
  5. Upgrade API,
  6. Execution Engine API ΠΈ
  7. Static & Dynamic Call API.

Blockchain & Block API Π΅ основната част Π½Π° систСмата Π·Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ Ontology. Blockchain API ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° основни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½-запитвания, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° височина Π½Π° Π±Π»ΠΎΠΊΠ°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Block API ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° основни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π±Π»ΠΎΠΊ-запитвания, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ изискванС Π½Π° Π±Ρ€ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Π±Π»ΠΎΠΊ.

НСка Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ!

ΠŸΡŠΡ€Π²ΠΎ, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ² ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π² SmartX, Π° слСд Ρ‚ΠΎΠ²Π° слСдвайтС инструкциитС ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

1. Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Blockchain API

Π’Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ към Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅ са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π² Python. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ нСобходимост. НапримСр, слСдната инструкция въвСТда GetHeight β€” функция Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° височина Π½Π° Π±Π»ΠΎΠΊΠ° ΠΈ GetHeader β€” функция Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠ°.

from ontology.interop.System.Blockchain import GetHeight, GetHeader

GetHeight

GetHeight сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° послСдния порядков Π½ΠΎΠΌΠ΅Ρ€ Π½Π° Π±Π»ΠΎΠΊΠ° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² слСдния ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ послСдния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° удобство Ρ‰Π΅ пропуснСм функцията Main, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° я Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeight
def Main(operation):
    if operation == 'demo':
        return demo()
    return False

def demo():
    height=GetHeight()
    Notify(height) # print height
    return height #return height after running the function

GetHeader

GetHeader сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠ°, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ Π΅ порядковият Π½ΠΎΠΌΠ΅Ρ€ Π½Π° Π±Π»ΠΎΠΊΠ° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeader
def demo():
    block_height=10
    header=GetHeader(block_height) 
    Notify(header)
return header

GetTransactionByHash

GetTransactionByHash сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° транзакция ΠΏΠΎ Ρ…Π΅Ρˆ Π½Π° транзакцията. Π₯Π΅ΡˆΡŠΡ‚ Π½Π° транзакцията сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² GetTransactionByHash ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ bytearray. ΠšΠ»ΡŽΡ‡ΡŠΡ‚ Π·Π° Ρ‚Π°Π·ΠΈ функция Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ…Π΅ΡˆΠ° Π½Π° транзакцията ΠΎΡ‚ hex Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² Ρ…Π΅Ρˆ Π½Π° транзакцията Π² bytearray Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½Π° ΡΡ‚ΡŠΠΏΠΊΠ°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°, която ΡƒΠΊΠ°Π·Π²Π°, Ρ‡Π΅ няма Π±Π»ΠΎΠΊ с Ρ‚Π°ΠΊΡŠΠ² Ρ…Π΅Ρˆ. НСка Π²Π·Π΅ΠΌΠ΅ΠΌ Ρ…Π΅Ρˆ Π½Π° транзакцията Π² hex Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π² bytearray Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

ΠŸΡŠΡ€Π²ΠΎ ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Ρ…Π΅ΡˆΠ° Π½Π° транзакцията:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ°Ρ‚ Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инструмСнта Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Hex Number(little endian)Number, прСдоставСн ΠΎΡ‚ SmartX.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΉΡ‚Π΅ получСния Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ bytearray:

{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}

Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ с инструмСнта Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ String Byte Array, прСдоставСн ΠΎΡ‚ SmartX. Накрая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΉΡ‚Π΅ получСния bytearray Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½ΠΈΠ·:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

По-Π΄ΠΎΠ»Ρƒ Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° функцията GetTransactionByHash, която Π²Π·Π΅ΠΌΠ° транзакция Ρ‡Ρ€Π΅Π· Ρ…Π΅ΡˆΠ° Π½Π° транзакцията:

from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
    # tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    tx=GetTransactionByHash(tx_hash)
    return tx

GetTransactionHeight

GetTransactionHeight сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° височината Π½Π° транзакцията Ρ‡Ρ€Π΅Π· Ρ…Π΅ΡˆΠ° Π½Π° транзакцията. НСка Π²Π·Π΅ΠΌΠ΅ΠΌ Ρ…Π΅ΡˆΠ° ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅:

from ontology.interop.System.Blockchain import  GetTransactionHeight
def demo():
    #   tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    height=GetTransactionHeight(tx_hash)
    return height

GetContract

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ функцията GetContract, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Ρ‡Ρ€Π΅Π· Ρ…Π΅ΡˆΠ° Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°. ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ…Π΅ΡˆΠ° Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π° Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ Π½Π° процСса Π½Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ…Π΅ΡˆΠ° Π½Π° транзакцията, ΡƒΠΏΠΎΠΌΠ΅Π½Π°Ρ‚ ΠΏΠΎ-Π³ΠΎΡ€Π΅.

from ontology.interop.System.Blockchain import GetContract
def demo():
    # contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"    
    contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
    contract=GetContract(contract_hash)
    return contract

GetBlock

GetBlock сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊ. Има Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Π±Π»ΠΎΠΊ.

1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊ ΠΏΠΎ височината Π½Π° Π±Π»ΠΎΠΊΠ°:

from ontology.interop.System.Blockchain import GetBlock
def demo():
    block=GetBlock(1408)
    return block

2. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊ ΠΏΠΎ Ρ…Π΅ΡˆΠ° Π½Π° Π±Π»ΠΎΠΊΠ°:

from ontology.interop.System.Blockchain import GetBlock
def demo():    
    block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
    block=GetBlock(block_hash)

2. Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Block API

Има Ρ‚Ρ€ΠΈ Π½Π°Π»ΠΈΡ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Block API: GetTransactions, GetTransactionCount, ΠΈ GetTransactionByIndex. Π©Π΅ Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄Π½Π° ΠΏΠΎ Π΅Π΄Π½Π°.

GetTransactionCount

GetTransactionCount сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° Π΄Π°Π΄Π΅Π½ Π±Π»ΠΎΠΊ.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
    block=GetBlock(1408)
    count=GetTransactionCount(block)
    return count

GetTransactions

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ функцията GetTransactions, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ всички Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Π±Π»ΠΎΠΊ.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions 
def demo():
    block=GetBlock(1408)
    txs=GetTransactions(block)
    return txs

GetTransactionByIndex

GetTransactionByIndex сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° транзакция Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Π±Π»ΠΎΠΊ.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
    block=GetBlock(1408)
    tx=GetTransactionByIndex(block,0) # ΠΈΠ½Π΄Π΅ΠΊΡΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΎΡ‚ 0.
    return tx

ΠŸΡŠΠ»Π½ΠΎΡ‚ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ Π½Π° нашия GitHub.

БлСдсловиС

Blockchain & Block API Π΅ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ° част ΠΎΡ‚ смарт-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π±Π»ΠΎΠΊ Π² смарт-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅. Π’ слСдващитС статии Ρ‰Π΅ обсъдим ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ останалитС API ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΎΡƒΡ‡ΠΈΠΌ тяхното взаимодСйствиС с Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° Ontology.

Бтатията Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ‚ рСдакцията Π½Π° Hashrate&Shares спСциално Π·Π° OntologyRussia. ΠΊΠ»ΠΈΠΊ

Π’ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ? ΠŸΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½Π΅Ρ‚Π΅ сС към Π½Π°ΡˆΠ΅Ρ‚ΠΎ тСхничСско общСство Π½Π° Discord. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π² Π¦Π΅Π½Ρ‚ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° нашия сайт, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ инструмСнти Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, докумСнтация ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ.

Ontology

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster