AMA: MOVE Programı! Move Nedir?


0

Mysten kurucu ortağı ve CTO’su Sam Blackshear ile yapılmış olan AMA yani bana istediğini sor etkinliğini sizler için Türkçe’ye çevirdik. Bu AMA’da SUI Move programlama dili ile ilgili bir çok detay  bulabileceksiniz. Söz Sam’de!

Size biraz Mysten ve Crypto’ya giden yolumdan bahsedeyim. Kariyerime programlama dili araştırmacısı olarak başladım; Statik analiz ve otomatik hata bulma araçları üzerinde çalışıyordum. Tüm günümü eğlenceli, ezoterik matematik yaparak geçirdim ve bu araçları açık kaynaklı yazılımlarda çalıştırmak üzere oluşturdum ve uyguladım, böylece açık kaynak geliştiricilere bildirecek bazı hatalar bulabilir ve bunları düzeltmek isteyip istemediklerini görebilirim. Bazen olurlardı ve bu büyük bir heyecan olurdu. Ama çoğunlukla, bu sadece eğlenceli bir matematikti ve özellikle pratik bir şey değildi. 

Doktoramın sonlarına doğru Facebook’ta staj yapma şansım oldu. Orada da bizim akademik dünyada kullandığımız teknolojinin aynısını alıp üretimde çalıştırmaya çalışıyorlardı. Bu, Facebook’un web’den mobile geçiş yaptığı 2014 yılındaydı. Hataları ne pahasına olursa olsun mobil uygulamalarımızdan uzak tutmamız gerektiğini keşfediyorlardı. Bu yüzden, hatadan sonra yapmaya çalışmak yerine, hataları önden yakalamak için her türlü teknolojiye yatırım yaptılar. Bu otomatik hata bulma araçları üzerinde çalışıyordum ve daha önce yaptığım araştırma işinin aynısını yapmak zorundaydım, ancak şimdi bunu on binlerce Facebook geliştiricisinin önüne koyabiliyor ve ne oldukları hakkında gerçek zamanlı geri bildirim alabiliyorum.

Söylemek gerekirse, tamamen bağımlılık yapan bir deneyimdi.

Benim için Araştırma ve Üretimin bu kesişim noktasında çalışmayı gerçekten seviyorum. Stajımın ardından Facebook’a katıldım ve uzun yıllar bunun üzerinde çalıştım. Teknoloji üzerine bir blog yaptım ve arabellek taşma verileri, yarışlar, düğüm referansları ve güvenlik için bazı içerik analizleri gibi her türlü şeye baktım. Burası dil tasarımı hakkında birçok fikir edindiğim yer, çünkü bütün günümüzü statik analiz yaparak ve hata aramaya çalışarak geçirdik.

Dil açısından bakıldığında, son kullanıcılar için hazırladığım gibi otomatik araçlar için kod hakkında akıl yürütmek zor. Move’un hikayesi, güvenlik, hatalar ve inşaat yoluyla kötü davranışlardan kaçınma hakkındaki bu fikirlerin çoğunu alıyor ve sadece sıfırdan tasarlanan dilin nasıl görünmeye çalıştığını düşünüyor?

Facebook’un Diem çabasına katıldım ve bunun bir parçası olarak Move’u yarattım. Burası aynı zamanda protokol tasarımı üzerinde çok çalıştığım ve Mysten’deki kurucu ortaklarla tanıştığım yer. Ve geçen yıl şirkete katılmak için atladık ve Sui ile sahip olduğumuz yeni Move entegrasyonu üzerinde çalışmaya başladım.

Soru 1: Projenin bir sonraki aşamasının geliştirme odağı nedir?

Bugün daha sonra gerçekleşecek duyuruları eklemek için harika bir fırsat var. Sanırım AMA’dan sonra resmen düşüyor, ama burada olan insanlara biraz erken bilgi verebiliriz. Bugün, yaklaşmakta olan teşvikli test ağımızın tarihini duyuruyoruz. Sui tabanlı su temasına uyması için bir dizi dalga halinde organize edilecek. Her dalganın iki bölümü olacaktır: biri, ağın belirli bölümleriyle ilgili operasyonel bir zorluk olan Sink dediğimiz şeydir – doğrulayıcı yeniden yapılandırması olabilir, tüm temel şeyleri stake etmekle ilgili olabilir, her zaman çalışması gerekecek – ve daha sonra, bir Move geliştiricisinin karşılaştığı zorluk olan Swim olarak adlandırdığımız diğer kısım.

İlki, henüz yayınlamaya hazır olmadığımız bazı detaylar var. Ancak, gelecekte hakkında daha çok duyacağınız bir kod kelime var, o da Capibara çünkü ilk Move ile ilgili mücadelenin teması olacak. Bizim için büyük bir odak noktası, ağı bu Teşvik Edilmiş Testnet için hazırlamak ve kararlılık özelliklerinin hepsinin orada olduğundan, geliştirici araç zincirinin bu yeni zorluklara hazır olduğundan emin olmak ve ardından operasyonel deneyim oluşturan bir dizi dalga boyunca ilerlemek.

Ağı yöneten kişiler arasında, yıl sonundan önce ulaşmayı umduğumuz ana ağ için her şeyin güvenli ve hazır olduğundan emin olmanın yanı sıra olay müdahalesi yapmaya hazır olduğumuzdan emin oluyoruz. Yani şu anda odak noktamız bu. Kriz modundayız ve bu Teşvik Edilmiş Testnet’e ulaşmaya çalışıyoruz.

Soru 2: Move’un geçmişi nedir ve onu Solidity gibi diğer programlama dillerinden ayıran nedir?

Evet, yakından ilişkili olmalarına rağmen bunları ayrı ayrı ele almama izin verin. Bu yüzden 2018’de Libra projesine katıldığımda, ona çok geniş bir yetki verildi. Görev, Libra’nın bu küresel blockchain destekli ödeme ağı olması gerektiğini ve ardından keyfi akıllı sözleşmeler yürütmesi gerektiğini söyledi.

Biliyorsunuz, hepimiz sadece Facebook insanlarıyız, kripto hakkında bazı şeyler biliyoruz ama çoğunlukla bilgisayar bilimcileriz. Ve bizim isteğimiz, insanların ne tür programların ilgisini çektiği ve bu programları yazmanın ideal yolunun ne olduğu gibi, akıllı sözleşmenin esasını keşfetmek. Mevcut bir akıllı sözleşme dilini alıp onu güçlendirmeye ve daha güvenli ve daha iyi hale getirmeye çalışmalı mıyız? Ana akım bir dili alıp akıllı sözleşme diline dönüştürmeye çalışmalı mıyız? Yoksa sıfırdan bir şey tasarlamaya çalışmalı mıyız?

Bu yüzden bu seçeneklerin üçüne de baktık. Gerçekten baktığımız ilk şey, herhangi bir dil için ana akım bir dili güçlendirmeye çalışmaktı. Bunun için en önemli faktör topluluk, çok sayıda kütüphanenin olması, çok sayıda programcının bilmesi, çok sayıda tooling’in olması, Stack Overflow’un olması ve tüm bu şeyler. Mevcut bir dil topluluğuna dokunabiliyorsanız, bu idealdir. Ancak keşfettiğimiz şey, bu akıllı sözleşme dilleriyle çeşitli nedenlerle ana akım bir dil kullanamayacağınızdır. Hemen hemen hiçbir ana akım dilin karşılamadığı temel gereksinimler vardır.

Bunlardan biri de determinizmdir. Akıllı bir sözleşme diliniz olduğunda, birden fazla doğrulayıcının yürütmekte olduğu ve aynı yanıtı alması gereken bu işlemleri çalıştırmaya çalışıyorsunuz. Rekabetiniz belirleyici değilse, bunu yapamayacaklar. Bu, çok sayıda geleneksel programlama dilini masadan kaldırır çünkü determinizmleri yerleşik değildir ve determinizmi ortadan kaldırmak için bir dili uyarlamak çok zordur.

