Desain GAS inovatif oleh MOVE: Analisis metode perhitungan konsumsi sumber daya on-chain

robot
Pembuatan abstrak sedang berlangsung

Desain GAS pertama di bahasa MOVE: Metode perhitungan biaya GAS on-chain

Versi sebelumnya dari bahasa MOVE awalnya direncanakan untuk berjalan tanpa GAS, sehingga tidak mempersiapkan rencana GAS. Rencana GAS yang baru-baru ini dibangun untuk suatu blockchain publik adalah desain GAS pertama untuk bahasa MOVE, yang disebut "sebuah petualangan".

Rencana GAS ini menjelaskan prinsip, proses, metode perhitungan, penyesuaian di kemudian hari, dan penerimaan saran dari komunitas dalam penyusunan GAS.

Pengukuran GAS adalah konsep dasar dari banyak blockchain, yang mendefinisikan jumlah sumber daya komputasi dan penyimpanan yang diperlukan untuk mengeksekusi dan menyimpan transaksi on-chain. Rencana GAS menentukan biaya dari semua eksekusi on-chain yang dilakukan, untuk menghitung pengeluaran GAS yang digunakan selama eksekusi transaksi.

proses

Untuk pelaksanaan yang efektif, proses on-chain adalah sebagai berikut:

  1. Prinsip Definisi
  2. Siapkan kerangka evaluasi, tentukan harga untuk setiap eksekusi
  3. Membangun sistem pengukuran GAS dan aljabar GAS yang aman untuk MOVE
  4. Mengimpor kerangka GAS hulu
  5. Membuat kerangka GAS memiliki kesadaran penyimpanan
  6. Memperinci rencana GAS lebih lanjut

prinsip

Prinsip yang didefinisikan meliputi:

  1. Biaya operasi harus terkait langsung dengan sumber daya yang tersedia di jaringan dan menurun seiring dengan kemajuan teknologi.
  2. GAS harus diatur oleh on-chain governance, dapat dikonfigurasi tanpa batas.
  3. GAS dapat mencegah serangan DoS, dapat dengan cepat disesuaikan berdasarkan kondisi jaringan.
  4. Harga GAS harus mencerminkan visi untuk pertumbuhan yang dipercepat dan menjaga aksesibilitas blockchain.
  5. Mendorong untuk membuat pilihan yang baik dalam desain, seperti mengutamakan keamanan, modularitas, dll.

perhitungan GAS

Pengguna harus menentukan saat mengajukan transaksi:

  • Jumlah GAS maksimum: Jumlah unit GAS maksimum yang bersedia dibayar pengguna untuk mengeksekusi transaksi
  • Harga GAS: dihitung dalam basis delapan per unit GAS, 1 delapan = 0,00000001 APT

Biaya akan dikenakan selama proses eksekusi transaksi:

  1. Biaya tetap
  2. Biaya untuk mengeksekusi instruksi MOVE
  3. Biaya membaca data dari penyimpanan permanen
  4. Biaya menulis data ke penyimpanan permanen

Biaya transaksi akhir = Total GAS yang digunakan × Harga per GAS

Misalnya, jika transaksi menghabiskan 670 unit GAS, harga GAS yang ditentukan pengguna adalah 100 Octa/unit, maka biaya akhirnya adalah 670 × 100 = 67000 Octa = 0.00067 APT.

Jika selama proses eksekusi transaksi GAS habis, pengirim akan dikenakan biaya sesuai dengan jumlah maksimum GAS, dan perubahan yang dilakukan oleh transaksi tersebut akan dikembalikan.

pembuatan rencana GAS

  1. Konfigurasi Dasar

Rencana GAS mencakup komponen yang tidak terkait dengan operasi tunggal, seperti ukuran transaksi dan unit GAS maksimum.

  1. Skala Transaksi

