Libra'nın Move dilinin bir ön keşfi, ilk akıllı sözleşmenizi uygulamak için 10 satır kod

Yazar | Ma Chao

Sorumlu Editör | Yu Yan

Üretildi | CSDN (ID: CSDNnews)

Libra, Facebook tarafından başlatılan yeni bir sanal kripto para birimidir ve Move, Libra için tasarlanmış yeni bir programlama dilidir. Libra blok zincirinde özel işlem mantığı ve "akıllı sözleşmeler" uygulanabileceği söylenmektedir. Bu makale okuyucuları kullanımına tanıtacaktır. Hareket dilinde yazılmış akıllı sözleşme programı.

Move dilinin temel özellikleri

Programlanabilir Taşıma işlem betiği

  • Libra blok zincirindeki her işlem, işlem mantığını kodlamak için bir Taşı işlem komut dosyası içerir ve doğrulayıcı, müşterinin davranışını buna göre doğrular (örneğin, Libra paralarını Alice'in hesabından Bob'un hesabına taşımak).
  • İşlem betiği, bir veya daha fazla Move modülünü çağırarak Libra blok zincirinin global deposunda yayınlanan Move kaynağı ile etkileşime girer.
  • İşlem betiği blok zincirinin global durumunda depolanmaz ve diğer işlem betikleri onu çağıramaz Bu tek seferlik bir programdır.

Akıllı sözleşmelerle birleştirilebilen taşıma modülü

Move modülü (Modüller), Libra blok zincirinin global durumunu güncellemek için kuralları tanımlar. Bu modüller, diğer blockchain sistemlerindeki akıllı sözleşmelerle aynıdır. Modül, kullanıcı hesabı altında yayınlanabilecek kaynak türlerini bildirir. Libra blok zincirindeki her hesap, herhangi bir sayıda kaynak ve modülü tutabilen bir kapsayıcıdır.

  • Modül, iki tür yapı (özel bir yapı olan kaynaklar dahil) ve prosedürler bildirir.
  • Move modülünün süreci, bildirdiği türleri oluşturma, bunlara erişme ve yok etme kurallarını tanımlar.
  • Modül yeniden kullanılabilir. Bir modülde açıklanan yapı tipi başka bir modülde kullanılabilir ve bir modülde açıklanan prosedür başka bir modülde açıklanan genel prosedürde çağrılabilir. Modüller, diğer Move modüllerinde açıklanan prosedürleri çağırabilir. İşlem betiği, serbest bırakılan modülün herhangi bir genel prosedürünü çağırabilir.
  • Sonunda, Libra kullanıcıları kendi hesapları altında modülleri yayınlayabilecek.

Taşınmanın birinci sınıf kaynakları

  • Move'un temel işlevi, kaynak türlerini özelleştirme yeteneğidir. Kaynak türü, kodlama yoluyla zengin programlanabilirliğe ve güvenliğe sahiptir.
  • Kaynaklar, dildeki yaygın tür değerleridir. Veri yapıları olarak depolanabilir, prosedüre parametre olarak geçirilebilir, prosedürden geri döndürülebilir vb.
  • Move'un sistemi, kaynaklar için özel güvenlik garantileri sağlar. Kaynakları taşıma asla kopyalanmayacak, yeniden kullanılmayacak veya atılmayacaktır. Kaynak türleri yalnızca türü tanımlayan modüller tarafından oluşturulabilir veya yok edilebilir. Bu garantiler, Move sanal makinesi tarafından statik bayt kodu doğrulamasından geçirilir ve Move sanal makinesi, bayt kodu doğrulamasında başarısız olan program kodlarını çalıştırmayı reddeder.
  • Libra para birimi, LibraCoin.T adlı bir kaynak türü olarak uygulanır. LibraCoin.T'nin dilde özel bir durumu yoktur; her Move kaynağı aynı korumaya sahiptir.

Yazarın Dili hareket ettirmek için taşı yorumlaması

1. Move, statik olarak yazılmış bir dildir, yani güçlü bir şekilde yazılmış bir dildir.Bu açıdan, Move, Java ve C'ye benzer. Derleme zamanında sorunları daha fazla açığa çıkarır ve çalışma zamanında çökme olasılığını azaltır.

2. Move sanal makinesi, kaynaklarının bayt kodu aracılığıyla birinci sınıf durumu korumasını garanti eder (bir süre sonra görebiliriz) ve hareket, bayt kodu doğrulamasında başarısız olan programları yürütmeyi reddeder. Yani kaynaklar yalnızca tanımlı modüller tarafından oluşturulabilir veya yok edilebilir. Başka hiçbir modülün izinleri yoktur, bu da güvenlik açıklarını ve Ethereum Solid'de aynı kaynağa birden fazla işaretçi tarafından neden olunabilecek diğer sorunları önler.

İlk akıllı sözleşme

1. Move'un derleme ortamını kurun ve aşağıdaki komutları iletin

cd ~ / libracargo build --bin derleyicisi

Ve aşağıdaki dönüşe sahip olun, kod başarıyla derlendi

Derleyici v0.1.0 derleniyor (/ home / machao / libra / language / compiler) 57,23 saniyede tamamlanan geliştirme hedefleri

Pekala, fazla bir şey söylemeyelim, doğrudan ilk sözleşmemizin neye benzediğine bir göz atalım. Not: Aşağıdaki kod doğrudan libra'nın resmi web sitesinden https://learnblockchain.cn aktarılır.

