İçeriğe geçin
buybitcoinsmart

Sözlük / Protokol ve güncellemeler

Taproot eki

Taproot eki nedir?
Taproot eki, 0x50 baytıyla etiketlenen, konsensüs kurallarının imzada kapsadığı ancak doğrulama sırasında bunun dışında yok saydığı ayrılmış bir tanık öğesidir.

Tanımlandığı belge: BIP-341.

BIP-341 bu alanı gelecekteki yumuşak çatallanmalar için ayırdı ve ona hiçbir anlam yüklemedi, bu nedenle bugün hiçbir düğüm içeriğini okumaz. Bitcoin Core yazılımının IsWitnessStandard işlevi, 0x50 etiketli bir ek taşıyan Taproot harcamasını reddeder, yani işlem aktarılmaz ve BIP-341 bunun kalıcı fon kaybına yol açabileceği uyarısını yapar. Cüzdanların bir ek iliştirmek için hiçbir nedeni yoktur, dolayısıyla Bitcoin satın alırken veya elde tutarken yaptığınız hiçbir şey buna bağlı değildir.

Nasıl çalışır

Taproot eki, işlem biçiminde adlandırılmış bir alanla değil konumuyla tanımlanır. Bir Taproot girdisi en az iki tanık öğesi taşıyorsa ve son öğenin ilk baytı 0x50 ise, o öğe ektir ve başka herhangi bir şey incelenmeden önce tanık yığınından çıkarılır. Ancak bundan sonra bir düğüm neye baktığına karar verir: geriye tek öğe kalması anahtar yolu harcaması, iki veya daha fazla öğe kalması script yolu harcaması anlamına gelir.

BIP-341 0x50 değerini bilerek seçti. Yaprak sürümleri, bir P2WPKH veya P2WSH tanığının ilk baytıyla karıştırılmaması gereken çift ve tek eşler halinde gelir ve 0x50 eşleşmemiş bir artık değerdi, bu yüzden gelecekteki script sürümlerinden en azını tüketiyordu. Kural tersten de işler: bir yaprak sürümü 0x50 olamaz, çünkü o baytla başlayan bir kontrol bloğu bir ekten ayırt edilemezdi.

Ekin yapmadığı şey doğrulamayı etkilemektir. BIP-341, alanın "is always covered by the signature and contributes to transaction weight, but is otherwise ignored during taproot validation." (her zaman imzayla kapsanır ve işlem ağırlığına katkıda bulunur, ancak bunun dışında Taproot doğrulaması sırasında yok sayılır) olduğunu söyler. Her Taproot imza mesajı (ext_flag * 2) + annex_present değerine eşit bir baytlık spend_type taşır ve bir ek varsa mesaj ayrıca ekin uzunluk önekinin ve 0x50 baytı dahil ekin kendisinin 32 baytlık SHA256 özeti olan sha_annex değerini taşır. Yokluk da varlık kadar sıkı imzalanır, yani kimse mempool içinde işleminize bir ek ekleyemez veya bir eki sökemez. BIP-341 imza mesajını 174 bayt olarak belirtir; ANYONECANPAY için 49 çıkarılır, NONE için 32 çıkarılır, bir ek varsa 32 eklenir ve üst sınır 206 bayttır.

Nerede görülür

Olağan kullanımda bir Taproot eki görmezsiniz ve bu, tasarımın çalıştığını gösterir. Bitcoin Core yazılımının src/policy/policy.cpp dosyasındaki aktarma politikası, 32 baytlık program içeren her tanık sürümü 1 girdisini kontrol eder ve tanık iki veya daha fazla öğe taşıyıp sonuncusu src/script/script.h dosyasında 0x50 olarak tanımlanan ANNEX_TAG sabitiyle başladığında false döndürür. Bu kontrolün yanındaki yorum politikanın tamamıdır: "Annexes are nonstandard as long as no semantics are defined for them." (ekler, onlar için hiçbir anlam tanımlanmadığı sürece standart dışıdır). Bir ek taşıyan işlem konsensüs açısından geçerlidir ve pratikte iletilemez: varsayılan bir düğüm onu aktarmak yerine düşürür.

