İçeriğe geç

Composooor Snap: Hibrit zincir içi ve zincir dışı uygulamalar için birleştirilebilirlik sağlayıcısı

Bir ETHDenver Hackathon kazananı

6 dk okuma
Composooor Snap: Hibrit zincir içi ve zincir dışı uygulamalar için birleştirilebilirlik sağlayıcısı

MetaMask Snaps, MetaMask'ı dünyanın en genişletilebilir cüzdanı haline getirmenin yol haritasıdır. Geliştirici olarak, özelliklerinizi ve API'larınızı MetaMask'a tamamen yeni yollarla sunabilirsiniz. Web3 geliştiricileri bu büyümenin özünü oluşturmaktadır ve bu seri, bugün inşa edilen yenilikçi MetaMask Snaps'leri tanıtmayı amaçlamaktadır.

Composooor Snap

Snap Deposu: https://github.com/kairos-loan/composooor/tree/main/packages/snap

Neden geliştirdiniz?

Akıllı sözleşme tabanlı finansal protokoller ve diğer blokzincir uygulamaları geliştirme deneyimimiz sırasında tekrar eden bir örüntü fark ettik. Giderek daha fazla uygulama, blokzincirlerin teknik sınırlamaları nedeniyle sözleşme mantığında doğrulanan zincir dışı kaynakları (hesaplama veya veri depolama gibi) kullanmaktadır. Buna örnek olarak emir defterleri, airdrop'ların merkle ağaçları, sıralı listeler, token özellikleri vb. verilebilir.

Her durumda, değerli bilgiler zincir dışında depolanmakta/hesaplanmakta; ancak zincir üstü etkileşimlerde kullanılabilmekte ve büyük etkiler yaratmaktadır. Bunu mümkün kılmak için sözleşmeler, geçerliliği kontrol etmek amacıyla hash'ler veya imzalar gibi çeşitli kriptografik teknikler kullanmaktadır. Dapp'ler ise sözleşme için gerekli bilgileri sağlayabilecek özel mantığa sahip frontend'lere/API'lara ihtiyaç duymaktadır. Ne yazık ki bu örüntü birleştirilebilirliği (composability) zedelemektedir; örneğin AWS üzerinde sunulan özel bir emir defterine dayanan bir DeFi uygulaması, başka bir akıllı sözleşme tarafından kolayca entegre edilememektedir.

Bu sınırlamalardan bıkarak tüm uygulamaların her şeyle kolayca entegre edilebilmesini sağlayacak bir standart ve altyapı geliştirmeye karar verdik. Entegrasyonları yeniden kolaylaştırmanın ekosisteme pek çok yeni fırsat kapısı açacağına güçlü bir şekilde inanıyoruz.

Teknik uygulamayı bize anlatabilir misiniz?

Giriş

Composooor MetaMask snap'i, bir web istemcisi, bir veya birden fazla zincir dışı rastgele kaynak ve composooor standardını uygulayan rastgele sayıda akıllı sözleşme arasındaki iletişimi standartlaştırmak ve yönetmek için kullanılmaktadır. Tüm standart kaynaklar, çoğu durumda composooor'un süper güçlerini tek satırda kullanmayı sağlayan bir npm paketi aracılığıyla kolayca erişilebilir durumdadır.

Adım adım

  • Bir işlem hazırlanırken MetaMask snap cüzdanımız, istenen zincir üstü sözleşmede bir gas tahmini çağrısı yapacaktır.

  • Sözleşmenin çalışması için zincir dışında yapılmış bazı verilere veya hesaplamalara ihtiyaç duyulması halinde, bu eksik verilerin nasıl bulunacağına dair özellikleri içeren standartlaştırılmış bir hata ile geri dönecektir. Standartlaştırılmış hata şu şekilde görünmektedir:

error MissingOffchainDataError(
    address registryAddress,
    string url,
    bytes abiArgs
);
Kopyala

Bu hata, sözleşmelerin zincir dışı kaynaklara erişmek için genişletmesi gereken ComposooorRegister tarafından sunulmaktadır.

  • MetaMask snap cüzdanı bu hatayı çözümleyerek eksik verileri merkeziyetsiz bir protokolden, bir API'dan veya bu kaynaklardan aldığı kodu çalıştırarak üretebilir. ETHDenver hackathon'u için en basit seçenek olan API çağrısını uyguladık.

