
Ini adalah bagian kedua dari serangkaian tutorial tentang cara membuat kontrak pintar dengan Python di jaringan blockchain Ontology. Pada artikel sebelumnya, kami bertemu dengan
API kontrak pintar Ontology
Blockchain & Block API .
Hari ini kita akan membahas cara menggunakan modul kedua -
API Penyimpanan . API Penyimpanan memiliki lima API terkait yang memungkinkan penambahan, penghapusan, dan modifikasi penyimpanan persisten dalam kontrak pintar di blockchain.
Di bawah ini adalah deskripsi singkat dari lima API ini:

Mari kita lihat lebih dekat cara menggunakan lima API ini.
0. Buat kontrak
SmartX baru
1. Cara menggunakan API Penyimpanan
GetContext & GetReadOnlyContext
GetContext dan
GetReadOnlyContext mendapatkan konteks di mana kontrak pintar saat ini dijalankan. Nilai pengembalian adalah kebalikan dari hash saat ini dari kontrak pintar. Sesuai namanya,
GetReadOnlyContext mengambil konteks mode hanya-baca. Dalam contoh di bawah ini, nilai kembali adalah kebalikan dari hash kontrak yang ditampilkan di sudut kanan atas.

Taruh
Fungsi
Put bertanggung jawab untuk menyimpan data pada blockchain dalam bentuk kamus. Seperti yang ditunjukkan,
Put membutuhkan tiga parameter.
GetContext mengambil konteks kontrak pintar yang sedang berjalan, kunci adalah nilai kunci yang diperlukan untuk menyimpan data, dan nilai adalah nilai dari data yang perlu disimpan. Harap dicatat bahwa jika nilai kunci sudah ada di repositori, fungsi tersebut akan memperbarui nilainya.
hashrate-and-shares.ru/images/obzorontology/python/functionput.pngDapatkan
Fungsi
Get bertanggung jawab untuk membaca data di blockchain saat ini dengan nilai kunci. Pada contoh di bawah ini, Anda dapat mengisi nilai kunci di panel parameter di sebelah kanan untuk menjalankan fungsi dan membaca data yang sesuai dengan nilai kunci di blockchain.

Hapus
Fungsi
Hapus bertanggung jawab untuk menghapus data dalam blockchain dengan menggunakan nilai kunci. Pada 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.

2. Contoh Kode API Penyimpanan
Kode di bawah ini memberikan contoh terperinci menggunakan lima API: GetContext, Get, Put, Delete, dan GetReadOnlyContext. Anda dapat mencoba menjalankan data API 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. API Penyimpanan Ontology mudah digunakan dan nyaman bagi pengembang.
Di sisi lain, serangan hacker difokuskan pada penyimpanan, misalnya, risiko keamanan yang kami sebutkan di salah satu artikel sebelumnya,
serangan injeksi penyimpanan , pengembang harus memberikan perhatian khusus pada keamanan saat menulis kode yang terkait dengan penyimpanan. Anda dapat menemukan panduan lengkap di
github kami di sini.
Pada artikel selanjutnya, kita akan membahas cara menggunakan
Runtime API .
Artikel ini diterjemahkan oleh Hashrate & Shares khusus untuk OntologyRussia. klik
Apakah Anda seorang pengembang? Bergabunglah dengan komunitas teknologi kami di
Discord . Juga, lihat
Pusat Pengembang Ontologi untuk lebih banyak alat, dokumentasi, dan banyak lagi.
Buka tugas untuk pengembang. Tutup tugas - dapatkan hadiah.
Terapkan untuk Program Bakat Mahasiswa Ontologi
Ontologi
Situs web Ontologi -
GitHub -
Perselisihan -
Telegram Rusia -
Twitter -
Reddit