ProHoster > blog > administratie > Hoe een slim contract in Python op het Ontology-netwerk te schrijven. Deel 1: Blockchain & Block-API
Hoe een slim contract in Python op het Ontology-netwerk te schrijven. Deel 1: Blockchain & Block-API
Dit is het eerste deel in een reeks tutorials over het maken van slimme Python-contracten op het Ontology blockchain-netwerk met behulp van de tool voor het ontwikkelen van slimme contracten. SmartX.
In dit artikel zullen we beginnen met onze kennismaking met de Ontology smart contract API. De Ontology smart contract API is onderverdeeld in 7 modules:
Blockchain & Block-API,
runtime-API,
opslag-API,
native-API,
Upgrade-API,
Execution Engine-API en
Statische en dynamische oproep-API.
Blockchain & Block API is het belangrijkste onderdeel van het Ontology smart contract-systeem. De Blockchain API ondersteunt basisquerybewerkingen voor blockchain, zoals het verkrijgen van de huidige blokhoogte, terwijl de Block API basisquerybewerkingen voor blokken ondersteunt, zoals het opvragen van het aantal transacties voor een bepaald blok.
Laten we beginnen!
Maak eerst een nieuw contract aan in SmartXen volg daarna de onderstaande instructies.
1. Hoe Blockchain-API te gebruiken
Koppelingen naar slimme contractfuncties zijn identiek aan Python-koppelingen. U kunt de bijbehorende functies naar behoefte invoeren. De volgende instructie introduceert bijvoorbeeld een GetHeight-functie om de huidige blokhoogte te krijgen, en een GetHeader-functie om de kop van het blok te krijgen.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHoogte
GetHeight wordt gebruikt om het laatste blokvolgnummer in de blockchain te krijgen, zoals in het onderstaande voorbeeld. In het laatste voorbeeld laten we voor het gemak de hoofdfunctie weg, maar u kunt deze indien nodig toevoegen.
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 wordt gebruikt om de block header te krijgen, de parameter is het serienummer van het block in de blockchain. Voorbeeld:
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 wordt gebruikt om een transactie op te halen via een transactie-hash. De transactiehash wordt verzonden naar GetTransactionByHash als parameters in bytearray-formaat. De sleutel tot deze functie is het converteren van de transactie-hash in hex-formaat naar de transactie-hash in bytearray-formaat. Dit is een belangrijke stap. Anders zou je een foutmelding krijgen die aangeeft dat er geen blok is met die blokhash. Laten we de transactie-hash in hex-indeling als voorbeeld nemen om deze naar bytearray-indeling te converteren. Een voorbeeld ziet er als volgt uit:
Dit kan worden gedaan met behulp van de String Byte Array-conversietool van SmartX. Converteer ten slotte de resulterende bytearray naar een vergelijkbare string:
Ontwikkelaars kunnen de GetContract-functie gebruiken om een contract te krijgen via de hash van het contract. Het contract-hash-conversieproces is hetzelfde als het bovengenoemde transactie-hash-conversieproces.
GetBlock wordt gebruikt om een blok te krijgen. Er zijn twee manieren om een specifiek blok te krijgen.
1. Krijg blok voor blok hoogte:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Ontvang een blok voor blok hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Hoe Block API te gebruiken
Er zijn drie beschikbare functies in de Block API: Transacties ophalen, GetTransactionCountEn GetTransactionByIndex. We zullen ze een voor een opsplitsen.
GetTransactionCount
GetTransactionCount wordt gebruikt om het aantal transacties voor een bepaald blok te krijgen.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
Transacties ophalen
Ontwikkelaars kunnen de functie GetTransactions gebruiken om alle transacties in een bepaald blok te krijgen.
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 wordt gebruikt om een specifieke transactie in een bepaald blok te krijgen.
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
De Blockchain & Block API is een onmisbaar onderdeel van smart contracts omdat je ze kunt gebruiken om blockchain data op te vragen en data te blokkeren in smart contracts. In de volgende artikelen zullen we bespreken hoe de rest van de API's kunnen worden gebruikt en ontdekken hoe ze omgaan met de Ontology-blockchain.
Het artikel is speciaal voor OntologyRussia vertaald door de redactie van Hashrate&Shares. schreeuw
Ben je een ontwikkelaar? Word lid van onze technische gemeenschap op Discord. Kijk ook eens naar Ontwikkelaarscentrum op onze website, waar u hulpprogramma's voor ontwikkelaars, documentatie en meer kunt vinden.