Sözlük / Protokol ve güncellemeler
Miniscript
- Miniscript nedir?
- Miniscript, Bitcoin Script'in kullanışlı alt kümesini yazmanın yapılandırılmış bir yoludur; böylece yazılım bir harcama politikasını analiz edebilir, maliyetlerini hesaplayabilir ve onun için otomatik olarak imza atabilir.
Düz Bitcoin Script yazması kolay, üzerine akıl yürütmesi ise neredeyse imkânsızdır: hiçbir şey size bir script'in harcanabilir olup olmadığını, tanığının (witness) ne kadar büyük olacağını veya bir dalın ölü olup olmadığını söylemez. Miniscript, dilbilgisini bu yanıtları kendileriyle birlikte taşıyan, bir araya getirilebilir parçalardan oluşan bir kümeye indirger. Bitcoin Core, bunu 24.0 sürümünden beri tanımlayıcılarda (descriptor) anlar ve 25.0 sürümünden beri onun için imza atabilir.
Nasıl çalışır
Miniscript, her biri bilinen bir opcode düzenine karşılık gelen parçalardan ve parçaları garantilerini bozmadan birbirine bağlayan birleştiricilerden inşa edilir.
Sözcük dağarcığı küçüktür. Parçalar koşulları adlandırır: bir imza için pk(key), göreli bir zaman kilidi için older(4320), mutlak bir zaman kilidi için after(800000), bir hash ön görüntüsü için sha256(h). Birleştiriciler yapıyı adlandırır: and_v, or_d, thresh ve andor, insanların kurduğu neredeyse her şeyi kapsar. Bir kurtarma cüzdanı or_d(pk(daily_key),and_v(v:pk(backup_key),older(52560))) olarak okunur; bu, bir insanın kontrol edebileceği ve bir derleyicinin script'e dönüştürebileceği bir politikadır.
Her parça bir tür ve bir dizi özellik taşır ve bütün işi yürüten şey bu tür sistemidir. Birleştirmeye yalnızca özelliklerin uyuştuğu yerde izin verilir; böylece kimsenin karşılayamayacağı bir script üretecek ya da bir üçüncü tarafın aktarım sırasında değiştirebileceği bir script üretecek bir politika, paranız içinde zincir üstünde başarısız olmak yerine derlenmez.
Yapı bilindiği için, herhangi bir şeye para yatırmadan önce üç soru kesin yanıt alır. En kötü durumdaki tanık, ağırlık birimi cinsinden ne kadar büyüktür. Hangi anahtar, ön görüntü ve geçen süre kombinasyonları bunu gerçekten harcayabilir. Script sınırların içine sığar mı, yani konsensüs gereği 10.000 bayt ve bir P2WSH tanık script'i için, düğümlerin harcamanızı hiç aktarıp aktarmayacağını belirleyen daha sıkı 3.600 baytlık standartlık sınırı.
Son parça karşılamadır (satisfaction). Bir script ve bir imzalayanın elindeki malzeme verildiğinde, bir Miniscript uygulaması en ucuz geçerli tanığı kendi başına oluşturabilir. Bu yüzden bir cüzdan, her biri için özel imzalama kodu eklemeden her türlü politikayı destekleyebilir.
Nerede görülür
Miniscript, tek anahtar tek imzadan başka bir şey yapan bir cüzdan isteyene kadar görünmez kalır.
Bitcoin Core ona aşamalı olarak ulaştı: 24.0 sürümü, izleme amacıyla P2WSH tanımlayıcıları içinde Miniscript'i ayrıştırdı ve 25.0 sürümü, onlar için imza atma yeteneğini ekledi; politika cüzdanlarını referans istemciden kullanılabilir kılan sürüm budur. Ledger Bitcoin uygulaması, politikaları BIP-388 içinde tanımlanan cüzdan politikası biçimi aracılığıyla kaydeder; böylece bir donanım cihazı, daha önce hiç görmediği bir script'i görüntüleyip onaylayabilir.
En net tüketici ürünü, tüm dayanağı bir Miniscript politikası olan Liana cüzdanıdır: bugün normal anahtarınızla harcayın veya belirli sayıda bloktan sonra başka birinin elindeki bir kurtarma anahtarıyla harcayın. Miras planlaması ve kademeli bir onay yolu olan işletme hesapları aynı biçimdedir.
Tek imzalı bir cüzdan tutuyorsanız bunların hiçbiri sizi ilgilendirmez. Bir şirketin faaliyette kalmasına bağlı olmayan bir yedek yol istediğinizde önem kazanmaya başlar ve en çok, kendi yazdığınız bir script'in aksi halde tek seçenek olacağı noktada önemlidir.
Miniscript vs çıktı tanımlayıcısı
Bir tanımlayıcı hangi anahtarları ve hangi script türünü belirtir; Miniscript ise script'in içinde ne yaptığını söyler. Bunlar alternatifler değil katmanlardır ve iç içe geçerler: wsh(or_d(pk(A),and_v(v:pk(B),older(52560)))) iç ifadesi Miniscript olan bir tanımlayıcıdır.
Miniscript'ten önce tanımlayıcılar yalnızca wpkh, sortedmulti ve tr gibi sabit bir şablon menüsünü adlandırabiliyordu. Bu menünün dışındaki her şey, elle yazılmış onaltılık kod ve adresi izleyebilen ama ondan asla harcama yapamayan bir cüzdan demekti. Miniscript, tanımlayıcının sağlama toplamını, anahtar kökenlerini ve türetme yollarını tam olarak olduğu gibi koruyarak iç yuvayı her türlü politikaya açar; bu yüzden bir Miniscript yedeği hâlâ yazdırabileceğiniz tek satır metindir.