HashMap üzerinde yineleme yapmanın deterministik olmadığını hayal edebilirsiniz, çünkü bu, HashMap’te hangi adreslerin olduğuna bağlı olacaktır ve bir kod parçasının kitaplığında derin bir yerde kullandıkları bir HashMap olup olmadığını bilemezsiniz. kullanarak. Hikayenin ahlaki: bu programları kullanamazsınız çünkü bu dil güvenli olmayacaktır. Diğer bir şey ise, akıllı sözleşme programlarının ana akım programlardan çok farklı görünmesidir. Varlıklara çok fazla odaklanıyorlar. Tipik işlem, girdi olarak bazı varlıkları alacak, onları okuyacak, yazacak ve sonra belki onları transfer edecek.

Ayrıca, varlığın sahibi olan birinin veya belki de sahibi olan bir başkasının çevresinde bu tür otorite kavramları vardır, ancak bunlar çok daha düşük düzeyde olan ana akım dillerde hiç yoktur. Bir varlığı temsil eden hiçbir şey yoktur. Otorite diye bir şey yok. Kalıcılık yok. Hesap yok ve işlem gibi bir şey yok. O zaman muhtemelen ihtiyacınız olmayan tüm bu şeyler var. Ana akım bir dil kullanmak güzel olsa da, temelde dilin bu kadar büyük bir alt kümesini almanız ve onu zorlayan araçlar oluşturmanız gerektiğini düşündük. Bu çok daha karmaşık olacak.

Dışarıda ne olduğunu ve bununla neyin iyi gittiğini görmek için sağlamlığa ve EVM’ye baktık. Orada, bunun ana akım dillerin sahip olduğu en büyük sorunlardan birine sahip olduğunu keşfettik, yani bu programlar tamamen varlıklarla ilgili. Madeni paralarla ilgililer. NFT’lerle ilgililer. Onlar parayla ilgili. Yine de dilde, aslında bir varlığı temsil eden hiçbir tür veya değer yoktur. Varlıkların veri modeli, bir yerde bir özet tablonuz olması, kullanıcı adreslerinin bu özet tablosundaki anahtarlar olması ve varlıkların baytlarının özet tablosundaki değerler olmasıdır. Bir kullanıcıdan diğerine bir varlık olarak bir işlev çağırmadığınızı ve bu varlığı prosedüre geçirmediğinizi söylemeye çalışan bir program yazmak istiyorsanız, karma tablosuna gidersiniz ve deneyen bazı bitlerle uğraşırsınız. etrafındaki şeyi aktarmak için.

Bu yüzden, varlıkları kullanan kodda doğal olarak yapmak isteyeceğiniz çok temel şeyleri yapmayı zorlaştırır: bir varlığın bir prosedüre girdi olarak iletilmesi, bir prosedürden bir varlığın döndürülmesi, bir varlığın bir veri yapısı ve bir varlığı başka bir varlığın içine sarma. Solidity ve Ethereum’da bunların hiçbirini yapamazsınız çünkü varlıkların temsili yoktur. Dilin türü yoktur; düşük seviyede, her şey sadece bayttır. Bu kavramlara sahip olamazsın.

Yani Move ile yapmaya çalıştığımız asıl şey, varlıklarla programlama için doğru soyutlamaları sağlamak ve bunları en düşük seviyede dile dönüştürmek. Sıradan bir programlama dilinde bir yapıya benzeyen bir şeye sahip olduğunuz, ancak fiziksel dünyadaki bir varlıktan isteyeceğiniz bu güzel korumalara sahip olduğunuz bu kaynak türleri kavramına sahibiz. Örneğin, ayrıcalıklı bir işlem olduğu için bunu sıfırdan oluşturamazsınız. Ayrıca bilerek veya yanlışlıkla kopyalayamazsınız. Normalde, bir programlama dilinde “x eşittir y” yazdığınızda, yaptığınız şey aslında “y”yi kopyalamaktır. Ama elbette, “y” gerçek dünya değeri olan bir madeni paraysa, onu kopyalamak istemezsiniz. y’nin eski değerinin artık kullanılamaması ve ve y’nin aynı anda bir yerde olması çok önemli.

Odaklandığımız bir diğer koruma, kullanıcının bir programın etrafında bir jeton geçirerek ve onu iade etmeyi unutarak yanlışlıkla varlıkları yok etmesini önlemektir. Bu nedenle, tüm bu garantileri bayt kodu düzeyinde tür sistemi aracılığıyla aldığınız bu kaynak türlerine sahibiz. Kötü niyetli programcılar veya hatalar tarafından altüst edilemezler, bunlar sadece bir Move programcısı olarak Haklar Bildirgenizin bir parçasıdır.

Geliştirmeye çalıştığımız başka birçok şey var. Yeniden giriş gibi EVM programlarında birçok güvenlik sorunu vardı ve hala var. Move’u tasarladığımız zamana geri dönersek, DAO hack herkesin aklında olan bir şeydi ve kıt bir varlığı güvenli olmayan bir şekilde yeniden uygulamaya çalışacak şekilde yeniden girişle ilgiliydi. Move’da her fonksiyon çağrısı statiktir, bir fonksiyonu ne zaman çağırdığınızı tam olarak bilirsiniz, derleme zamanında tam olarak hangi kodun çağrılacağını bilirsiniz ve bir saldırganın kötü amaçlı kod eklemeye çalışmasına asla şaşırmazsınız. çağrı çerçevesi. Sadece güvenli kod yazmayı çok daha kolay hale getirir. Ve koda bakmaya ve güvenli olup olmadığına karar vermeye çalışan kişiler için, tıpkı denetçilerin işlerini daha hızlı yapması gibi. Ve kod hakkında nedenler olan Move Prover gibi gelişmiş araçlar oluşturmak için.

Statik analiz geçmişime ve statik analiz ve program doğrulamada çalışan Move ekibinin arka planına uygun olarak, dili, çok önemli özellikleri yazdığınız gerçekten gelişmiş bir resmi doğrulama aracı olan Move Prover adlı bir araçla birlikte tasarladık. Programınızın doğruluğu için. Belki de sadece bu kişi bu kaynağa erişebilmeli veya bu işlevi çağırabilmelidir. Sistemdeki bu nesnelerin toplam sayısı 10 olmalıdır. Bu şey bu zamana kadar var olmalı ve sonra yok edilmelidir. Move Prover, herhangi bir saldırgan veya başka biri ne yaparsa yapsın, bu özelliklerin tüm olası işlemlerde, tüm olası program yürütmelerinde tutulduğunu sizin için kontrol eder.

Bu çok, çok güçlü. Mükemmellik ve doğruluk için sahip olabileceğiniz en yüksek kriter gibi. Derleyiciyle ve bir bütün olarak Move araç zinciriyle entegre bir şeydir. Bu, güvenli kod yazmayı çok daha kolay hale getirir. Aynı zamanda denetçilerin anlamasını da kolaylaştırır, çünkü koda bakmak yerine tek yapmaları gereken teknik özelliklere bakmak ve kanıtlayıcıyı çalıştırmaktır. Doğrulayıcıyı çalıştırmak, doğru şeyleri belirttiğinizi ve takım zincirinin doğru şekilde çalıştığından emin olmanızı sağlar. Programcıların kod yazmaya odaklanmasını ve yeniden giriş gibi şeylerle ortaya çıkan bu ezoterik güvenlik sorunları hakkında daha az endişelenmesini çok daha kolay hale getireceğini düşünüyoruz.

Yani Move’u yaratırken yapmaya çalıştığımız ve üzerinde çalıştığımız ve Diem ve Novi’de üzerinde çalıştığımız şey bu.

Soru 3: Neden özel bir Move varyantı kullanıyorsunuz? Çekirdek Move programlama dili ile karşılaştırıldığında büyük bir fark var mı?

Bu nedenle, aslında özel bir Move varyantı kullanmıyoruz. Move’un doğası ilginç bir dildir. Herhangi bir blok zincirine özgü olmayan bir çekirdek dilin bulunduğu bu çapraz platform dili olarak kasıtlı olarak tasarladık. Strux, boolean, tamsayılar ve adresler gibi şeylere sahiptir, ancak hesaplar, işlemler, belirli bir platform tarafından kullanılan kriptografi veya belirli bir platform tarafından kullanılan konsensüs kavramı yoktur – tüm bunlar soyutlanır. .

Aslında blok zincirler hakkında hiçbir şey söylemeyen küçük bir çekirdek dildir. Aslında birçok farklı şey için kullanabilirsiniz. Move’u belirli bir blok zincirinde kullanmak istediğinizde, bunlar Sui, Star Coin, Aptos veya 0L olsun – tümü Move’u kullanan platformlardır – Move’u blok zinciriniz için bir tür özelleştiren bazı davranışlarla ve bunun ne olduğuyla başlatabilirsiniz. yapmaya çalışmak.

