Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 1: Blockchain & Block API

Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 1: Blockchain & Block API

Dyma'r rhan gyntaf mewn cyfres o sesiynau tiwtorial ar greu contractau smart Python ar rwydwaith blockchain Ontology gan ddefnyddio'r offeryn datblygu contract smart. SmartX.

Yn yr erthygl hon, byddwn yn dechrau ein hadnabod ag API contract smart Ontology. Rhennir API contract smart Ontology yn 7 modiwl:

  1. API Blockchain & Block,
  2. API amser rhedeg,
  3. API storio,
  4. API brodorol,
  5. Uwchraddio API,
  6. API Peiriant Cyflawni a
  7. API Galwadau Statig a Dynamig.

Blockchain & Block API yw prif ran system contract smart Ontology. Mae'r API Blockchain yn cefnogi gweithrediadau ymholiad blockchain sylfaenol, megis cael yr uchder bloc cyfredol, tra bod yr API Bloc yn cefnogi gweithrediadau ymholiad bloc sylfaenol, megis cwestiynu nifer y trafodion ar gyfer bloc penodol.

Gadewch i ni ddechrau!

Yn gyntaf, creu contract newydd yn SmartXac yna dilynwch y cyfarwyddiadau isod.

1. Sut i ddefnyddio API Blockchain

Mae dolenni i swyddogaethau contract clyfar yn union yr un fath Γ’ chysylltiadau Python. Gallwch chi nodi'r swyddogaethau cyfatebol yn Γ΄l yr angen. Er enghraifft, mae'r datganiad canlynol yn cyflwyno swyddogaeth GetHeight i gael uchder presennol y bloc, a swyddogaeth GetHeader i gael pennawd y bloc.

from ontology.interop.System.Blockchain import GetHeight, GetHeader

GetHeight

Defnyddir GetHeight i gael y rhif dilyniant bloc olaf yn y blockchain, fel y dangosir yn yr enghraifft isod. Yn yr enghraifft olaf, byddwn yn hepgor y Prif swyddogaeth er hwylustod, ond gallwch ei ychwanegu os oes angen.

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

Defnyddir GetHeader i gael y pennawd bloc, y paramedr yw rhif cyfresol y bloc yn y blockchain. Enghraifft:

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

Defnyddir GetTransactionByHash i gael trafodiad trwy stwnsh trafodiad. Mae'r hash trafodiad yn cael ei anfon at GetTransactionByHash fel paramedrau mewn fformat bytearray. Yr allwedd i'r swyddogaeth hon yw trosi hash y trafodiad mewn fformat hecs i'r stwnsh trafodiad mewn fformat bytearray. Mae hwn yn gam pwysig. Fel arall, byddech chi'n cael gwall sy'n nodi nad oes bloc gyda'r hash bloc hwnnw. Gadewch i ni gymryd yr hash trafodiad mewn fformat hecs fel enghraifft i'w drosi i fformat bytearray. Mae enghraifft yn edrych fel hyn:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Yn gyntaf, gwrthdroi'r hash trafodiad:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Gall datblygwyr gyflawni'r cam hwn gan ddefnyddio'r offeryn trosi Rhif Hex Number (bach endian) a ddarperir gan SmartX.

Yna troswch y canlyniad i fformat bytearray:

{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}

Gellir gwneud hyn gan ddefnyddio'r offeryn trosi String Byte Array a ddarperir gan SmartX. Yn olaf, troswch y bytearray canlyniadol i linyn tebyg:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Mae'r canlynol yn enghraifft o swyddogaeth GetTransactionByHash sy'n cymryd trafodiad gan ddefnyddio hash y trafodiad:

from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
    # tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    tx=GetTransactionByHash(tx_hash)
    return tx

GetTransactionHeight

Defnyddir GetTransactionHeight i gael uchder y trafodiad drwy'r stwnsh trafodiad. Gadewch i ni gymryd yr hash o'r enghraifft uchod:

from ontology.interop.System.Blockchain import  GetTransactionHeight
def demo():
    #   tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    height=GetTransactionHeight(tx_hash)
    return height

CaelContract

Gall datblygwyr ddefnyddio swyddogaeth GetContract i gael contract drwy stwnsh y contract. Mae'r broses trosi hash contract yr un fath Γ’'r broses trosi hash trafodiad a grybwyllir uchod.

from ontology.interop.System.Blockchain import GetContract
def demo():
    # contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"    
    contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
    contract=GetContract(contract_hash)
    return contract

GetBlock

Defnyddir GetBlock i gael bloc. Mae dwy ffordd i gael bloc penodol.

1. Cael bloc yn Γ΄l uchder bloc:

from ontology.interop.System.Blockchain import GetBlock
def demo():
    block=GetBlock(1408)
    return block

2. Cael bloc gan hash bloc:

from ontology.interop.System.Blockchain import GetBlock
def demo():    
    block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
    block=GetBlock(block_hash)

2. Sut i ddefnyddio API Bloc

Mae tair swyddogaeth ar gael yn yr API Bloc: GetTrafodion, GetTransactionCountAc GetTransactionByIndex. Byddwn yn eu torri i lawr fesul un.

GetTransactionCount

Defnyddir GetTransactionCount i gael nifer y trafodion ar gyfer bloc penodol.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
    block=GetBlock(1408)
    count=GetTransactionCount(block)
    return count

GetTrafodion

Gall datblygwyr ddefnyddio'r swyddogaeth GetTransactions i gael yr holl drafodion mewn bloc penodol.

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

Defnyddir GetTransactionByIndex i gael trafodiad penodol mewn bloc penodol.

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

Gellir dod o hyd i ganllaw cyflawn ar ein GitHub.

Afterword

Mae'r API Blockchain & Block yn rhan anhepgor o gontractau smart gan y gallwch eu defnyddio i ofyn am ddata blockchain a data bloc mewn contractau smart. Yn yr erthyglau canlynol, byddwn yn trafod sut i ddefnyddio gweddill yr APIs a darganfod sut maen nhw'n rhyngweithio Γ’'r blockchain Ontology.

Cyfieithwyd yr erthygl gan olygyddion Hashrate&Shares yn arbennig ar gyfer OntologyRussia. crio

Ydych chi'n ddatblygwr? Ymunwch Γ’'n cymuned dechnoleg yn Discord. Hefyd, cymerwch olwg ar Canolfan Datblygwyr ar ein gwefan, lle gallwch ddod o hyd i offer datblygwr, dogfennaeth, a mwy.

Ontoleg

Ffynhonnell: hab.com

Ychwanegu sylw