Bagaimana cara menulis kontrak pintar dengan Python pada Ontologi? Bagian 5: API Asli

gambar

Dalam posting tutorial Python sebelumnya, saya telah memperkenalkan Kontrak Cerdas Ontology di
Bagian 1: Blockchain & Block API dan
Bagian 2: API Penyimpanan
Bagian 3: Runtime API
Bagian 4: API Asli dan menjelaskan cara menggunakan kontrak pintar untuk transfer ONT / ONG.

Hari ini kita akan berbicara tentang cara menggunakan API Peningkatan untuk meningkatkan kontrak pintar. Ada 2 API: Hancurkan dan Migrasikan .

Mereka digunakan sebagai berikut:

gambar

Sekarang mari kita masuk ke detail lebih lanjut tentang cara menggunakan 2 API ini. Sebelum itu, Anda dapat membuat kontrak baru di alat pengembangan kontrak pintar Ontology, SmartX, dan ikuti petunjuk di bawah ini. Seperti biasa, di akhir artikel, saya akan melampirkan tautan ke kode sumber.

Cara Menggunakan API Peningkatan


Seperti biasa, Anda perlu mengimpor 2 fungsi sebagai berikut sebelum menggunakannya.

from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Contract import Destroy 

Hancurkan API


Hancurkan API digunakan untuk menghancurkan dan menghapus kontrak pintar pada rantai. Di bawah ini adalah contoh kode API.

 from ontology.interop.System.Contract import Destroy from ontology.interop.System.Runtime import Notify def Main(operation, args): if operation == "destroy_contract": return destroy_contract() return False def destroy_contract(): Destroy() Notify(["The contract has been destoryed"]) return True 

Migrasikan API


API Migrasi digunakan untuk memigrasi kontrak pintar. Kontrak yang ada akan diganti oleh kontrak yang baru dimigrasi. Data yang disimpan oleh kontrak lama juga akan dimigrasi ke kontrak baru. Kontrak lama akan dihapus setelah migrasi.
Harap perhatikan bahwa aset dalam kontrak pintar tidak akan dimigrasi secara otomatis sehingga Anda harus mentransfernya terlebih dahulu. Jika tidak, Anda tidak akan dapat mengambil aset Anda.

Daftar parameter fungsi Migrasi adalah sebagai berikut:

gambar

Lihat di bawah contoh kode fungsi Migrasi:

 from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Runtime import Notify from ontology.libont import AddressFromVmCode def Main(operation, args): if operation == "migrate_contract": if len(args) != 7: return False avm_code = args[0] need_storage = args[1] name = args[2] version = args[3] author = args[4] email = args[5] description = args[6] return migrate_contract(avm_code, need_storage, name, version, author, email, description) return False def migrate_contract(avm_code, need_storage, name, version, author, email, description): res = Migrate(avm_code, need_storage, name, version, author, email, description) if res: Notify(["Migrate successfully"]) new_contract_hash=AddressFromVmCode(avm_code) Notify(new_contract_hash) return True else: return False 

Anda dapat mengikuti langkah-langkah di bawah ini untuk melihat hasil eksekusi sampel kode pada SmartX:

1. Salin dan tempel kode di atas ke SmartX dan kompilasi sebelum memasukkan parameter. Perhatikan dua masalah saat memasukkan parameter:

  • Pastikan avm_code tidak ada pada rantai, jika tidak kesalahan akan dikembalikan;
  • Migrasi memerlukan batas gas tinggi, jadi Anda harus menyesuaikan batas gas saat menjalankan fungsi.

gambar

2. Setelah penerapan, Anda bisa mendapatkan hash kontrak baru dari dasbor. Dalam contoh ini, hash kontrak baru adalah be4606c4663081b70f745ed9fc64d4c3b0d9c183.

gambar

Ringkasan


Pada artikel ini, kami memperkenalkan API Peningkatan pada blockchain Ontology. Pengembang dapat menggunakan API ini untuk meningkatkan kontrak pintar. Hancurkan API digunakan untuk menghancurkan kontrak pintar pada rantai dan Migrasi API adalah untuk migrasi kontrak pintar. Pada artikel selanjutnya, kami akan memperkenalkan Static & Dynamic API untuk mengeksplorasi cara menerapkan panggilan statis dan dinamis dari kontrak pintar Ontology dengan Python.

Temukan tutorial tentang GitHub di sini .

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/id474970/


All Articles