İçeriğe geçin
buybitcoinsmart

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.

Karıştırılmaması gerekenler

Sık sorulan sorular

Bitcoin blok zincirine bir mesaj yazabilir miyim?

Evet, bir OP_RETURN çıktısı içinde yazabilirsiniz ve bunun her baytı için geçerli ücret oranını ödersiniz. En fazla 80 baytlık eski tip veri yükü, işleminize yaklaşık 92 sanal bayt ekler; bu da sıradan bir ödeme çıktısının maliyetinin kabaca üç katıdır.

Bir OP_RETURN çıktısına gönderilen bitcoinler sonsuza dek kayıp mı olur?

Gönderilecek bir şey yok. Bu çıktılar sıfır değeriyle oluşturulur ve hiçbir cüzdan birine ödeme yapmanıza izin vermez. Bir site sizden bir OP_RETURN adresine Bitcoin göndermenizi isterse bu bir dolandırıcılıktır, çünkü böyle bir adres yoktur.

Bitcoin Core gerçekten 80 baytlık sınırı kaldırdı mı?

Bitcoin Core 30.0 varsayılan boyut sınırını ve işlem başına tek çıktı kuralını kaldırdı, Bitcoin Knots ise eski ve daha katı varsayılanları korudu. Bu sınırların hiçbiri hiçbir zaman bir konsensüs kuralı olmadı, dolayısıyla madenciler istediklerinde daha büyük veri eklemekte her zaman serbestti.

Yazıtlar OP_RETURN kullanır mı?

Hayır. Yazıtlar içeriklerini tanık içinde, çalıştırılmayan bir Taproot betik dalında saklar; bu da bayt başına dört yerine bir ağırlık birimi olarak faturalandırılır. OP_RETURN verisi işlemin tanık dışındaki kısmında yer alır ve bayt başına dört kat daha pahalıdır.

Sıradaki okuma

İlgili terimler

Daha fazlası: Geliştirici başvuru kaynağı

Bu sayfayı İngilizce okuyun