Bunun, diğer bazı akıllı sözleşme dillerine kıyasla dilin gerçekten önemli bir parçası olduğunu düşünüyoruz çünkü EVM gibi bir şey kullanırsanız, Ethereum’un çalışma şeklinin pek çok uygulama detayına fazla uyuyor. Adresler, hesap yapısı ve hatta fikir birliği gibi az önce bahsettiğim tüm şeyler bir dereceye kadar EVM’de pişirilir.

Yeni nesil bir blok zinciri oluşturmaya çalışıyorsanız, Ethereum’un bazı sınırlamalarını ele alacaktır. EVM bu özelliklere fazla uyuyorsa, bunları devralmanız gerekir. Bu, Ethereum’dan daha iyi ölçeklenen, Ethereum’un kullanmadığı yeni kriptografiye sahip olan, farklı bir şekilde çalışan hesaplara sahip olan veya başka bir şekilde yenilik yapmaya çalışan yeni blok zincirleri oluşturmayı zorlaştırıyor.

Move’u tek bir platforma bağlamamamız ve bunu, platformun sonsuza kadar verdiği tasarım kararlarına bağlı kalmanız için yapmamız bizim için çok önemli. Alanı bir bütün olarak ileriye taşıyabilmemiz için yeni platformlardaki içerik oluşturuculara farklı şeyler denemeleri için çok fazla alan vermek istiyoruz. Ancak aynı zamanda, gittiğiniz her platform için yeni bir blok zinciri öğrenmek zorunda değilsiniz, bu şu anda son teknoloji ürünü.

Solana kendi işini yapıyor. Ethereum kendi işini yapıyor, eğer Polkadot’a giderseniz, kendi işleri var. Platform başına bir diliniz varsa, canlı bir geliştirici topluluğu, yeniden kullanılabilir araçlar veya her yerde kullanılabilecek kitaplıklar oluşturmak için bu iyi bir reçete değildir. Kaputun altında çok farklı görünen çok sayıda farklı platform üzerinde çalışmamız gerekiyor, aksi takdirde bu canlı toplulukları asla inşa edemeyiz. En başından beri yaptığımız şey, bir platformun ayrıntılarına fazla takılmayarak Core Move hakkında çok dikkatli düşünmek.

Asıl soruya geri dönmenin uzun bir yolu var, o da aslında varsayılan bir Move yok, ancak Sui farklı bir tane kullanıyor. Herhangi bir platformda kullanılamayan varsayılan bir Move vardır. Orijinal Diem’de kullanılan bir uzmanlık var ve sonra Sui’de çok farklı bir uzmanlık yapıyoruz.

Başlangıçta, Diem’in, hangi hesapların bulunabileceği, bu hesaplarda bulunabilecek nesnelerin türleri ve hesaplar arasında hareket etme kuralları konusunda çok sıkı kısıtlamaları olan keyfi akıllı sözleşmeler yapan, düzenlenmiş bir ödeme ağı olması gerekiyordu. O kişi önceden “Bu tür nesneleri almak için iznimi almak istiyorum” demedikçe başka bir adrese nesne gönderemezsiniz gibi kararlar alındı. Bu uygundu çünkü sermaye kontrolleri gibi şeyler vardı; Belirli bir yargı alanında olsaydınız, ABD doları alan bir hesabınız olamaz. Bu nedenle, birinin izinleri olmadan onlara ABD doları gönderememesi çok önemlidir.

Açık Web3 dünyasında bu çok talihsiz bir durumdur. NFT’leri birisine havadan gönderebilmek veya onlara jeton gönderebilmek veya önceden açıkça kabul etmek zorunda kalmadan onlara bir şeyler vermek istiyorsunuz. Sui Move’da bunu yapmanıza izin veriyoruz. Nesneler, yerleşik bir yetenek olarak aktarıma sahiptir. Bir nesne, bir NFT veya herhangi bir şey oluşturduğunuzda, Sui’deki aktarım işlevi, kendiniz uygulamak zorunda olduğunuz bir şey değildir. Sadece platformun bir özelliği olarak inşa edilmiştir ve bu da çok performanslıdır.

Kısıtlı bir transfer politikanız olmasını istediğiniz bir NFT’niz varsa, spekülasyondan kaçınmak için ancak belirli bir tarihten sonra transfer edebilirsiniz veya transfer edildiğinde telif ücretlerinin ödenmesini istiyorsanız, o zaman bunu kodlamanın bir yolu var. Ancak varsayılan olarak, her şey özgürce aktarılabilir, bu da açık bir platform oluşturmayı Diem ve Diem stili örneklemeleri kullanan diğer platformlardan çok daha kolay hale getirir. 

Başka bir şey de, nesne merkezlilik ve varlıkların Move için ne kadar önemli olduğu hakkında çok konuşuyor olmamızdı. Diem’e entegre etme şeklimizde, bunu gerçekten programlama perspektifinden başarıyoruz. Son kullanıcı açısından, işlemlerin bir kullanıcıya nasıl göründüğü açısından tam olarak orada değildi. Bir işlemin işlev imzası yine de yalnızca bir dize, adres veya Boole alır. Bu işlemin nesnelerle ne yapacağını ve neye dokunacağını görmek çok zordu.

Sui işlem modeli varlık merkezlidir; bir zincirde belirli bir işlev yayınlandığı için bir işleminiz olduğunda, bu işlev yapılandırılmış nesneleri girdi olarak alır. Bir Bored Ape aktarıyorsanız, işleve transfer adı verilir ve ardından işlevlerde Bored Ape adı verilen bir türe sahip olur. Bir tür NFT pazarına bir Bored Ape koyuyorsanız, o pazar da işlemin açık bir imzası olacaktır. İşlem sadece girdi olarak gelen bu nesnelere dokunabilir. Dolayısıyla, bir işleme, son kullanıcı olarak veya takım üzerinde çalışan biri olarak baktığınızda, bu işlemin hangi nesnelere dokunacağı ve ardından Moves tipi izinler aracılığıyla onlarla ne yapacağı çok açıktır. Mutasyona uğrayacak mı? transfer olacak mı? Yoksa sadece okuyacak mı?

Move’un avantajlarından yararlanmayı ve bunları yığının daha derinlerine itmeyi çok daha kolay hale getirir, böylece son kullanıcı yalnızca kodu çalıştırmak ve ne olduğunu görmek yerine bunları görebilir, Diem’de bu şekilde çalıştı.

Yaptığımız bir başka önemli değişiklik daha var, bunun daha geniş kripto alanındaki büyümesi nedeniyle NFT’ler için çok önemli olduğunu düşünüyorum, bu da heterojen koleksiyonlar oluşturma yeteneğine ihtiyacınız var. Bunlar, farklı türlerde öğelere sahip koleksiyonlardır. NFT koleksiyonu veya pazar yeri gibi bir şeye sahip olduğunuzda, bunun altındaki her NFT’nin aynı Move türüne sahip olması söz konusu değildir. Bu elverişsiz olur çünkü içinde resim, kayıt veya başka bir şey olan bir koleksiyona sahip olmak istersiniz. Bunların hepsi, ayırt edilebilen farklı alanlara sahip farklı Move türleridir.

Move’u Diem’e ve temel Move diline entegre etme yöntemimize göre, tüm koleksiyonlar homojen olmalıdır; yani hepsinin aynı türden nesnelere sahip olması gerekir. Sui Move’da bu sorunu açık bir nesne hiyerarşisine sahip olarak çözdük. Her nesnenin, son kullanıcının adresi olabilen bir sahibi vardır, ancak bir nesnenin sahibi, başka bir nesnenin kimliği de olabilir. Bu, nesneler arasında üst ve alt ilişkiler oluşturmanıza ve bir NFT koleksiyonunu temsil etmenize olanak tanır, çünkü koleksiyonu temsil eden bir üst nesneniz olur ve bu koleksiyondaki her şey o nesnenin çocuklarıdır.

