Kendi kendini başlatan Solana çoklu imza cüzdanı

·7 dk okuma·Yazar: SSP Editorial Team
SSP markalı lacivert bir kapak üzerinde kendi kendini başlatan SSP Solana çoklu imza cüzdanı şeması

Adresin üye kümesi olduğu Solana çoklu imza cüzdanı

Bir çoklu imza cüzdanı, herhangi bir harcamayı onaylamak için iki veya daha fazla anahtara ihtiyaç duyar. Bitcoin'de cüzdan adresi yalnızca kendi kurallarının bir özetidir: açık anahtarların listesi ve "kaç imza gerekir" sayısı. Bu adresi bir not kâğıdına hesaplayabilir, dağıtabilir ve herhangi biri blok zincirine dokunmadan çok önce fon alabilirsiniz.

Solana geleneksel olarak bunu yapamaz. Bu serinin ilk makalesinin açıkladığı gibi, baskın Solana çoklu imzaları, cüzdan adresi henüz var olmadan, oluşturanın seçtiği rastgelelikle bir oluşturma işlemi çalıştırmanızı ister. SSP'nin kendi Solana çoklu imza programı ise Bitcoin yaklaşımını benimser. O kendi kendini başlatır: cüzdan adresi üye kümesinin kendisidir.

Baştan bir not: SSP'nin Solana çoklu imza programı açık kaynaklıdır (RunOnFlux/Solana-Multisig) ve şu anda yalnızca devnet'te — Solana'nın test ağında — çalışır. Mainnet'e dağıtım, harici bir güvenlik denetimine bağlıdır.

İki adres: çoklu imza ve vault

SSP'nin tasarımı her çoklu imza cüzdanı için iki ayrı adres kullanır.

Çoklu imza adresi kuralları tutar: sıralanmış üye anahtarları listesi, eşik ("M-of-N"deki M) ve önerilen işlemlerin sayacı. SSP'nin programına aittir.

Vault adresi parayı tutar: SOL ve SPL token'ları. Solana'nın yerleşik System Program'ına aittir ve kendine ait veri saklamaz. Vault, yatırma adresidir: size ödeme yapmak isteyen herkese verdiğiniz adres.

İkisi de bir Program Derived Address ya da PDA'dir: özel anahtarı olmayan, hiçbir anahtarın kontrol edememesi için kasıtlı olarak kriptografik eğrinin dışına yerleştirilmiş bir adres. Yalnızca onu türeten program, ondan yapılacak hareketleri yetkilendirebilir. Bu ayrıntı sonda önem kazanır.

Adres üyelerden nasıl hesaplanır

İşte cüzdanı kendi kendini başlatır kılan kısım bu. Çoklu imza adresini türetmek için, sade bir dille: multisig etiketini, sıralanmış üye listesinin bir SHA-256 özetini ve eşiği alın; ardından bunları SSP'nin program kimliğiyle birlikte Solana'nın adres türetme fonksiyonuna verin. Üç ayrıntı dikkat ister.

Üyeler önce sıralanır ve yinelenenlerden arındırılır. A, B, C üyeli bir 2-of-3 cüzdan, onları C, A, B ya da B, C, A olarak listeleseniz de aynı adresi üretir. Sıra önemli değildir; yalnızca küme önemlidir.

Tam 32 baytlık özet kullanılır — asla kısaltılmış bir sürüm değil. Özeti kısaltmak gerçek bir saldırı açar: bir saldırgan, aynı kısaltılmış değere özetlenen farklı bir üye kümesi arayabilir, ardından kendi üyelerini sizin adresinize kaydedebilir ve önceden yüklediğiniz tüm fonları boşaltabilir. Tam 32 baytlık özet bu aramayı astronomik düzeyde pahalı kılar, bu yüzden hiç gerçekleşmez.

