ProHoster > Blog > διαχείριση > Πώς να γράψετε ένα έξυπνο συμβόλαιο στην Python στο δίκτυο Ontology. Μέρος 1: Blockchain & Block API
Πώς να γράψετε ένα έξυπνο συμβόλαιο στην Python στο δίκτυο Ontology. Μέρος 1: Blockchain & Block API
Αυτό είναι το πρώτο μέρος μιας σειράς σεμιναρίων για τη δημιουργία έξυπνων συμβάσεων Python στο δίκτυο blockchain Ontology χρησιμοποιώντας το εργαλείο ανάπτυξης έξυπνων συμβολαίων. SmartX.
Σε αυτό το άρθρο, θα ξεκινήσουμε τη γνωριμία μας με το Ontology smart contract API. Το Ontology smart contract API χωρίζεται σε 7 ενότητες:
Blockchain & Block API,
Runtime API
API αποθήκευσης,
εγγενές API,
Αναβάθμιση API,
Execution Engine API και
API Static & Dynamic Call.
Το Blockchain & Block API είναι το κύριο μέρος του συστήματος έξυπνων συμβολαίων Ontology. Το Blockchain API υποστηρίζει βασικές λειτουργίες αναζήτησης blockchain, όπως η λήψη του τρέχοντος ύψους μπλοκ, ενώ το Block API υποστηρίζει βασικές λειτουργίες ερωτήματος μπλοκ, όπως το ερώτημα για τον αριθμό των συναλλαγών για ένα δεδομένο μπλοκ.
Ας αρχίσουμε!
Αρχικά, δημιουργήστε ένα νέο συμβόλαιο στο SmartXκαι μετά ακολουθήστε τις παρακάτω οδηγίες.
1. Πώς να χρησιμοποιήσετε το Blockchain API
Οι σύνδεσμοι σε συναρτήσεις έξυπνων συμβολαίων είναι πανομοιότυποι με τους συνδέσμους Python. Μπορείτε να εισάγετε τις αντίστοιχες λειτουργίες όπως απαιτείται. Για παράδειγμα, η ακόλουθη δήλωση εισάγει μια συνάρτηση GetHeight για να λάβετε το τρέχον ύψος του μπλοκ και μια συνάρτηση GetHeader για να λάβετε την κεφαλίδα του μπλοκ.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
Το GetHeight χρησιμοποιείται για τη λήψη του τελευταίου αριθμού ακολουθίας μπλοκ στο blockchain, όπως φαίνεται στο παρακάτω παράδειγμα. Στο τελευταίο παράδειγμα, θα παραλείψουμε τη λειτουργία Main για ευκολία, αλλά μπορείτε να την προσθέσετε εάν είναι απαραίτητο.
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 χρησιμοποιείται για τη λήψη της κεφαλίδας μπλοκ, η παράμετρος είναι ο σειριακός αριθμός του μπλοκ στην αλυσίδα μπλοκ. Παράδειγμα:
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 χρησιμοποιείται για τη λήψη μιας συναλλαγής μέσω κατακερματισμού συναλλαγών. Ο κατακερματισμός συναλλαγής αποστέλλεται στο GetTransactionByHash ως παράμετροι σε μορφή bytearray. Το κλειδί σε αυτήν τη λειτουργία είναι να μετατρέψετε τον κατακερματισμό συναλλαγής σε μορφή δεκαεξαδικού σε κατακερματισμό συναλλαγής σε μορφή bytearray. Αυτό είναι ένα σημαντικό βήμα. Διαφορετικά, θα λάβατε ένα σφάλμα που υποδεικνύει ότι δεν υπάρχει μπλοκ με αυτόν τον κατακερματισμό μπλοκ. Ας πάρουμε ως παράδειγμα τον κατακερματισμό συναλλαγής σε μορφή hex για να τον μετατρέψουμε σε μορφή bytearray. Ένα παράδειγμα μοιάζει με αυτό:
Οι προγραμματιστές μπορούν να ολοκληρώσουν αυτό το βήμα χρησιμοποιώντας το εργαλείο μετατροπής Hex Number(little endian)Number που παρέχεται από το SmartX.
Στη συνέχεια, μετατρέψτε το αποτέλεσμα σε μορφή bytearray:
Αυτό μπορεί να γίνει χρησιμοποιώντας το εργαλείο μετατροπής String Byte Array που παρέχεται από το SmartX. Τέλος, μετατρέψτε τον πίνακα bytearray που προκύπτει σε παρόμοια συμβολοσειρά:
Το GetTransactionHeight χρησιμοποιείται για τη λήψη του ύψους συναλλαγής μέσω του κατακερματισμού συναλλαγής. Ας πάρουμε τον κατακερματισμό από το παραπάνω παράδειγμα:
Οι προγραμματιστές μπορούν να χρησιμοποιήσουν τη συνάρτηση GetContract για να λάβουν ένα συμβόλαιο μέσω του κατακερματισμού του συμβολαίου. Η διαδικασία μετατροπής κατακερματισμού συμβολαίου είναι η ίδια με τη διαδικασία μετατροπής κατακερματισμού συναλλαγών που αναφέρεται παραπάνω.
Το GetBlock χρησιμοποιείται για τη λήψη ενός αποκλεισμού. Υπάρχουν δύο τρόποι για να αποκτήσετε ένα συγκεκριμένο μπλοκ.
1. Λάβετε ύψος ανά μπλοκ:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Λάβετε κατακερματισμό μπλοκ ανά μπλοκ:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Πώς να χρησιμοποιήσετε το Block API
Υπάρχουν τρεις διαθέσιμες λειτουργίες στο Block API: GetTransactions, GetTransactionCountΚαι GetTransactionByIndex. Θα τα σπάσουμε ένα προς ένα.
GetTransactionCount
Το GetTransactionCount χρησιμοποιείται για τη λήψη του αριθμού συναλλαγών για ένα συγκεκριμένο μπλοκ.
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
Οι προγραμματιστές μπορούν να χρησιμοποιήσουν τη συνάρτηση GetTransactions για να λάβουν όλες τις συναλλαγές σε ένα συγκεκριμένο μπλοκ.
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 χρησιμοποιείται για τη λήψη μιας συγκεκριμένης συναλλαγής σε ένα δεδομένο μπλοκ.
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
Ένας πλήρης οδηγός μπορείτε να βρείτε στο δικό μας GitHub.
Επίλογος
Το Blockchain & Block API είναι αναπόσπαστο μέρος των έξυπνων συμβολαίων, καθώς μπορείτε να τα χρησιμοποιήσετε για να ζητήσετε δεδομένα blockchain και να αποκλείσετε δεδομένα σε έξυπνες συμβάσεις. Στα επόμενα άρθρα, θα συζητήσουμε πώς να χρησιμοποιήσετε τα υπόλοιπα API και θα μάθουμε πώς αλληλεπιδρούν με το blockchain Ontology.
Το άρθρο μεταφράστηκε από τους συντάκτες του Hashrate&Shares ειδικά για την OntologyRussia. κραυγή
Είστε προγραμματιστής; Γίνετε μέλος της τεχνολογικής μας κοινότητας στο Διχόνοια. Επίσης, ρίξτε μια ματιά στο Κέντρο προγραμματιστών στον ιστότοπό μας, όπου μπορείτε να βρείτε εργαλεία προγραμματιστών, τεκμηρίωση και πολλά άλλα.