Move dili, yeni nesil akıllı sözleşme dili olarak, tasarımının ilk aşamasında güvenliği ana kriter olarak belirlemiştir. Bu makale, Move dilinin güvenliğini dil özellikleri, çalışma mekanizması ve doğrulama araçları açısından analiz edecektir.
1. Move dilinin güvenlik özellikleri
Move dili, tasarımında daha esnek ancak daha düşük güvenlikte olan bazı özellikleri, örneğin dinamik dağıtım, özyinelemeli dış çağrılar gibi, terk etmiştir. Aksine, güvenli programlama modellerini gerçekleştirmek için genel türler, küresel depolama, kaynaklar gibi kavramları tanıtmaktadır.
Aşağıda basit bir token uygulama örneği bulunmaktadır:
hareket et
modül 0x1::TestCoin {
0x1::signer kullan
const ADMIN: address = @0x1;
struct Coin anahtar { değer: u64 }
struct Info anahtar { toplam_tedarik: u64 }
invariant her a: adres için vardır<coin>(a):
global<coin>(a).value <= global<info>(ADMIN).total_supply;
public fun initialize(hesap: &imzalayıcı) {
assert!(imzalayan::address_of(hesap) == YÖNETİCİ, 0);
move_to(hesap, Bilgi { toplam_tedarik: 0 });
}
public fun mint(hesap: &signer, miktar: u64): Coin {
assert!(signer::address_of(account) == ADMIN, 0);
let supply = borrow_global_mut\u003cinfo\u003e(ADMIN);
supply.total_supply = supply.total_supply + miktar;
Coin { value: miktar }
}
public fun value_mut(coin: &mut Coin): &mut u64 {
&mut coin.value
}
}
Bu örnek, Move dilinin bazı önemli özelliklerini göstermektedir:
Modülerlik: Kod modüller halinde düzenlenir, diğer modüllerin türlerini ve fonksiyonlarını içe aktarabilirsiniz.
Yapı: Veri yapısını tanımlamak için struct kullanılır, anahtar gibi yetenek etiketleri eklenebilir.
Küresel Depolama: global durumu yönetmek için move_to ve borrow_global_mut gibi işlemler aracılığıyla.
Kaynak Güvenliği: Kaynakların güvenli kullanımını sağlamak için yetenek sistemi ve lineer türler aracılığıyla.
Değişmezler: Statik kontrol için değişmez kuralı tanımlanabilir.
Move dili, derleyim sırasında güvenliği sağlamak için bayt kodu doğrulayıcı ve değişmezlik kontrolü kullanır:
Bytecode doğrulayıcı: yapıların geçerliliğini, işlem mantığı anlamını, bağlantı hatalarını vb. kontrol eder.
Değişmezlik kontrolü: Program durumunun önceden tanımlanmış değişmezlik kurallarını karşılayıp karşılamadığını doğrulamak.
2. Move'un çalışma mekanizması
Move programı sanal makinede çalışır, çalışma durumu çağrı yığını, bellek, global değişkenler ve operand yığını tarafından oluşturulur. Ana özellikler arasında şunlar bulunur:
Kontrol edilen bir ortamda çalıştırılmalı, sistem belleğine doğrudan erişilemez.
Yığın tabanlı bir yorumlayıcı kullanmak, uygulamayı ve kontrolü kolaylaştırır.
Veri depolama ve çağrı mantığının ayrılması, güvenliği ve yürütme verimliliğini artırır.
Bu tasarım, yeniden giriş saldırısı gibi bazı yaygın güvenlik sorunlarını önler.
3. Move Prover
Move Prover, geliştiricilerin akıllı sözleşmelerin doğruluğunu doğrulamalarına yardımcı olan bir biçimsel doğrulama aracıdır. İş akışı aşağıdaki gibidir:
Move kaynak kodunu ve standartlarını girdi olarak al.
Kaynağı analiz et, standartları çıkar.
Kod ve standartları doğrulayıcı nesne modeline dönüştür.
Boogie ara dil kodunu oluştur.
Z3 SMT çözümleyicisini kullanarak spesifikasyonun geçerliliğini doğrulayın.
Tanı raporu oluşturun, potansiyel sorunları belirtin.
Move Prover, program davranış kurallarını tanımlamak için Move Specification Language kullanır ve iş kodundan bağımsız olarak yazılabilir. Bu, akıllı sözleşmelere güçlü bir biçimsel doğrulama desteği sağlar.
Özet
Move dili, tasarımı itibarıyla güvenliği göz önünde bulundurarak geliştirilmiştir; dil özellikleri, sanal makine yürütmesi ve doğrulama araçlarıyla kapsamlı bir güvenlik sağlamaktadır. Bu, yeniden giriş, taşma gibi birçok yaygın akıllı sözleşme açığını etkili bir şekilde önleyebilir. Ancak, mantık hataları ve yetki yönetimi sorunları hala geliştiricilerin özel bir dikkat göstermesi gereken konulardır. Move akıllı sözleşme geliştiricilerine, dil özellikleri ve doğrulama araçlarını kullanmanın yanı sıra, sözleşme güvenliğini daha da artırmak için üçüncü taraf güvenlik denetim hizmetlerini de aramaları önerilir.
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.
11 Likes
Reward
11
3
Share
Comment
0/400
FalseProfitProphet
· 8h ago
move'nin ne yapabileceğini, sadece güvenliğini övün.
Move dilindeki akıllı sözleşmelerin güvenliği üzerine kapsamlı bir analiz: özellikler, mekanizmalar ve doğrulama
Move dilinin güvenliği üzerine bir inceleme
Move dili, yeni nesil akıllı sözleşme dili olarak, tasarımının ilk aşamasında güvenliği ana kriter olarak belirlemiştir. Bu makale, Move dilinin güvenliğini dil özellikleri, çalışma mekanizması ve doğrulama araçları açısından analiz edecektir.
1. Move dilinin güvenlik özellikleri
Move dili, tasarımında daha esnek ancak daha düşük güvenlikte olan bazı özellikleri, örneğin dinamik dağıtım, özyinelemeli dış çağrılar gibi, terk etmiştir. Aksine, güvenli programlama modellerini gerçekleştirmek için genel türler, küresel depolama, kaynaklar gibi kavramları tanıtmaktadır.
Aşağıda basit bir token uygulama örneği bulunmaktadır:
hareket et modül 0x1::TestCoin { 0x1::signer kullan
}
Bu örnek, Move dilinin bazı önemli özelliklerini göstermektedir:
Modülerlik: Kod modüller halinde düzenlenir, diğer modüllerin türlerini ve fonksiyonlarını içe aktarabilirsiniz.
Yapı: Veri yapısını tanımlamak için struct kullanılır, anahtar gibi yetenek etiketleri eklenebilir.
Küresel Depolama: global durumu yönetmek için move_to ve borrow_global_mut gibi işlemler aracılığıyla.
Kaynak Güvenliği: Kaynakların güvenli kullanımını sağlamak için yetenek sistemi ve lineer türler aracılığıyla.
Değişmezler: Statik kontrol için değişmez kuralı tanımlanabilir.
Move dili, derleyim sırasında güvenliği sağlamak için bayt kodu doğrulayıcı ve değişmezlik kontrolü kullanır:
Bytecode doğrulayıcı: yapıların geçerliliğini, işlem mantığı anlamını, bağlantı hatalarını vb. kontrol eder.
Değişmezlik kontrolü: Program durumunun önceden tanımlanmış değişmezlik kurallarını karşılayıp karşılamadığını doğrulamak.
2. Move'un çalışma mekanizması
Move programı sanal makinede çalışır, çalışma durumu çağrı yığını, bellek, global değişkenler ve operand yığını tarafından oluşturulur. Ana özellikler arasında şunlar bulunur:
Kontrol edilen bir ortamda çalıştırılmalı, sistem belleğine doğrudan erişilemez.
Yığın tabanlı bir yorumlayıcı kullanmak, uygulamayı ve kontrolü kolaylaştırır.
Kaynaklar yalnızca taşınabilir, kopyalanamaz.
Çağrı yığını, yürütme bağlamını kaydeder, statik atlamayı destekler.
Veri depolama ve çağrı mantığının ayrılması, güvenliği ve yürütme verimliliğini artırır.
Bu tasarım, yeniden giriş saldırısı gibi bazı yaygın güvenlik sorunlarını önler.
3. Move Prover
Move Prover, geliştiricilerin akıllı sözleşmelerin doğruluğunu doğrulamalarına yardımcı olan bir biçimsel doğrulama aracıdır. İş akışı aşağıdaki gibidir:
Move kaynak kodunu ve standartlarını girdi olarak al.
Kaynağı analiz et, standartları çıkar.
Kod ve standartları doğrulayıcı nesne modeline dönüştür.
Boogie ara dil kodunu oluştur.
Z3 SMT çözümleyicisini kullanarak spesifikasyonun geçerliliğini doğrulayın.
Tanı raporu oluşturun, potansiyel sorunları belirtin.
Move Prover, program davranış kurallarını tanımlamak için Move Specification Language kullanır ve iş kodundan bağımsız olarak yazılabilir. Bu, akıllı sözleşmelere güçlü bir biçimsel doğrulama desteği sağlar.
Özet
Move dili, tasarımı itibarıyla güvenliği göz önünde bulundurarak geliştirilmiştir; dil özellikleri, sanal makine yürütmesi ve doğrulama araçlarıyla kapsamlı bir güvenlik sağlamaktadır. Bu, yeniden giriş, taşma gibi birçok yaygın akıllı sözleşme açığını etkili bir şekilde önleyebilir. Ancak, mantık hataları ve yetki yönetimi sorunları hala geliştiricilerin özel bir dikkat göstermesi gereken konulardır. Move akıllı sözleşme geliştiricilerine, dil özellikleri ve doğrulama araçlarını kullanmanın yanı sıra, sözleşme güvenliğini daha da artırmak için üçüncü taraf güvenlik denetim hizmetlerini de aramaları önerilir.