const responseData = await fetch(error.url + `?args=${error.abiArgs}`);
  • Cüzdan, bu sefer istenen metodu çağırmadan önce alınan verileri ilgili sözleşmenin standartlaştırılmış kayıt defterinde depolamak için bir talimat ekleyerek gas'ı yeniden tahmin edecektir.

const callToRegisterData: Call = {
    callee: error.registryAddress,
    functionSelector: utils.id('recordParameter(bytes)').slice(0, 10) as PrefixedBy0x,
    data: defaultAbiCoder.encode(['bytes'], [data]) as PrefixedBy0x,
};
Kopyala
  • İşlem yürütülürken, aynı veya başka bir sözleşme çalışmak için başka bir zincir dışı kaynağa ihtiyaç duyabilir. Bu durumda cüzdan, artık zincir dışı kaynağa gerek kalmayana kadar işlem hazırlama adımlarını döngüye alır. Bu, zengin zincir dışı kaynaklara erişen protokoller arasında sonsuz birleştirilebilirliği mümkün kılar.

  • Gas tahmini başarılı olduğunda, kullanıcıya gerekli tüm kaynaklar dahil edilerek başarıyla yürütülecek hazırlanmış işlemin imzası sunulur.

Composooor destekli bir uygulamayı entegre etmek / kendinizinkini oluşturmak nasıl görünür.

ETHDenver'da composooor'un olağan hibrit uygulama örüntüsünün kod karmaşıklığını en az %80-90 oranında azalttığını gösterdik.

Akıllı sözleşme tarafı

"@composooor/ComposooorRegister.sol" ile içe aktarın. Örnek kullanım:

contract Example is ComposooorRegister {
    function action() public {
        bytes memory data = consumeParameter("http://api.api/number", abi.encode(arguments));
        (uint256 offchainNumber) = abi.decode(data, (uint256));
        (...)
    }
}
Kopyala

ComposooorRegister, Solidity ile geliştirilmiştir.

Frontend tarafı

Composooor snap, en yüksek getiriyi frontend tarafında sağlar: genellikle 200+ satırlık entegrasyonları… 0'a indirir! Snap mantığı her şeyi halleder.

Demo

