ProHoster > وبلاگ > اداره > نحوه نوشتن قرارداد هوشمند در پایتون در شبکه آنتولوژی بخش 1: Blockchain & Block API
نحوه نوشتن قرارداد هوشمند در پایتون در شبکه آنتولوژی بخش 1: Blockchain & Block API
این اولین بخش از مجموعه آموزش های ایجاد قراردادهای هوشمند پایتون در شبکه بلاک چین Ontology با استفاده از ابزار توسعه قرارداد هوشمند است. SmartX.
در این مقاله آشنایی خود را با API قرارداد هوشمند Ontology آغاز خواهیم کرد. API قرارداد هوشمند Ontology به 7 ماژول تقسیم می شود:
Blockchain & Block API,
Runtime API
ذخیره سازی API،
API بومی،
ارتقا API،
Execution Engine API و
API تماس ایستا و پویا.
Blockchain & Block API بخش اصلی سیستم قرارداد هوشمند Ontology است. Blockchain API از عملیات اصلی پرس و جوی بلاک چین، مانند دریافت ارتفاع بلاک فعلی، پشتیبانی می کند، در حالی که Block API از عملیات پرس و جو بلوک اولیه، مانند پرس و جو تعداد تراکنش ها برای یک بلوک معین، پشتیبانی می کند.
بیا شروع کنیم!
ابتدا یک قرارداد جدید ایجاد کنید SmartXو سپس دستورالعمل های زیر را دنبال کنید.
1. نحوه استفاده از Blockchain API
پیوندهای توابع قرارداد هوشمند با پیوندهای پایتون یکسان است. در صورت نیاز می توانید توابع مربوطه را وارد کنید. به عنوان مثال، عبارت زیر یک تابع GetHeight را برای بدست آوردن ارتفاع بلوک فعلی و یک تابع GetHeader را برای دریافت هدر بلوک معرفی می کند.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
همانطور که در مثال زیر نشان داده شده است، GetHeight برای بدست آوردن آخرین شماره دنباله بلوک در بلاک چین استفاده می شود. در مثال آخر، برای راحتی کار، تابع Main را حذف می کنیم، اما در صورت لزوم می توانید آن را اضافه کنید.
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
GetHeader برای دریافت هدر بلوک استفاده می شود، پارامتر شماره سریال بلوک در بلاک چین است. مثال:
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
GetTransactionByHash برای دریافت تراکنش از طریق هش تراکنش استفاده می شود. هش تراکنش به ارسال می شود GetTransactionByHash به عنوان پارامتر در قالب بایت آرایه. کلید این تابع تبدیل هش تراکنش در قالب هگز به هش تراکنش در قالب بایت آرایه است. این یک گام مهم است. در غیر این صورت، خطایی دریافت می کنید که نشان می دهد هیچ بلوکی با آن هش بلوک وجود ندارد. بیایید هش تراکنش را در قالب هگز به عنوان مثال در نظر بگیریم تا آن را به فرمت بایت آرایه تبدیل کنیم. یک مثال به این شکل است:
این را می توان با استفاده از ابزار تبدیل String Byte Array ارائه شده توسط SmartX انجام داد. در نهایت، آرایه بایتی به دست آمده را به یک رشته مشابه تبدیل کنید:
توسعه دهندگان می توانند از تابع GetContract برای گرفتن قرارداد از طریق هش قرارداد استفاده کنند. فرآیند تبدیل هش قرارداد همانند فرآیند تبدیل هش تراکنش است که در بالا ذکر شد.
GetBlock برای دریافت بلاک استفاده می شود. دو راه برای به دست آوردن یک بلوک خاص وجود دارد.
1. بلوک به ارتفاع بلوک را دریافت کنید:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. هش بلوک به بلوک را دریافت کنید:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. نحوه استفاده از Block API
سه عملکرد در دسترس در Block API وجود دارد: GetTransactions, GetTransactionCountو GetTransactionByIndex. آنها را یکی یکی می شکنیم.
GetTransactionCount
GetTransactionCount برای بدست آوردن تعداد تراکنش های یک بلوک مشخص استفاده می شود.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
GetTransactions
توسعه دهندگان می توانند از تابع GetTransactions برای دریافت تمام تراکنش ها در یک بلوک خاص استفاده کنند.
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
GetTransactionByIndex برای دریافت یک تراکنش خاص در یک بلوک مشخص استفاده می شود.
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
Blockchain & Block API بخشی ضروری از قراردادهای هوشمند است زیرا می توانید از آنها برای درخواست داده های زنجیره بلوکی و مسدود کردن داده ها در قراردادهای هوشمند استفاده کنید. در مقالات آینده، نحوه استفاده از بقیه APIها و نحوه تعامل آنها با بلاک چین آنتولوژی را مورد بحث قرار خواهیم داد.
این مقاله توسط ویراستاران Hashrate&Shares مخصوصاً برای OntologyRussia ترجمه شده است. گریه کردن
آیا شما یک ارتقاء دهنده هستید؟ به جامعه فناوری ما بپیوندید در اختلاف. همچنین، نگاهی به مرکز توسعه دهندگان در وب سایت ما، جایی که می توانید ابزارهای توسعه دهنده، اسناد و موارد دیگر را بیابید.