ProHoster > blog > Gweinyddiaeth > Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 3: Runtime API
Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 3: Runtime API
Dyma ran 3 o gyfres o sesiynau tiwtorial ar greu contractau smart yn Python ar rwydwaith blockchain Ontology. Mewn erthyglau blaenorol, rydym wedi gweld
Nawr bod gennych chi syniad o sut i alw'r API storio parhaus priodol wrth ddatblygu contract smart gyda Python ar y rhwydwaith Ontology, gadewch i ni symud ymlaen i ddysgu sut i ddefnyddio Runtime API (API Cyflawni Contract). Mae gan API Runtime 8 API cysylltiedig sy'n darparu rhyngwynebau cyffredin ar gyfer gweithredu contract ac yn helpu datblygwyr i gael, trawsnewid a dilysu data.
Isod mae disgrifiad byr o ddata 8 API:
Gadewch i ni edrych yn agosach ar sut i ddefnyddio'r 8 API hyn. Cyn hynny, gallwch greu contract newydd yn yr offeryn datblygu contract smart Ontology SmartX a dilynwch y cyfarwyddiadau isod.
Sut i ddefnyddio Runtime API
Mae dwy ffordd i fewnforio Runtime API: ontology.interop.System.Runtime ΠΈ ontoleg.interop.Ontoleg.Runtime. Mae llwybr Ontoleg yn cynnwys APIs sydd newydd eu hychwanegu. Mae'r llinellau isod yn mewnforio'r data API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Hysbysu API
Mae'r swyddogaeth Hysbysu yn darlledu'r digwyddiad ledled y rhwydwaith. Yn yr enghraifft isod, bydd y swyddogaeth Hysbysu yn dychwelyd y llinyn hecs "helo word" a'i ddarlledu ledled y rhwydwaith.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Gallwch weld hyn yn y logiau:
GetTime API
Mae'r swyddogaeth GetTime yn dychwelyd y stamp amser cyfredol, sy'n dychwelyd yr amser Unix y cafodd y swyddogaeth ei galw. Yr uned fesur yw'r ail.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Mae swyddogaeth GetCurrentBlockHash yn dychwelyd stwnsh y bloc cyfredol.
Mae hwn yn bΓ’r o swyddogaethau serialization a deserialization. Mae'r ffwythiant Serialize yn trosi gwrthrych yn wrthrych bytearray, ac mae'r ffwythiant Deserialize yn trosi bytearray i'w wrthrych gwreiddiol. Mae'r cod sampl canlynol yn trosi paramedrau sy'n dod i mewn ac yn eu storio yn storfa barhaus y contract. Mae hefyd yn adfer y data o storfa barhaus y contract ac yn ei drawsnewid i'r gwrthrych gwreiddiol.
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 and AddressToBase58
Mae'r pΓ’r hwn o swyddogaethau cyfieithu cyfeiriad. Mae swyddogaeth Base58ToAddress yn trosi cyfeiriad wedi'i amgodio base58 i gyfeiriad bytearray, ac mae AddressToBase58 yn trosi cyfeiriad bytearray i gyfeiriad base58 wedi'i amgodio.
Mae gan y swyddogaeth CheckWitness (fromAcct) ddwy swyddogaeth:
Gwiriwch a yw'r gwrthrych sy'n galw'r ffwythiant cyfredol yn dod oAcct. Os oes (hynny yw, dilysiad llofnod wedi'i basio), mae'r swyddogaeth yn dychwelyd.
Gwiriwch a yw'r gwrthrych sy'n galw'r swyddogaeth gyfredol yn gontract. Os yw'n gontract a bod y swyddogaeth yn cael ei chyflawni o'r contract, yna caiff y dilysu ei basio. Hynny yw, gwiriwch ai fromAcct yw gwerth dychwelyd GetCallingScriptHash(). Gall swyddogaeth GetCallingScriptHash() gymryd gwerth stwnsh contract y contract clyfar cyfredol.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Ceir rhagor o wybodaeth yn Guthub. Yn yr erthygl nesaf, byddwn yn cyflwyno API Brodoroli ddysgu sut i drosglwyddo asedau mewn contractau smart Ontology.
Cyfieithwyd yr erthygl gan y golygyddion Hashrate a Chyfraniadau yn enwedig ar gyfer OntologyRwsia.
Ydych chi'n ddatblygwr? Ymunwch Γ’'n cymuned dechnoleg yn Discord. Hefyd, cymerwch olwg ar Canolfan Datblygwyr Ontoleg am fwy o offer, dogfennaeth, a mwy.