React-wagmi dapp biçiminde tam entegre bir demo hazırladık. Bu dapp, bir NFT'yi yalnızca küçük bir ön ödemeyle satın almayı ve geri kalanını finanse etmek için daha sonra geri ödenecek bir kredi almayı mümkün kılmaktadır. Zincir üstünde, işleme dahil olan 8'den az olmayan sözleşme bulunmaktadır. Sürecin ortasında NFT pazaryeri, NFT satıcısının zincir dışı imzasını talep etmektedir. Composooor snap, işlemin karmaşıklığına rağmen hatayı alabilmekte, çözümleyebilmekte ve bilgiyi zincir üstüne (bir API'dan alındıktan sonra) sağlayabilmektedir. Composooor bu uygulamayı hayata geçirmeyi çok daha basit hale getirdi.

Bunu uygulasaydınız sonraki adımlar ne olurdu?

Geliştiricilerin önemli ölçüde zaman kazanmasını sağlayan ve yeni blokzincir kullanım senaryolarını mümkün kılan böyle bir yeniliğin bir parçası olan benimsenmedir. Arka planda Composooor snap kullanan ve ilgili snap ile çalışan birden fazla kullanıcıya yönelik uygulama uygular ve dağıtırdık. Bu uygulamalar ilgi görürse, basitleştirilmiş geliştirici deneyimiyle beslenen bir benimseme döngüsü başlatmak için diğer uygulamalarla birleştirmek üzere ortaklıklar kurardık. Bu süreçte snap ve standart, özgün vizyona uyan daha genel ve standartlaştırılmış bir ürüne dönüşürdü: blokzincirleri, merkeziyetsizleşme ve kullanım senaryoları açısından agnostik bir şekilde rastgele kaynaklara eş zamanlı olarak bağlamak.

Kendiniz ve ekibiniz hakkında biraz bilgi verebilir misiniz?

Daha sermaye verimli bir yaklaşımla NFT'leri teminat olarak kullanmak için bir borç verme protokolü geliştiren bir ekibiz. Emir defteri gibi zincir dışı bileşenler kullanan bir mimariyle gitmeye karar verdik. Bu tercih sermaye verimliliğini ve kullanıcı deneyimini iyileştirmeye olanak tanısa da diğer protokollerle birlikte çalışabilirliği sınırlayabilir. Bu nedenle diğer protokollerle kolay entegrasyona olanak tanıyan Composooor snap'i geliştirdik. Bu kütüphanenin diğer ekipler tarafından kullanılmasını, yeni olanaklar açmasını ve işlerini kolaylaştırmasını umuyoruz.

MetaMask Snaps ile Web3 alanı için ne gibi fırsatlar görüyorsunuz?

Cüzdanlar, web3'ün kaçınılmaz ana dayanaklarından/yapı taşlarından biridir ve MetaMask, çoğu kullanıcı için fiilen varsayılan cüzdandır. Geliştiricilerin bunu rastgele yeni kullanım senaryoları için kullanabilmesini sağlamak bana çok kritik görünüyor. Asıl mesele şu: cüzdanların parçası olması gereken tüm yenilikleri hayal edemez veya bunlara hazırlanamayız; dolayısıyla onlara bir miktar erişim vermek, Bitcoin'den Ethereum'a geçiş gibidir: teknolojinizin üzerinde rastgele kullanım senaryolarını mümkün kılmak, öngörülemeyen ve katlanarak büyüyen bir potansiyel sunar. Bu soruyu yanıtlamak zor ama beni en çok heyecanlandıran şey, cüzdanın yalnızca mesaj imzalamanın ötesine geçmesini sağlayan ve kullanıcı için bağlam açısından zengin bir şekilde etkileşimleri optimize eden uygulamalardır.

MetaMask Snaps'i denemek isteyen geliştiricilerle paylaşmak istediğiniz tavsiyeler var mı?

Sağlanan şablondan yararlanın ve gerekli her kullanıcı onayını doğru şekilde talep etmeye dikkat edin; mümkün olduğunca az onay kullanın.

MetaMask Snaps ile Geliştirme

MetaMask Snaps'e başlamak için:

  1. Geliştirici belgelerine göz atın

  2. MetaMask Flask'ı yükleyin

  3. Bir MetaMask Snaps kılavuzuna bakın

  4. Twitter, GitHub tartışmaları ve Discord üzerinden bizimle bağlantıda kalın

Yakınınızdaki bir sonraki hackathon'da ekibimizi takip edin! Mutlu BUIDLing ⚒️

Sorumluluk Reddi: MetaMask Snaps genellikle Consensys Software dışındaki üçüncü taraflarca geliştirilmektedir. Üçüncü taraflarca geliştirilen MetaMask Snaps'lerin kullanımı tamamen kendi takdirinize ve riskinize bağlıdır; bu tür faaliyetlerden kaynaklanabilecek herhangi bir kayıp veya zarardan yalnızca sizin sorumlu olacağınızı kabul etmiş sayılırsınız. Consensys, üçüncü taraflarca geliştirilen MetaMask Snaps'ler için sözlü veya yazılı hiçbir açık ya da zımni garanti vermemekte ve üçüncü taraflarca geliştirilen Snaps'ler için tüm sorumluluğu reddetmektedir. Blokzincir ile ilgili yazılımların kullanımı risk taşımakta olup MetaMask Snaps'i kullandığınızda bu riskleri tamamen üstlenmiş olursunuz.

Yapay zeka tarafından çevrildi. Hatalar içerebilir. Lütfen her zaman bilgileri doğrulayın.

Çeviriyi değerlendir

Bu makalenin yazarı:

  • MetaMask

    MetaMask, eski adıyla Consensys Software Inc, dünyada yaklaşık 190 ülkede kullanıcılara ulaşarak insanlara hem kripto hem de geleneksel varlıklar genelinde paralarını tutma, harcama, biriktirme ve büyütme imkânı sunan, dünyanın en büyük self-custodial finansal platformudur. Şirket, ödemeleri, tasarrufları, yatırımları ve dijital varlıkları tek ve kesintisiz bir deneyimde bir araya getiren tüketici platformunu inşa etmektedir. Dünyanın en yaygın kullanılan self-custodial cüzdanından büyüyen MetaMask, kullanıcılara para ve varlıkları üzerinde doğrudan kontrol imkânı tanımaktadır. MetaMask, 2016'dan bu yana Ethereum'un büyümesinde temel bir rol üstlenmiştir. Bugün MetaMask, blokzincir ekonomisinin merkezinde yer alarak Açık Para için işletim sistemini inşa etmekte ve insanları finansal yaşamları üzerinde tam anlamıyla söz sahibi kılmaktadır.

    Tüm makaleleri oku