Örneğin, kayıt NFT’si bir çocuk olabilir ve ardından resim NFT’si başka bir çocuk olabilir ve sonra başka bir şey başka bir çocuk olabilir. Bu işlev, koleksiyondaki her öğeye her dokunduğunuzda erişim için ödeme yapmadan büyük koleksiyonlara sahip olmanızı sağlar; bu, eski örneklemede olduğu gibi çalışır.

Bunlar, Diem’e taşınmanın orijinal örneğinin ötesine geçtiğini düşündüğümüz, Sui Move’da yaptıklarımızın öne çıkan noktalarıdır. Ama aynı zamanda gelecekte burada yapacak birçok başka fikrimiz ve ilginç şeylerimiz var. Ayrıca, Move destekli yeni platformlar oluşturduklarında diğer insanların Move ile ne yapacaklarını görmek beni çok heyecanlandırıyor. Size nesneler ve varlıklarla programlama için güvenli soyutlamaların temelini vermemiz gerçekten dilin değerlerinin bir parçası, ancak aynı zamanda insanların yeni Move destekli platformlar oluşturma yöntemlerinde gerçekten yaratıcı olmalarını istiyoruz.

Soru 4: Move mevcut nesneleri kullanıcı için farklı formatlarda nasıl kullanır?

Sanırım bu soru, şeylerin Explorer’da nasıl görüntülendiğine atıfta bulunuyor. Her işlemde neler olduğu hakkında çok fazla bilgiye sahipsiniz, her nesne hakkında fikriniz var, çağrılan fonksiyona sahipsiniz, hangi nesnenin kullanılması için para ödendiğine sahipsiniz, gaz için ne kadar ödediğinize sahipsiniz ve bu nitelikteki şeyler. Sorduğunuz soru hakkında duyduğum şey, bunun son kullanıcı için çok fazla bilgi gibi göründüğü. Buna katılıyorum. Explorer, inşaatçılar için bir platformdur ve inşaatçılar, maliyetleri ödemek için hangi madeni paranın kullanılacağına karar verebilmeleri, neyin yanlış gittiğini ayıklayabilmeleri ve ayrıca tüm ayrıntılara sahip olabilmeleri için tüm bu bilgilere gerçekten ihtiyaç duyarlar.

Explorer’da, tüm bunları yapmayı kolaylaştıran özelliklere odaklandık. İleriye dönük olarak, Explorer’ın muhtemelen son kullanıcılardan ziyade blok zincirinin ileri düzey kullanıcıları için biraz daha fazla olduğunu düşünüyorum. Cüzdan gibi, bunların çoğunu soyutladığınız bir şey için, yalnızca kullanıcının neyle ilgilendiğine dair ilgili ayrıntıları gösterirsiniz, örneğin giren tokenlar veya etkileşime girecekleri desteler gibi.

Sui cüzdanımızda bunların çoğu üzerinde çalışıyoruz. Kullanıcı deneyiminden ve Sui’nin işlemlerinin ne yaptığına dair daha nazik, daha soyut bir görünümden çok memnun kalacağınızı düşünüyorum. Cüzdan özelliğiyle ilgili beni heyecanlandıran özel bir şey, insan tarafından okunabilir imzalama istekleri denen şey üzerinde çalışıyoruz. Ethereum, Solana ve bildiğim diğer tüm blok zincirlerinde büyük bir sorun şu ki, bir işleme baktığınızda, ne yaptığını ve işlevin ne olduğunu görebilirsiniz, ancak gerçekte bundan daha fazla bilgiye sahip değilsiniz. fonksiyon yapar. Bu, güvenli cüzdanlar oluşturmak için yazmayı çok zorlaştırır, çünkü bir son kullanıcıdan bu işlevin kodunu aramasını ve doğru şeyi yaptığından emin olmasını istemek mümkün değildir.

Bu, teknik olmayan son kullanıcılar için her zaman çok zor olacaktır. Bu da insanları birçok dolandırıcılığa sürüklüyor. Temel olarak, insanlar bir şeyleri İmzalama İsteğinin gerçekten ne yaptığını bildikleri için değil, İmzalama İsteği güvenilir bir kaynaktan geldiği için imzalar. Son zamanlarda, Bored Apes topluluğunda bir hack oldu ve mod, “Hey, burada bir çekiliş var. Cüzdanınızı bu işleme bağlamak ve imzalamak için tıklayın, size sınırlı bir hediye bırakalım. baskı şey”. Birçok insan bunu mesajın kaynağına güvendikleri için yaptı. Ancak anlaşmazlığın hacklendiği ve ardından birçok kişinin Maymunları, paraları ve diğer eşyalarının çalındığı ortaya çıktı.

Sui’de gerçekten istediğimiz şey, işlerin güvenli olması için isteklerin imzalandığı kaynaklara güvenmek zorunda kalmamaktır. İstediğimiz şey, bir araç perspektifinden İmzalama İsteğinin insan tarafından okunabilir olması ve size izinler vermesidir, tıpkı Android veya iOS’ta “Hey, işte bir İmzalama İsteği” yazıyormuş gibi. Bu, başkasına aktarılamayacağı veya çalınamayacağı için zararsız olan Bored Ape’inizi okumanıza izin verir. Oysa birinin anlaşmazlığı saldırıya uğrarsa ve size İmzalama İsteği içeren bir mesaj gönderirse, ancak araç, “bunun bir promosyon çekilişi yapması gerekiyor” diyor ve Sıkılmış Maymun’unuzu devretme izni veriyorsa. Bu noktada şöyle diyebilirsiniz, “Hey, bir dakika, bu bana güvenli gelmiyor. Promosyon şeyimi alabilmem için tek yapmam gereken bunu okumak, ama transfer etmek istiyor, ben muhtemelen bunu imzalamayacağımı düşünüyorum”.

Yani Sui cüzdanında böyle bir özelliğimiz olacak. Bunun, web3 cüzdanlarını kullanıcılar için çok daha az korkutucu ve güvensiz hale getireceğini düşünüyoruz, çünkü ortaya çıkabilecek tüm bu dolandırıcılık ve kötü şeyler hakkında endişelenmeleri gerekmiyor. Araçlar, telefon rehberinize, mikrofonunuza, konumunuza ve benzeri şeylere erişip erişemeyeceğini soran bir Android uygulaması gibi bir mobil platformda olması normal olan izinler vererek onları koruyacaktır. Bu, kullanıcının anlayabileceği kelime türüdür.

Bu nedenle, bu bilgiyi kullanıcılara sunabilmemiz için nesne düzeyinde sağlamak için Sui Move’un bu güzel yapılandırılmış temsilini kullanmak istiyoruz. Soruyu cevaplamak için çok uzun lafın kısası, Explorer’ın istediğimiz küratörlü son kullanıcı deneyimini sağlamaya çalışmadığı konusunda haklısınız, ancak bunu kesinlikle bir cüzdanda yapacağız, ki biz bunu yapıyoruz. sergilemenin heyecanını yaşıyor. Bunu gerçekten başka yerlerde olduğundan daha iyi bir deneyim haline getirecek platform özelliklerine sahibiz.

Soru 5: Sui’nin standart kitaplığı aynı zamanda rastgele bir oluşturucu da sağlayacak mı?

Sanırım sonunda, evet. Bir inekseniz ve Sui’nin fikir birliğine uyuyorsanız, denizgergedanı dişi kullandığımızı bilirsiniz. Narwhal tusk makalesini okuduysanız, fikir birliği sürecinden rastgelelik oluşturmak için ortak madeni para olarak adlandırılan şeyi kullanan bir Tusk çeşidi vardır. Bu henüz uyguladığımız bir özellik değil. Ancak bir kez yaptığımızda, Move aracılığıyla gösterilebilen bir platform özelliği olarak rastgeleliğe sahip olabileceğiz. Bu çok büyük bir şey olurdu, çünkü orada güvenli rastgeleliğe sahip başka bir zincir yok. Insecure, akıllı sözleşme programcıları için bir platform özelliği olarak belirtmek istediğim farklı bir hikaye.

Bu arada, bir platform özelliği olamasa da rastgelelik elde etmenin birçok başka yolu var. Denklemin bir parçası olarak rastgeleliğe ihtiyaç duyduğunuz bazı CryptoKitties tarzı, genetik programlama türü şeyler üzerinde çalışıyoruz. Yapabileceğimiz ilginç bir şey var:

