AO'da uygulanan sözleşme işletim mekanizmasını bilmek ister misiniz? O halde sözleşme kodunu alıp öğrenelim. Belirtilen Sürecin sözleşmesini kolayca edinmek için bir python uygulaması kullanın.
Yazar: txohyeah
İnceleyen: outprog
Kaynak: İçerik Birliği - Haberler
AO'ya giriş
AO nedir?
AO test ağının yayınlanmasından bu yana altı aydan az bir süre geçti ve AO hakkında pek çok içerik var. Bu makalenin içeriği esas olarak AO'nun ne olduğu, Sürecin ne olduğu ve hayatı dahil olmak üzere Süreç ve akıllı sözleşmelere odaklanmaktadır. Süreç döngüsü. Son olarak Process’in sözleşme kodunu nasıl görüntüleyeceğimize odaklanacağız.
AO, Arweave tarafından dağıtılmış depolamanın geliştirilmesine dayalı olarak daha da geliştirilen bir bilgi işlem fonksiyonudur. Kapsamlı merkezi olmayan uygulama desteği sağlamayı amaçlar ve Ethereum'un önce hesaplama ve daha sonra depolamanın gelişim yoluna karşılık gelir. Basitçe söylemek gerekirse AO, Arweave platformunda akıllı sözleşmeleri veya bilgi işlem gücünü temsil eder ve kalıcı depolama çözümünün üzerinde mantıksal bir katman uzantısıdır.
AO üç birimden oluşur: MU/SU/CU
MU: İmzalandıklarından emin olmak için kullanıcılar tarafından gönderilen mesajları alır.
SU: Mesajları zaman damgalayıp sıralayın, ardından paketleyip Arweave'de yayınlayın. SU aynı zamanda bugün kullanacağımız kahramandır ve daha sonra sözleşmeyi incelerken önemli bir rol oynayacaktır.
CU: Mesajı işleyin ve sonucu hesaplayın.
AO'da çalışan Süreç nedir?
AO, esas olarak, Verilerin, AO'da tanımlanan temel mesaj öğesi biçiminde bulunduğu bir Veri Protokolü temel alınarak oluşturulmuş süper paralel bir bilgisayardır. Daha sonra İşlem, Mesajın işlenmesinde önemli bir rol oynar ve AO'da mesajların işlenmesi için temel birimdir. İşlem CU üzerinde çalışır ve CU üzerinde sanal bir makine olarak kabul edilebilir. Bu nedenle İşlem, ağ içinde mesaj alma ve gönderme konusunda temel yeteneği içerir. Daha sonra geliştiriciler, Süreç'e işleyiciler ekleyerek Süreç için mesaj işleme yetenekleri geliştirirler. Daha sonra tartışılacak olan sözleşme aslında Process'e bir mesaj gönderilerek ve ardından yerleşik _eval işleyicisi kullanılarak dağıtılır. Eklenen işleyici, sözleşmenin mesaj işleme işlevi olarak anlaşılabilir.
Süreç yaşam döngüsü
Mevcut dünyamızda bir benzetme bulmak istiyorsak, o zaman docker'daki konteynerin (Konteyner) Process'in iyi bir karşılaştırması ve anlaşılması olabileceğini düşünüyorum. Daha sonra, Sürecin yaşam döngüsünü karşılaştırmak için docker'daki Container'ın yaşam döngüsü benzetmesini kullanacağım.
Docker'da Container oluşturmanın bir imaja (Image) bağlı olduğunu hepimiz biliyoruz. Örneğin, MySQL Image'ı temel alan bir MySQL Container oluşturun ve ardından bu konteyner üzerinde MySQL hizmetini arayabilirsiniz. Aynı şey AO'da Process için de geçerlidir. Process'in oluşturulması Modül'e bağlıdır ve farklı işlevlere sahip Modüller de olacaktır. En basit Modüller, zamanlanmış görevleri destekleyen Modüller ve sqlite içeren Modüller vardır. Şu anda geliştiricilerin kendi Süreçlerini oluşturmak için seçebilecekleri yüzlerce Modül bulunmaktadır. Ayrıca kendi özel Modülünüzü de oluşturabilirsiniz. Yakın gelecekte GPU'ları destekleyen modüllerin ve çeşitli AI yeteneklerini destekleyen modüllerin de olacağına inanıyorum.
AO'daki süreç aynı zamanda docker'daki Container'dan da farklıdır. Docker'daki konteynerler başlatma, durdurma ve silme gibi çeşitli eylemleri destekler. Şu anda AO Sürecinde böyle bir işlem bulunmamaktadır. Sonuçta merkezi olmayan uygulamalar dünyasında, merkezi bireyler tarafından kontrol edilen bu işlevler oldukça tutarsızdır. İşlemin AO'da çalıştırılması tamamen İşlemin değerine bağlıdır. Yeterli değere sahipse, daha fazla CU kesinlikle onu çalıştırmaya istekli olacaktır. Tam tersine, bir İşlemin değeri yoksa hiçbir CU çalıştırmaya istekli olmayacaktır. O zaman Bu Süreç sessizce kaybolacaktır.
Eval işlevi ve AO sözleşme dağıtımı
AO sözleşmesi nedir? Ethereum'un akıllı sözleşmelerini karşılaştırın. AO üzerinde çalışan Prosesteki Lua kodu yaklaşık olarak akıllı bir sözleşme olarak kabul edilebilir.
Bir İşlem oluşturduğumuzda, yüklenen her Modülün iki varsayılan işleyicisi olacaktır (işleyiciler diğer İşlemlere açık işlevler olarak anlaşılabilir), bunlardan biri _eval işleyicisidir. Bu işleyicinin ana işlevi Lua kodunu çalıştırmaktır. Örneğin, aos'ta 1+1 girerseniz, bu işleyici tarafından işlenen 2 değeri döndürülür. Daha sonra sözleşmeyi dağıtmak aslında Sürece bir mesaj göndermek ve _eval işleyicisi aracılığıyla Sürece iş mantığını yönetebilecek özel bir İşleyici eklemek anlamına gelir.
Dikkat edilmesi gereken bir şey var, lütfen aşağıdaki koda bakın. Bu, resmi açık kaynak AO projesindeki proses.lua'daki kod bölümüdür. _eval işleyicisi yalnızca mesajın göndereni Sürecin Sahibi ile tutarlı olduğunda yürütülebilir (Sahip, sözleşme oluşturulduğunda cüzdan adresidir). Başka bir deyişle, Sahip sıfır olarak ayarlanırsa (yani Süreç, Sahibi olmayacak şekilde ayarlanırsa), bu Süreçteki sözleşme, hiç kimsenin değiştiremeyeceği bir sözleşme haline gelir.
Ek olarak, AO aslında Depolama Tabanlı Konsensüs Paradigması (SCP, Depolama Tabanlı Konsensüs Paradigması) temel alınarak oluşturulduğundan, çalışan sözleşmenin "depolama konsensusunda", yani Süreçte çalışan tüm iletilerde bulunması gerekir. _eval işleyicisi tarafından dağıtılan sözleşme kodu Arweave'de saklanır. Bu nedenle herkes sözleşme kodunu bu "depolama mutabakatında" bulabilir.
Sözleşmeyi görüntüle
Peki bugünkü konumuza gelirsek sözleşme kodu nasıl bulunur? Aşağıda iki yöntemi tanıtacağım ve sözleşmeyi yakalamak için bir Python programı vereceğim.
Arweave
İlk yöntem elbette doğrudan Arweave üzerinden sorgulama yapmaktır (graphql https://arweave.net/graphql kullanabilirsiniz). Bu yaklaşım, verilerin faydalı olması için Arweave'e paketlenmesini gerektirir.
SU - Tarayıcı
İkinci yöntem ise esas olarak günümüzde uygulanmaya başlanan yöntemdir. Tüm veriler SU üzerinden yükleneceği için SU üzerinden de sorgulanabilmektedir. Şahsen ben her SU'nun kendisi tarafından yüklenen veriler için yerel bir önbelleğe sahip olacağını, dolayısıyla ilgili sözleşme kodunun SU sorgulanarak bulunabileceğini düşünüyorum. Öncelikle tarayıcıya adresi girerek doğrudan sorgulama yapabilirsiniz. Ancak bu yöntemin eksiklikleri de açıktır: 1. Bazı Süreçler çok büyük miktarda mesaj gönderip alır, dolayısıyla zincire yüklenen veri miktarı da çok büyüktür. Ancak tarayıcının yükleyebileceği veriler sınırlıdır ve sıklıkla tarayıcı çökmeleri meydana gelir. 2. Masif verilerden istediğiniz sözleşme verilerini filtrelemek zordur.
Aşağıdaki şekil, m3PaWzK4PTG9lAaqYQPaPdOcXdO8hYqi5Fe9NWqXd0w işlem kimliğine sahip işlemin (AO belirteç işlemi) tüm mesajlarını iki zaman damgası içinde gösterir.
SU-sdk
Burada, Eylemi Eval olan mesajları filtrelemek için python tabanlı bir endüstri lideri tarafından yazılan ao sdk'yi kullanarak küçük bir program yazdım. (Eylemi Eval olan mesajların tümü, yüklenen sözleşme kodu da dahil olmak üzere _eval işleyicisi tarafından işlenen mesajlardır.) Aşağıdaki resim, veri alanındaki içeriğin karakter kaçışlı olduğu SU'dan aldığım mesajdır. Elbette, yakalanan mesajlar aynı zamanda 1 + 1'in yürütülmesi vb. gibi dağıtım dışı sözleşme kodu içeriğini de içerecektir. Ancak filtreleme sonrasında mesaj sayısı artık çok fazla değil ve sözleşme kodu manuel olarak seçilebiliyor.
Program açık kaynaktır, işte github adresi: https://github.com/txohyeah/ao-sc
AO token sözleşmesi
O halde heyecanlanıp ao tokenin sözleşme koduna bir göz atalım. (Yakalanan sözleşme kodu aynı zamanda açık kaynak kod deposuna da yerleştirilecektir)
İlk olarak, durumu başlatırken TotalSupply = "210000000000000000000", Bitcoin'in ihracıyla tutarlı olacak şekilde tanımlanır.
Mezhep = Mezhep veya 12 ayrıca ondalık noktayı 12 basamak olarak tanımlar.
Transfer fonksiyonu 100.000 blok oluşturulmadan önce çalıştırılırsa doğrudan "Transfer kilitlendi" ifadesinin döndürüleceği tanımlanmıştır.
Her beş dakikada bir blok üretildiği için gelecek yıl Şubat ayı civarında 100.000 blok olacak.
Daha alakalı bilgiler var, bu yüzden ayrıntılara girmeyeceğim. Herkes bu klasik AO sözleşmesine memnuniyetle göz atabilir.
Program talimatları
Yukarıda yakalanan sözleşme kodunu tanıttım. Şimdi bu programı kısaca tanıtacağım. Oldukça basit, kod bilmeyenlerin de rahatlıkla kullanabileceğine inanıyorum.
İlk adım python 3.12 sürümünü kurmaktır. Program python ile yazılmıştır ve python'un kurulması gereklidir.
İkinci adım gerekli paketleri kurmaktır. Bu program sektör liderlerinin ve everpay'in SDK'sına dayanmaktadır.
Üçüncü adım, fetch_sc_record.py dosyasındaki start_time / end_time / prosesini değiştirmektir. ve fetch_sc_record.py dosyasını çalıştırın.
başlangıç_zamanı ve bitiş_zamanı, yakalamanız gereken zaman aralıklarıdır. süreç, sözleşmeyi yakalamak için ihtiyaç duyduğunuz Sürecin kimliğidir.
Dördüncü adımda msg_eval.json dosyasında ilgili Eval mesajı görünecektir. Mesajlara göz atın ve ihtiyacınız olan sözleşme kodunu bulabilirsiniz!
Not: Aynı zamanda aos çalıştırmakla aynı olması gerekir. HTTPS_PROXY'yi ayarlayın.
🏆 "Hataları yakalayan" ödüller: Bu makalede yazım hataları, yanlış cümleler veya yanlış açıklamalar bulursanız, bunu bildirmek için bana tıklayın ve teşvikler kazanın.
Yasal Uyarı: Bu makale PermaDAO'nun görüşlerini veya konumlarını temsil etmez. PermaDAO yatırım tavsiyesi vermez veya herhangi bir projeyi onaylamaz. Okuyuculardan bulundukları ülkenin kanunlarına uymaları ve Web3 faaliyetlerini bu kanunlara uygun olarak yürütmeleri rica olunur.
🔗 关于 PermaDAO: Web sitesi | Twitter | Telgraf | Anlaşmazlık | Orta | Youtube