
Bu, akıllı sözleşme geliştirme aracını kullanarak Ontology blockchain ağında Python'da akıllı sözleşmeler oluşturmaya ilişkin bir dizi eğitici makalenin ilk kısmıdır. .
Bu yazımızda Ontology akıllı sözleşme API'sini tanımaya başlayacağız. Ontology akıllı sözleşme API'si 7 modüle ayrılmıştır:
- Blockchain ve Blok API'si,
- Çalışma zamanı API'si
- Depolama API'si
- Yerel API
- API'yi yükseltin,
- Yürütme Motoru API'si ve
- Statik ve Dinamik Çağrı API'si.
Blockchain & Block API, Ontology akıllı sözleşme sisteminin temel parçasıdır. Blockchain API, bir bloğun mevcut yüksekliğini almak gibi temel blockchain sorgulama işlemlerini desteklerken Block API, belirli bir blok için işlem sayısını sorgulamak gibi temel blok sorgulama işlemlerini destekler.
Başlayalım!
Başlamak için şu adreste yeni bir sözleşme oluşturun: ve ardından aşağıdaki talimatları izleyin.
1. Blockchain API'si nasıl kullanılır?
Akıllı sözleşme işlevi referansları Python referanslarıyla aynıdır. Gerektiğinde ilgili işlevleri girebilirsiniz. Örneğin, aşağıdaki ifade, bir bloğun geçerli yüksekliğini elde etmek için bir işlev olan GetHeight'ı ve bloğun başlığını almak için bir işlev olan GetHeader'ı tanıtır.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderYükseklik Al
GetHeight, aşağıdaki örnekte gösterildiği gibi blockchaindeki son blok sıra numarasını almak için kullanılır. Son örnekte kolaylık sağlamak için Ana işlevi atlayacağız, ancak gerekirse onu ekleyebilirsiniz.
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 functionGetHeader
GetHeader, blok başlığını elde etmek için kullanılır; parametre, blok zincirindeki bloğun seri numarasıdır. Örnek:
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 headerGetTransactionByHash
GetTransactionByHash, bir işlem karmasını kullanarak bir işlemi almak için kullanılır. İşlem karması şuraya gönderilir: GetTransactionByHash bytearray formatında parametreler olarak. Bu fonksiyonun anahtarı, hex formatındaki işlem karmasını bytearray formatındaki işlem karmasına dönüştürmektir. Bu önemli bir adımdır. Aksi takdirde, söz konusu blok karma değerine sahip bir blok olmadığını belirten bir hata alırsınız. Bytearray formatına dönüştürmek için örnek olarak hex formatındaki işlem karmasını ele alalım. Örnek şuna benzer:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1İlk önce işlem karmasını tersine çevirin:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Geliştiriciler bu adımı SmartX tarafından sağlanan Hex Number(little endian)Number dönüştürme aracını kullanarak gerçekleştirebilirler.
Daha sonra ortaya çıkan sonucu bytearray formatına dönüştürün:
{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}Bu, SmartX tarafından sağlanan Dize Bayt Dizisi dönüştürme aracı kullanılarak yapılabilir. Son olarak, elde edilen bayt dizisini şunun gibi bir dizeye dönüştürün:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fAşağıda, bir işlemi işlem karma değerine göre alan GetTransactionByHash işlevinin bir örneği verilmiştir:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight, işlem karma değerini kullanarak işlem yüksekliğini elde etmek için kullanılır. Yukarıdaki örnekten hash'i alalım:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightSözleşme Alın
Geliştiriciler, bir sözleşme karması yoluyla bir sözleşmeyi almak için GetContract işlevini kullanabilir. Sözleşme hash dönüştürme işlemi, yukarıda bahsedilen işlem hash dönüştürme işlemiyle aynıdır.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock blok almak için kullanılır. Belirli bir bloğu almanın iki yolu vardır.
1. Blok yüksekliğine göre bir blok alın:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Blok blok karma elde edin:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Block API nasıl kullanılır?
Block API'de mevcut üç işlev vardır: İşlemleri Al, GetTransactionCountve GetTransactionByIndex. Bunları tek tek çözeceğiz.
GetTransactionCount
GetTransactionCount, belirli bir blok için işlem sayısını almak için kullanılır.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countİşlemleri Al
Geliştiriciler belirli bir bloktaki tüm işlemleri almak için GetTransactions işlevini kullanabilir.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txsGetTransactionByIndex
GetTransactionByIndex, belirli bir bloktaki belirli bir işlemi almak için kullanılır.
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 txRehberin tamamını sitemizde bulabilirsiniz. .
Послесловие
Blockchain & Block API, akıllı sözleşmelerin vazgeçilmez bir parçasıdır çünkü bunu blockchain verilerini sorgulamak ve akıllı sözleşmelerdeki verileri engellemek için kullanabilirsiniz. Gelecek makalelerde geri kalan API'lerin nasıl kullanılacağını tartışacağız ve Ontology blockchain ile nasıl etkileşime girdiklerini anlayacağız.
Makale Hashrate&Shares editörleri tarafından özellikle OntologyRussia için tercüme edilmiştir.
Bir geliştirici misiniz? adresindeki teknoloji topluluğumuza katılın . Şuna da bakın: geliştirici araçlarını, belgeleri ve daha fazlasını bulabileceğiniz web sitemizde.
Ontoloji
- /
- Telegram /
- /
Kaynak: habr.com
