
Ceci est un tutoriel officiel publié plus tôt sur le blog d' Ontology Medium
Excité de le publier pour les lecteurs Habr. N'hésitez pas à poser des questions connexes et à suggérer un meilleur format pour le matériel didactique
Préface
Dans cet article, nous allons commencer à présenter l'API Smart Contract d'Ontology. L'API Smart Contract de Ontology est divisée en 7 modules:
Dans cet article, nous présenterons
la Blockchain & Block API , qui est la partie la plus élémentaire du système de contrat intelligent Ontology. L'API Blockchain prend en charge les opérations de requête de base de la blockchain, telles que l'obtention de la hauteur de bloc actuelle, tandis que l'API Block prend en charge les opérations de requête de bloc de base, telles que la requête du nombre de transactions pour un bloc donné.
Commençons!Créez d'abord un nouveau contrat dans
SmartX , puis suivez les instructions ci-dessous.
1. Comment utiliser l'API Blockchain
Les références aux fonctions de contrat intelligent sont identiques aux références de Python. Les développeurs peuvent introduire les fonctions appropriées selon les besoins. Par exemple, l'instruction suivante présente
GetHeight , la fonction pour obtenir la hauteur de bloc actuelle, et
GetHeader , la fonction pour obtenir l'en-tête du bloc.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
1.1. Getheight
Vous pouvez utiliser GetHeight pour obtenir la dernière hauteur de bloc, comme indiqué dans l'exemple suivant. Dans ce dernier exemple, pour plus de commodité, nous allons omettre 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)
1.2 GetHeader
Vous pouvez utiliser GetHeader pour obtenir l'en-tête de bloc, et le paramètre est la hauteur de bloc d'un bloc. Voici 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
1.3 GetTransactionByHash
Vous pouvez utiliser la fonction
GetTransactionByHash pour obtenir des transactions via le 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 savoir comment convertir un hachage de transaction au format hexadécimal en un hachage de transaction au format bytearray. Il s'agit d'une étape importante. Sinon, vous obtiendrez une erreur qui indique qu'il n'y a pas de bloc de ce hachage de bloc.
Prenons l'exemple du hachage de transaction au format hexadécimal pour le convertir au format bytearray. L'exemple est le suivant:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Commencez par inverser le hachage de la transaction:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Les développeurs peuvent implémenter cette étape avec l'outil de conversion
Hex Number (little endian) <--> Number fourni par SmartX.
Ensuite, convertissez-le 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}
Les développeurs peuvent le faire avec l'outil de conversion
String <--> Tableau d'octets fourni par SmartX. Enfin, convertissez le tableau de bord résultant en la chaîne correspondante:
\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 la fonction
GetTransactionByHash qui obtient une transaction via un hachage de transaction:
from ontology.interop.System.Blockchain import GetTransactionByHash def demo():
1.4 GetTransactionHeight
Les développeurs peuvent utiliser la fonction
GetTransactionHeight pour obtenir la hauteur de transaction via le hachage de transaction. Prenons le hachage dans l'exemple ci-dessus:
from ontology.interop.System.Blockchain import GetTransactionHeight def demo():
1.5 GetContract
Vous pouvez utiliser la fonction GetContract pour obtenir un contrat via le hachage de contrat. Le processus de conversion du hachage de contrat est cohérent avec le processus de conversion de hachage de transaction mentionné ci-dessus.
from ontology.interop.System.Blockchain import GetContract def demo():
1.6 GetBlock
Vous pouvez utiliser la fonction GetBlock pour obtenir le 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, qui sont
GetTransactions, GetTransactionCount et GetTransactionByIndex . Nous les présenterons un par un.
2.1 GetTransactionCount
Vous pouvez utiliser la fonction
GetTransactionCount 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
2.2 GetTransactions
Vous pouvez utiliser la fonction
GetTransactions pour obtenir toutes les transactions dans un bloc donné.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactions def demo(): block=GetBlock(1408) txs=GetTransactions(block) return txs
2.3 GetTransactionByIndex
Vous pouvez utiliser la fonction
GetTransactionByIndex pour obtenir des transactions spécifiques dans un bloc donné.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionByIndex def demo(): block=GetBlock(1408) tx=GetTransactionByIndex(block,0)
Retrouvez le tutoriel complet sur notre GitHub
ici .
Postface
L'API Blockchain & Block est la partie la plus indispensable des contrats intelligents, car vous pouvez les utiliser pour interroger les données de la chaîne de blocs et bloquer les données dans les contrats intelligents. Dans les prochains articles, nous verrons comment utiliser d'autres API pour explorer leur interaction avec la blockchain d'Ontology.
Êtes-vous développeur? Assurez-vous que vous avez rejoint notre communauté technologique sur
Discord . Jetez également un œil au
Developer Center sur notre site Web, où vous pouvez trouver des outils de développement, de la documentation et plus encore.
Trouvez l'ontologie ailleurs
Site Web d'ontologieGithub /
discordeTélégramme (
anglais /
russe )
Twitter /
Reddit /