Bir işleminiz olduğunda, bir hash’i vardır. Hash’in rastgelelik kaynağı olarak kullanılması iyi değildir, çünkü kullanıcı işleme neyin gireceğini kontrol edebilir ve ardından hash’i değiştirebilir.
Bunun yerine, rastgeleliğin hem işlem kimliğini hem de diğer birçok kişinin erişebildiği zincirdeki bir alanı içerecek şekilde ayarlayabilirsiniz.
Bu, rasgele sayının ne olacağını, bu zincir üstü değerin karma sonucunun ne olduğunu ve işlem karmasının ne olacağını tahmin etmeyi çok zorlaştırır.
Sonuçta, rastgeleliği oynamayı çok zorlaştırıyor.
Bunu kodda bir diyagram olmadan ayrıntılı olarak açıklamak biraz zor, ancak bazı durumlarda işe yarayan rastgelelik için bazı güzel yaklaşımlarımız var. Uzun vadede, bunu bir platform özelliği olarak sunmaktan büyük heyecan duyuyoruz.

Soru 6: Öğreticiler sunuyor muyuz? Yeni başlayanlar için bu dili öğrenmenin kolay bir yolu var mı?

Yakın zamanda ortağımızdan aldığımız geri bildirimlere göre, Solidity dünyasından geliyorsanız Move’u öğrenmek çok kolay. Aldığımız tahmine göre, Solana için akıllı sözleşme programlama çerçevesini öğrenmeye çalışan aylara kıyasla yaklaşık 4 veya 5 gün içinde alabilirsiniz.

Temelde zor olan bazı akıllı sözleşme programlama özellikleri vardır. Bence ideal arka plan, başka bir yerden akıllı sözleşme programcısı olmak. Ayrıca, akıllı sözleşme programlamaya ilk kez yaklaşan Web2 arka planından daha fazla gelen insanlar için çok ulaşılabilir olduğunu düşünüyoruz. Move’un güçlü bir yazı sistemi ve sizi doğru şeyi yapmaya yönlendirecek çok fikirli bir derleyicisi var. İlk başta kodunuzu derlemek biraz zor olabilir, ancak araç zinciri, çalışan kodu almanız konusunda size rehberlik etmek için tasarlanmıştır. O zaman bir kez çalıştığında, güvenli olacak. Bunun yerine Solidity ile başlayacaksanız, yeniden giriş veya diğer güvenlik sorunları gibi bu sorunları zor yoldan öğrenmek zorunda kalmayacaksınız.

Rust dilini kullandıysanız, Move’un hızlı bir şekilde ulaşılabilir olduğunu düşünüyorum. Bir Rust hayranıysanız veya Rust’ta yazdıysanız, Move’a bakacak ve birçok sözdizimsel benzerlik göreceksiniz. Bunu, Move halindeki özellik aynı Rust özelliğine çok benzer veya eşdeğer olduğunda kasıtlı olarak yapıyoruz. İnsanlara buradaki Move dünyasında olduklarını hatırlatmak için Move’da bir şeylerin oldukça farklı olduğu kasıtlı sözdizimsel farklılıklarımız var. Rust’ta olduğunuzu düşünmeyin ve aynı şekilde davranacağını varsaymayın çünkü olmayacak. Özellikle referanslar için ödünç alma denetleyicisi dediğimiz tür sistemi açısından, Move, Rust programcılarına aşina olacak, ancak öğrenmesi daha kolay olacak Rust’ın ödünç alma denetleyicisinin çok daha basit bir versiyonuna sahiptir.

Nereden geliyor olursanız olun, Move’u öğrenmeyi kolaylaştırmakla çok ilgileniyoruz. Bunları etkileyen çeşitli öğreticiler ve eğitici içerikler üzerinde çalışıyoruz. Şimdi, Move ekibi üyelerimizden biri tarafından yazılmış olan ve bu varyantın belirli merceği aracılığıyla Move’a nasıl gireceğinize dair adım adım ilerleyen Nesnelerle Programlama adlı bir dizimiz var. Bunun muhtemelen bildiğim en iyi giriş olduğunu düşünüyorum ve daha sonra Move kitabına bakarak desteklenebilir.

Move kitabı, Move GitHub deposunda barındırılan Move’a katkıda bulunanlar tarafından oluşturulmuştur. Sui dokümanlarımızda bununla ilgili birçok bağlantı var. Ayrıca ekip üyelerimizden biri tarafından yazılan Move Kitabı da var. Move’un tüm özelliklerini baştan sona anlatan başka bir kitap.

Benim için her zaman öğreticiler veya örneklerle başlamayı severim. Sui_Programmability/Examples adında bir GitHub dizini var. Bu da gerçekten iyi, eğer koda bakarak ve sonra onu taklit etmeye veya değiştirmeye çalışarak öğrenmeyi seviyorsanız. Bence elimizde çok sayıda iyi kaynak var, ancak canlı bir topluluk oluşturmak için yapmak istediğimiz ve yapmamız gereken daha çok şey var.

Soru 7: Özellikle gelişmekte olan topluluğumuzun Sui’deki projemiz için çok kritik olduğunu bildiğimiz için ne tür bir topluluk geliştirme planı var?

Sui’de bu konuda çok yönlü bir yaklaşım izliyoruz. Bu tür, aynı zamanda toplulukla da ilgili olan pazarlama stratejimize biraz giriyor. Sui’de bizi en çok heyecanlandıran kullanım örnekleri, insanların on milyonlarca kullanıcıdan oluşan geniş bir kullanıcı tabanına hitap eden bir kullanım senaryosu oluşturmasıdır, çünkü bunlar başka yerlerde mevcut blok zincirlerinde yapamayacağınız türden şeylerdir. uygun maliyetli bir yol ve bazı durumlarda hiç değil.

Bizi gerçekten heyecanlandıran şeylerden biri de oyun oynamak. İlk ortaklarımızın çoğuna, ilk yazdığımız ve konuştuğumuz birçok şeye bakarsanız, oyunun zaten büyük ölçüde dijital varlıklar üzerine kurulu bir iş olduğu bir durum görebilirsiniz. NFT’lerle ve aynı yayıncı tarafından markalarla çapraz promosyonlar ve bunun gibi diğer ilginç şeyler yapmak için farklı oyunlar arasında birlikte çalışabilirlik için likiditeye daha geniş erişim elde etmek için oyun içi varlıklardan ve zincir üstü varlıklardan bazılarını dönüştürmekle çok doğal sinerjiler var.

Game Studios ile hem büyük hem de küçük birçok iş yapıyoruz; NFT’ler ve zincir hile önleme denetimi veya içerik oluşturuculardan para kazanma vb. gibi diğer ilginç fikirleri oyunlarına dahil etmek için Sui’nin benzersiz yeteneğinden nasıl yararlanabileceğimizi ve tüm bunların işe yarayacağını anlamak için.

Bizim ve inşaat topluluğu için temel dayanak şudur, sadece çok sayıda kullanıcıya ihtiyacınız var ve platformunuzdaki bu oyun şirketleri gibi çok sayıda büyük oyuncuya ihtiyacınız var ve ideal olarak çok sayıda son kullanıcıya sahipseniz, birkaç tane çekersiniz. büyük oyunlar ve muhtemelen platformunuzda tüm web3’ün toplamından daha fazla kullanıcınız var, o zaman gerçekten ölçeklenen bir blok zincirine sahip olmanın bu kitleye neler sağlayabileceğini gösteriyorsunuz.

Aynı zamanda, oyun oynamaktan başka şeylere de çok önem veriyoruz, web3’ü yürürlükten kaldıran birçok şey var, web3’ün ekonomik motorları daha çok akıllı sözleşme geliştirici kitlesinden gelecek, dizin oluşturma, NFT pazar yerleri oluşturma gibi şeyler, Bu şeyleri diğer platformlarda nasıl kuracağını bilen insanlar için Sui dışında bunu yapmaya devam etmelerini gerçekten kolaylaştırmak istiyoruz. Ve sonra, Sui’nin yüksek performansından ve benzersiz yeteneklerinden ve sahip olduğumuz güzel hareket programlama modelinden yararlanan bu şeylerin yeni nesil sürümlerini oluşturmak.

