MOVE dilinin öncüsü yakıt ücreti tasarımı: on-chain hesaplama maliyeti nasıl belirlenir

MOVE dilinin ilk yakıt ücreti tasarımı: on-chain tüketimi nasıl hesaplanır

Yakıt ücreti ölçümü, birçok blockchain'in temel kavramıdır; bu, bir işlemin gerçekleştirilmesi ve saklanması için gereken hesaplama ve saklama kaynaklarının soyut hesaplamasını tanımlar. Yakıt ücreti planı, on-chain tüm işlemlerin gerçekleştirilmesi sırasında tüketilen maliyetleri belirler ve işlem gerçekleştirilirken kullanılan yakıt ücretinin hesaplanmasında kullanılır.

süreç

Etkili bir şekilde yürütmek için, on-chain süreç şudur:

  1. Tanım İlkeleri
  2. Değerlendirme çerçevesini hazırlayın, her bir uygulamanın fiyatını belirleyin
  3. MOVE için bir yakıt ücreti ölçüm sistemi ve güvenli yakıt ücreti cebiri oluşturmak
  4. Yukarı akış yakıt ücreti çerçevesini içe aktar
  5. Yakıt ücreti çerçevesinin depolama bilincine sahip olması
  6. Yakıt ücreti planını daha da ayrıntılandırın

ilke

Tanımın prensibi şudur:

  1. İşlem maliyetleri, ağın kullanılabilir kaynaklarıyla doğrudan ilgili olmalıdır (, örneğin CPU, bellek, ağ, depolama I/O ve alan kullanımı gibi ). Teknoloji ve süreç iyileştirmeleri sonrasında, yakıt maliyetleri de düşmelidir.

  2. Yakıt ücreti on-chain yönetişim tarafından ayarlanmalı ve sorunsuz bir şekilde yapılandırılabilir.

  3. Yakıt ücreti, ağa ait sabit kaynaklara karşı DoS saldırılarını önleyebilir, ağ durumuna göre yönetişim önerileri ile hızlı bir şekilde ayarlanması gerekebilir.

  4. Yakıt ücreti fiyatı, hızlanan büyümeyi ve blockchain'in yaygınlığını koruma vizyonunu yansıtır.

  5. Tasarımda iyi seçimler yapmayı teşvik edin, örneğin güvenliği, modülerliği, beyanları gibi olayları önceliklendirin.

yakıt ücreti hesapla

Kullanıcı işlem gönderdiğinde, işlemde iki miktar belirtmek zorundadır:

Maksimum Yakıt Ücreti Miktarı: Yakıt ücreti birimiyle ölçülür. Bu, kullanıcıların bir işlemi gerçekleştirmek için harcamaya istekli olduğu maksimum yakıt ücreti birimi sayısıdır.

Yakıt Ücreti Birimi: Her birim yakıt ücreti sekizli sistemle hesaplanır, 1 sekizli = 0.00000001 APT(=$10^{-8}$). Bu, kullanıcıların ödemek istedikleri yakıt ücreti fiyatıdır.

İşlem sırasında, işlem için şu kadar ücret alınacaktır:

  1. Sabit maliyet, sabit bir temel üzerine büyük işlemlerin ek ücretleri.
  2. İşlem maliyeti, MOVE komutunu yürütmek için kullanılır.
  3. Okuma maliyeti, kalıcı depolamadan veri okumak için kullanılır.
  4. Yazma maliyeti, verileri kalıcı depolamaya yazmak için kullanılır.

Son işlem ücreti, harcanan yakıt ücretinin toplam miktarı ile yakıt ücreti birim fiyatının çarpılmasıyla hesaplanabilir. Örneğin, eğer bir işlem 670 yakıt ücreti birimi tüketiyorsa, kullanıcının belirttiği yakıt ücreti birim fiyatı birim başına 100 Octa ise, son işlem ücreti 670 * 100 = 67000 Octa = 0.00067 APT.

Eğer işlem gerçekleştirilirken yakıt ücreti tükenirse, gönderen maksimum yakıt ücreti miktarına göre ücret alınacaktır ve borsa tarafından yapılan tüm değişiklikler geri alınacaktır.

Yakıt Ücreti Planı Oluşturma

1. Temel Konfigürasyon

Yakıt ücreti planında, bir işlemin ayrıntılarıyla ilgisi olmayan birkaç bileşen bulunmaktadır; bunlar arasında işlem boyutu ve kullanıcı tarafından işlemde belirtilen maksimum yakıt ücreti miktarından farklı olan maksimum yakıt ücreti birimi ( bulunmaktadır.

2. İşlem Ölçeği

Çoğu işlem boyutu genellikle kilobyte ölçeğinde olabilir. Ancak, MOVE modülünün yayınlanması kolayca birkaç kilobyte olabilirken, çerçeve yaklaşık 100 KB'dir. Çoğu kullanıcı modül boyutu genellikle 4KB ile 40KB arasında değişir. İlk olarak işlem boyutu değeri 32KB olarak ayarlandı, ancak topluluk geri dönüşüne dayanarak uygulama geliştirmeyi kolaylaştırmak için daha fazla alan talep edildi, bu nedenle işlem boyutu 64KB olarak ayarlandı.

Son derece büyük ölçekli işlemler, tüm ağın bant genişliği maliyetini artırarak performans üzerinde olumsuz etki yaratabilir. Kötüye kullanılırsa, bellek havuzu daha büyük işlemleri göz ardı etmeye teşvik edilecektir, bu nedenle yöntemimiz maximum ölçekli işlemlerin boyutu ile erişilebilirliği arasında bir denge kurmaktır.

3. Maksimum Yakıt Ücreti Birimi

Yakıt ücreti planındaki maksimum yakıt ücreti birimi, bir işlemin en fazla ne kadar işlem gerçekleştirebileceğini tanımlar. Dikkat! Bu, kullanıcının işlemde belirttiği maksimum yakıt ücreti miktarından farklıdır.

Yakıt ücreti planının maksimum yakıt ücreti birimi, bir işlemin ne kadar süreyle gerçekleştirilebileceğini doğrudan etkiler, aşırı yüksek ayarlamalar blok zincirinin performansı üzerinde olumsuz etkilere yol açabilir. Örneğin, kullanıcı bir while döngüsünde bir artış olduğunu unutabilir ve bu da sonsuz döngüye neden olabilir, bu yaygın bir hatadır. En büyük çerçeve yükseltmesi gerçekleştirildiğinde bile, yakıt ücreti planının maksimum yakıt ücreti birimi ), 1,000,000('in %90'ı olarak ayarlanmıştır.

4. Uygulama

İşlem maliyetlerini değerlendirmek için bir referans çerçevesi oluşturuldu ve bu çerçevenin uygulanması sırasında MOVE VM'yi analiz etmek için Valgrind kullanıldı. Çıktısı, her bir satırın ne kadar makine talimatı ürettiğini belirten yorumlu bir kaynak kodu setidir.

Yukarıdaki analiz yardımıyla, tüm MOVE talimatlarının ve yerel fonksiyonların göreli maliyetleri kabaca tahmin edilmiştir. Ancak, bu yöntem iç içe geçmiş fonksiyonlarla bazı sorunlar yaşamaktadır: çağrılanın sayımına otomatik olarak dahil edilmezler. Ayrıca, bu durumun yalnızca bazı MOVE talimatlarının analizi sırasında gerçekleştiğini ve bu sorunun sayıları toplamakla çözülebileceğini gördük.

Daha sonra, sistemin sağlamlığını ve güvenliğini artırmaya yönelik kodlama örneklerini dikkate alarak, ekip nihai yürütme makine talimatı sayısını belirledi. Bu rakam, depolama ve maksimum yakıt ücreti birimi ile sırasıyla dengelenerek, yakıt ücreti planındaki mevcut değerlerini belirlemek için kullanıldı.

5. Depolama

Kalıcı depolamada saklanan defter durum öğelerine veya verilere erişildiğinde, düğüm depolama cihazına okuma veya yazma işlemi gönderir. Her saniyedeki veri erişim toplamı, depolama cihazının bant genişliği ve IOPS kapasitesine bağlıdır. Yakıt ücreti tahsilat hesaplama kısmındaki CPU döngüleri gibi, veri erişimi blockchain kullanıcılarının sistem yükü altında ücret piyasasında rekabet ettiği anlık kıtlıktır, ayrıca, yazılan verilerin disk kullanım maliyeti on-chain olarak kalıcıdır. Ekip, bu maliyetleri göz önünde bulundurarak depolama yakıt ücreti planını tasarlamaktadır.

Herhangi bir durum öğesine erişmek ve depolamak, tüm blok zinciri durumunun veri yapısını doğrulamakla ilişkili maliyetlere neden olur. Bu maliyet, $2^{256}$) ( farklı durum öğelerinin kardinalitesi ile ilgilidir. Her projenin büyüklüğü ile doğru orantılı olan bir maliyet de vardır. Bir durum öğesi üzerinde işlem yapmak için, sonraki bölüm )'de açıklanan özel durumlar dışında maliyet (:

Depolama yakıt ücreti = item_fee + )byte_fee * bytes(

) oku, oluştur ve yaz

Durum öğelerine yapılan her erişim aşağıdaki üç türden birine aittir: okuma, oluşturma veya yazma. Erişim, yukarıdaki eşitlikte gösterildiği gibi, öğe ücreti ve bayt ücreti ile ücretlendirilir.

Okuma işlemi en yaygın işlemdir ve yalnızca anlık kaynak kıtlığı ile sınırlıdır. Bu nedenle, okuma ücreti disk IOPS### proje maliyetine( ve referans donanım spesifikasyonlarının bant genişliği kapasitesine göre kalibre edilir.

create, durum deposuna yeni bir öğe eklemektir. Bu nedenle, create kimlik doğrulama veri yapısını artırır, her şeyi daha pahalı hale getirir ve dolayısıyla maliyet en yüksek olur. Oluşturma ücreti, ağın sahip olduğu referans disk alanına göre kalibre edilir. Bu nedenle, )item_fee( ve )byte_fee( ile diski doldurmak büyük miktarda yakıt ücreti gerektirir.

Yazma işlemi, durum deposundaki mevcut öğeleri günceller. Bu nedenle, yazma işlemleri kimlik doğrulama veri yapısında ek bir yük oluşturmaz. Ancak, mevcut öğeleri daha büyük byte'lar ile değiştirerek diski yine de bozabilirsiniz. Bu nedenle, güncellenen öğelerdeki byte'lar için oluşturuldukları zamandaki ile aynı ücreti alıyoruz.

Dikkate alınması gereken, depolama ile ilgili maliyetlerin her bir işlem bazında değerlendirildiğidir: Aynı kaynağı birden fazla kez okuma/yazma işlemi yapsanız bile yalnızca bir kez ücret ödemeniz gerekir.

Yukarıda belirtilen hususlara dayanarak, yakıt ücreti toplam maliyetinin bileşenlerini oluşturan 6 yakıt ücreti parametresi tanımladık. Aşağıya bakın:

per_item_read: IOPlere göre kalibrasyon per_byte_read: Gerçek bant genişliğine göre kalibre edilmiş per_item_create: Hedef toplam proje doğrultusunda kalibrasyon per_byte_create: Hedef toplam boyuta göre kalibrasyon - Her bir öğenin içerdiği ilk 1KB per_item_write: per_item_read ile aynıdır per_byte_write: per_byte_create ile aynıdır

) stabil yakıt maliyeti birimi

APT veya yasal para biriminin piyasa değeri ile işlem maliyetinin ne olursa olsun, her işlem ve işlem kendisi depolama ve yürütme maliyetlerine göre sabit bir birim maliyet gerektirir. Sabit yakıt ücreti birim maliyeti, yakıt ücreti planının sabit kalmasına yardımcı olur ve APT'nin serbest piyasa değerinden kopar. Ayrıca, yakıt ücreti biriminin doğru basamak sayısının seçilmesi, yakıt ücreti planının sabit kalmasına yardımcı olur. Bu durumu göz önünde bulundurarak, ekip yakıt ücreti birimini yaklaşık 3 basamak hassasiyetle ifade etmektedir. Bu nedenle, transfer işleminin maliyeti yaklaşık olarak 700 yakıt ücreti birimidir.

Topluluk Katılımı

Ateşleme ücreti planına çok fazla enerji harcamış olsak da, hala çok eksik. Bir topluluk projesi olarak, topluluk üyeleri şunları seçebilir:

  1. Deneyime dayanarak, yakıt ücreti planının mantıksız olduğu yerleri belirleyin.
  2. Yakıt ücreti planıyla ilgili endişelerinizi ifade edin ve topluluk tartışmalarına katılın.
  3. Yakıt ücreti ile ilgili yönetişim teklifleri için oylama yapın

Yakıt maliyetlerini nasıl ayarlayabilirim?

Yakıt ücreti planı, on-chain yapılandırma olarak depolanır, ancak yönetim önerileri aracılığıyla değiştirilebilir ve yeni talimatlar veya yerel işlevler sorunsuz bir şekilde eklenebilir.

Yakıt ücreti planı, yönetişim önerileri aracılığıyla yükseltmelere izin verecek şekilde ölçeklenebilir olarak tasarlanmıştır. MOVE VM'nin sürekli geliştirilmesi ve kullanıcı geri bildirimlerinin entegrasyonu ile, yakıt ücreti parametreleri zamanla ayarlanabilir.

Bazen, yakıt ücreti formüllerinin zincir üzerindeki konfigürasyonun ötesine geçmesi gereken karmaşık değişiklikler gerektirebilir. Bu yakıt ücreti formülleri genellikle Rust ile kodlanır ve zincir üzerindeki yakıt ücreti özellik bayrakları ile ayırt edilir. Bu formülleri güncellemek için, yeni formüller ile düğüm yazılımını güncellemek ve farklı yakıt ücreti özellik bayrakları ile ayırt etmek gerekmektedir. Ardından, düğüm yazılımı yayınlanmalı ve düğüm işletmecileri tarafından geniş bir şekilde benimsenmelidir; son olarak, yeni yakıt ücreti sürümünü kullanmak için bir yönetişim önerisi yayınlanmalı ve onaylanmalıdır.

Gelecekteki iş

Bu, MOVE için ilk uygulanabilir yakıt ücreti çerçevesidir. MOVE VM ve Core üzerinde önemli değişiklikler gerektirir. Bu çalışmanın gelecekteki çalışmalar için bir yol açmasını umuyoruz:

1### İcra maliyetini düşürmek, bir gerçek yakıt maliyeti modelinin derleyicinin ve sanal makinenin nerede verimli olduğunu göstermesi, ekibin icra maliyetini düşürmek için bunların çoğunu iyileştirebileceği anlamına geliyor.

2) Çok Boyutlu Yakıt Ücreti Hesaplama, kullanıcıların yürütme ve depolama için ayrı bir bütçe belirlemelerine izin verir. Böylece, kullanıcılar kötü yazılmış uygulamaların uzun yürütme süreleri nedeniyle yüksek yakıt ücreti ödemek zorunda kalmazlar. Ayrıca, blok zinciri sonundaki işlemler için maksimum yakıt ücreti fiyatlarının daha ince bir tanımına izin verecektir.

3) şişkin durumun hafifletilmesi, şu anda durum kümesini küçültmek için basit bir yöntem yok, bunun dışında sözleşme ) veya kullanıcı ('ın açıkça nesneleri silmesi. Kullanıcıların verileri silmek için para ödemesi, kullanıcıların ucuzken depolama oluşturup pahalıyken silmesiyle arbitraj fırsatları yaratabilir. Bu zorluğun çözümünü ertelemek, geliştiricilerin on-chain verileri silme motivasyonunu zayıflatabilir. Ekip, her projenin TTL kavramını keşfetmektedir, bu kavram TTL süresi dolduğunda erişilmemiş durum öğelerini silmeyi öngörmektedir.

MOVE6.47%
View Original
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.
  • Reward
  • 9
  • Share
Comment
0/400
SatoshiLegendvip
· 07-18 12:03
On-chain güvenliği temeldir. Yakıt ücreti hesaplaması esasen kaynak dağıtımının bir yeniden soyutlamasıdır.
View OriginalReply0
LayoffMinervip
· 07-18 04:42
move ile ilgili değil, sadece resme bak ve eğlen.
View OriginalReply0
ZkSnarkervip
· 07-18 00:42
teknik olarak sadece ek adımlarla yapılan cebir... açıkçası hareketin maliyet soyutlamalarında iyi olması gerekiyor fr
View OriginalReply0
wrekt_but_learningvip
· 07-16 22:19
Karmaşık yakıt ücreti, çok yoruldum.
View OriginalReply0
LightningSentryvip
· 07-15 20:58
move yine Emiciler Tarafından Oyuna Getirilmek
View OriginalReply0
ZenZKPlayervip
· 07-15 20:56
Bu gas ücreti bir kara delik.
View OriginalReply0
InfraVibesvip
· 07-15 20:55
Bu kadar abartılı mı? Hesaplama yöntemini önce netleştir.
View OriginalReply0
GmGnSleepervip
· 07-15 20:52
move büyük bir şeydir
View OriginalReply0
GasFeeCriervip
· 07-15 20:40
move gerçekten de ücretli.
View OriginalReply0
View More
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)