Desain biaya bahan bakar pertama MOVE: bagaimana biaya bahan bakar on-chain dihitung?
Pengukuran biaya bahan bakar adalah konsep dasar di banyak blockchain, yang mendefinisikan jumlah sumber daya komputasi dan penyimpanan yang diperlukan untuk mengeksekusi dan menyimpan transaksi on-chain. Rencana biaya bahan bakar menentukan semua biaya yang dikeluarkan untuk eksekusi on-chain, yang digunakan untuk menghitung pengeluaran biaya bahan bakar yang digunakan selama eksekusi transaksi.
proses
Untuk mengeksekusi dengan efektif, proses on-chain adalah:
prinsip definisi;
Siap untuk mengevaluasi kerangka kerja untuk menentukan harga setiap eksekusi;
untuk MOVE membangun sistem pengukuran biaya bahan bakar dan aljabar biaya bahan bakar yang aman;
Mengimpor kerangka biaya bahan bakar hulu;
membuat kerangka biaya bahan bakar memiliki kesadaran penyimpanan;
Memperjelas rencana biaya bahan bakar.
Prinsip
Prinsip yang didefinisikan adalah:
Biaya operasi harus terkait langsung dengan sumber daya yang tersedia di jaringan ( seperti CPU, memori, jaringan, penyimpanan I/O, dan penggunaan ruang, dll ). Setelah perbaikan teknologi dan proses, biaya bahan bakar yang diperlukan harus menurun.
Biaya bahan bakar harus diatur oleh on-chain governance, dan dapat dikonfigurasi tanpa hambatan.
Biaya bahan bakar dapat mencegah serangan DoS pada kumpulan sumber daya tetap di jaringan, dan mungkin perlu disesuaikan dengan cepat melalui saran tata kelola berdasarkan kondisi jaringan.
Harga biaya bahan bakar mencerminkan keinginan untuk percepatan pertumbuhan dan menjaga blockchain agar dapat diakses oleh semua orang.
Mendorong untuk membuat pilihan baik dalam desain - misalnya memprioritaskan keamanan, modularitas, pernyataan, dan kejadian lainnya.
Hitung biaya bahan bakar
Ketika pengguna mengajukan transaksi, mereka juga harus menentukan dua jumlah dalam transaksi:
Jumlah Biaya Bahan Bakar Maksimum: Diukur dalam unit biaya bahan bakar. Ini adalah jumlah maksimum unit biaya bahan bakar yang bersedia dibayar pengguna untuk mengeksekusi transaksi.
Harga biaya bahan bakar per unit: dihitung dalam oktal untuk setiap unit biaya bahan bakar, di mana 1 oktal=0.00000001 APT(=$10^{-8}$). Ini adalah harga biaya bahan bakar yang bersedia dibayar pengguna.
Dalam proses eksekusi, transaksi akan dikenakan biaya:
biaya tetap, biaya dasar tetap ditambah biaya tambahan untuk transaksi besar.
biaya eksekusi, digunakan untuk mengeksekusi instruksi MOVE.
biaya baca, digunakan untuk membaca data dari penyimpanan permanen.
biaya penulisan, digunakan untuk menulis data ke penyimpanan permanen.
Biaya transaksi akhir dapat dihitung dengan total jumlah unit biaya bahan bakar yang digunakan ( dikalikan dengan harga per unit biaya bahan bakar ). Misalnya, jika sebuah transaksi menghabiskan 670 unit biaya bahan bakar, dan pengguna menentukan harga biaya bahan bakar per unit dalam transaksi sebesar 100 Octa, maka biaya transaksi akhir adalah 670 * 100 = 67000 Octa = 0.00067 APT.
Jika sebuah transaksi kehabisan biaya bahan bakar selama proses eksekusi, maka pengirim akan dikenakan biaya berdasarkan jumlah maksimum biaya bahan bakar, dan semua perubahan yang dilakukan oleh transaksi tersebut akan dibatalkan.
buat rencana biaya bahan bakar
1. Konfigurasi Dasar
Ada beberapa komponen dalam rencana biaya bahan bakar yang tidak terkait dengan detail operasi tunggal, termasuk ukuran transaksi dan unit biaya bahan bakar maksimum ( yang berbeda dari jumlah biaya bahan bakar maksimum yang ditentukan pengguna dalam transaksi ).
2. Skala Transaksi
Untuk sebagian besar transaksi, ukuran transaksi mungkin berada dalam orde kilobyte. Namun, rilis modul Move dengan mudah bisa mencapai beberapa ribu byte, sementara kerangka kerja sekitar 100 KB. Ukuran modul pengguna mayoritas biasanya berkisar antara 4KB hingga 40KB. Awalnya, kami menetapkan nilai ukuran transaksi sebesar 32KB, tetapi berdasarkan tanggapan komunitas, ada permintaan untuk menyediakan lebih banyak ruang untuk menyederhanakan pengembangan aplikasi, sehingga kami menyesuaikan ukuran transaksi menjadi 64KB.
Transaksi dalam skala yang sangat besar dapat meningkatkan biaya bandwidth di seluruh jaringan dan dapat berdampak negatif pada kinerja. Jika disalahgunakan, mempool akan didorong untuk mengabaikan transaksi yang lebih besar, oleh karena itu pendekatan kami adalah mencapai keseimbangan antara ukuran transaksi terbesar dan aksesibilitas.
3. Satuan Biaya Bahan Bakar Maksimum
Unit biaya bahan bakar maksimum yang didefinisikan dalam rencana biaya bahan bakar menentukan berapa banyak operasi yang dapat dilakukan dalam satu transaksi. Perhatikan! Ini berbeda dari jumlah biaya bahan bakar maksimum yang ditentukan pengguna dalam transaksi.
Unit biaya bahan bakar maksimum dari rencana biaya bahan bakar secara langsung mempengaruhi berapa lama sebuah transaksi dapat dieksekusi. Mengatur terlalu tinggi dapat menyebabkan dampak kinerja negatif pada blockchain. Misalnya, pengguna mungkin lupa untuk memasukkan inkremen dalam loop while, yang dapat menyebabkan loop tak terbatas, ini adalah kesalahan umum. Kami menemukan bahwa meskipun kami telah melakukan peningkatan kerangka maksimum, kami masih kurang dari unit biaya bahan bakar maksimum dari rencana biaya bahan bakar ( yang ditetapkan pada 1.000.000) sebesar 90%.
4. Eksekusi
Untuk mengevaluasi biaya eksekusi, kami membangun kerangka acuan dan menggunakan Valgrind untuk menganalisis MOVE VM saat menjalankan kerangka tersebut. Outputnya adalah satu set kode sumber yang diberi komentar, yang memberi tahu kami berapa banyak instruksi mesin yang dihasilkan oleh setiap baris kode.
Dengan bantuan analisis di atas, kami secara kasar memperkirakan biaya relatif dari semua instruksi MOVE dan fungsi asli. Namun, kami mencatat bahwa metode ini memiliki beberapa masalah dengan fungsi inline: mereka tidak secara otomatis termasuk dalam perhitungan pemanggil. Kami juga melihat bahwa ini hanya terjadi ketika kami menganalisis instruksi MOVE tertentu, dan kami dapat menyelesaikan masalah ini dengan menjumlahkan angka.
Kemudian, dengan mempertimbangkan contoh pengkodean yang meningkatkan ketahanan dan keamanan sistem, tim menghasilkan jumlah instruksi mesin yang dieksekusi terakhir. Angka ini secara berurutan ditimbang dengan unit biaya bahan bakar maksimum dan penyimpanan untuk menentukan nilai saat ini dalam rencana biaya bahan bakar.
5. Penyimpanan
Setiap kali mengakses item status buku besar atau data yang disimpan dalam penyimpanan persistennya, node akan mengeluarkan perintah baca atau tulis kepada perangkat penyimpanan. Total akses data per detik tergantung pada bandwidth perangkat penyimpanan dan kapasitas IOPS. Mirip dengan siklus CPU pada bagian perhitungan biaya bahan bakar, akses data adalah kelangkaan instan yang bersaing di pasar biaya oleh pengguna blockchain saat beban sistem tinggi, selain itu, biaya penggunaan disk untuk menulis data di on-chain adalah permanen. Tim merancang rencana biaya bahan bakar penyimpanan dengan mempertimbangkan biaya-biaya ini.
Mengakses dan menyimpan item status apa pun akan menghasilkan biaya yang terkait dengan struktur data pohon Merkle yang memverifikasi status seluruh blockchain. Biaya ini berkaitan dengan kardinalitas item status yang berbeda ($2^{256}$). Ada juga biaya yang sebanding dengan ukuran setiap item. Untuk melakukan operasi pada item status, biayanya adalah ( kecuali untuk pengecualian yang dijelaskan pada bagian berikutnya ):
Biaya penyimpanan bahan bakar = item_fee + (byte_fee * bytes)
Baca, buat, dan tulis
Akses ke item status termasuk dalam salah satu dari tiga jenis berikut: baca, buat, atau tulis. Akses dikenakan biaya item dan biaya byte, seperti yang ditunjukkan oleh persamaan di atas.
Operasi baca adalah operasi yang paling umum, dan hanya dibatasi oleh kelangkaan sumber daya sesaat. Oleh karena itu, biaya pembacaan disesuaikan berdasarkan kapasitas bandwidth dari spesifikasi perangkat keras referensi dan biaya proyek IOPS(.
create adalah menambahkan item baru dalam penyimpanan status. Oleh karena itu, create menambah struktur data otentikasi, membuat semuanya menjadi lebih mahal, sehingga biaya tertinggi. Biaya pembuatan disesuaikan berdasarkan ruang disk referensi yang dimiliki jaringan. Oleh karena itu, mengisi disk dengan item )item_fee( dan byte )byte_fee( memerlukan biaya bahan bakar yang besar.
Operasi tulis memperbarui item yang ada dalam penyimpanan status. Oleh karena itu, operasi tulis tidak menghasilkan overhead tambahan dalam struktur data otentikasi. Namun, dengan memodifikasi entri yang ada menjadi byte yang lebih besar, disk masih dapat rusak. Oleh karena itu, kami mengenakan biaya yang sama untuk byte dalam item yang diperbarui seperti saat dibuat.
Perlu dicatat bahwa biaya terkait penyimpanan dievaluasi berdasarkan setiap transaksi: bahkan jika Anda membaca/menulis sumber daya yang sama berkali-kali, Anda hanya perlu membayar biaya sekali.
Berdasarkan pertimbangan di atas, kami telah mendefinisikan 6 parameter biaya bahan bakar, yang membentuk komponen total biaya bahan bakar. Lihat di bawah:
per_item_read:kalibrasi berdasarkan IOPs
per_byte_read:kalibrasi berdasarkan bandwidth aktual
per_item_create:kalibrasi berdasarkan total proyek yang ditargetkan
per_byte_create: Mengkalibrasi berdasarkan total ukuran target - setiap item mencakup 1KB pertama
per_item_write: sama dengan per_item_read
per_byte_write: sama dengan per_byte_create
) biaya bahan bakar unit yang stabil
Terlepas dari berapa pun biaya operasi yang dihitung berdasarkan nilai pasar APT atau mata uang fiat, setiap operasi dan transaksi itu sendiri memerlukan biaya unit tetap relatif terhadap biaya penyimpanan dan pelaksanaan. Biaya unit tetap bahan bakar membantu menjaga rencana biaya bahan bakar tetap, dan terputus dari nilai pasar bebas APT. Selain itu, pemilihan jumlah angka desimal yang tepat untuk biaya bahan bakar unit membantu menjaga rencana biaya bahan bakar tetap. Mengingat hal ini, tim mewakili biaya bahan bakar unit dengan akurasi sekitar 3 angka. Oleh karena itu, biaya transaksi transfer adalah sekitar 700 unit biaya bahan bakar.
partisipasi komunitas
Meskipun kami telah menginvestasikan banyak energi dalam rencana biaya bahan bakar, namun itu masih jauh dari sempurna. Sebagai proyek komunitas, anggota komunitas dapat memilih:
1### Berdasarkan pengalaman Anda, temukan bagian dari rencana biaya bahan bakar yang tidak masuk akal;
Sampaikan kekhawatiran Anda tentang rencana biaya bahan bakar, dan ikut serta dalam diskusi komunitas.
melakukan pemungutan suara untuk proposal tata kelola yang terkait dengan biaya bahan bakar.
) Bagaimana cara menyesuaikan biaya bahan bakar?
Rencana biaya bahan bakar disimpan sebagai konfigurasi on-chain, tetapi dapat diubah melalui proposal pemerintahan, dan instruksi baru atau fungsi asli dapat ditambahkan dengan mulus.
Rencana biaya bahan bakar dirancang untuk dapat diperluas, memungkinkan peningkatan melalui proposal pemerintahan. Seiring dengan peningkatan berkelanjutan pada Move VM dan mengintegrasikan umpan balik pengguna, parameter biaya bahan bakar dapat disesuaikan seiring berjalannya waktu.
Terkadang, rumus biaya bahan bakar mungkin memerlukan perubahan kompleks yang melampaui konfigurasi on-chain. Rumus biaya bahan bakar ini biasanya dikodekan dengan Rust dan dibedakan melalui tanda fitur biaya bahan bakar on-chain. Untuk memperbarui rumus ini, perangkat lunak node harus diperbarui dengan rumus baru dan dibedakan dengan tanda fitur biaya bahan bakar yang berbeda. Kemudian perangkat lunak node harus dirilis dan diadopsi secara luas oleh operator node, dan terakhir, proposal tata kelola harus dirilis dan disetujui agar versi biaya bahan bakar baru dapat digunakan.
Pekerjaan di masa depan
Ini adalah kerangka biaya bahan bakar pertama yang layak untuk MOVE. Ini memerlukan banyak modifikasi pada Move VM dan Core. Kami berharap pekerjaan ini dapat membuka jalan untuk pekerjaan di masa depan:
1### Menurunkan biaya eksekusi, memiliki model biaya bahan bakar yang nyata menunjukkan di mana kompiler dan mesin virtual efisien, tim dapat memperbaiki sebagian besar darinya untuk menurunkan biaya eksekusi.
2) Penghitungan Biaya Bahan Bakar Multidimensi, memungkinkan pengguna untuk menetapkan anggaran terpisah untuk eksekusi dan penyimpanan. Dengan cara ini, pengguna tidak perlu membayar harga biaya bahan bakar yang tinggi karena waktu eksekusi yang terlalu lama akibat aplikasi yang ditulis dengan kode yang buruk. Ini juga akan memungkinkan definisi yang lebih rinci mengenai harga maksimum biaya bahan bakar untuk transaksi di sisi blockchain;
3) Mengurangi Status Berlebihan, saat ini tidak ada cara sederhana untuk mengecilkan kumpulan status, kecuali kontrak ) atau pengguna ( secara eksplisit menghapus item. Pengguna yang membayar untuk menghapus data mungkin menciptakan peluang arbitrase, di mana pengguna membuat penyimpanan saat murah, dan menghapusnya saat mahal. Menunda penyelesaian tantangan ini dapat melemahkan motivasi pengembang untuk menghapus data on-chain. Tim sedang mengeksplorasi konsep TTL untuk setiap proyek, yang akan menghapus item status yang tidak terakses saat TTL kedaluwarsa.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
4 Suka
Hadiah
4
4
Posting ulang
Bagikan
Komentar
0/400
ImpermanentLossEnjoyer
· 23jam yang lalu
Siapa yang bisa menanggung biaya bahan bakar yang mahal ini?
Lihat AsliBalas0
rekt_but_resilient
· 23jam yang lalu
Anjing saja tahu bahwa gas untuk move itu sangat mahal.
Lihat AsliBalas0
0xSleepDeprived
· 23jam yang lalu
move juga harus menarik uang, sulit untuk bertahan.
Lihat AsliBalas0
EthSandwichHero
· 23jam yang lalu
Hanya biaya minyak segini? dunia kripto pemula terbuka
Mekanisme biaya bahan bakar yang diutamakan oleh bahasa MOVE: bagaimana biaya eksekusi on-chain dihitung dengan tepat
Desain biaya bahan bakar pertama MOVE: bagaimana biaya bahan bakar on-chain dihitung?
Pengukuran biaya bahan bakar adalah konsep dasar di banyak blockchain, yang mendefinisikan jumlah sumber daya komputasi dan penyimpanan yang diperlukan untuk mengeksekusi dan menyimpan transaksi on-chain. Rencana biaya bahan bakar menentukan semua biaya yang dikeluarkan untuk eksekusi on-chain, yang digunakan untuk menghitung pengeluaran biaya bahan bakar yang digunakan selama eksekusi transaksi.
proses
Untuk mengeksekusi dengan efektif, proses on-chain adalah:
prinsip definisi;
Siap untuk mengevaluasi kerangka kerja untuk menentukan harga setiap eksekusi;
untuk MOVE membangun sistem pengukuran biaya bahan bakar dan aljabar biaya bahan bakar yang aman;
Mengimpor kerangka biaya bahan bakar hulu;
membuat kerangka biaya bahan bakar memiliki kesadaran penyimpanan;
Memperjelas rencana biaya bahan bakar.
Prinsip
Prinsip yang didefinisikan adalah:
Biaya operasi harus terkait langsung dengan sumber daya yang tersedia di jaringan ( seperti CPU, memori, jaringan, penyimpanan I/O, dan penggunaan ruang, dll ). Setelah perbaikan teknologi dan proses, biaya bahan bakar yang diperlukan harus menurun.
Biaya bahan bakar harus diatur oleh on-chain governance, dan dapat dikonfigurasi tanpa hambatan.
Biaya bahan bakar dapat mencegah serangan DoS pada kumpulan sumber daya tetap di jaringan, dan mungkin perlu disesuaikan dengan cepat melalui saran tata kelola berdasarkan kondisi jaringan.
Harga biaya bahan bakar mencerminkan keinginan untuk percepatan pertumbuhan dan menjaga blockchain agar dapat diakses oleh semua orang.
Mendorong untuk membuat pilihan baik dalam desain - misalnya memprioritaskan keamanan, modularitas, pernyataan, dan kejadian lainnya.
Hitung biaya bahan bakar
Ketika pengguna mengajukan transaksi, mereka juga harus menentukan dua jumlah dalam transaksi:
Jumlah Biaya Bahan Bakar Maksimum: Diukur dalam unit biaya bahan bakar. Ini adalah jumlah maksimum unit biaya bahan bakar yang bersedia dibayar pengguna untuk mengeksekusi transaksi.
Harga biaya bahan bakar per unit: dihitung dalam oktal untuk setiap unit biaya bahan bakar, di mana 1 oktal=0.00000001 APT(=$10^{-8}$). Ini adalah harga biaya bahan bakar yang bersedia dibayar pengguna.
Dalam proses eksekusi, transaksi akan dikenakan biaya:
biaya tetap, biaya dasar tetap ditambah biaya tambahan untuk transaksi besar.
biaya eksekusi, digunakan untuk mengeksekusi instruksi MOVE.
biaya baca, digunakan untuk membaca data dari penyimpanan permanen.
biaya penulisan, digunakan untuk menulis data ke penyimpanan permanen.
Biaya transaksi akhir dapat dihitung dengan total jumlah unit biaya bahan bakar yang digunakan ( dikalikan dengan harga per unit biaya bahan bakar ). Misalnya, jika sebuah transaksi menghabiskan 670 unit biaya bahan bakar, dan pengguna menentukan harga biaya bahan bakar per unit dalam transaksi sebesar 100 Octa, maka biaya transaksi akhir adalah 670 * 100 = 67000 Octa = 0.00067 APT.
Jika sebuah transaksi kehabisan biaya bahan bakar selama proses eksekusi, maka pengirim akan dikenakan biaya berdasarkan jumlah maksimum biaya bahan bakar, dan semua perubahan yang dilakukan oleh transaksi tersebut akan dibatalkan.
buat rencana biaya bahan bakar
1. Konfigurasi Dasar
Ada beberapa komponen dalam rencana biaya bahan bakar yang tidak terkait dengan detail operasi tunggal, termasuk ukuran transaksi dan unit biaya bahan bakar maksimum ( yang berbeda dari jumlah biaya bahan bakar maksimum yang ditentukan pengguna dalam transaksi ).
2. Skala Transaksi
Untuk sebagian besar transaksi, ukuran transaksi mungkin berada dalam orde kilobyte. Namun, rilis modul Move dengan mudah bisa mencapai beberapa ribu byte, sementara kerangka kerja sekitar 100 KB. Ukuran modul pengguna mayoritas biasanya berkisar antara 4KB hingga 40KB. Awalnya, kami menetapkan nilai ukuran transaksi sebesar 32KB, tetapi berdasarkan tanggapan komunitas, ada permintaan untuk menyediakan lebih banyak ruang untuk menyederhanakan pengembangan aplikasi, sehingga kami menyesuaikan ukuran transaksi menjadi 64KB.
Transaksi dalam skala yang sangat besar dapat meningkatkan biaya bandwidth di seluruh jaringan dan dapat berdampak negatif pada kinerja. Jika disalahgunakan, mempool akan didorong untuk mengabaikan transaksi yang lebih besar, oleh karena itu pendekatan kami adalah mencapai keseimbangan antara ukuran transaksi terbesar dan aksesibilitas.
3. Satuan Biaya Bahan Bakar Maksimum
Unit biaya bahan bakar maksimum yang didefinisikan dalam rencana biaya bahan bakar menentukan berapa banyak operasi yang dapat dilakukan dalam satu transaksi. Perhatikan! Ini berbeda dari jumlah biaya bahan bakar maksimum yang ditentukan pengguna dalam transaksi.
Unit biaya bahan bakar maksimum dari rencana biaya bahan bakar secara langsung mempengaruhi berapa lama sebuah transaksi dapat dieksekusi. Mengatur terlalu tinggi dapat menyebabkan dampak kinerja negatif pada blockchain. Misalnya, pengguna mungkin lupa untuk memasukkan inkremen dalam loop while, yang dapat menyebabkan loop tak terbatas, ini adalah kesalahan umum. Kami menemukan bahwa meskipun kami telah melakukan peningkatan kerangka maksimum, kami masih kurang dari unit biaya bahan bakar maksimum dari rencana biaya bahan bakar ( yang ditetapkan pada 1.000.000) sebesar 90%.
4. Eksekusi
Untuk mengevaluasi biaya eksekusi, kami membangun kerangka acuan dan menggunakan Valgrind untuk menganalisis MOVE VM saat menjalankan kerangka tersebut. Outputnya adalah satu set kode sumber yang diberi komentar, yang memberi tahu kami berapa banyak instruksi mesin yang dihasilkan oleh setiap baris kode.
Dengan bantuan analisis di atas, kami secara kasar memperkirakan biaya relatif dari semua instruksi MOVE dan fungsi asli. Namun, kami mencatat bahwa metode ini memiliki beberapa masalah dengan fungsi inline: mereka tidak secara otomatis termasuk dalam perhitungan pemanggil. Kami juga melihat bahwa ini hanya terjadi ketika kami menganalisis instruksi MOVE tertentu, dan kami dapat menyelesaikan masalah ini dengan menjumlahkan angka.
Kemudian, dengan mempertimbangkan contoh pengkodean yang meningkatkan ketahanan dan keamanan sistem, tim menghasilkan jumlah instruksi mesin yang dieksekusi terakhir. Angka ini secara berurutan ditimbang dengan unit biaya bahan bakar maksimum dan penyimpanan untuk menentukan nilai saat ini dalam rencana biaya bahan bakar.
5. Penyimpanan
Setiap kali mengakses item status buku besar atau data yang disimpan dalam penyimpanan persistennya, node akan mengeluarkan perintah baca atau tulis kepada perangkat penyimpanan. Total akses data per detik tergantung pada bandwidth perangkat penyimpanan dan kapasitas IOPS. Mirip dengan siklus CPU pada bagian perhitungan biaya bahan bakar, akses data adalah kelangkaan instan yang bersaing di pasar biaya oleh pengguna blockchain saat beban sistem tinggi, selain itu, biaya penggunaan disk untuk menulis data di on-chain adalah permanen. Tim merancang rencana biaya bahan bakar penyimpanan dengan mempertimbangkan biaya-biaya ini.
Mengakses dan menyimpan item status apa pun akan menghasilkan biaya yang terkait dengan struktur data pohon Merkle yang memverifikasi status seluruh blockchain. Biaya ini berkaitan dengan kardinalitas item status yang berbeda ($2^{256}$). Ada juga biaya yang sebanding dengan ukuran setiap item. Untuk melakukan operasi pada item status, biayanya adalah ( kecuali untuk pengecualian yang dijelaskan pada bagian berikutnya ):
Biaya penyimpanan bahan bakar = item_fee + (byte_fee * bytes)
Baca, buat, dan tulis
Akses ke item status termasuk dalam salah satu dari tiga jenis berikut: baca, buat, atau tulis. Akses dikenakan biaya item dan biaya byte, seperti yang ditunjukkan oleh persamaan di atas.
Operasi baca adalah operasi yang paling umum, dan hanya dibatasi oleh kelangkaan sumber daya sesaat. Oleh karena itu, biaya pembacaan disesuaikan berdasarkan kapasitas bandwidth dari spesifikasi perangkat keras referensi dan biaya proyek IOPS(.
create adalah menambahkan item baru dalam penyimpanan status. Oleh karena itu, create menambah struktur data otentikasi, membuat semuanya menjadi lebih mahal, sehingga biaya tertinggi. Biaya pembuatan disesuaikan berdasarkan ruang disk referensi yang dimiliki jaringan. Oleh karena itu, mengisi disk dengan item )item_fee( dan byte )byte_fee( memerlukan biaya bahan bakar yang besar.
Operasi tulis memperbarui item yang ada dalam penyimpanan status. Oleh karena itu, operasi tulis tidak menghasilkan overhead tambahan dalam struktur data otentikasi. Namun, dengan memodifikasi entri yang ada menjadi byte yang lebih besar, disk masih dapat rusak. Oleh karena itu, kami mengenakan biaya yang sama untuk byte dalam item yang diperbarui seperti saat dibuat.
Perlu dicatat bahwa biaya terkait penyimpanan dievaluasi berdasarkan setiap transaksi: bahkan jika Anda membaca/menulis sumber daya yang sama berkali-kali, Anda hanya perlu membayar biaya sekali.
Berdasarkan pertimbangan di atas, kami telah mendefinisikan 6 parameter biaya bahan bakar, yang membentuk komponen total biaya bahan bakar. Lihat di bawah:
per_item_read:kalibrasi berdasarkan IOPs
per_byte_read:kalibrasi berdasarkan bandwidth aktual
per_item_create:kalibrasi berdasarkan total proyek yang ditargetkan
per_byte_create: Mengkalibrasi berdasarkan total ukuran target - setiap item mencakup 1KB pertama
per_item_write: sama dengan per_item_read
per_byte_write: sama dengan per_byte_create
) biaya bahan bakar unit yang stabil
Terlepas dari berapa pun biaya operasi yang dihitung berdasarkan nilai pasar APT atau mata uang fiat, setiap operasi dan transaksi itu sendiri memerlukan biaya unit tetap relatif terhadap biaya penyimpanan dan pelaksanaan. Biaya unit tetap bahan bakar membantu menjaga rencana biaya bahan bakar tetap, dan terputus dari nilai pasar bebas APT. Selain itu, pemilihan jumlah angka desimal yang tepat untuk biaya bahan bakar unit membantu menjaga rencana biaya bahan bakar tetap. Mengingat hal ini, tim mewakili biaya bahan bakar unit dengan akurasi sekitar 3 angka. Oleh karena itu, biaya transaksi transfer adalah sekitar 700 unit biaya bahan bakar.
partisipasi komunitas
Meskipun kami telah menginvestasikan banyak energi dalam rencana biaya bahan bakar, namun itu masih jauh dari sempurna. Sebagai proyek komunitas, anggota komunitas dapat memilih:
1### Berdasarkan pengalaman Anda, temukan bagian dari rencana biaya bahan bakar yang tidak masuk akal;
Sampaikan kekhawatiran Anda tentang rencana biaya bahan bakar, dan ikut serta dalam diskusi komunitas.
melakukan pemungutan suara untuk proposal tata kelola yang terkait dengan biaya bahan bakar.
) Bagaimana cara menyesuaikan biaya bahan bakar?
Rencana biaya bahan bakar disimpan sebagai konfigurasi on-chain, tetapi dapat diubah melalui proposal pemerintahan, dan instruksi baru atau fungsi asli dapat ditambahkan dengan mulus.
Rencana biaya bahan bakar dirancang untuk dapat diperluas, memungkinkan peningkatan melalui proposal pemerintahan. Seiring dengan peningkatan berkelanjutan pada Move VM dan mengintegrasikan umpan balik pengguna, parameter biaya bahan bakar dapat disesuaikan seiring berjalannya waktu.
Terkadang, rumus biaya bahan bakar mungkin memerlukan perubahan kompleks yang melampaui konfigurasi on-chain. Rumus biaya bahan bakar ini biasanya dikodekan dengan Rust dan dibedakan melalui tanda fitur biaya bahan bakar on-chain. Untuk memperbarui rumus ini, perangkat lunak node harus diperbarui dengan rumus baru dan dibedakan dengan tanda fitur biaya bahan bakar yang berbeda. Kemudian perangkat lunak node harus dirilis dan diadopsi secara luas oleh operator node, dan terakhir, proposal tata kelola harus dirilis dan disetujui agar versi biaya bahan bakar baru dapat digunakan.
Pekerjaan di masa depan
Ini adalah kerangka biaya bahan bakar pertama yang layak untuk MOVE. Ini memerlukan banyak modifikasi pada Move VM dan Core. Kami berharap pekerjaan ini dapat membuka jalan untuk pekerjaan di masa depan:
1### Menurunkan biaya eksekusi, memiliki model biaya bahan bakar yang nyata menunjukkan di mana kompiler dan mesin virtual efisien, tim dapat memperbaiki sebagian besar darinya untuk menurunkan biaya eksekusi.
2) Penghitungan Biaya Bahan Bakar Multidimensi, memungkinkan pengguna untuk menetapkan anggaran terpisah untuk eksekusi dan penyimpanan. Dengan cara ini, pengguna tidak perlu membayar harga biaya bahan bakar yang tinggi karena waktu eksekusi yang terlalu lama akibat aplikasi yang ditulis dengan kode yang buruk. Ini juga akan memungkinkan definisi yang lebih rinci mengenai harga maksimum biaya bahan bakar untuk transaksi di sisi blockchain;
3) Mengurangi Status Berlebihan, saat ini tidak ada cara sederhana untuk mengecilkan kumpulan status, kecuali kontrak ) atau pengguna ( secara eksplisit menghapus item. Pengguna yang membayar untuk menghapus data mungkin menciptakan peluang arbitrase, di mana pengguna membuat penyimpanan saat murah, dan menghapusnya saat mahal. Menunda penyelesaian tantangan ini dapat melemahkan motivasi pengembang untuk menghapus data on-chain. Tim sedang mengeksplorasi konsep TTL untuk setiap proyek, yang akan menghapus item status yang tidak terakses saat TTL kedaluwarsa.