
Il s'agit de la première partie d'une série de didacticiels sur la création de contrats intelligents en Python sur le réseau de blockchain d'Ontology à l'aide de l'
outil de développement de contrat intelligent
SmartX .
Dans cet article, nous allons commencer notre introduction à l'API Ontology Smart Contract. L'API Smart Contract d'Ontology est divisée en 7 modules:
- Blockchain & Block API,
- API de stockage
- API d'exécution
- API native
- API de mise à niveau
- API Execution Engine et
- API d'appel statique et dynamique.
L'API Blockchain & Block est une partie essentielle du système de contrat intelligent Ontology. L'API Blockchain prend en charge les opérations de demande de chaîne de bloc de base, telles que l'obtention de la hauteur de bloc actuelle, tandis que l'API de bloc prend en charge les opérations de demande de bloc de base, telles que la demande du nombre de transactions pour un bloc donné.
Commençons!Pour commencer, créez un nouveau contrat dans
SmartX , puis suivez les instructions ci-dessous.
1. Comment utiliser l'API Blockchain
Les liens vers les fonctionnalités du contrat intelligent sont identiques aux liens Python. Vous pouvez saisir les fonctions appropriées selon vos besoins. Par exemple, l'instruction suivante présente GetHeight - une fonction pour obtenir la hauteur actuelle du bloc, et GetHeader - une fonction pour obtenir l'en-tête du bloc.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
Getheight
GetHeight est utilisé pour obtenir le dernier numéro de séquence de bloc dans la blockchain, comme indiqué dans l'exemple ci-dessous. Dans le dernier exemple, pour plus de commodité, nous ignorerons la fonction Main, mais vous pouvez l'ajouter si nécessaire.
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)
Getheader
GetHeader, utilisé pour obtenir le titre du bloc, le paramètre est le numéro de série du bloc dans la blockchain. Un 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 est utilisé pour obtenir une transaction via un hachage de transaction. Le hachage de transaction est envoyé à
GetTransactionByHash en tant que paramètres au format bytearray. La clé de cette fonction est de convertir le hachage de transaction au format hexadécimal en un hachage de la transaction au format bytearray. Il s'agit d'une étape importante. Sinon, vous obtiendrez une erreur indiquant qu'il n'y a pas de bloc avec un tel hachage de bloc. Prenons un hachage hexadécimal d'une transaction, par exemple, pour la convertir au format bytearray. Un exemple est le suivant:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Commencez par inverser le hachage de la transaction:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Les développeurs peuvent effectuer cette étape avec l'outil de conversion de numéro hexadécimal (little endian) fourni par SmartX.
Convertissez ensuite le résultat au format 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}
Cela peut être fait en utilisant l'outil de conversion String Byte Array fourni par SmartX. Enfin, convertissez le tableau de bord résultant en une chaîne similaire:
\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f
Voici un exemple de fonction GetTransactionByHash qui prend une transaction à l'aide d'un hachage de transaction:
from ontology.interop.System.Blockchain import GetTransactionByHash def demo():
GetTransactionHeight
GetTransactionHeight est utilisé pour obtenir la hauteur d'une transaction via un hachage de transaction. Prenons le hachage de l'exemple ci-dessus:
from ontology.interop.System.Blockchain import GetTransactionHeight def demo():
Getcontract
Les développeurs peuvent utiliser la fonction GetContract pour obtenir un contrat via un hachage de contrat. Le processus de conversion de hachage de contrat est le processus de conversion de hachage de transaction correspondant mentionné ci-dessus.
from ontology.interop.System.Blockchain import GetContract def demo():
Getblock
GetBlock est utilisé pour obtenir un bloc. Il existe deux façons d'obtenir un bloc spécifique.
1. Obtenez le bloc par hauteur de bloc: from ontology.interop.System.Blockchain import GetBlock def demo(): block=GetBlock(1408) return block
2. Obtenez le hachage bloc par bloc: from ontology.interop.System.Blockchain import GetBlock def demo(): block_hash=bytearray(b'\x16\xe0\xc5\x40\x82\x79\x77\x30\x44\xea\x66\xc8\xc4\x5d\x17\xf7\x17\x73\x92\x33\x6d\x54\xe3\x48\x46\x0b\xc3\x2f\xe2\x15\x03\xe4') block=GetBlock(block_hash)
2. Comment utiliser l'API Block
Il y a trois fonctions disponibles dans l'API Block:
GetTransactions ,
GetTransactionCount et
GetTransactionByIndex . Nous les trierons un par un.
Gettransactioncount
GetTransactionCount est utilisé pour obtenir le nombre de transactions pour un bloc donné.
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
Les développeurs peuvent utiliser la fonction GetTransactions pour obtenir toutes les transactions de ce bloc.
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 est utilisé pour obtenir une transaction spécifique dans ce bloc.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionByIndex def demo(): block=GetBlock(1408) tx=GetTransactionByIndex(block,0)
Le guide complet se trouve sur notre
GitHub .
Postface
L'API Blockchain & Block est une partie indispensable des contrats intelligents, car vous pouvez les utiliser pour demander des données de blockchain et bloquer des données dans des contrats intelligents. Dans les articles suivants, nous verrons comment utiliser le reste des API et découvrir leur interaction avec la blockchain d'Ontology.
L'article a été traduit par Hashrate & Shares spécifiquement pour OntologyRussia. cliquer
Êtes-vous développeur? Rejoignez notre communauté technologique sur
Discord . De plus, jetez un œil au
Developer Center sur notre site Web, où vous pouvez trouver des outils de développement, de la documentation et bien plus encore.
Ontologie