Move dilinin kurucusu ile röportaj: Neden Sui Move akıllı sözleşmeler dili Web3 ürünleri inşa etmek için uygundur?
Son günlerde, Mysten Labs'ın Baş Teknoloji Sorumlusu ve Move programlama dilinin kurucusu Sam Blackshear ile Sui Move adlı yeni akıllı sözleşmeler programlama dilini neden geliştirdiğini, Sui’nin ölçeklenebilirlik özelliklerini ve merkeziyetsiz teknolojinin geliştiricilere sağladığı faydaları tartıştık.
Aşağıda bu röportajın içeriği bulunmaktadır:
S1, Öncelikle, programlama dillerinin ne olduğunu, geliştiricilerin bir programlama dili seçerken en çok hangi niteliklere dikkat ettiğini ve kendi programlama dilinizi geliştirmeye neyin teşvik ettiğini özetleyebilir misiniz?
Programlama dilleri, bilgisayarlarla dostane, güvenli, etkili ve kesin bir şekilde etkileşim kurmanın bir aracıdır. Bu, bilgisayarlar için özellikle önemlidir. Bilgisayarlarla doğal dilde iletişim kuramayız, çünkü doğal dilin tüm anlamı zenginlik ve ifade yeteneğindedir. Kelimeleri ifade etmenin biraz farklı bir tonu veya ince bir şekilde farklı bir yolunu seçtiğinizde, cümlelerinizin veya paragraflarınızın anlamı tamamen farklı olabilir.
Programlama dillerinde en önemli şey, kesin bir şekilde tanımlanmış bir anlama sahip olmaktır. Bir program yazarken, ne yapacağını net bir şekilde bilirsiniz. Eğer ona küçük bir ayarlama yaparsanız, bu değişikliğin ne sonuç vereceğini bilirsiniz. Bu durum, birden fazla düzeyde korunmalıdır; örneğin, bir kaynak dilinde kod yazabilir ve bu bir anlam taşıyabilir, ardından diğer biçimlere dönüştürüldüğünde de aynı anlama sahip olmalıdır, makinenin işlem modülüne ulaşana kadar da böyle olmalıdır.
Doğal dillerin aksine, programlama dillerinin doğası belirli bir alan veya belirli bir görev için hedeflenmiştir. Aksi takdirde, tek bir programlama dili ile tüm görevleri tamamlayabilirsiniz. Ancak birden fazla programlama dili var çünkü her alanda iyi performans göstermeniz mümkün değildir. Onlar belirli sorun alanlarına hedeflenmekte ve bu sorunları çözmeye odaklanmaktadırlar. Örneğin, Sui blok zincirini yazmak ve Mysten'de yapılan diğer sistemlerin çoğu için kullandığımız Rust programlama diline bakarsanız, hem hızlı hem de yüksek performanslı kod yazmaya odaklanır ve güvenliği garanti eder. Bellek, iş parçacığı yapısı veya eşzamanlılık gibi düşük seviyeli ayrıntılara erişim sağlar, ancak önceki diller (C veya C++ gibi) gibi hatalar yapmanıza izin vermez.
Bu nedenle, Move'un hikayesi bununla çok benzer. Onu yarattığımda, yeni bir dil yaratmak amacıyla yapmadım. Daha önce geliştiricilerin bir dilde ne aradığını belirttiniz. Soracaklar, "Bu dil, tamamlamak istediğim görev için uygun mu?" Ancak bence daha önemli olan, "Bu dilin büyük bir topluluğu var mı? Kullanılabilir birçok veritabanı var mı? Kullanımda olan birçok programcı var mı? İyi eğitim kaynakları var mı?" Bunlar çok önemlidir, bu nedenle yeni bir dil yaratmanın eşiği çok yüksek olmalıdır, bu dil kendisi daha iyi olsa bile, eğer bu faktörlere sahip değilse, avantajları anlamını yitirir. Sıfırdan büyük ve dinamik bir topluluk oluşturmak çok zordur.
S2, Move ile ilgili daha fazla geliştirme durumu paylaşabilir misiniz?
Move, Facebook'un Libra projesinden kaynaklanmaktadır. O dönemki görevim yeni bir dil oluşturmak değildi, "Libra'nın akıllı sözleşmelere ihtiyacı var, bu yüzden ne yapmamız gerektiğini bul" demiştim. Çeşitli şeylere baktım. EVM'de Solidity kullanabilir miyiz? Libera için genel bir dil, örneğin WASM veya JVM kullanmalı mıyız? Yoksa kendi şeyimizi mi yaratmalıyız?
Kendi şeylerimizi yaratma kararı, mevcut akıllı sözleşmeler üzerine yapılan araştırmalara, programcıların ne yapmaya çalıştığını anlamaya ve bazı dillerin onlara nasıl yardımcı olduğu ile hayal kırıklığına uğrattığına dayanmaktadır. Sonuç olarak, birçok durumda mevcut akıllı sözleşme dillerinin gerçekten hayal kırıklığına uğrattığını düşünüyorum.
Bu, Solidity'nin kötü güvenlik kayıtlarından açıkça görülebilir, ancak daha temel bir şekilde, bu akıllı sözleşmeler çok geleneksel program türleri değildir. Solidity, insanların şu anda yaptıkları şeyler için inşa edilen bir dil değildir. Onu eleştirmek istemiyorum, çünkü bu ilk akıllı sözleşme dilidir ve insanların onunla ne yapacaklarını henüz bilmiyordu. İnsanların onunla ne yapmaya çalıştıklarını gördüğünüzde, bence belli ki, farklı bir soyutlama ve programlama araçları setine ihtiyaç duyuluyor ve Solidity dili bunu sağlamıyor.
Bu nedenle, bu akıllı sözleşmeler oldukça basittir; esasen iki şey yaparlar. Varlık türlerini tanımlarlar, varlıkların ne zaman transfer edilebileceğini, onlarla ne yapılabileceğini, kimlerin okuyabileceğini ve kimlerin yazabileceğine dair kuralları belirlerler. Ayrıca erişim kontrol politikalarını kontrol ederler, varlığın kimin tarafından sahiplenildiğini, kimin kullanmasına izin verildiğini ve kimin üzerinde işlem yapmasına izin verildiğini belirlerler. Her şey varlık etrafında döner; bu varlıkların fiziksel varlıklarla aynı özelliklere sahip olmasını istersiniz. Eğer bir şeyi sana verirsem, o zaman sen ona sahip olmalısın, ben de artık ona sahip olmamalıyım.
Akıllı sözleşmelerde mülkiyet ve mülkiyet devri kavramları vardır, ancak bilgisayarda her şey yalnızca sayılar ve baytlar olarak var olur ve serbestçe kopyalanabilir. Ayrıca, biliyorsunuz ki bu kavramlar gerçek dünyada mevcut değildir. Bu nedenle, mülkiyet ve homojenlik hakkında size iyi bir soyutlama sunacak bir dil olmasını istiyorsunuz. Gerçek dünyadaki gibi, ancak programcıların bunu yeniden icat etmesini zorunlu kılmadan. Temel güvenlik garantileri almak istiyorsunuz.
İşte Move'un rolü ve neden bu yeni dili nihayet oluşturduğumuz. Bu görevler, akıllı sözleşmeler programlaması için temeldir. Mevcut akıllı sözleşme dilleri de dahil olmak üzere, diğer dillerde yeniden oluşturulması zor olan şeylerdir. Programcıların her seferinde bazı kodlar yazarken tekerleği yeniden icat etmek zorunda kalmadan, güvenli ve verimli bir şekilde kod yazabilmeleri için bu temel işlevleri sağlayan bir dil etrafında tasarım yapmayı umuyoruz.
S3, Sui, Move'un bir varyantı olan Sui Move'u kullandı. Bu değişiklikleri ne teşvik etti? Sui Move'un Web3'te ürün inşa etmek için hangi özellikleri çok uygundur?
Bu değişiklikleri tetikleyen birkaç faktör var, bunlardan biri ilk Libra projesinin amacının uyumlu bir ödeme ağı oluşturmak olmasıdır. Bu nedenle, Move'u evrensel bir dil olarak tasarlamaya çalıştık. Ancak, Libra'nın bazı kısıtlamalara sahip olmasını istediği için bilinçli olarak bazı şeyler yaptık. Önemli olan şeylerden biri, insanların belirli varlıkları herhangi bir yere göndermesini istememeleridir. İnsanların açıkça bir hesap oluşturmasını ve hesap oluşturulduğunda bazı kurallar belirlemesini istiyorlar, örneğin hesap sahibinin KYC doğrulaması yapması gerektiği gibi. Ya da hesap oluşturmak için ücret ödemeleri gerekebilir ya da hesap oluşturma yetkisine sahip olan çok az sayıda kişi tarafından sadece hesap oluşturulabilir. Çünkü genel amaç, Libra'nın uyumlu ödemeler ve uyumlu akıllı sözleşmeler gerçekleştirmek istemesidir, bu nedenle bu kısıtlamalar vardır. Ancak daha genel Web3 alanında durum tam tersidir. Temel düzeyde uyumlu olmak istemezsiniz, bu akıllı sözleşmelerin konseptidir. İşlerin mümkün olduğunca serbest olmasını istersiniz, bir şeyi herhangi bir adrese tam olarak gönderebilirsiniz. Ve açık bir hesap oluşturma yapmamalısınız, çünkü bu çeşitli kullanım durumlarını engelleyecektir. Bu önemli bir faktördür.
Bir diğer faktör, Move'da varlıklara odaklanmış olmamıza rağmen, o zaman Libra'da varlıkların dikkate alınma biçimini işlemin kendisine entegre etme konusunda düşünmemiş olmamızdır. Bu nedenle işlem katmanına ulaştığınızda, hala yalnızca sayılar ve Boolean değerler gibi varlık olmayan şeyleri girdiğiniz bu API'ye sahipsiniz. Daha sonra Move'da, bu sayıları kullanarak hesaplardan varlıkları çekiyor ve diğer işlemleri gerçekleştiriyorsunuz. Gerçek şu ki, çalıştırdığınız kodların çoğu, bu can sıkıcı defter işini içeriyor; bu, şunu almak, bunu almak, diğerini almak şeklinde. Tamam, istediğim tüm varlıklar burada, stüdyomda, şimdi bazı anlamlı şeyler yapmaya başlayabilirim. Sonra bu sürecin sonunda, "Tamam, bu varlıkları şu hesaba geri koy, onları bu hesaba geri koy, yeniden organize et" diyebilirsiniz.
Sui'de, her programın bu şekilde başlayıp bitip bitmeyeceğini derinlemesine düşündük, bunu soyutlayabilir miyiz? Bu nedenle, işlemleri işlemek için kullanılan mantık, programcıların bunu yapmasını sağlayacak; programcılar açısından, yalnızca gerekli varlıkları hazırlamaları yeterli olacak ve hemen ilginç işlere başlayabilecekler. İşte Sui'de var olan nesne merkezli veri modeli budur. Orijinal Move'da, hesap tabanlı bir veri modeline sahibiz; varlıklar hesap altında depolanır ve programcılar bunları açıkça çıkarmak zorundadırlar. Ancak Sui'de, işlemin Move kısmına girdiğinde, varlıklar Sui çalışma zamanı tarafından zaten alınmıştır. Bu, programcılar için daha kullanışlıdır çünkü tüm bu önceki ve sonraki muhasebe işlerini yapmak zorunda kalmazlar ve aynı zamanda, bir işlemi diğer bir işlemiyle paralel çalıştırıp çalıştıramayacağımızı belirlememize, Sui'yi yatay ölçeklendirmemize ve diğer bazı işlemleri daha verimli bir şekilde gerçekleştirmemize olanak tanıyan gizli silahımızdır.
Başka bazı oldukça ilginç işler de yaptık, örneğin nesne tabanlı veri modelini kullanarak programlanabilir işlem blokları oluşturmak. Bu daha teknik bir konu ve derinlemesine tartışmaktan memnuniyet duyarım. Ancak bu iki faktör, orijinal Move ile olan farklılıkların ana itici güçleridir.
Soru 4: Programlanabilir ticaret blokları ve bunların işlevleri hakkında daha fazla bilgi paylaşabilir misiniz?
Ben bir analoji kullanarak açıklamayı seviyorum, diğer blok zincirleri bir alışveriş merkezinin yemek mahallesi gibi. Dondurma yemek istiyorsanız, dondurma tezgahına gidersiniz, kredi kartınızı çıkarıp ödeme yaparsınız. Ama eğer bir hamburger yemek isterseniz, hamburger tezgahına gider ve tekrar ödeme yaparsınız. Ben açgözlü biri değilim ama eğer sekiz farklı şey yemek istiyorsam, sekiz ayrı işlem yapmak zorundayım. Ama Sui daha çok bir büfe gibi, her işlem sadece bir şey değil. Bir kez büfe ücretini ödediğinizde, ekstra harcama yapmadan birçok şey yapabilirsiniz. Dondurma yiyebilirsiniz, hamburger yiyebilirsiniz, bunları karıştırabilirsiniz.
Bu kavramı daha somut hale getirmek için, basit bir durumda, 100 NFT basmak için 100 işlem göndermeniz gerekiyorsa, 100 NFT basan bir işlem gönderebilirsiniz. Bu tür bir maliyet, bir NFT basmanın maliyeti ile neredeyse aynıdır. Ayrıca, bloktaki ilk işleminiz çoklu imza cüzdanınızdan bir Mario karakteri alırken, ikinci işlemin bir Mario talep etmesi gibi heterojen işlem paketleri de yapabilirsiniz ve sizi oyunu oynamaya davet eder. Oyunu kazanırsanız ve bir kupa alırsanız, belki de üçüncü işlem kupayı arkadaşlarınızla paylaştığınız bir kupa dolabına yerleştirir. En havalı olanı, programlanabilir işlem bloklarının geliştiricilerin bu şekilde kod yazmasına izin vermesidir; oyun, çoklu imza cüzdanının veya Mario'nun nasıl saklandığını bilmek zorunda değildir, ayrıca kupa dolabınızı veya onun nasıl uygulandığını da bilmek zorunda değildir.
Programlanabilir işlem blokları, giriş ve çıkış nesneleri olan işlemlerden oluşur. Eğer bir giriş nesnesine ihtiyacınız varsa, bu nesneyi nereden geldiğiyle ilgilenmeden alabilirsiniz ve ardından çıktısını onu ihtiyaç duyan nesneye iletebilirsiniz, aynı şekilde onu nereye ileteceğinizle de ilgilenmenize gerek yoktur. Diğer blok zincirlerinde, bağlılık daha yüksektir, bu nedenle oyunların çoklu imza cüzdanları ve ödül vitrinleri ile entegre olması gerekir veya hepsinin bazı ortak arayüzler uygulaması ve daha güçlü bir bağlılığa sahip olması gerekir. Sui, sözde geçici birleşimleri daha kolay hale getirir. Eğer borular eşleşiyorsa, bir işlemde tamamlayabiliriz.
S5, Programlanabilir ticaret bloğu kullanıcılar için ne gibi avantajlar sağlar?
Kullanıcılar için programlanabilir işlem bloklarının avantajları arasında, tüm işlemleri tek bir işlemde paketleyebildiğiniz için daha düşük gas ücretleri bulunmaktadır, bu sayede ayrı ayrı işlemler yapmak zorunda kalmazsınız. Ayrıca, onaylama gereksinimlerinin sayısı da azalacaktır. Eğer kullandığınız sistem işlem onayı gerektiriyorsa, yalnızca bir kez onay vermeniz yeterli olur ve ardından tüm işlemler tek seferde tamamlanır. Diğer bir avantaj ise atomikliktir; eğer üç farklı işlem yapmak istiyorsanız ve üçüncü işlemin yalnızca ilk iki işlemin başarılı olması durumunda başarılı olmasını istiyorsanız, bu işlemler bağımsız işlemler olmak zorundaysa bunu başaramazsınız. Ancak, hepsini tek bir işlemde birleştirebilirseniz, bunu kolayca gerçekleştirebilirsiniz.
S6, Sui üzerinde geliştirme yapmanın programcılar için harika bir deneyim olduğunu ve bunun önemli olduğunu siz ve diğerlerinin konuştuğunu duydum. Deneyimli ve yeni Web3 programcılarının Sui Move kullanmaya başlamasıyla ilgili paylaşabileceğiniz herhangi bir anekdot var mı?
Diğer Web3 programlama dillerinden gelen geliştiriciler için, Move ve Sui Move üzerindeki geliştirme deneyimi gerçekten daha verimli ve daha güvenli. Bucket Protocol hakkında bir podcast'e katıldım, Sui üzerinde çok havalı bir şey inşa ediyorlar.
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.
21 Likes
Reward
21
7
Share
Comment
0/400
GasOptimizer
· 07-18 07:39
move'i başlat!
View OriginalReply0
GasOptimizer
· 07-17 16:03
tps, ETH'den 8.64 kat daha hızlıdır, hesaplandı.
View OriginalReply0
AirdropHuntress
· 07-15 22:08
Yine bir pazarlama hilesi, kim erken dönem sözleşme kodunu araştırdı?
View OriginalReply0
HodlKumamon
· 07-15 22:04
Veriler garip görünüyor, Move dede.
View OriginalReply0
CryptoAdventurer
· 07-15 22:02
Hepsi içeride iş bitti, uzun zamandır move'ları görmedim.
View OriginalReply0
Degen4Breakfast
· 07-15 21:57
move yine hava atmaya geldi
View OriginalReply0
NftPhilanthropist
· 07-15 21:54
hmm başka bir web3 kurucusu bizi teknolojik yığınıyla kurtarmaya çalışıyor
Move kurucusu açıkladı: Sui Move Web3 ürün geliştirmeye nasıl yardımcı oluyor
Move dilinin kurucusu ile röportaj: Neden Sui Move akıllı sözleşmeler dili Web3 ürünleri inşa etmek için uygundur?
Son günlerde, Mysten Labs'ın Baş Teknoloji Sorumlusu ve Move programlama dilinin kurucusu Sam Blackshear ile Sui Move adlı yeni akıllı sözleşmeler programlama dilini neden geliştirdiğini, Sui’nin ölçeklenebilirlik özelliklerini ve merkeziyetsiz teknolojinin geliştiricilere sağladığı faydaları tartıştık.
Aşağıda bu röportajın içeriği bulunmaktadır:
S1, Öncelikle, programlama dillerinin ne olduğunu, geliştiricilerin bir programlama dili seçerken en çok hangi niteliklere dikkat ettiğini ve kendi programlama dilinizi geliştirmeye neyin teşvik ettiğini özetleyebilir misiniz?
Programlama dilleri, bilgisayarlarla dostane, güvenli, etkili ve kesin bir şekilde etkileşim kurmanın bir aracıdır. Bu, bilgisayarlar için özellikle önemlidir. Bilgisayarlarla doğal dilde iletişim kuramayız, çünkü doğal dilin tüm anlamı zenginlik ve ifade yeteneğindedir. Kelimeleri ifade etmenin biraz farklı bir tonu veya ince bir şekilde farklı bir yolunu seçtiğinizde, cümlelerinizin veya paragraflarınızın anlamı tamamen farklı olabilir.
Programlama dillerinde en önemli şey, kesin bir şekilde tanımlanmış bir anlama sahip olmaktır. Bir program yazarken, ne yapacağını net bir şekilde bilirsiniz. Eğer ona küçük bir ayarlama yaparsanız, bu değişikliğin ne sonuç vereceğini bilirsiniz. Bu durum, birden fazla düzeyde korunmalıdır; örneğin, bir kaynak dilinde kod yazabilir ve bu bir anlam taşıyabilir, ardından diğer biçimlere dönüştürüldüğünde de aynı anlama sahip olmalıdır, makinenin işlem modülüne ulaşana kadar da böyle olmalıdır.
Doğal dillerin aksine, programlama dillerinin doğası belirli bir alan veya belirli bir görev için hedeflenmiştir. Aksi takdirde, tek bir programlama dili ile tüm görevleri tamamlayabilirsiniz. Ancak birden fazla programlama dili var çünkü her alanda iyi performans göstermeniz mümkün değildir. Onlar belirli sorun alanlarına hedeflenmekte ve bu sorunları çözmeye odaklanmaktadırlar. Örneğin, Sui blok zincirini yazmak ve Mysten'de yapılan diğer sistemlerin çoğu için kullandığımız Rust programlama diline bakarsanız, hem hızlı hem de yüksek performanslı kod yazmaya odaklanır ve güvenliği garanti eder. Bellek, iş parçacığı yapısı veya eşzamanlılık gibi düşük seviyeli ayrıntılara erişim sağlar, ancak önceki diller (C veya C++ gibi) gibi hatalar yapmanıza izin vermez.
Bu nedenle, Move'un hikayesi bununla çok benzer. Onu yarattığımda, yeni bir dil yaratmak amacıyla yapmadım. Daha önce geliştiricilerin bir dilde ne aradığını belirttiniz. Soracaklar, "Bu dil, tamamlamak istediğim görev için uygun mu?" Ancak bence daha önemli olan, "Bu dilin büyük bir topluluğu var mı? Kullanılabilir birçok veritabanı var mı? Kullanımda olan birçok programcı var mı? İyi eğitim kaynakları var mı?" Bunlar çok önemlidir, bu nedenle yeni bir dil yaratmanın eşiği çok yüksek olmalıdır, bu dil kendisi daha iyi olsa bile, eğer bu faktörlere sahip değilse, avantajları anlamını yitirir. Sıfırdan büyük ve dinamik bir topluluk oluşturmak çok zordur.
S2, Move ile ilgili daha fazla geliştirme durumu paylaşabilir misiniz?
Move, Facebook'un Libra projesinden kaynaklanmaktadır. O dönemki görevim yeni bir dil oluşturmak değildi, "Libra'nın akıllı sözleşmelere ihtiyacı var, bu yüzden ne yapmamız gerektiğini bul" demiştim. Çeşitli şeylere baktım. EVM'de Solidity kullanabilir miyiz? Libera için genel bir dil, örneğin WASM veya JVM kullanmalı mıyız? Yoksa kendi şeyimizi mi yaratmalıyız?
Kendi şeylerimizi yaratma kararı, mevcut akıllı sözleşmeler üzerine yapılan araştırmalara, programcıların ne yapmaya çalıştığını anlamaya ve bazı dillerin onlara nasıl yardımcı olduğu ile hayal kırıklığına uğrattığına dayanmaktadır. Sonuç olarak, birçok durumda mevcut akıllı sözleşme dillerinin gerçekten hayal kırıklığına uğrattığını düşünüyorum.
Bu, Solidity'nin kötü güvenlik kayıtlarından açıkça görülebilir, ancak daha temel bir şekilde, bu akıllı sözleşmeler çok geleneksel program türleri değildir. Solidity, insanların şu anda yaptıkları şeyler için inşa edilen bir dil değildir. Onu eleştirmek istemiyorum, çünkü bu ilk akıllı sözleşme dilidir ve insanların onunla ne yapacaklarını henüz bilmiyordu. İnsanların onunla ne yapmaya çalıştıklarını gördüğünüzde, bence belli ki, farklı bir soyutlama ve programlama araçları setine ihtiyaç duyuluyor ve Solidity dili bunu sağlamıyor.
Bu nedenle, bu akıllı sözleşmeler oldukça basittir; esasen iki şey yaparlar. Varlık türlerini tanımlarlar, varlıkların ne zaman transfer edilebileceğini, onlarla ne yapılabileceğini, kimlerin okuyabileceğini ve kimlerin yazabileceğine dair kuralları belirlerler. Ayrıca erişim kontrol politikalarını kontrol ederler, varlığın kimin tarafından sahiplenildiğini, kimin kullanmasına izin verildiğini ve kimin üzerinde işlem yapmasına izin verildiğini belirlerler. Her şey varlık etrafında döner; bu varlıkların fiziksel varlıklarla aynı özelliklere sahip olmasını istersiniz. Eğer bir şeyi sana verirsem, o zaman sen ona sahip olmalısın, ben de artık ona sahip olmamalıyım.
Akıllı sözleşmelerde mülkiyet ve mülkiyet devri kavramları vardır, ancak bilgisayarda her şey yalnızca sayılar ve baytlar olarak var olur ve serbestçe kopyalanabilir. Ayrıca, biliyorsunuz ki bu kavramlar gerçek dünyada mevcut değildir. Bu nedenle, mülkiyet ve homojenlik hakkında size iyi bir soyutlama sunacak bir dil olmasını istiyorsunuz. Gerçek dünyadaki gibi, ancak programcıların bunu yeniden icat etmesini zorunlu kılmadan. Temel güvenlik garantileri almak istiyorsunuz.
İşte Move'un rolü ve neden bu yeni dili nihayet oluşturduğumuz. Bu görevler, akıllı sözleşmeler programlaması için temeldir. Mevcut akıllı sözleşme dilleri de dahil olmak üzere, diğer dillerde yeniden oluşturulması zor olan şeylerdir. Programcıların her seferinde bazı kodlar yazarken tekerleği yeniden icat etmek zorunda kalmadan, güvenli ve verimli bir şekilde kod yazabilmeleri için bu temel işlevleri sağlayan bir dil etrafında tasarım yapmayı umuyoruz.
S3, Sui, Move'un bir varyantı olan Sui Move'u kullandı. Bu değişiklikleri ne teşvik etti? Sui Move'un Web3'te ürün inşa etmek için hangi özellikleri çok uygundur?
Bu değişiklikleri tetikleyen birkaç faktör var, bunlardan biri ilk Libra projesinin amacının uyumlu bir ödeme ağı oluşturmak olmasıdır. Bu nedenle, Move'u evrensel bir dil olarak tasarlamaya çalıştık. Ancak, Libra'nın bazı kısıtlamalara sahip olmasını istediği için bilinçli olarak bazı şeyler yaptık. Önemli olan şeylerden biri, insanların belirli varlıkları herhangi bir yere göndermesini istememeleridir. İnsanların açıkça bir hesap oluşturmasını ve hesap oluşturulduğunda bazı kurallar belirlemesini istiyorlar, örneğin hesap sahibinin KYC doğrulaması yapması gerektiği gibi. Ya da hesap oluşturmak için ücret ödemeleri gerekebilir ya da hesap oluşturma yetkisine sahip olan çok az sayıda kişi tarafından sadece hesap oluşturulabilir. Çünkü genel amaç, Libra'nın uyumlu ödemeler ve uyumlu akıllı sözleşmeler gerçekleştirmek istemesidir, bu nedenle bu kısıtlamalar vardır. Ancak daha genel Web3 alanında durum tam tersidir. Temel düzeyde uyumlu olmak istemezsiniz, bu akıllı sözleşmelerin konseptidir. İşlerin mümkün olduğunca serbest olmasını istersiniz, bir şeyi herhangi bir adrese tam olarak gönderebilirsiniz. Ve açık bir hesap oluşturma yapmamalısınız, çünkü bu çeşitli kullanım durumlarını engelleyecektir. Bu önemli bir faktördür.
Bir diğer faktör, Move'da varlıklara odaklanmış olmamıza rağmen, o zaman Libra'da varlıkların dikkate alınma biçimini işlemin kendisine entegre etme konusunda düşünmemiş olmamızdır. Bu nedenle işlem katmanına ulaştığınızda, hala yalnızca sayılar ve Boolean değerler gibi varlık olmayan şeyleri girdiğiniz bu API'ye sahipsiniz. Daha sonra Move'da, bu sayıları kullanarak hesaplardan varlıkları çekiyor ve diğer işlemleri gerçekleştiriyorsunuz. Gerçek şu ki, çalıştırdığınız kodların çoğu, bu can sıkıcı defter işini içeriyor; bu, şunu almak, bunu almak, diğerini almak şeklinde. Tamam, istediğim tüm varlıklar burada, stüdyomda, şimdi bazı anlamlı şeyler yapmaya başlayabilirim. Sonra bu sürecin sonunda, "Tamam, bu varlıkları şu hesaba geri koy, onları bu hesaba geri koy, yeniden organize et" diyebilirsiniz.
Sui'de, her programın bu şekilde başlayıp bitip bitmeyeceğini derinlemesine düşündük, bunu soyutlayabilir miyiz? Bu nedenle, işlemleri işlemek için kullanılan mantık, programcıların bunu yapmasını sağlayacak; programcılar açısından, yalnızca gerekli varlıkları hazırlamaları yeterli olacak ve hemen ilginç işlere başlayabilecekler. İşte Sui'de var olan nesne merkezli veri modeli budur. Orijinal Move'da, hesap tabanlı bir veri modeline sahibiz; varlıklar hesap altında depolanır ve programcılar bunları açıkça çıkarmak zorundadırlar. Ancak Sui'de, işlemin Move kısmına girdiğinde, varlıklar Sui çalışma zamanı tarafından zaten alınmıştır. Bu, programcılar için daha kullanışlıdır çünkü tüm bu önceki ve sonraki muhasebe işlerini yapmak zorunda kalmazlar ve aynı zamanda, bir işlemi diğer bir işlemiyle paralel çalıştırıp çalıştıramayacağımızı belirlememize, Sui'yi yatay ölçeklendirmemize ve diğer bazı işlemleri daha verimli bir şekilde gerçekleştirmemize olanak tanıyan gizli silahımızdır.
Başka bazı oldukça ilginç işler de yaptık, örneğin nesne tabanlı veri modelini kullanarak programlanabilir işlem blokları oluşturmak. Bu daha teknik bir konu ve derinlemesine tartışmaktan memnuniyet duyarım. Ancak bu iki faktör, orijinal Move ile olan farklılıkların ana itici güçleridir.
Soru 4: Programlanabilir ticaret blokları ve bunların işlevleri hakkında daha fazla bilgi paylaşabilir misiniz?
Ben bir analoji kullanarak açıklamayı seviyorum, diğer blok zincirleri bir alışveriş merkezinin yemek mahallesi gibi. Dondurma yemek istiyorsanız, dondurma tezgahına gidersiniz, kredi kartınızı çıkarıp ödeme yaparsınız. Ama eğer bir hamburger yemek isterseniz, hamburger tezgahına gider ve tekrar ödeme yaparsınız. Ben açgözlü biri değilim ama eğer sekiz farklı şey yemek istiyorsam, sekiz ayrı işlem yapmak zorundayım. Ama Sui daha çok bir büfe gibi, her işlem sadece bir şey değil. Bir kez büfe ücretini ödediğinizde, ekstra harcama yapmadan birçok şey yapabilirsiniz. Dondurma yiyebilirsiniz, hamburger yiyebilirsiniz, bunları karıştırabilirsiniz.
Bu kavramı daha somut hale getirmek için, basit bir durumda, 100 NFT basmak için 100 işlem göndermeniz gerekiyorsa, 100 NFT basan bir işlem gönderebilirsiniz. Bu tür bir maliyet, bir NFT basmanın maliyeti ile neredeyse aynıdır. Ayrıca, bloktaki ilk işleminiz çoklu imza cüzdanınızdan bir Mario karakteri alırken, ikinci işlemin bir Mario talep etmesi gibi heterojen işlem paketleri de yapabilirsiniz ve sizi oyunu oynamaya davet eder. Oyunu kazanırsanız ve bir kupa alırsanız, belki de üçüncü işlem kupayı arkadaşlarınızla paylaştığınız bir kupa dolabına yerleştirir. En havalı olanı, programlanabilir işlem bloklarının geliştiricilerin bu şekilde kod yazmasına izin vermesidir; oyun, çoklu imza cüzdanının veya Mario'nun nasıl saklandığını bilmek zorunda değildir, ayrıca kupa dolabınızı veya onun nasıl uygulandığını da bilmek zorunda değildir.
Programlanabilir işlem blokları, giriş ve çıkış nesneleri olan işlemlerden oluşur. Eğer bir giriş nesnesine ihtiyacınız varsa, bu nesneyi nereden geldiğiyle ilgilenmeden alabilirsiniz ve ardından çıktısını onu ihtiyaç duyan nesneye iletebilirsiniz, aynı şekilde onu nereye ileteceğinizle de ilgilenmenize gerek yoktur. Diğer blok zincirlerinde, bağlılık daha yüksektir, bu nedenle oyunların çoklu imza cüzdanları ve ödül vitrinleri ile entegre olması gerekir veya hepsinin bazı ortak arayüzler uygulaması ve daha güçlü bir bağlılığa sahip olması gerekir. Sui, sözde geçici birleşimleri daha kolay hale getirir. Eğer borular eşleşiyorsa, bir işlemde tamamlayabiliriz.
S5, Programlanabilir ticaret bloğu kullanıcılar için ne gibi avantajlar sağlar?
Kullanıcılar için programlanabilir işlem bloklarının avantajları arasında, tüm işlemleri tek bir işlemde paketleyebildiğiniz için daha düşük gas ücretleri bulunmaktadır, bu sayede ayrı ayrı işlemler yapmak zorunda kalmazsınız. Ayrıca, onaylama gereksinimlerinin sayısı da azalacaktır. Eğer kullandığınız sistem işlem onayı gerektiriyorsa, yalnızca bir kez onay vermeniz yeterli olur ve ardından tüm işlemler tek seferde tamamlanır. Diğer bir avantaj ise atomikliktir; eğer üç farklı işlem yapmak istiyorsanız ve üçüncü işlemin yalnızca ilk iki işlemin başarılı olması durumunda başarılı olmasını istiyorsanız, bu işlemler bağımsız işlemler olmak zorundaysa bunu başaramazsınız. Ancak, hepsini tek bir işlemde birleştirebilirseniz, bunu kolayca gerçekleştirebilirsiniz.
S6, Sui üzerinde geliştirme yapmanın programcılar için harika bir deneyim olduğunu ve bunun önemli olduğunu siz ve diğerlerinin konuştuğunu duydum. Deneyimli ve yeni Web3 programcılarının Sui Move kullanmaya başlamasıyla ilgili paylaşabileceğiniz herhangi bir anekdot var mı?
Diğer Web3 programlama dillerinden gelen geliştiriciler için, Move ve Sui Move üzerindeki geliştirme deneyimi gerçekten daha verimli ve daha güvenli. Bucket Protocol hakkında bir podcast'e katıldım, Sui üzerinde çok havalı bir şey inşa ediyorlar.