ProHoster > Blog > administracja > Jak napisać smart kontrakt w Pythonie w sieci Ontology. Część 1: Blockchain i Block API
Jak napisać smart kontrakt w Pythonie w sieci Ontology. Część 1: Blockchain i Block API
Jest to pierwsza część serii samouczków dotyczących tworzenia inteligentnych kontraktów w języku Python w sieci blockchain Ontology za pomocą narzędzia do tworzenia inteligentnych kontraktów. SmartX.
W tym artykule rozpoczniemy naszą znajomość API smart kontraktów Ontology. API smart kontraktów Ontology jest podzielone na 7 modułów:
Blockchain & Block API,
środowisko wykonawcze API,
API przechowywania,
natywne API,
Uaktualnij API,
API mechanizmu wykonawczego i
Interfejs API połączeń statycznych i dynamicznych.
Blockchain & Block API to główna część systemu inteligentnych kontraktów Ontology. Blockchain API obsługuje podstawowe operacje zapytań blockchain, takie jak uzyskiwanie bieżącej wysokości bloku, podczas gdy Block API obsługuje podstawowe operacje zapytań blokowych, takie jak zapytanie o liczbę transakcji dla danego bloku.
Zacznijmy!
Najpierw utwórz nową umowę w SmartXa następnie postępuj zgodnie z poniższymi instrukcjami.
1. Jak korzystać z API Blockchain
Łącza do funkcji inteligentnego kontraktu są identyczne z łączami Pythona. W razie potrzeby można wprowadzić odpowiednie funkcje. Na przykład poniższa instrukcja wprowadza funkcję GetHeight w celu uzyskania bieżącej wysokości bloku oraz funkcję GetHeader w celu pobrania nagłówka bloku.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
Uzyskaj wysokość
GetHeight służy do uzyskania numeru sekwencji ostatniego bloku w łańcuchu bloków, jak pokazano w poniższym przykładzie. W ostatnim przykładzie dla wygody pominiemy funkcję Main, ale w razie potrzeby możesz ją dodać.
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
Pobierz nagłówek
GetHeader służy do pobierania nagłówka bloku, parametrem jest numer seryjny bloku w blockchainie. Przykład:
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
Pobierz TransakcjęByHash
GetTransactionByHash służy do uzyskiwania transakcji za pośrednictwem skrótu transakcji. Hash transakcji jest wysyłany do Pobierz TransakcjęByHash jako parametry w formacie bytearray. Kluczem do tej funkcji jest konwersja skrótu transakcji w formacie szesnastkowym na skrót transakcji w formacie bytearray. To ważny krok. W przeciwnym razie pojawiłby się błąd wskazujący, że nie ma bloku z tym skrótem bloku. Weźmy jako przykład skrót transakcji w formacie szesnastkowym, aby przekonwertować go na format bajtowej tablicy. Przykład wygląda następująco:
Można to zrobić za pomocą narzędzia do konwersji String Byte Array dostarczonego przez SmartX. Na koniec przekonwertuj wynikową tablicę bajtów na podobny ciąg:
Deweloperzy mogą użyć funkcji GetContract, aby uzyskać kontrakt za pomocą skrótu kontraktu. Proces konwersji skrótu kontraktu jest taki sam, jak wspomniany powyżej proces konwersji skrótu transakcji.
GetBlock służy do uzyskania bloku. Istnieją dwa sposoby na zdobycie określonego bloku.
1. Uzyskaj blok po wysokości bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Uzyskaj hash blok po bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Jak korzystać z Block API
W Block API dostępne są trzy funkcje: Pobierz Transakcje, Pobierz liczbę transakcjii Pobierz TransakcjęByIndex. Rozłożymy je jeden po drugim.
Pobierz liczbę transakcji
GetTransactionCount służy do uzyskania liczby transakcji dla danego bloku.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
Pobierz Transakcje
Deweloperzy mogą użyć funkcji GetTransactions, aby uzyskać wszystkie transakcje w danym bloku.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txs
Pobierz TransakcjęByIndex
GetTransactionByIndex służy do uzyskania określonej transakcji w danym bloku.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # index starts from 0.
return tx
Kompletny przewodnik można znaleźć na naszej stronie GitHub.
Posłowie
Blockchain & Block API jest nieodzowną częścią inteligentnych kontraktów, ponieważ można ich używać do żądania danych blockchain i blokowania danych w inteligentnych kontraktach. W kolejnych artykułach omówimy, jak korzystać z pozostałych interfejsów API i dowiemy się, w jaki sposób wchodzą one w interakcje z łańcuchem blokowym Ontology.
Artykuł został przetłumaczony przez redakcję Hashrate&Shares specjalnie dla OntologyRussia. płakać
jesteś programistą? Dołącz do naszej społeczności technicznej pod adresem Discord. Także przyjrzyj się Centrum programistów na naszej stronie internetowej, gdzie można znaleźć narzędzia dla programistów, dokumentację i nie tylko.