Πώς να γράψετε ένα έξυπνο συμβόλαιο στην Python στο δίκτυο Ontology. Μέρος 3: API χρόνου εκτέλεσης

Πώς να γράψετε ένα έξυπνο συμβόλαιο στην Python στο δίκτυο Ontology. Μέρος 3: API χρόνου εκτέλεσης

Αυτό είναι το 3ο μέρος μιας σειράς εκπαιδευτικών άρθρων για τη δημιουργία έξυπνων συμβολαίων στην Python στο δίκτυο blockchain Ontology. Σε προηγούμενα άρθρα γνωρίσαμε

  1. Blockchain & Block API
  2. API αποθήκευσης.

Τώρα που έχετε μια ιδέα για το πώς να καλέσετε το κατάλληλο μόνιμο API αποθήκευσης κατά την ανάπτυξη ενός έξυπνου συμβολαίου με την Python στο δίκτυο Ontology, ας προχωρήσουμε στην εκμάθηση του τρόπου χρήσης Runtime API (Contract Execution API). Το Runtime API έχει 8 σχετικά API που παρέχουν κοινές διεπαφές για την εκτέλεση συμβολαίων και βοηθούν τους προγραμματιστές να λαμβάνουν, να μεταμορφώνουν και να επικυρώνουν δεδομένα.

Παρακάτω είναι μια σύντομη περιγραφή των δεδομένων 8 API:

Πώς να γράψετε ένα έξυπνο συμβόλαιο στην Python στο δίκτυο Ontology. Μέρος 3: API χρόνου εκτέλεσης

Ας ρίξουμε μια πιο προσεκτική ματιά στον τρόπο χρήσης των δεδομένων 8 API. Πριν από αυτό, μπορείτε να δημιουργήσετε ένα νέο συμβόλαιο στο εργαλείο ανάπτυξης έξυπνων συμβολαίων Ontology SmartX και ακολουθήστε τις παρακάτω οδηγίες.

Πώς να χρησιμοποιήσετε το Runtime API

Υπάρχουν δύο τρόποι εισαγωγής Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Η διαδρομή Ontology περιέχει τα πρόσφατα προστεθέντα API. Οι παρακάτω γραμμές εισάγουν τα δεδομένα API.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

Ειδοποίηση API

Η λειτουργία Ειδοποίηση μεταδίδει το συμβάν σε όλο το δίκτυο. Στο παρακάτω παράδειγμα, η συνάρτηση Notify θα επιστρέψει τη δεκαεξαδική συμβολοσειρά "hello word" και θα τη μεταδώσει σε όλο το δίκτυο.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

Μπορείτε να το δείτε στα αρχεία καταγραφής:

Πώς να γράψετε ένα έξυπνο συμβόλαιο στην Python στο δίκτυο Ontology. Μέρος 3: API χρόνου εκτέλεσης

GetTime API

Η συνάρτηση GetTime επιστρέφει την τρέχουσα χρονική σήμανση, η οποία επιστρέφει την ώρα Unix κατά την οποία κλήθηκε η συνάρτηση. Η μονάδα μέτρησης είναι δεύτερη.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

GetCurrentBlockHash API

Η συνάρτηση GetCurrentBlockHash επιστρέφει τον κατακερματισμό του τρέχοντος μπλοκ.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

Serialize και Deserialize

Αυτό είναι ένα ζεύγος συναρτήσεων σειριοποίησης και αποσειροποίησης. Η συνάρτηση Serialize μετατρέπει ένα αντικείμενο σε αντικείμενο bytearray και η συνάρτηση Deserialize μετατρέπει έναν bytearray στο αρχικό αντικείμενο. Το παρακάτω δείγμα κώδικα μετατρέπει τις εισερχόμενες παραμέτρους και τις αποθηκεύει στη μόνιμη αποθήκευση του συμβολαίου. Επίσης, ανακτά δεδομένα από τη μόνιμη αποθήκευση της σύμβασης και τα μετατρέπει στο αρχικό αντικείμενο.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext

def Main(operation, args):
    if operation == 'serialize_to_bytearray':
        data = args[0]
        return serialize_to_bytearray(data)
    if operation == 'deserialize_from_bytearray':
        key = args[0]
        return deserialize_from_bytearray(key)
    return False


def serialize_to_bytearray(data):
    sc = GetContext()
    key = "1"
    byte_data = Serialize(data)
    Put(sc, key, byte_data)


def deserialize_from_bytearray(key):
    sc = GetContext()
    byte_data = Get(sc, key)
    data = Deserialize(byte_data)
    return data

Base58ToAddress και AddressToBase58

Αυτό το ζεύγος συναρτήσεων μετάφρασης διευθύνσεων. Η συνάρτηση Base58ToAddress μετατρέπει μια κωδικοποιημένη διεύθυνση base58 σε διεύθυνση bytearray και το AddressToBase58 μετατρέπει μια διεύθυνση bytearray σε μια κωδικοποιημένη διεύθυνση base58.

from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
    base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
    addr=Base58ToAddress(base58_addr)
    Log(addr)
    base58_addr=AddressToBase58(addr)
    Log(base58_addr)

Ελέγξτε τον Μάρτυρα

Η συνάρτηση CheckWitness(fromAcct) έχει δύο λειτουργίες:

  • Επαληθεύστε εάν ο καλών της τρέχουσας συνάρτησης προέρχεται από το Acct. Εάν ναι (δηλαδή, η επαλήθευση υπογραφής πέρασε), η συνάρτηση επιστρέφει.
  • Ελέγξτε αν το αντικείμενο που καλεί την τρέχουσα συνάρτηση είναι συμβόλαιο. Εάν πρόκειται για σύμβαση και η λειτουργία εκτελείται από τη σύμβαση, τότε η επαλήθευση περνάει. Δηλαδή, επαληθεύστε εάν το fromAcct είναι η επιστρεφόμενη τιμή του GetCallingScriptHash(). Η συνάρτηση GetCallingScriptHash() μπορεί να λάβει την τιμή κατακερματισμού της σύμβασης του τρέχοντος έξυπνου συμβολαίου.

GetCallingScriptHash():

Διαβάστε περισσότερα σχετικά με Guthub

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

Περισσότερες πληροφορίες μπορείτε να βρείτε στο Guthub. Στο επόμενο άρθρο θα παρουσιάσουμε Το εγγενές APIγια να μάθετε πώς να μεταφέρετε περιουσιακά στοιχεία σε έξυπνα συμβόλαια Ontology.

Το άρθρο μεταφράστηκε από τους συντάκτες Hashrate&Shares ειδικά για την OntologyRussia.

Είστε προγραμματιστής; Γίνετε μέλος της τεχνολογικής μας κοινότητας στο Διχόνοια. Επίσης, ρίξτε μια ματιά στο Κέντρο προγραμματιστών Οντολογία, μπορείτε να βρείτε περισσότερα εργαλεία, τεκμηρίωση και πολλά άλλα εκεί.

Ανοίξτε εργασίες για προγραμματιστές. Ολοκληρώστε την εργασία και λάβετε μια ανταμοιβή.

Ισχύουν για το πρόγραμμα ταλέντων Ontology για φοιτητές

Οντολογία

Ιστοσελίδα οντολογίας - GitHub - Διχόνοια - Ρωσικό τηλεγράφημα - Twitter - Reddit

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο