Bagaimana cara menulis kontrak pintar dengan Python pada Ontologi? Bagian 2: API Penyimpanan

gambar
Ini adalah tutorial resmi yang diterbitkan sebelumnya di blog Ontology Medium
Senang menerbitkannya untuk pembaca Habr. Jangan ragu untuk mengajukan pertanyaan terkait dan menyarankan format yang lebih baik untuk materi tutorial

Kata Pengantar


Sebelumnya, di Bagian 1, kami memperkenalkan Blockchain & Block API dari kontrak pintar Ontology. Hari ini kita akan membahas cara menggunakan modul kedua: API Penyimpanan . API Penyimpanan memiliki lima API terkait yang memungkinkan penambahan, penghapusan, dan perubahan pada penyimpanan persisten dalam kontrak pintar blockchain. Berikut ini deskripsi singkat dari lima API:

gambar

Mari kita lihat lebih dekat cara menggunakan lima API ini. Pertama, buat kontrak SmartX baru dan kemudian ikuti langkah-langkah di bawah ini. Seperti biasa, di akhir artikel, kami akan menyediakan tautan GitHub dari kode sumber.

2 Cara Menggunakan API Penyimpanan


2.1 GetContext & GetReadOnlyContext


GetContext & GetReadOnlyContext mendapatkan konteks di mana kontrak pintar saat ini berjalan. Nilai kembali adalah kebalikan dari hash kontrak pintar saat ini. Sesuai namanya, GetReadOnlyContext mendapatkan konteks mode baca-saja. Dalam contoh di bawah ini, nilai kembali adalah kebalikan dari hash kontrak yang ditampilkan di sudut kanan atas.

gambar

2.2 Masukan


Fungsi Put bertanggung jawab untuk menyimpan data pada blockchain dalam bentuk kamus. Seperti yang ditunjukkan, Put menerima tiga parameter. GetContext mendapatkan konteks dari kontrak pintar saat ini berjalan, kuncinya adalah nilai kunci yang perlu menyimpan data, dan nilai adalah nilai dari data yang perlu disimpan. Harap dicatat bahwa jika nilai kunci sudah ada di penyimpanan, fungsi akan memperbarui nilainya yang sesuai.

gambar

2.3 Dapatkan


Fungsi Get bertanggung jawab untuk membaca data di blockchain yang ada melalui nilai kunci. Dalam contoh di bawah ini, Anda dapat mengisi nilai kunci di panel parameter di sebelah kanan untuk menjalankan fungsi dan membaca data yang terkait dengan nilai kunci di blockchain:

gambar

2.4 Hapus


Fungsi hapus bertanggung jawab untuk menghapus data di blockchain melalui nilai kunci. Dalam contoh di bawah ini, Anda dapat mengisi nilai kunci untuk menjalankan fungsi di panel parameter di sebelah kanan dan menghapus data yang sesuai dengan nilai kunci di blockchain:

gambar

3 Kode Sampel API Penyimpanan


Kode berikut memberikan contoh terperinci tentang penggunaan lima API: GetContext; Dapatkan Taruh; Hapus dan GetReadOnlyContext . Anda dapat mencoba menjalankan API ini di SmartX .

from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext from ontology.interop.System.Runtime import Notify def Main(operation,args): if operation == 'get_sc': return get_sc() if operation == 'get_read_only_sc': return get_read_only_sc() if operation == 'get_data': key=args[0] return get_data(key) if operation == 'save_data': key=args[0] value=args[1] return save_data(key, value) if operation == 'delete_data': key=args[0] return delete_data(key) return False def get_sc(): return GetContext() def get_read_only_sc(): return GetReadOnlyContext() def get_data(key): sc=GetContext() data=Get(sc,key) return data def save_data(key, value): sc=GetContext() Put(sc,key,value) def delete_data(key): sc=GetContext() Delete(sc,key) 

Kata penutup


Penyimpanan Blockchain adalah inti dari keseluruhan sistem blockchain. Penggunaan API Penyimpanan Ontologi sangat sederhana dan ramah-pengembang.

Di sisi lain, penyimpanan adalah fokus dari peretas, seperti ancaman keamanan yang kami sebutkan dalam satu artikel sebelumnya: serangan injeksi penyimpanan , pengembang harus memberikan perhatian khusus pada keamanan kode saat menulis kode terkait penyimpanan.

Temukan tutorial terperinci tentang GitHub di sini .

Pada artikel selanjutnya, kita akan membahas cara menggunakan Runtime API . Tetap disini!



Apakah Anda seorang pengembang? Pastikan Anda telah bergabung dengan komunitas teknologi kami di Discord . Juga, lihat Pusat Pengembang di situs web kami, di sana Anda dapat menemukan alat pengembang, dokumentasi, dan banyak lagi.



Temukan ontologi di tempat lain


Situs web ontologi
Github / perselisihan
Telegram ( Bahasa Inggris / Rusia )
Twitter / Reddit /

Source: https://habr.com/ru/post/id470720/


All Articles