ProHoster > Blog > Administratioun > Wéi schreift e Smart Kontrakt am Python am Ontology Netzwierk. Deel 1: Blockchain & Block API
Wéi schreift e Smart Kontrakt am Python am Ontology Netzwierk. Deel 1: Blockchain & Block API
Dëst ass den éischten Deel vun enger Serie vun edukativen Artikelen iwwer d'Schafe vu Smart Kontrakter am Python am Ontology Blockchain Netzwierk mat dem Smart Kontrakt Entwécklungsinstrument SmartX.
An dësem Artikel fänken mir eis Bekanntschaft mat der Ontology Smart Contract API un. Den Ontology Smart Contract API ass a 7 Moduler opgedeelt:
Blockchain & Block API,
Runtime API
Stockage API
Native API
Upgrade API,
Ausféierung Engine API an
Statesch & Dynamic Call API.
Blockchain & Block API ass de Kär Deel vum Ontology Smart Kontrakt System. De Blockchain API ënnerstëtzt Basis Blockchain Ufro Operatiounen, sou wéi d'aktuell Héicht vun engem Block ze kréien, während de Block API Basis Block Ufro Operatiounen ënnerstëtzt, sou wéi d'Ufro vun der Unzuel vun Transaktioune fir e bestëmmte Block.
Loosst eis ufänken!
Fir unzefänken, erstellt en neie Kontrakt an SmartX, a befollegt dann d'Instruktioune hei ënnen.
1. Wéi benotzt Dir Blockchain API
Smart Kontrakt Funktioun Referenze sinn identesch ze Python Referenze. Dir kënnt relevant Funktiounen aginn wéi néideg. Zum Beispill, déi folgend Ausso stellt GetHeight vir, eng Funktioun fir déi aktuell Héicht vun engem Block ze kréien, a GetHeader, eng Funktioun fir den Titel vum Block ze kréien.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight gëtt benotzt fir déi lescht Blocksequenznummer an der Blockchain ze kréien, wéi am Beispill hei ënnen gewisen. Am leschte Beispill, fir d'Kamoudheet, wäerte mir d'Haaptfunktioun iwwersprangen, awer Dir kënnt et derbäisetzen wann néideg.
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 gëtt benotzt fir de Block Header ze kréien; de Parameter ass d'Seriennummer vum Block an der Blockchain. Beispill:
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 gëtt benotzt fir eng Transaktioun mat engem Transaktiounshash ze recuperéieren. Den Transaktiounshash gëtt op GetTransactionByHash als Parameter am Bytearray-Format. De Schlëssel fir dës Funktioun ass den Transaktiounshash am Hexformat an den Transaktiounshash am Bytearray Format ze konvertéieren. Dëst ass e wichtege Schrëtt. Soss kritt Dir e Feeler deen uginn datt et kee Block mat deem Blockhash gëtt. Loosst eis den Transaktiounshash am Hexformat als Beispill huelen fir se an Bytearray Format ze konvertéieren. D'Beispill gesäit esou aus:
Dëst kann mat dem String Byte Array Konversiounstool gemaach ginn, dee vum SmartX geliwwert gëtt. Endlech konvertéiert de resultéierende Bytearray an eng String wéi dës:
Entwéckler kënnen d'GetContract Funktioun benotzen fir e Kontrakt iwwer e Kontrakt Hash ze recuperéieren. De Kontrakt Hash Konversiounsprozess ass d'selwecht wéi den Transaktioun Hash Konversiounsprozess uewen ernimmt.
GetBlock gëtt benotzt fir e Block ze kréien. Et ginn zwou Weeër fir e spezifesche Block ze kréien.
1. Kritt e Block no Block Héicht:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Kritt e Block duerch Blockhash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Wéi benotzt Block API
Et ginn dräi verfügbare Funktiounen an der Block API: GetTransaktiounen, GetTransactionCountan GetTransactionByIndex. Mir sortéieren se een nom aneren.
GetTransactionCount
GetTransactionCount gëtt benotzt fir d'Zuel vun den Transaktioune fir e bestëmmte Block ze kréien.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
GetTransaktiounen
D'Entwéckler kënnen d'GetTransactions Funktioun benotzen fir all Transaktiounen an engem bestëmmte Block ze recuperéieren.
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 gëtt benotzt fir eng spezifesch Transaktioun an engem bestëmmte Block ze recuperéieren.
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
Blockchain & Block API ass en onverzichtbaren Deel vu Smart Kontrakter well Dir et benotze kënnt fir Blockchain Daten ze froen an Daten a Smart Kontrakter ze blockéieren. An zukünfteg Artikele wäerte mir diskutéieren wéi déi verbleiwen APIe benotzt ginn a verstoen wéi se mat der Ontologie Blockchain interagéieren.
Den Artikel gouf vun den Redaktoren vun Hashrate&Shares speziell fir OntologyRussia iwwersat. klickt
Sidd Dir en Entwéckler? Maacht mat bei eiser Tech Gemeinschaft um Schwaarz. Och kuckt op Entwéckler Center op eiser Websäit, wou Dir Entwéckler Tools, Dokumentatioun a vill méi fannt.