วิธีเขียนสัญญาอัจฉริยะใน Python บนเครือข่าย Ontology ส่วนที่ 3: รันไทม์ API

วิธีเขียนสัญญาอัจฉริยะใน Python บนเครือข่าย Ontology ส่วนที่ 3: รันไทม์ API

นี่เป็นส่วนที่ 3 ของชุดบทความทางการศึกษาเกี่ยวกับการสร้างสัญญาอัจฉริยะใน Python บนเครือข่ายบล็อกเชน Ontology ในบทความก่อนหน้านี้เราคุ้นเคยกันดี

  1. บล็อกเชนและบล็อก API
  2. API การจัดเก็บข้อมูล.

เมื่อคุณมีแนวคิดเกี่ยวกับวิธีการเรียก API การจัดเก็บข้อมูลถาวรที่เหมาะสมเมื่อพัฒนาสัญญาอัจฉริยะโดยใช้ Python บนเครือข่าย Ontology มาดูวิธีใช้งานกันดีกว่า รันไทม์ API (API การดำเนินสัญญา) Runtime API มี API ที่เกี่ยวข้อง 8 รายการซึ่งมีอินเทอร์เฟซทั่วไปสำหรับการดำเนินการตามสัญญาและช่วยนักพัฒนาในการดึงข้อมูล แปลง และตรวจสอบข้อมูล

ด้านล่างนี้เป็นคำอธิบายโดยย่อของข้อมูล API 8 รายการ:

วิธีเขียนสัญญาอัจฉริยะใน Python บนเครือข่าย Ontology ส่วนที่ 3: รันไทม์ API

มาดูวิธีใช้ข้อมูล 8 API กันดีกว่า ก่อนหน้านี้ คุณสามารถสร้างสัญญาใหม่ในเครื่องมือการพัฒนาสัญญาอัจฉริยะของ Ontology ได้ SmartX และปฏิบัติตามคำแนะนำด้านล่าง

วิธีใช้รันไทม์ API

การนำเข้ามีสองวิธี รันไทม์ API: ontology.interop.System.Runtime и ontology.interop.ontology.รันไทม์. เส้นทาง 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 ออกอากาศเหตุการณ์ทั่วทั้งเครือข่าย ในตัวอย่างด้านล่าง ฟังก์ชัน 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

รับ CurrentBlockHash API

ฟังก์ชัน GetCurrentBlockHash ส่งกลับค่าแฮชของบล็อกปัจจุบัน

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

ทำให้เป็นอนุกรมและดีซีเรียลไลซ์

นี่คือคู่ของฟังก์ชันซีเรียลไลซ์และดีซีเรียลไลซ์ ฟังก์ชัน 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():

เพิ่มเติมเกี่ยวกับ กูตูบ

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

สามารถดูข้อมูลเพิ่มเติมได้ที่ กูตูบ. ในบทความถัดไปเราจะมาแนะนำ API ดั้งเดิมเพื่อเรียนรู้วิธีการถ่ายโอนสินทรัพย์ในสัญญาอัจฉริยะของ Ontology

บทความนี้แปลโดยบรรณาธิการ แฮชเรตและการแชร์ โดยเฉพาะอย่างยิ่งสำหรับ OntologyRussia

คุณเป็นนักพัฒนาหรือไม่? เข้าร่วมชุมชนเทคโนโลยีของเราที่ ไม่ลงรอยกัน. นอกจากนี้ ลองดูที่ ศูนย์นักพัฒนา Ontology คุณสามารถค้นหาเครื่องมือ เอกสารประกอบ และอื่นๆ อีกมากมายได้จากที่นั่น

เปิดงานสำหรับนักพัฒนา ทำภารกิจให้สำเร็จและรับรางวัล

นำมาใช้ สำหรับโปรแกรม Ontology Talent สำหรับนักศึกษา

อภิปรัชญา

เว็บไซต์อภิปรัชญา - GitHub - ไม่ลงรอยกัน - โทรเลขรัสเซีย - Twitter - Reddit

ที่มา: will.com

เพิ่มความคิดเห็น