Eşik, adresin bir parçasıdır. Tam olarak aynı üyelere sahip bir 2-of-3 cüzdan ile bir 3-of-3 cüzdan, farklı adreslerdeki farklı cüzdanlardır. Kurallar kimliğe işlenmiştir.

Vault adresi daha sonra çoklu imza adresi artı küçük bir indeks numarasından türetilir (SSP her zaman 0 indeksini kullanır), böylece vault da tamamen üye kümesi ve eşik tarafından belirlenir.

Pratik sonuç: herkes her iki adresi de çevrimdışı olarak, tek bir işlem gönderilmeden önce hesaplayabilir. Vault adresini dağıtabilir ve zincirde henüz var olmayan bir cüzdana fon alabilirsiniz — Bitcoin'in özelliği Solana'ya taşınmıştır.

İzinsiz kayıt: herkes onu açabilir

Cüzdan adresi, üyeleri bildiğiniz an var olur. Ama ondan harcamak için kuralların sonunda zincire yazılması gerekir — program bu adıma initialize der.

Çoğu Solana çoklu imzasında, eşdeğer adımı yalnızca ayrıcalıklı bir oluşturan yapabilir. SSP'nin programında başlatma izinsizdir: bunu herkes yapabilir. Oluşturan hesabı yok, üye imzası yok, özel izin yok. Genellikle SSP'nin relay hizmeti küçük kira ücretini öder ve cüzdanı açar, ama bunu kimin yaptığı gerçekten önemli değildir.

Bu, güvenlik kontrolünü görene kadar endişe verici görünür. Biri cüzdanı başlattığında program, sağladığı üye listesinin SHA-256 özetini yeniden hesaplar ve bu özet adrese işlenmiş özetle eşleşmedikçe işlemi reddeder. Solana'nın hesap çerçevesi adresi bağımsız olarak aynı özete bağlar. Bu iki kontrol birlikte şu anlama gelir: kanonik adres yalnızca kanonik üye kümesini tutabilir. Kimse adresinizi kendi seçtiği bir üye listesiyle kaydedemez — özet eşleşmez ve işlem başarısız olur.

Cüzdanınızı başlatan bir yabancı neden size zarar veremez

Bir saldırganın gerçekte ne deneyebileceğini gözden geçirelim.

Onu farklı bir üye kümesiyle başlatır. Farklı bir küme farklı bir değere özetlenir, o da farklı bir adres türetir. Saldırgan yalnızca Solana'da başka bir yerde, ilgisiz kendi cüzdanını oluşturmuştur — vault'unuzla bağlantı yok, fonlarınız üzerinde hak yok.

Onu sizin üye kümenizle başlatır. Özet eşleşir, dolayısıyla işlem başarılı olur, ama yaptığı tek şey kira ücretinizi sizin için ödemektir. Cüzdan artık tam beklediğiniz kurallarla kayıtlıdır ve saldırgan üye olmadığından hiçbir şey öneremez, onaylayamaz veya yürütemez. Para asla çoklu imza adresinin kendisinde durmaz — sistemin sahip olduğu ve ele geçirilemeyen vault'ta durur. Cüzdanı kim başlatırsa başlatsın ve ne zaman olursa olsun, sonuç aynı kanonik, doğru kurallı cüzdandır.

Eşik, kayıt sırasında değil harcarken denetlenir

Bu, Bitcoin'in P2WSH çoklu imzasının kullandığı modelin aynısıdır ve açıkça söylemekte yarar var: M-of-N eşiği yalnızca fonlar hareket ettiğinde uygulanır — asla kayıtta değil.

Kayıt yalnızca "üyeler bunlar, eşik bu" diye not eder. İmza istemez çünkü hiçbir zarar veremez. Asıl kapı, programın onayları saydığı ve yeterli sayıda üye uygun görene dek hareket etmeyi reddettiği harcama akışıdır. Adres kuralların özetidir; herkes onu fonlayabilir; yalnızca geçerli imzalar harcayabilir. "M-of-N"in ne demek olduğunu hatırlamak için 2-of-2 vs 2-of-3 vs M-of-N çoklu imza yazısına bakın.

