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:
Prinsip Definisi
Siapkan kerangka evaluasi, tentukan harga untuk setiap eksekusi
Membangun sistem pengukuran GAS dan aljabar GAS yang aman untuk MOVE
Mengimpor kerangka GAS hulu
Membuat kerangka GAS memiliki kesadaran penyimpanan
Memperinci rencana GAS lebih lanjut
prinsip
Prinsip yang didefinisikan meliputi:
Biaya operasi harus terkait langsung dengan sumber daya yang tersedia di jaringan dan menurun seiring dengan kemajuan teknologi.
GAS harus diatur oleh on-chain governance, dapat dikonfigurasi tanpa batas.
GAS dapat mencegah serangan DoS, dapat dengan cepat disesuaikan berdasarkan kondisi jaringan.
Harga GAS harus mencerminkan visi untuk pertumbuhan yang dipercepat dan menjaga aksesibilitas blockchain.
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:
Biaya tetap
Biaya untuk mengeksekusi instruksi MOVE
Biaya membaca data dari penyimpanan permanen
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
Konfigurasi Dasar
Rencana GAS mencakup komponen yang tidak terkait dengan operasi tunggal, seperti ukuran transaksi dan unit GAS maksimum.
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.
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).
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.
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:
Temukan ketidakrasionalan dalam rencana GAS
Mengajukan kekhawatiran dan berpartisipasi dalam diskusi
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:
Mengurangi biaya eksekusi: menggunakan model GAS nyata untuk menunjukkan efisiensi compiler dan mesin virtual, memperbaiki untuk mengurangi biaya eksekusi
Perhitungan GAS Multidimensi: Memungkinkan pengguna untuk menetapkan anggaran terpisah untuk eksekusi dan penyimpanan, menghindari biaya GAS yang tinggi akibat masalah kualitas kode.
Mengurangi keadaan bengkak: menjelajahi konsep TTL setiap proyek, menghapus item status yang tidak diakses saat TTL berakhir.
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.
6 Suka
Hadiah
6
5
Bagikan
Komentar
0/400
rugged_again
· 9jam yang lalu
Lebih baik langsung mengatakan berapa banyak gas yang bisa diturunkan?
Lihat AsliBalas0
MetaverseMigrant
· 9jam yang lalu
Zeh, apakah gas ini bisa lebih rumit lagi?
Lihat AsliBalas0
NewDAOdreamer
· 9jam yang lalu
Menerima uang secara terbalik adalah rasa sakit seumur hidup seorang coder.
Desain GAS inovatif oleh MOVE: Analisis metode perhitungan konsumsi sumber daya on-chain
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:
prinsip
Prinsip yang didefinisikan meliputi:
perhitungan GAS
Pengguna harus menentukan saat mengajukan transaksi:
Biaya akan dikenakan selama proses eksekusi transaksi:
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
Rencana GAS mencakup komponen yang tidak terkait dengan operasi tunggal, seperti ukuran transaksi dan unit GAS maksimum.
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.
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).
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.
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:
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:
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:
Mengurangi biaya eksekusi: menggunakan model GAS nyata untuk menunjukkan efisiensi compiler dan mesin virtual, memperbaiki untuk mengurangi biaya eksekusi
Perhitungan GAS Multidimensi: Memungkinkan pengguna untuk menetapkan anggaran terpisah untuk eksekusi dan penyimpanan, menghindari biaya GAS yang tinggi akibat masalah kualitas kode.
Mengurangi keadaan bengkak: menjelajahi konsep TTL setiap proyek, menghapus item status yang tidak diakses saat TTL berakhir.