ProHoster > Bloc > Administració > Com escriure un contracte intel·ligent en Python a la xarxa d'Ontology. Part 1: Blockchain i Block API
Com escriure un contracte intel·ligent en Python a la xarxa d'Ontology. Part 1: Blockchain i Block API
Aquesta és la primera part d'una sèrie de tutorials sobre la creació de contractes intel·ligents Python a la xarxa blockchain d'Ontology mitjançant l'eina de desenvolupament de contractes intel·ligents. SmartX.
En aquest article, començarem a conèixer l'API de contracte intel·ligent d'Ontology. L'API de contracte intel·ligent d'Ontology es divideix en 7 mòduls:
Blockchain i Block API,
API d'execució
API d'emmagatzematge
API nativa,
Actualitza l'API,
API d'Execution Engine i
API de trucades estàtiques i dinàmiques.
Blockchain & Block API és la part bàsica del sistema de contracte intel·ligent d'Ontology. L'API Blockchain admet operacions bàsiques de consulta de blockchain, com ara obtenir l'alçada actual d'un bloc, mentre que l'API Block admet operacions bàsiques de consulta de blocs, com ara consultar el nombre de transaccions per a un bloc determinat.
Comencem!
Primer, creeu un nou contracte SmartXi després seguiu les instruccions següents.
1. Com utilitzar l'API Blockchain
Les referències de funcions de contracte intel·ligent són idèntiques a les referències de Python. Podeu introduir les funcions rellevants segons sigui necessari. Per exemple, la següent instrucció introdueix una funció GetHeight per obtenir l'alçada actual del bloc i una funció GetHeader per obtenir la capçalera del bloc.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight s'utilitza per obtenir l'últim número de seqüència de bloc a la cadena de blocs, tal com es mostra a l'exemple següent. En l'últim exemple, ometrem la funció Main per comoditat, però podeu afegir-la si cal.
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 s'utilitza per obtenir la capçalera del bloc, el paràmetre és el número de sèrie del bloc a la cadena de blocs. Exemple:
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 s'utilitza per recuperar una transacció mitjançant un hash de transacció. El hash de la transacció s'envia a GetTransactionByHash com a paràmetres en format bytearray. La clau d'aquesta funció és convertir el hash de transacció en format hexadecimal al hash de transacció en format bytearray. Aquest és un pas important. En cas contrari, obtindreu un error que indica que no hi ha cap bloc amb aquest hash de bloc. Prenem com a exemple el hash de la transacció en format hexadecimal per convertir-lo al format bytearray. Un exemple és el següent:
Això es pot fer mitjançant l'eina de conversió String Byte Array proporcionada per SmartX. Finalment, convertiu el bytearray resultant en una cadena com aquesta:
Els desenvolupadors poden utilitzar la funció GetContract per obtenir un contracte mitjançant el hash del contracte. El procés de conversió de hash del contracte és el mateix que el procés de conversió de hash de transacció esmentat anteriorment.
GetBlock s'utilitza per obtenir un bloc. Hi ha dues maneres d'obtenir un bloc específic.
1. Obteniu l'alçada bloc per bloc:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Obteniu un hash bloc per bloc:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Com utilitzar Block API
Hi ha tres funcions disponibles a l'API Block: GetTransactions, GetTransactionCountI GetTransactionByIndex. Els anirem desglossant un per un.
GetTransactionCount
GetTransactionCount s'utilitza per obtenir el nombre de transaccions per a un bloc determinat.
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
Els desenvolupadors poden utilitzar la funció GetTransactions per obtenir totes les transaccions d'un bloc determinat.
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 s'utilitza per obtenir una transacció específica en un bloc determinat.
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
L'API Blockchain & Block és una part indispensable dels contractes intel·ligents, ja que podeu utilitzar-los per sol·licitar dades de blockchain i bloquejar dades en contractes intel·ligents. En propers articles, parlarem de com utilitzar la resta de les API i descobrirem com interactuen amb la cadena de blocs d'Ontology.
L'article va ser traduït pels editors d'Hashrate&Shares especialment per a OntologyRussia. feu clic a
Ets desenvolupador? Uneix-te a la nostra comunitat tecnològica a Discòrdia. A més, fes-hi una ullada Centre de desenvolupadors al nostre lloc web, on podeu trobar eines per a desenvolupadors, documentació i molt més.