Baştan sona tüm yaşam döngüsü

Parçaları bir araya getirince, bir SSP Solana çoklu imza cüzdanının ömrü:

  1. Türet. Herkes çoklu imza ve vault adreslerini üyeler ve eşikten çevrimdışı hesaplar. Blok zinciri yok, maliyet yok.
  2. Önceden fonla. Herkes vault adresine SOL veya token gönderir — bu, cüzdan henüz kaydedilmeden bile çalışır.
  3. Başlat. Herkes, genellikle SSP'nin relay'i, izinsiz kayıt işlemini gönderir. Program üye özetini doğrular ve kanonik kuralları zincire yazar.
  4. Öner. Bir üye, özel bir öneri hesabında kompakt biçimde saklanan bir işlem önerisi oluşturur.
  5. Onayla. Her üye öneriyi birer kez onaylar. Onaylar zincirde birikir.
  6. Yürüt. Onaylar eşiğe ulaştığında herkes yürütmeyi tetikleyebilir. Program önce öneriyi yürütüldü olarak işaretler — asla iki kez çalışmaması için kasıtlı bir koruma — ardından her talimatı, vault'un kendisi imzacı olarak hareket ederek gerçekleştirir.

Bu son adım, anahtarsız vault adresinin işe yaradığı yerdir. Vault, özel anahtarı olmayan bir PDA olduğundan, hiçbir insan ve hiçbir program fonlarını alışıldık biçimde imzalayarak hareket ettiremez. Tek çıkış yolu, SSP'nin programının onaylanmış, eşiğe ulaşmış bir öneriyi yürütmesidir — vault'un türetme tarifini Solana çalışma zamanına sunarak vault için "imza atar"; bu izni yalnızca adresin sahibi olduğu için elde eder.

Ne oluşturan, ne yönetici, ne yerinde anahtar döndürme

Son iki özellik tasarımı birbirine bağlar.

Üye kümesi ve eşik değiştirilemezdir. Cüzdan bir kez başlatıldığında, programdaki hiçbir talimat üyelerini veya eşiğini değiştiremez — bunun için bir kod yolu yoktur. Bir cüzdanı kimin kontrol ettiğini değiştirmek için — başka sistemlerin gevşekçe "anahtar döndürme" dediği şey — yeni üye kümesiyle yeni bir çoklu imza oluşturur ve fonları oraya taşırsınız. Eski adres eski kurallarını sonsuza dek korur.

Hiçbir zaman oluşturan rolü ve yönetici anahtarı yoktur. Birçok çoklu imza tasarımı, üyeleri geçersiz kılabilen veya yapılandırmayı değiştirebilen ayrıcalıklı bir hesap tutar. SSP'nin programında hiçbiri yoktur — ele geçirilecek bir şey yok, oltalanacak bir yönetici anahtarı yok, zorlanacak bir oluşturan yok. Üyeler ve eşik, hikâyenin tamamıdır.

Bu minimalizm kasıtlı bir ödünleşmedir: SSP, özelliklerle dolu bir yönetişim platformu yerine küçük, deterministik bir ilkel yapı kurdu. Sonraki makale, SSP'nin Solana çoklu imzası Squads'a karşı, bu tasarımı dürüstçe Squads V4 ile — olgun, denetlenmiş, baskın Solana çoklu imzası — karşılaştırır. Ürün bağlamı için, Solana desteğinin lansman duyurusu SSP Wallet v1.39.0 ile gelenleri anlatır.

Temel fikir, akılda tutulacak kadar küçüktür: SSP'nin Solana çoklu imzasında cüzdan adresi, kendi kurallarının bir parmak izidir. Üyeleri ve eşiği bilin, adresi de bilirsiniz. Başka hiçbir şeye gerek yoktur ve başka hiçbir şeye güvenilmez.

Bu makaleyi paylaş

İlgili makaleler