Ardından, hepimizin ekosistem etkinleştiricilerine sahip olduğumuz başka bir varlık sınıfı var, bu, geliştiricilerin uygulamalarına hizmet etmek için kullanabilecekleri iyi okuma API’lerine sahip olmak veya zincirde meydana gelen olayları sorgulamak ve zincir analitiği üzerinde yapmak, likidite getirmek için köprü oluşturmak gibi şeylerdir. ve diğer platformlardan Sui’ye NF T’ler. Bunlar ayrıca ortaklıklar ve topluluk oluşturma tarafında üzerinde çalıştığımız şeyler.

O zaman elbette, onlar mutlaka inşaatçı olmayan adamlar ve mutlaka ortak değiller, ancak bir mod olmaktan heyecan duyuyorlar ve Sui topluluğu, Sui kullanım örneklerini veya Sui’nin jetonunu veya çalışmasını müjdeliyor. Sosyal medyada Sui ile birlikte veya onu takip etmek veya Sui hakkında yazı yazmak ve kullanıcıları eğitmek veya işlerin nasıl yürüdüğü konusunda erkekleri eğitmek. Bunların hepsi bizim için çok değerli, bu yüzden topluluk sadece bir şey değil, Sui’nin neye ihtiyacı olduğunu düşünmemiz ve ardından insanlarla nerede olduklarıyla tanışmamız gerekiyor, ne için heyecanlanıyorlar? Ve bize nasıl yardımcı olabilirler? Yani anlayacağınız üzere ben CTO ve teknik kişiyim, bu konuda kesin bir görüşüm var. Ama aynı zamanda Jen’in tüm bu şeylerle çok ilgili biri olarak ve bu konularda daha deneyimli ve açık sözlü biri olarak bu konuda ne düşündüğünü de duymak isterim.

Soru 8: Sui’nin gücü nedir ve diğerlerinden farklı kılan nedir?

Evet kesinlikle. Tek bir şey söylemem gerekirse, o da Sui’nin gerçekten sıfırdan artan talepleri karşılayabilmek, ücretleri sabit ve ağı sabit tutabilmek için tasarlanmış olduğudur. Temel olarak, kurucu ekibimiz, birçoğumuz gibi, orada güzel bir blok zinciri inşa etmek için uzun yıllar harcadığımız Diem ve Novi’den geldi, ancak blok zincirinde ve inşa ettiğimiz şey, bu blok zinciri, bankalar arası bir yerleşim katmanı olarak tasarlandı. Yüzlerce vaps, çoğunlukla gizlilik için zincir dışı işlemlere sahipti, ancak sonunda bazı uygunluk kontrolleriyle zincirde bazı ödemeler yapacaktı. Orada tasarladığımız şeyin bazı iyi yanları var, ancak gerçekten keyfi akıllı sözleşmeleri idare etmek ve birden fazla makinenin ötesine geçebilecek ve parçalamayı kullanabilecek bir doğrulama yazılımına sahip olmak veya birkaç makinenin ötesinde gerçekten yüksek bir verim elde etmek için ölçeklendirilmek üzere tasarlanmamıştı. Saniyede 1000 işlem. Bu yüzden, ödemelerin kullanım durumu için bunların hepsinin gerekli olacağını düşündük.

Mysten’i başlattığımızda, elbette DEM platformunun üzerine inşa etmeyi düşündük, ancak bu sınırlamaları biliyorduk, çünkü sistem üzerinde çalışmıştık ve ne yapmak için tasarlandığını ve ne olmadığını biliyorduk. ve yüksek verimli bir L bir çalıştırmanın tüm bu zorlu zorluklarının üstesinden gelmek için onu nasıl genişletebileceğimizi araştırdık, durum şişkinliği ile nasıl başa çıkarız? Sharding’i nasıl yapıyoruz? Yatay ölçeklenebilirliği nasıl yaparız? Nasıl uygularız? Geliştirici deneyimini nasıl daha iyi hale getiririz? Ve biz sadece bunun bunun için tasarlanmadığını düşündük ve farklı şekilde yaparsak, bu şeylerin çoğunu kolaylaştıracak ve Sui açısından istediğimiz birçok şeyi mümkün kılacak gerçekten temel kararlar var. , ve buna ihtiyacımız olduğunu biliyorduk, çünkü o sırada özellikle oyun tarafında birçok ortakla konuşuyorduk ve diyorlar ki, hey, 10 milyon kullanıcım var, hepsinin 1000’ler yapmasını istiyorum günde işlem sayısı ve biz, tamam, matematiği siz yapın. Bunun gibi bir ortak var ve sonra bir diğeri geliyor, yeterli kapasitemiz olmadığında insanları geri çevirmeye başlamak istemiyoruz, herkesi platforma davet etmek istiyoruz ve sadece bir teraziye sahip olmaya devam edebilmek istiyoruz. ne kadar trafik olursa olsun.

Sui’nin yatay ölçeklenebilirliğe izin veren bu yeni veri modelini bu şekilde ortaya çıkardık, burada aradığımız temel özellik bu, doğrulayıcıysanız bir makine çalıştırabilirsiniz ve belirli bir miktar elde edersiniz. verim ve belirli bir miktarda depolama alanı, ancak talep yükselirse, başka bir makine ekleyebilir, başka bir makine sağlayabilirsiniz, artık daha fazla verim ve daha fazla depolama elde ettiniz ve tüm ağ bunu yapabilir, o kadar büyümeye devam edebilir toplumun taleplerine hizmet etmelidir.

Daha da önemlisi, bunu dağıtılmış sistem ölçeklendirme teknikleri olsun ya da olmasın yapmak istiyoruz, doğrulayıcıların diğer doğrulayıcıların hangi parçayı çalıştırdığını bilmesi gereken bazı süslü merkezi olmayan parçalama protokolü yapmak istemiyoruz, kullanıcıların çapraz parça işlemleri gibi ayrıntılar hakkında endişelenmesi gerekiyor ve bkz. sadece bir şeyler yapmak istedikleri, ancak verilerinin farklı parçalarda yaşadığını ve şimdi farklı bir güvenlik modeline veya farklı bir maliyet modeline sahip olduğunu keşfetmelerinin maliyeti. Kullanıcılar şunu düşünmeli, Tamam, işte küresel bahis, işlemimi bir havuza atıyorum ve sonra sonuçlar bana geri geliyor, hepsi bu. Bir mimari bunu yapmanıza izin verir ve ardından size bu yatay ölçeklenebilirliği verir.

Bu gerçekten odaklandığımız şey. Bence onu diğer tüm projelerden ayıran şey bu ve ölçeklenebilirliği belirli bir TPS numarası veya benzeri bir şey açısından düşünmüyoruz, makine başına alabileceğimiz TPS’yi ve nasıl ayarlayacağımızı düşünüyoruz. sistemi yükseltin, böylece talep arttıkça bile bu sayıyı ihtiyacımız kadar artırabiliriz, çünkü aksi takdirde, web3 yalnızca tek bir makinenin veya tek bir sistemin kaldırabileceği maksimum TPS sayısı kadar büyük olacaktır. ve biz sadece insanların bize atacakları her şeyi halledebilecek esnekliğe sahip olduğumuzdan emin olmak istiyoruz.

Bu daha çok felsefi bir konum, ancak yaptığımız şeyi neden yaptığımıza ve neyi hedeflediğimize ve hatta biz insanların nasıl olacağı geliştirici topluluğu gibi şeylere derinden sistem tasarımına giriyor, oh, Biliyorsunuz, EVM’nin şimdi EVM ve Sui’de sağlamlık yapmanız gerektiği gibi etkileri var ve sonra sayılara bakacağız ve EVM’yi inşa eden 4000 geliştirici olduğunu göreceğiz, ancak bunu inşa etmek istiyorsanız küçük bir sayı. 16 milyon JavaScript geliştiricisine veya 12 milyon iOS geliştiricisine kıyasla ve büyük bir geliştirici topluluğunun yeni nesil mutlak dünyayı inşa etmesini istiyorsanız, gerçekten 4000’den fazlasına ihtiyacınız olacak. Dolayısıyla, geliştirici edinimi için bir stratejiye ihtiyacımız var. insanları ana akıma dahil eder ve akıllı sözleşme geliştiricilerini büyütür, yalnızca insanları geçiş yapmaya ikna etmekle kalmaz.

Yani yaptığımız her şey, gerçekten önümüzdeki milyonlarca ve milyarlarca kullanıcıyı ve kriptoyu nasıl daha büyük bir şey haline getirebileceğimizi ve biraz daha niş bir şey değil.

