Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage API

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage API

Π­Ρ‚ΠΎ вторая Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· сСрии ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… статСй ΠΎ создании смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² Π½Π° Python Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ сСти Ontology. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ познакомились с Blockchain & Block API смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Ontology.

БСгодня ΠΌΡ‹ обсудим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒβ€” Storage API. Storage API ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡΡ‚ΡŒ связанных API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ измСнСния Π² постоянном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°Ρ… Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅.

НиТС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Π΄Π°Π½Π½Ρ‹Ρ… пяти API:

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage API

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΡΡ‚ΡŒ API.

0. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ SmartX

1. Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Storage API

GetContext & GetReadOnlyContext

GetContext ΠΈ GetReadOnlyContext ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ контСкст, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ смарт- ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚. Return value являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Ρ…Π΅ΡˆΡƒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Как слСдуСт ΠΈΠ· названия, GetReadOnlyContext Π±Π΅Ρ€Ρ‘Ρ‚ контСкст Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π’ Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ return value являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Ρ…Π΅ΡˆΡƒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΌΡƒ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage API

Put

Ѐункция Put являСтся отвСтствСнной Π·Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ΅ словаря. Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Put ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. GetContext Π±Π΅Ρ€Ρ‘Ρ‚ контСкст Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ выполняСмого смарт- ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, keyβ€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° valueβ€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° ΡƒΠΆΠ΅ находится Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ‚ΠΎ функция ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage APIhashrate-and-shares.ru/images/obzorontology/python/functionput.png

Get

Ѐункция Get являСтся отвСтствСнной Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ посрСдством значСния ΠΊΠ»ΡŽΡ‡Π°. Π’ Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² справа, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage API

Delete

Ѐункция Delete являСтся отвСтствСнной Π·Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ посрСдством значСния ΠΊΠ»ΡŽΡ‡Π°. Π’ Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° для выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² справа ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° Python Π² сСти Ontology. Π§Π°ΡΡ‚ΡŒ 2: Storage API

2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Storage API

НиТСпривСдённый ΠΊΠΎΠ΄ Π΄Π°Ρ‘Ρ‚ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования пяти API: GetContext, Get, Put, Delete ΠΈ GetReadOnlyContext. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ API Π² SmartX.

from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext
from ontology.interop.System.Runtime import Notify

def Main(operation,args):
    if operation == 'get_sc':
        return get_sc()
    if operation == 'get_read_only_sc':
        return get_read_only_sc()
    if operation == 'get_data':
        key=args[0]
        return get_data(key)
    if operation == 'save_data':
        key=args[0]
        value=args[1]
        return save_data(key, value)
    if operation == 'delete_data':
        key=args[0]
        return delete_data(key)
    return False

def get_sc():
    return GetContext()
    
def get_read_only_sc():
    return GetReadOnlyContext()

def get_data(key):
    sc=GetContext() 
    data=Get(sc,key)
    return data
    
def save_data(key, value):
    sc=GetContext() 
    Put(sc,key,value)
    
def delete_data(key):
    sc=GetContext() 
    Delete(sc,key)

ПослСсловиС

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ являСтся ядром всСй Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½-систСмы. Ontology Storage API прост Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сфокусированы Π°Ρ‚Π°ΠΊΠΈ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ³Ρ€ΠΎΠ·Π° бСзопасности, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… статСй— storage injection attack, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ обязаны ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ бСзопасности ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связан с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство Π½Π° нашСм GitHub здСсь.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ обсудим ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Runtime API.

Π‘Ρ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ Hashrate&Shares ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для OntologyRussia. ΠΊΠ»ΠΈΠΊ

Π’Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ? ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ тСхничСскому сообщСству Π½Π° Discord. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, заглянитС Π² Π¦Π΅Π½Ρ‚Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ontology, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ большС инструмСнтов, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π—Π°ΠΊΡ€ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Ρƒ β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅.

ΠŸΠΎΠ΄Π°Ρ‚ΡŒ заявку Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°Π»Π°Π½Ρ‚ΠΎΠ² Ontology для студСнтов

Ontology

Ontology website β€” GitHub β€” Discord β€” Telegram Russian β€” Twitter β€” Reddit

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