Sözlük / Geliştirici başvuru kaynağı
OP_RETURN
- OP_RETURN nedir?
- OP_RETURN, bir işlem çıktısını kanıtlanabilir biçimde harcanamaz kılan işlem kodudur; bu sayede canlı coin kümesini şişirmeden blok zincirine az miktarda keyfi veri yazılabilir.
Betiği 0x6a ile başlayan bir çıktı hiç kimse tarafından harcanamaz, bu yüzden tam düğümler bu çıktıyı el altında tutmak zorunda oldukları UTXO kümesinden çıkarır. Bitcoin Core 0.9.0 bu tür çıktıları Mart 2014 itibarıyla 40 baytlık bir payla standart hale getirdi ve bu pay 0.11.0 sürümünde 80 bayt veriye çıkarıldı. Bitcoin satın alıp elinizde tutuyorsanız böyle bir çıktı oluşturmanız hiçbir zaman gerekmeyecek, ancak başkalarının çıktılarının bedelini ücret piyasası üzerinden siz ödersiniz.
Nasıl çalışır
OP_RETURN, betiği kendisine ulaşıldığı anda başarısız kılar. Bu şekilde kilitlenmiş bir çıktıyı hiçbir şey karşılayamaz ve anahtarı kimsede olmayan bir hash'e Bitcoin gönderilen bir yakma adresinden farklı olarak, buradaki imkansızlık yalnızca muhtemel değil, yazılım tarafından görülebilir. Bu görünürlük işin bütün özüdür: bir düğüm harcanabilir her çıktının bir dizinini tutar ve ölü olduğu kanıtlanabilen bir çıktı bu dizine hiçbir zaman girmek zorunda kalmaz.
Böyle bir çıktı oluşturan cüzdanlar değerini sıfır yapar ve veriyi opcode'un ardına, genellikle tek bir push olarak koyar. Sonuç, birine ödeme yapan normal bir çıktının yanı sıra bayt taşıyan ve para taşımayan ikinci bir çıktı içeren bir işlemdir.
Opcode'un ilk sürümü bir felaketti. 2010 yılında bir girdi betiği ile bir çıktı betiği birleştirilerek çalıştırılıyordu ve OP_RETURN değerlendirmeyi başarı bildirerek bitiriyordu, böylece harcayan kişi onu sona ekleyip başkasına ait bitcoinlerle çekip gidebiliyordu. O yılki düzeltme hem yürütmenin iki yarısını ayırdı hem de opcode'u koşulsuz bir başarısızlığa dönüştürdü. Opcode'un veri taşıyıcısı olarak bugünkü kullanımı ise dört yıl sonra, geliştiriciler zaten veriyi düğümlerin hiçbir zaman budayamadığı sahte genel anahtarlara tıkıştırmaya başladıktan sonra geldi.
Ardından aktarma sınırları geldi ve bunların hiçbiri konsensüs kuralı değildi. Bitcoin Core, 0.9.0 sürümünde standart bir 40 baytlık taşıyıcı sundu, 0.11.0 sürümünde Temmuz 2015 itibarıyla payı 80 bayta çıkardı ve işlem başına bu türden tek çıktıya izin verdi. 30.0 sürümü, uzun ve sert bir kamu tartışmasının ardından varsayılan boyut sınırını ve tek çıktı kuralını kaldırdı; gerekçe, sınırların kolayca atlatıldığı ve veriyi daha kötü yerlere ittiğiydi. Bitcoin Knots daha sıkı varsayılanları korudu ve düğüm politikasındaki bu ayrılık bugün Bitcoin konusundaki canlı anlaşmazlıklardan biridir.
Bitcoin satın alırken bu neden önemli
Sizden hiçbir zaman bir OP_RETURN çıktısı oluşturmanız istenmeyecek ve bir web sitesi size Bitcoin'i böyle bir çıktıya göndermenizi söylüyorsa bu bir dolandırıcılıktır: gönderilecek bir şey yoktur. Bazı borsalar ve zincirler memo alanları kullanır, ancak bir Bitcoin çekme işlemi hiçbir zaman bir memo gerektirmez.
Size yansıyan ücrettir. Zincir üstü yazılan veri, aynı sınırlı alan için çekme işleminizle rekabet eder ve etkisi ölçülebilir. 20 Nisan 2024 tarihinde çıkarılan 840.000 numaralı blok yaklaşık 37,6 Bitcoin ücret topladı; bu, bugüne kadarki herhangi bir bloğun en yükseğidir, çünkü tam o yükseklikte yeni bir token protokolü etkinleşti ve binlerce kişi ona yazmak için yarıştı. O öğleden sonra bir borsadan para çekme işlemi yapan herkes bu ayrıcalık için piyasadaki oranın birkaç katını ödedi.
Savunma, öfkelenmek değil zamanlamadır. Ücretler tek bir hafta içinde bir büyüklük mertebesi kadar dalgalanır, bu yüzden bitcoinlerinizi birleştirmek, bir borsadan çekmek veya acil olmayan herhangi bir transferi sakin bir hafta sonu yapmak, aynı transferin bir veri hücumu sırasındaki maliyetinin çok küçük bir bölümüne mal olur. Tam da bu nedenle, sizin adınıza tahmin etmek yerine kendi ücret oranınızı belirlemenize izin veren cüzdanları tercih etmeye değer. Politika sorusu sizin için önemliyse, Bitcoin Core yerine Bitcoin Knots çalıştırmak bunu doğrudan ortaya koymanın yoludur, çünkü aktarma politikasını her düğüm işletmecisi tek tek seçer.
Çözümlü örnek: 80 bayt neye mal olur
En büyük boyutlu eski tip taşıyıcı çıktı ağ üzerinde 92 bayttır: sıfıra ayarlanmış 8 bayt değer, betik uzunluğu için bir bayt, ardından opcode, bir push talimatı, bir uzunluk baytı ve 80 bayt veriden oluşan 83 bayt betik. Bunların hiçbiri tanık verisi değildir, bu yüzden her bayt dört ağırlık birimi sayar ve bu da 368 ağırlık birimi ya da 92 sanal bayt eder. Sanal bayt başına 10 satoshi ile bu, işlemin kalanı hesaba katılmadan 920 satoshidir.
Karşılaştırma için, sıradan bir yerel SegWit çıktısı 31 bayt, yani 31 sanal bayttır, dolayısıyla veri çıktısı birine ödeme yapmanın üç katı maliyettedir. Veri hiçbir zaman ücretsiz olmadı ve ücret piyasası Bitcoin'in sahip olduğu tek tayınlama mekanizmasıdır.
OP_RETURN vs Boş veri işlemi
OP_RETURN opcode'tur; boş veri işlemi ise bu çıktılardan biri bir işlemde göründüğünde Bitcoin Core yazılımının tüm işlem düzenine verdiği addır. Yazılım, çözümlenmiş JSON içinde çıktı türünü "nulldata" olarak bildirir ve blok gezginlerinin genellikle gösterdiği dize budur. Ayrım küçüktür ama yaygın bir yanlış okumayı önler: boş veri işlemi, para hareket ettirmeyen bir işlem değildir. Neredeyse her zaman birine de ödeme yapar ve veri ikinci bir çıktıda birlikte gider.
OP_RETURN vs Yazıt
Yazıtlar OP_RETURN'ü hiç kullanmaz ve Bitcoin'de veri saklama konusundaki bitmek bilmeyen karışıklığın kaynağı budur. Ocak 2023'te yayımlanan ordinals düzeni, içeriği hiçbir zaman yürütülmeyen bir Taproot betik dalının içine saklar ve bu dal, her baytın dört yerine bir ağırlık birimine mal olduğu tanığın içinde yaşar. Pratik sonuç ölçektir. Bir OP_RETURN verisi aktarma politikasıyla on yıl boyunca 80 baytla sınırlı tutuldu, oysa tek bir yazıt bayt başına ağırlık maliyetinin dörtte biriyle koca bir bloğun boyutuna yaklaşabilir. Nisan 2024'te piyasaya sürülen Runes ise ters yöne gitti ve protokol mesajlarını bilerek OP_RETURN içinde kodlar; bu yüzden Bitcoin'de veri üzerine yapılan iki tartışma aslında iki farklı mekanizma üzerine yapılan tartışmalardır.