Soru 9: Sui Move ile test yapmanın geleceği hakkında ne düşünüyorsunuz? Daha çok Move’da yazmaya dayalı mı olacak? Yoksa insanlar Move dışındaki dillerde yazmak için baret benzeri çerçeveler mi geliştirecekler?

Move’da testler yazabileceğiniz bir birim test çerçevemiz zaten var ve bunun Move kodunuzu test etmenin en popüler yolu olmaya devam edeceğini düşünüyorum.

Toplulukta insanlar, sorgulayıcının belirttiği gibi, JavaScript’te veya başka bir yerde testler yazdığınız baretler gibi şeyler kullanarak başladılar. Ancak fazla mesai, testleri doğrudan sağlamlıkta yazabilmeyi gerçekten istiyoruz ve bunu yapmanıza izin veren ve çok fazla popülerlik kazanan dökümhane gibi daha yeni çerçeveleriniz var, bence bunlar insanların tercih ettiği deneyimler.

Move’da bunu anladık ve hemen Move’da testler yazmanıza izin veren bir test çerçevesi ile başladık. Bence bu en popüler şey olmaya devam edecek, buna eklemeye çalıştığımız bazı özelliklerimiz var, sembolik parametreler, böylece doğrudan Move’da fuzz testleri yazabilirsiniz, tabii ki Move kanıtlayıcımız var, bu, sözleşmenin belirli bir girdi veya girdi kümesi için işe yarayıp yaramadığını test etmenin veya görmenin ötesine geçmenizi sağlar. Ama kanıtlayıcıyı kullandığınızda, tüm olası girdiler, tüm olası işlemler, ayrılan tüm olası programlar için testleri test ediyor. Böylece geliştiricinizden ve test etme çabanızdan, test yazmaktan çok daha fazla yararlanabilirsiniz.

Tabii ki, bu test ihtiyacının yerini almaz, her ikisine de sahip olmalısınız, ancak özellikle düşmanca davranışlar veya tahmin etmedikleri şeyler hakkında endişeleniyorsanız, testlerle kontrol edilmesi çok, çok zor olan şeyleri kontrol etmenize izin verir. . Bu yüzden Move’da test etmenin geleceği güzel birim test çerçevesini büyütüyor, zaten bizim test ettiğimiz gibi süslü yeni şeyleri desteklemeleri gerekiyor, ancak ayrıca herhangi bir resmi doğrulama aracının ispatı hiç bitmeyen bir araştırma sorunudur, deniyorsunuz durma problemini çözmek için ve bunu asla somut olarak yapamazsınız, ancak asimptotik olarak mükemmele yaklaşabilirsiniz, bu çok iyi bir yerde. Ancak, daha iyi ve daha iyi çalışmasını sağlamayı ve daha hızlı çalışmak yerine daha zengin özellikler kümesi belirlemenize izin vermeyi düşünüyorum. Bunlar her zaman üzerinde çalışılacak ve üzerinde çalışmaktan heyecan duyacak şeyler.

Soru 10: Move Prover, Sui Move ile nasıl çalışır? Ve herhangi bir değişiklik var mı?

Evet, işe yarıyor ve temelde tüm akıllı sözleşme yazarlarının yazması gereken Sui standart kitaplığına benzeyen standart modüller kümesi olan Sui çerçevesi için oluşturma sürecimize entegre etmeye çalışıyoruz. Sui Move ile temel fark, sağlayıcının yaptığı birçok süslü şeyin temel Move’un depolama modeliyle ilgili olmasıdır. Bu küresel tipteki temel harita olan ve Sui Move’da, tüm bu özelliği ve ilişkili karmaşıklıkları ortadan kaldırıyoruz, böylece bu gerçekleri Sui move’da yazmanıza gerek kalmıyor.

Sui Move’da veri değişmezleri gibi şeyler yazabilirsiniz, bir sayaca sahip olabilirsiniz, bu sayacın değerinin sürekli arttığını söyleyen bir spec yazabilirsiniz ve ardından bir fonksiyona sahip olursunuz ve kontrol edilen ön ve son koşulları yazabilirsiniz. kanıtlayıcı. Ebeveyn alt nesnelerinin bu özelliği gibi, araştırılması ilginç olabilecek bazı Sui’ye özgü kanıt uzantıları olacak. Geliştirilecek şeyler veya nesneler arasındaki ebeveyn çocuk ilişkileri hakkında spesifikasyonlar söyleyebilmek isteyebilirsiniz, örneğin, bu nesne her zaman bu ebeveynin çocuğudur veya bu ebeveynin üç çocuğu veya bu satırlarda bir şey vardır. Bunları henüz eklemedik ve onay uzantıları gerektirmiyor, ancak Move programcılarının ne tür spesifikasyonlar yazması gerektiğine gerçekten yön verecek ve bunun için hem doğru ifade spesifikasyon diline sahip olduğumuzdan hem de Bu özellikleri kontrol etmek için kanıtlayıcı ve ayrıca arka uç desteği.

Bu, gelecekte üzerinde daha fazla çalışmamız gereken bir konu, doğrulama araçları. Move prova’ya girmek biraz kolaydır, ancak bunun gelişmiş kullanımları biraz daha çalışma ve el ele tutuşmayı gerektirir.

Soru 11: Move from Rust’ın pratik bir şekilde temel ayırt edici özelliği nedir?

Akıllı sözleşme geliştirme için neden Rust vs Move olmasın? Bu bana sıkça sorulan bir soru ve bu soruya cevabım pas bir akıllı sözleşme dili değil. Burada bilinmesi gereken en önemli şey, bir akıllı sözleşme dili için, aslında zincir üzerinde yayınlanan bir şeye sahip olmanızdır ve ardından doğrulayıcıların çalıştığı şey budur ve dolayısıyla EVM için, bu EVM bayt kodudur. Ve bizim için bu, koda göre harekettir, ancak Rust’ın koda göre Move’un eşdeğeri yoktur, onu gerçekten çalıştırmak için bir kaynak dildir, derleyiciyi çalıştırmanız gerekir, LLVM’den geçersiniz ve sonra makine kodunu çıkarırsınız, veya wasum, veya bunun gibi bir şey kullanamazsınız bir Ek olarak, daha önce bahsettiğim gibi, akıllı sözleşme dilleri için bu tablo bahis özellikleri ile, Rust’ın bir akıllı sözleşme dili olması için yapmanız gereken şeyler var. sahip değil, Rust’ın hesabı yok veya Rust’ta bozuk para yok Rust’ın kalıcı depolama için yerleşik bir modeli yok. Yani, Solana’nın yaptığı gibi akıllı sözleşme geliştirme için Rust’ı kullanmayı deneyecekseniz, aslında Rust’ı akıllı sözleşme dili olarak kullanıyorsunuz, sahip olduğunuz şey, gömülü olan akıllı sözleşme dili için bir SDK veya API’dir. Rust’ta, ancak Python’da veya Java’da veya başka bir şeyde bir API olabilir.

Bazen deterministik olmayan yinelemeye sahip karma haritalar gibi Rust özelliklerini kullanacaksınız ve daha sonra bunlar akıllı sözleşme dilinde kullanılamayacak, daha önce bahsettiğim bu şeye geliyor, harika olurdu. Genel amaçlı bir dili akıllı sözleşme dili olarak kullanabilme. Komik, Move’u yaratmadan önce Rust’ı kullanmayı düşündük, farklılıkları tarttık ve Rust’ın sahip olmadığı bir akıllı sözleşme dili olmak için dilin hangi özelliklere ihtiyacı olduğunu değerlendirdik.

Bununla birlikte, Rust’ı seviyoruz, tüm Sui pasla yazılmıştır ve Move’un pas tarafından güçlü bir şekilde etkilenen birçok yönü vardır. Temel olarak yapmaya çalıştığımız şey, insanların pas gelişimi ve deneyim hakkında gerçekten sevdikleri şeyleri alıp, bunları dilde hem sözdizimsel hem de anlamsal olarak sunmaktır. Ayrıca Russ’ın karmaşık bir şey yaptığı yeri çok agresif bir şekilde basitleştirmeye çalıştık, çünkü bunun için Move’un asla kullanılmayacağı verimli derleyiciler ve işletim sistemleri yazabileceğiniz düşük seviyeli bir sistem dili olması gerekir, Move akıllı sözleşmeler içindir. .