// Basit eşler arası ödeme örneği. // 0x0 ... 0 (64 sıfır ile). 0x0, IR'nin baştaki sıfırlar ekleyerek // 256 bit (64 basamak) 'a yazdığı kısaltmadır. İthalat 0x0.LibraAccount; içe aktarma 0x0.LibraCoin; ana (alacaklı: adres , miktar: u64) {// Bayt kodu (ve dolayısıyla IR) yerelleri yazdı. Her yerel // kapsamı, prosedürün tamamıdır. Tüm yerel değişken bildirimleri // prosedürün başlangıcında olmalıdır. Beyan ve Değişkenlerin // başlatılması ayrı işlemlerdir, ancak bayt kodu doğrulayıcı, başlatılmamış bir değişkeni // kullanma girişimlerini engeller. let coin: R # LibraCoin.T; // Yukarıdaki türün R # kısmı iki * türünden biridir ek açıklama * R # ve V # // ("Kaynak" ve "kısıtlanmamış Değer" için kısa açıklama). Bu ek açıklamalar // tür bildiriminin türüyle eşleşmelidir (örneğin, LibraCoin // modülü "kaynak T" veya " struct T`?). // Gönderenin hesabından "miktar" değerine sahip bir LibraCoin.T kaynağı edinin // Gönderenin bakiyesi "miktar" dan küçükse bu başarısız olur. Coin = LibraAccount.withdraw_from_sender (move (amount)); // LibraCoin.T kaynağı "alacaklı" hesabına. "Alacaklı" adresinde // hesap yoksa, bu adım başarısız olur LibraAccount.deposit (taşı (alacaklı), taşı (para)); // Her prosedür bir "dönüş" ile sona ermelidir. IR derleyicisi çok basittir: // verilen kaynağı doğrudan çevirir. Eksik 'dönüşleri eklemek gibi // süslü şeyler yapmaz. Return;}

İki, programı derleyin

Yukarıdaki kodu programınıza yeni bir dosyaya kopyalayın. Yazar, örnek olarak test dizinindeki trans.m'yi alır

mkdir testcd testgedit trans.m # Yukarıdaki kodu bu dosyaya yapıştırın

1. Libra istemcisinde derleyin

~ / libra / scripts / cli / start_cli_testnet.sh # Libra komut satırına ulaştıktan sonra, aşağıdaki komutu çalıştırın dev c /opt/libra/test/trans.m /opt/libra/test/trans.ir

2. Derlemek için komut satırını da kullanabilirsiniz.

cd ~ / libra / target / debug. / compiler /opt/libra/test/trans.m -o /opt/libra/test/trans.ir

3. Oluşturulan ir dosyasına baktığımızda derlenen dosyanın içeriğinin aşağıdaki gibi olduğunu görüyoruz: Bu az önce bahsettiğimiz binary koddur.Genellikle güvenlik amacıyla kullanılır.Modül yetkilendirilmemişse kaynaklar değiştirilemez.

cat /opt/libra/test/trans.ir{"code":,"args":,"modules ":}

Orijinal bağlantı:

https://blog.csdn.net/BEYONDMA/article/details/98501624

Kendin için bir toplantı yapmak için bir yapay zekayı kapat, değil mi?

Büyük üreticiler neden GO dilini kullanıyor? GO dilinin dilimlerini okuyun

Ticaret sisteminin 5 yıllık evrimi

Pekin'deki Dördüncü Çevre Yolu'nda trafik sıkışıklığının tetiklediği büyük akıllı ulaşım fikri

Ngin'den Pandownload'e, programcılar hapishane programlamasından nasıl kaçınabilir?

Web1.0'dan Web3.0'a: İnternetin son yıllarda gelişimi ve gelecekteki yönünün ayrıntılı analizi

Dikkat alıcılar! Emlak piyasasının rüzgar yönü değişti
önceki
Ops akıllı operasyon ve bakım robotunun ayrıntılı açıklaması, hata işleme hızlı ve doğrudur
Sonraki
Çizgi Roman: Salgının R0 ve R'si nedir?
Uzak ofis programcıları için öneriler
Ali, Jiang Fan'ın Ali Grand Entertainment Group'a transfer edildiğini reddetti; Mogujie işten çıkarmalara% 14 yanıt verdi; Android Studio 3.6.3 kararlı sürümü yayınlandı | Geek Headlines
Ele.me ticaret sistemi 5 yıllık evrim
JavaScript birinci sırada yer alır, VS Code en popüler olanıdır ve geliştiricilerin sıcak konuları açığa çıkarılır
Bir bakışta güvenlikten yansıtma ardışık düzenine, Docker en iyi uygulamalarına ve anti-modellere
Büyük şirketler neden GO dilini kullanıyor? GO dilinin dilimlerini okuyun
21 yıllık programlama kariyeri, adım attığım çukurlar
37 yaşındaki programcı işten çıkarıldı! 120 gün iş bulamıyor musunuz? Ortadan kaldırılmak istemiyorum, bu senin son şansın olabilir
Hangi Chongqing güveç restoranı daha iyi, Python dükkanı keşfetmenize yardımcı olacak
Teknolojik yenilikte 35 yaşın altındaki 35 kişiden biri olan bu doktor, Meituan AI buzdağının görünen ucunu açtı
İşe alıyor! MySQL röportajının ustalaşması gereken 8 bilgi noktası
To Top