Bir ek gerçekten tek bir yerde görünür: şimdiye kadar yaptığınız her Taproot imzasında, spend_type alanı burada ek yok diyen sıfır bir bit taşır. Bu taahhüt, gelecekteki bir yumuşak çatallanmayı kullanılabilir kılacak şeydir: BIP-341 amaçlanan işi, bir düğümün harcanan çıktıyı getirmesi gerekmeden pahalı yeni işlem kodlarının doğrulama maliyetini işaretlemek olarak adlandırır.

Taproot eki vs OP_RETURN

OP_RETURN, kimsenin harcamayacağı baytları yayımlamak için Bitcoin'in ayrılmış yuvasıdır ve Taproot eki hiç de bir yayımlama yuvası değildir. İkisi de konsensüsün yok saydığı veriler için yer olarak tanımlanır ve zıt biçimlerde davranır. OP_RETURN verisi bir çıktıda yaşar, her düğümün doğruladığı işlemin parçasıdır ve üzerinde anlaşılmış tek bir anlam bildirir: burada harcanabilir hiçbir şey yok. Ek baytları tanıkta yaşar, yığın okunmadan önce çıkarılır ve şartnamenin kendi uyarısını taşır: "users SHOULD NOT include annex in transactions, or it may lead to PERMANENT FUND LOSS." (kullanıcılar işlemlere ek dahil ETMEMELİDİR, aksi halde KALICI FON KAYBINA yol açabilir).

Bu uyarı bir süs değildir. Bir yumuşak çatallanma yalnızca kural ekleyebilir, bu yüzden bugün yok sayılan baytlar yarın reddedilebilir ve imzanız eki kapsar, bu yüzden onu zaten imzalanmış bir işlemden çıkaramazsınız. Bir kasa veya bir Lightning kanalının yaptığı gibi harcamaları yıllar öncesinden önceden imzalayan herkes, anlamı henüz kimsenin yazmadığı bir alana bağlanmış olur.

Karıştırılmaması gerekenler

Sık sorulan sorular

Taproot ekine veri koyabilir miyim?

İşleyen hiçbir biçimde koyamazsınız. Bitcoin Core yazılımı ek taşıyan bir Taproot harcamasını standart dışı sayar ve onu aktarmaz, bu yüzden işlem bir bloğa ancak doğrudan kendisine teslim ettiğiniz bir madenci aracılığıyla ulaşabilir ve BIP-341 bir ek dahil etmenin kalıcı fon kaybına yol açabileceği uyarısını yapar.

bc1p adresinden gönderdiğimde cüzdanım eki kullanır mı?

Hayır. İmzalama yazılımının bir ek iliştirmek için hiçbir nedeni yoktur: alanın henüz tanımlanmış bir anlamı yok, BIP-341 kullanıcılara onu dahil etmemelerini söyler ve Bitcoin Core yazılımı ek taşıyan bir Taproot harcamasını aktarmaz. Yine de imzanız, yaptığınız her Taproot harcamasında spend_type baytı aracılığıyla ekin yokluğunu kapsar.

Ek neden 0x50 ile etiketlenir?

Çünkü 0x50 eşleşmemiş, artık kalmış bir bayttı. Yaprak sürümleri, bir P2WPKH veya P2WSH tanığının ilk baytıyla karıştırılamayacak biçimde çiftler halinde, biri çift biri tek olarak gelmek zorundadır ve ek (annex) etiketinde eşleşmemiş bir değerin harcanması, gelecekteki script sürümleri için en fazla alanı bırakıyordu.

Sıradaki okuma

İlgili terimler

Daha fazlası: Protokol ve güncellemeler

Bu sayfayı İngilizce okuyun