Temel olarak, Ross’un iyi yanlarını almaya çalışıyoruz, ancak daha sonra Move’u elimizden geldiğince daha ulaşılabilir kılmak için bu agresif sadeleştirmeyi yapıyoruz.

Soru 12: Zincirin boyutu katlanarak arttığında, özellikle de iş hacmi ve bunu doğrulamak için gereken süre söz konusu olduğunda, ölçeklenebilirlik hakkındaki düşünceleriniz nelerdir?

Daha önce bunun hakkında biraz konuştum, ancak bunu genişleteceğim ve sonra doğrulama zamanı hakkında konuşacağım, ki bu da çok alakalı bir sorudur.

Verim için, bunun nasıl çalıştığı hakkında biraz daha ayrıntılı bilgi vereyim, Sui’de bir işlemin nasıl göründüğü, Üzerinde çalışacağı nesneleri bildirir ve ardından çalışma zamanının ihtiyaç duyduğu tek şey aslında işlem değildir. bu nesnelerin değerleridir, daha sonra bu nesneleri okuyan, yazan, güncelleyen, her neyse, Move kodunu çalıştırır ve sonra veritabanına tekrar uygulanması gereken bazı efektler üretir. Daha fazla verime ihtiyacınız olduğundan, yapmanız gereken tek şey, veritabanınız tek bir makinenin ötesine geçtiğinde veya yürütücünüz tek bir makinenin ötesine geçtiğinde, nesneleri bu makineler arasında bölümlere ayırmanız ve ardından yeni bir işlem geldiğinde, Tamam, bu işlem Sam tarafından gönderiliyor diyebilir, hadi AMS nesnelerinin yaşadığı parçaya gidelim ve orada işlemi gerçekleştirebiliriz ve bu da işimizi kolaylaştırır ve sonra Jen’in işlemi gelir ve bunu Jen’in bulunduğu parçaya göndeririz. nesneler yaşar ve bu, çapraz parça okumaları gerekmeden tamamen orada yürütülebilir ve ardından şemaya giderek daha fazla makine eklemeye devam edebilirsiniz ve daha fazla verim elde etmeye devam edersiniz, en azından fikir bu.

Ve sonra bunun doğrulama kısmı var, doğrulayıcıların daha fazla makine ekleyebilmesi ve daha fazla verim alabilmesi harika ama doğrulayıcıların çalışmalarını kontrol etmek isteyen bir son kullanıcı olarak, şimdi bir mikro çalıştırmam gerekiyorsa bu ideal değil küme, bu ademi merkeziyetçilik için harika olmayacak, yüksek verimli zincirler oluşturan birçok insanın düşünmediği bir sorun var, evet, doğrulayıcıları çalıştırmak pahalı olacak ve tam düğümler bununla ilgilenecek , bizce sorun yok. Ve aslında, doğrulayıcılar için temel olan, daha fazla bilgi işlem gücü eklemeden daha fazla verim elde edemezsiniz, ancak ademi merkeziyetçilik için, gerçekten doğrulayıcıların olmadığından emin olmak için zincirde neler olup bittiğini verimli bir şekilde kontrol edebilen büyük bir insan ekosistemi istersiniz. kötü niyetli bir şey yapmak.

Bu sorunu çözme şeklimiz, Sui’de, Sui işlem modelinden yararlanan bir seyrek düğüm kavramına sahibiz ve bir seyrek düğümle, belirli bir adres veya nesne kümesi olduğunu söylüyorsunuz, biz bunlara nedensel yollar diyoruz. ya izleyeceğim şeyleri ve tüm işlemleri izleyeceğim, bu nesnelerle ilgili tüm işlemleri izleyip yeniden yürütüp doğrulayacağım. Yani bu adresler, ancak eyaletin geri kalanı değil ve örneğin, her cüzdan, o cüzdanın sahip olduğu nesneleri ve cüzdanın umursadığı her şeyi izleyen veya bir oyunsanız, seyrek bir düğümdür. Bir oyun sunucusu çalıştıran geliştirici, tüm oyuncularınızın durumunu izleyen seyrek bir notunuz olabilir ve oyununuz nesneler ve oyun durumuydu, ancak başka bir oyunun durumu veya saldırıların durumu veya başka bir şey değildi. bu seninle alakalı değil. Toplu olarak, herkes, her şeyi doğrulama maliyetini ödemeden, kullanım durumları ile ilgili durumdaki işlemleri doğrulayabilir, sistemde devam eden 10 milyonlarca potansiyel işlem, bu gerçekten güzel bir yol. Bu doğrulamayı ölçeklendirmek için, çünkü temel olarak, doğrulamanızın maliyeti, ilgilendiğiniz durum miktarıyla orantılı olacaktır ve çoğu son kullanıcı için, bu muhtemelen küçüktür ve temel olarak ne kadar büyük olduğuna bağlı bir oyun gibi kullanım durumları için onların oyunu, bu yüzden bunun için ödeme yapmaları uygun.

Bu çok önemlidir, boğa düğümleri ve ağlar, yalnızca gerçekten ölçeklenirler çünkü TPS gerçekten çok düşüktür. Dolayısıyla, yüksek bir üretim zinciri işleten herkesin bu soruna iyi bir cevabı olması gerekecek, bu da doğrulamayı ölçeklendirmenize izin verecek, aksi takdirde, veriminiz istemediğiniz şeyi artırdıkça ademi merkeziyetçiliğiniz çok acı çekecek.

Soru 13: Solidity ile başaramayacağınız veya denememeniz gereken, Sui Move’da yerleşik olarak görmek sizi kişisel olarak heyecanlandıran şey nedir?

Standartları olmayan yeni nesil NFT’ler için çok heyecanlıyım ve bununla demek istediğim, ERC 721 veya 1155 gibi bir şeye sahip olduğunuzda, her NFT’nin bu kuralları karşılaması gereken en düşük ortak paydaya hitap ettiğini düşünüyoruz. . Yani şöyle bir şey yapmak istiyorsanız, diyelim ki, mutasyona uğrayabilecek bazı meta verilere sahip bir NFT’m var, bu, topluluğun bir araya geldiği ve üzerinde anlaştığı başka bir standart olmalı ve o zaman ancak, Sui’de bunu düşünmenin bir yolu, her nesnenin bir NFT olduğu, her nesnenin benzersiz bir kimliği olduğu, bu da 721’in en önemli şeylerinden biri ve her nesnenin bu yapıya sahip olduğudur. aktarım işlevinde anlattığım gibi ve bunun ötesini yapmak istediğinizde NFT’nize yeni alanlar ekleyebilir ve bunları güncelleme mantığına sahip olacak şekilde ayarlayabilir, NFT’nizi ve diğer NFT’lerinizi sarabilirsiniz, bu ebeveyn çocuk nesne şeyini yapabilir, dijital nesnelerle yapabilecekleriniz açısından gerçekten kelepçeleri kaldırır ve bunu güvenli ve hızlı bir şekilde yapmayı çok daha kolay hale getirir.

İçerik oluşturucuların bu kısıtlayıcı standartlara uymaya çalışmanın prangalarından kurtulduklarında ve herkesin ortak olarak yapmak istediği sınırlı şeyleri yapmaya çalıştıklarında bununla ne yapacaklarını görmek beni çok heyecanlandırıyor. Ve odaklarını bir NFT ve dijital varlık perspektifinden yaratmak istediklerine kaydırın.

Bunun son derece ilginç olacağını düşünüyorum, özellikle de bunu Sui’nin düşük maliyeti ve ölçekleme yetenekleriyle ve Move’da sahip olduğumuz güzel geliştirici deneyimiyle birleştirirseniz.

Herkese çok teşekkür ederim.

Yazının orjinaline ulaşmak için tıklayabilirsiniz.

Bu Yazıya Tepkiniz Ne Oldu?
  • 0
    alk_l_yorum
    Alkışlıyorum
  • 0
    be_endim
    Beğendim
  • 0
    d_nceliyim
    Düşünceliyim
  • 0
    be_enmedim
    Beğenmedim

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bültenimize Katılın

Hemen ücretsiz üye olun ve yeni güncellemelerden haberdar olan ilk kişi olun.