Sebagian besar ukuran transaksi berada pada tingkat kilobyte. Modul MOVE dapat dipublikasikan hingga beberapa ribu byte, sementara kerangka tertentu sekitar 100 KB. Modul pengguna biasanya berada di antara 4-40 KB. Ukuran transaksi awalnya ditetapkan pada 32 KB, lalu disesuaikan menjadi 64 KB berdasarkan umpan balik komunitas.

Transaksi berskala besar dapat meningkatkan biaya bandwidth jaringan dan mungkin mempengaruhi kinerja. Memori pool mungkin akan mengabaikan transaksi yang lebih besar, sehingga perlu mencapai keseimbangan antara skala maksimum dan aksesibilitas.

  1. Unit GAS maksimum

Definisi maksimum unit GAS dalam rencana GAS menentukan jumlah maksimum operasi yang dapat dieksekusi dalam satu transaksi. Menetapkan terlalu tinggi dapat berdampak negatif pada kinerja blockchain. Setelah diuji, bahkan dengan peningkatan kerangka maksimum, hanya kurang dari 90% dari unit GAS maksimum ( yang ditetapkan menjadi 1.000.000).

  1. Eksekusi

Dengan membangun kerangka acuan dan menggunakan Valgrind untuk menganalisis Move VM untuk mengevaluasi biaya eksekusi. Outputnya adalah kode sumber yang diberi komentar, menunjukkan jumlah instruksi mesin yang dihasilkan oleh setiap baris kode.

Berdasarkan ini, estimasi kasar biaya relatif dari semua instruksi MOVE dan fungsi bawaan. Diketahui bahwa ada beberapa masalah dengan fungsi inline, yang dapat diselesaikan dengan penjumlahan angka.

Akhirnya, mempertimbangkan contoh pengkodean untuk meningkatkan ketahanan dan keamanan sistem, diperoleh jumlah instruksi mesin yang dieksekusi. Bandingkan angka ini dengan penyimpanan dan batas maksimum unit GAS, untuk menentukan nilai saat ini dalam rencana GAS.

  1. Penyimpanan

Saat mengakses status item atau data buku besar, node akan mengirimkan permintaan baca dan tulis ke perangkat penyimpanan. Total akses data per detik tergantung pada bandwidth perangkat penyimpanan dan kapasitas IOPS. Akses data adalah sumber daya langka yang bersaing di pasar biaya saat sistem dalam beban. Biaya penyimpanan disk untuk menulis data adalah permanen di on-chain.

Mengakses dan menyimpan item status apa pun akan menghasilkan biaya yang terkait dengan struktur data yang memverifikasi status seluruh blockchain. Biaya ini terkait dengan basis dari item status yang berbeda ($2^{256}$). Ada juga biaya yang sebanding dengan ukuran setiap item.

Biaya untuk operasi item status ( kecuali untuk situasi pengecualian yang dijelaskan di bagian berikutnya ) adalah:

Penyimpanan biaya GAS = item_fee + (byte_fee × bytes)

membaca, membuat, dan menulis

Akses status dibagi menjadi tiga jenis: baca, buat, atau tulis. Akses dikenakan biaya berdasarkan biaya item dan biaya byte.

Operasi baca adalah yang paling umum, hanya dibatasi oleh kelangkaan sumber daya sesaat. Biaya pembacaan disesuaikan berdasarkan IOPS disk dan kapasitas bandwidth spesifikasi perangkat keras referensi.

Operasi pembuatan menambahkan item baru ke dalam penyimpanan status, meningkatkan biaya struktur data otentikasi, sehingga menjadi yang paling mahal. Biaya pembuatan dikalibrasi berdasarkan ruang disk referensi yang dimiliki jaringan.

Operasi tulis memperbarui item yang ada, tidak akan menghasilkan overhead tambahan dalam struktur data otentikasi. Namun, mengubah entri yang ada menjadi ukuran byte yang lebih besar masih dapat memakan ruang disk, sehingga biaya untuk byte dalam item yang diperbarui dikenakan sama dengan pembuatan.

Biaya terkait penyimpanan dievaluasi berdasarkan setiap transaksi: bahkan jika membaca/menulis sumber yang sama beberapa kali, hanya dikenakan biaya sekali.

