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
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.
Taşınmanın birinci sınıf kaynakları
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 derleyicisiVe 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 hedefleriPekala, 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ın1. 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.ir2. Derlemek için komut satırını da kullanabilirsiniz.
cd ~ / libra / target / debug. / compiler /opt/libra/test/trans.m -o /opt/libra/test/trans.ir3. 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