
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:

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.

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.

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:

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:

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 ontologiGithub /
perselisihanTelegram (
Bahasa Inggris /
Rusia )
Twitter /
Reddit /