Berdasarkan pertimbangan di atas, enam parameter GAS didefinisikan untuk membentuk total biaya:

  • per_item_read: berdasarkan kalibrasi IOPs
  • per_byte_read: dikalibrasi berdasarkan bandwidth yang sebenarnya
  • per_item_create:kalibrasi berdasarkan total proyek yang ditargetkan
  • per_byte_create: Menyesuaikan ( berdasarkan total ukuran target, setiap proyek termasuk 1KB pertama )
  • per_item_write: sama dengan per_item_read
  • per_byte_write: sama dengan per_byte_create

biaya unit GAS yang stabil

Setiap operasi dan transaksi itu sendiri memerlukan biaya unit tetap relatif terhadap biaya penyimpanan dan eksekusi, terlepas dari nilai pasar yang dihitung dalam APT atau mata uang fiat. Biaya unit GAS tetap membantu menjaga rencana GAS tetap stabil, dan terputus dari nilai pasar bebas APT. Pemilihan jumlah digit presisi GAS unit yang tepat membantu menjaga stabilitas rencana GAS. Mengingat hal ini, unit GAS dinyatakan dengan presisi sekitar 3 digit. Oleh karena itu, biaya transaksi transfer sekitar 700 unit GAS.

Partisipasi Komunitas

Anggota komunitas dapat:

  1. Temukan ketidakrasionalan dalam rencana GAS
  2. Mengajukan kekhawatiran dan berpartisipasi dalam diskusi
  3. Melakukan pemungutan suara terkait proposal tata kelola GAS

penyesuaian biaya GAS

Rencana GAS sebagai penyimpanan konfigurasi on-chain, dapat diubah melalui proposal tata kelola, dan dapat menambahkan instruksi baru atau fungsi asli secara mulus.

Desain rencana GAS dapat diperluas, memungkinkan peningkatan melalui proposal tata kelola. Seiring dengan perbaikan yang terus menerus dan penggabungan umpan balik pengguna, parameter GAS dapat disesuaikan seiring waktu.

Kadang-kadang, rumus GAS mungkin memerlukan perubahan yang kompleks. Rumus-rumus ini biasanya dikodekan dengan Rust dan dibedakan melalui fitur tanda GAS on-chain. Pembaruan rumus ini memerlukan pembaruan perangkat lunak node, penggunaan yang luas, dan persetujuan melalui proposal tata kelola untuk menggunakan versi GAS yang baru.

Pekerjaan Masa Depan

Sebagai kerangka GAS yang dapat digunakan pertama dari MOVE, arah kerja di masa depan mencakup:

  1. Mengurangi biaya eksekusi: menggunakan model GAS nyata untuk menunjukkan efisiensi compiler dan mesin virtual, memperbaiki untuk mengurangi biaya eksekusi

  2. Perhitungan GAS Multidimensi: Memungkinkan pengguna untuk menetapkan anggaran terpisah untuk eksekusi dan penyimpanan, menghindari biaya GAS yang tinggi akibat masalah kualitas kode.

  3. Mengurangi keadaan bengkak: menjelajahi konsep TTL setiap proyek, menghapus item status yang tidak diakses saat TTL berakhir.

Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Hadiah
  • 5
  • Bagikan
Komentar
0/400
rugged_againvip
· 9jam yang lalu
Lebih baik langsung mengatakan berapa banyak gas yang bisa diturunkan?
Lihat AsliBalas0
MetaverseMigrantvip
· 9jam yang lalu
Zeh, apakah gas ini bisa lebih rumit lagi?
Lihat AsliBalas0
NewDAOdreamervip
· 9jam yang lalu
Menerima uang secara terbalik adalah rasa sakit seumur hidup seorang coder.
Lihat AsliBalas0
¯\_(ツ)_/¯vip
· 9jam yang lalu
move benar-benar bulls ya, jadi rumit?
Lihat AsliBalas0
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)