Sözlük / Düğümler ve yazılım
Assumeutxo
- Assumeutxo nedir?
- Assumeutxo, bir Bitcoin Core düğümünün harcanmamış çıktı kümesinin kod içinde sabitlenmiş bir blok yüksekliğindeki anlık görüntüsünden başlamasına, ardından atlanan geçmişi arka planda doğrulamasına olanak tanır.
Anlık görüntü, tek bir blok yüksekliğinde harcanabilir durumdaki her çıktıyı listeler ve hash değeri yazılımla birlikte indirilmek yerine yazılımın içine derlenir. Bitcoin Core 28.0, 840.000 yüksekliği için ana ağ parametrelerini ekledi; bu, canlı ağda bir anlık görüntünün yüklenebileceği ilk yüksekliktir. Cüzdanınız tüm geçmiş kontrol edilmeden çok önce kullanılabilir hale gelir, düğüm ise atlanan blokları arka planda sessizce doğrular.
Nasıl çalışır
Assumeutxo, bir düğümü iki zincir durumuna böler ve ikisini aynı anda çalıştırır.
Bir anlık görüntü dosyasını loadtxoutset RPC çağrısına verirsiniz. Bitcoin Core, içine yükleneceği ikinci bir zincir durumu oluşturur ve içerik okunup kontrol edilirken özgün durumu etkin tutar. Anlık görüntü zincir durumu yüklendikten ve doğrulandıktan sonra etkin durum haline gelir, veri dizininde chainstate_snapshot adlı bir dizin belirir ve düğüm, anlık görüntünün temel bloğundan ağın ucuna doğru senkronize olmaya başlar. Bu dizinin içinde base_blockhash adlı küçük bir dosya bulunur; bu dosya anlık görüntünün hangi blokta alındığını kaydeder, böylece düzen bir yeniden başlatmadan sonra da geçerliliğini korur.
Güven meselesinin tamamı hash değerindedir. Core'un kendi belgeleri, anlık görüntüler için kanonik bir kaynak bulunmadığını ve indirdiğiniz her anlık görüntünün kaynak koduna sabit kodlanmış bir değerle kontrol edildiğini belirtir. Dolayısıyla dosyayı barındıran kişiye güvenmiyorsunuz. Çalıştırmayı zaten seçtiğiniz aynı sürüme güveniyorsunuz ve derlenmiş değerle eşleşmeyen bir hash üreten dosya, sizin zincir durumunuz haline gelmeden önce reddedilir.
Bu arada özgün zincir durumu, tüm kurallar uygulanarak genesis bloğundan itibaren ilerlemeye devam eder. Anlık görüntünün temel bloğuna ulaştığında, kendi harcanmamış çıktı kümesinin hash değerini hesaplar ve sonucu derlenmiş parametreyle karşılaştırır. Önbellek, ona daha çok ihtiyaç duyan zincire verilir: anlık görüntü zinciri uca doğru yarışırken öncelik alır, sonrasında arka plan zinciri daha büyük payı alır. getchainstates RPC çağrısı ikisini de gösterir.
Temizlik hemen değil, bir sonraki yeniden başlatmada gerçekleşir. Core, chainstate_snapshot dizinini chainstate olarak yeniden adlandırır, arka plan verilerini siler ve o noktadan itibaren düğüm, geleneksel yolla kurulmuş bir düğümden ayırt edilemez. base_blockhash dosyası, nereden başlandığının kaydı olarak kalır.
Bitcoin satın alırken bu neden önemli
Assumeutxo, çoğu alıcının kendi bitcoinlerini doğrulamasını engelleyen tek sakıncayı hedef alır.
Bu sitede incelenen 41 cüzdandan yalnızca Bitcoin Core tüm zinciri kendisi indirip kontrol eder; incelememiz bu yüzden ona 4,7 veriyor ve yine de ilk sakınca olarak ilk senkronizasyonun tüm zinciri indirip doğruladığını, bunun saatler ve çok miktarda disk alanı aldığını listeliyor. Çoğu insanın bunu hiç denememesinin nedeni bu cümledir. Anlık görüntü maliyeti ortadan kaldırmaz, yerini değiştirir: saatler yine geçer, ancak cüzdanınız çalışmaya başlamadan önce değil, çalışmaya başladıktan sonra geçer.
Bunun karşılığını verdiği an para çekmedir. Bu sitede kayıtlı 63 borsadan birinde satın alırsınız, bitcoinleri kontrol ettiğiniz anahtarlara gönderirsiniz ve ardından ulaştığını bilmek istersiniz. Kendi düğümünüz yoksa sorabileceğiniz iki taraf, bitcoinleri az önce gönderen borsa ve artık adresinizi bilen herkese açık bir blok gezginidir. Kendi düğümünüz varsa yanıt, kendi makinenizin yaptığı bir aritmetikten gelir.
Bu aynı zamanda ciddi bir kurulumun başlangıç maliyetini de değiştirir. Aynı şekilde 4,7 alan Sparrow incelememiz, doğrudan Bitcoin Core arka ucuna bağlanmayı anlatır ve bu eşleşme eskiden Sparrow'un konuşacak bir şeyi olması için tam bir senkronizasyonun bitmesini beklemek anlamına geliyordu. Anlık görüntü, kurulum gününü kullanılabilir bir akşama sıkıştırır ve ertelediğiniz doğrulama siz uyurken kendi kendine tamamlanır.
Uygulamalı örnek: dumptxoutset ile anlık görüntü oluşturma
Assumeutxo anlık görüntüsü oluşturmak, gidip getirdiğiniz bir dosya değil, zaten güvendiğiniz bir düğüm üzerinde bilinçli olarak yapılan bir işlemdir.
Onu dumptxoutset RPC çağrısı üretir; ya "latest" türüyle geçerli uçta ya da "rollback" türüyle yakın bir yükseklikte. Çalıştığı sürenin çoğunda düğüm, gerçeği yansıtmayan geçici bir durumda kalır, doğru olduğunu bildiği blokları geçersiz olarak işaretler ve bu durum nedeniyle ağ etkinliği kapatılır, tüm eşlerin bağlantısı kesilir. Core'un belgeleri -rpcclienttimeout=0 ayarını önerir çünkü donanım ne olursa olsun ve hangi türü seçerseniz seçin döküm bir süre alır; bu arada düğüme başka bir iş için dokunulmamasını da önerir.
İki ayrıntı insanları yanıltır. Bir anlık görüntü yalnızca yüksekliğinin zincir parametrelerinde listelenmiş bir hash değeri varsa kullanılabilir; bu yüzden başka bir yükseklik seçmek o kodun düzenlenip yeniden derlenmesi anlamına gelir ve "rollback" türü, anlık görüntüyü yeniden oluşturup karşılaştırarak sabit kodlanmış bir hash değerini kontrol etmenin yolu olarak da işe yarar. Ayrıca Bitcoin Core 28.0 serileştirmeyi değiştirdi: eski biçimdeki dökümler artık desteklenmiyor ve loadtxoutset çağrısı onları kabul etmeden önce 28.0 veya daha yeni bir sürümü çalıştıran bir düğümde yeniden oluşturulmaları gerekiyor.
Bitcoin Core 29.0, ilgili bir araç olan contrib/utxo-tools/utxo_to_sqlite.py aracını ekledi; bu araç, kompakt serileştirilmiş bir anlık görüntüyü SQLite3 veritabanına dönüştürür. Bunun bir düğümü senkronize etmekle hiçbir ilgisi yoktur, anlık görüntünün gerçekte ne olduğuyla ilgilidir: bir yükseklikte kimin neye sahip olduğunun eksiksiz, kendi kendine yeterli bir resmi; bunun da sorgulanmaya değer bir şey olduğu ortaya çıkar.
Assumeutxo vs ilk blok indirme
Assumeutxo ilk blok indirmenin yerini almaz, işin hangi sırayla yapıldığını değiştirir.
Anlık görüntü yüklemiş bir düğüm, arka plan zincir durumunda genesis bloğundan itibaren eksiksiz bir ilk blok indirme yine yapar; bu zincir durumu, anlık görüntünün varsaymasına izin verdiği zincir kesitinin tam doğrulanmasıyla görevlidir. Hiçbir şey kalıcı olarak atlanmaz. Anlık görüntünün sağladığı şey, bekleme sırasında cüzdanın işe yaramaz olmaktan çıkmasıdır, çünkü etkin zincir durumu önemsediğiniz her adresin güncel durumunu zaten bilir. Genesis ile anlık görüntü yüksekliği arasındaki bölge, sessizce doğrulanmış sayılmak yerine geçerli varsayılmış olarak izlenir; Core'un tek bir zincir durumu üzerinde tek bir bayrak yerine iki zincir durumu taşımasının nedeni budur. Anlık görüntü yükleyip arka plan senkronizasyonunu hiç bitirmemiş bir düğüm, gizli değil gerçek ve adlandırılmış bir durumdadır.
Assumeutxo vs budanmış düğüm
Assumeutxo ve budama, bir düğümün baş etmesi gerekeni küçültür ve birbirine zıt şeyleri küçültür.
Budama, doğrulamadan sonraki diskle ilgilidir: budanmış bir düğüm her bloğu kontrol eder, sonra artık ihtiyaç duymadığı ham dosyaları siler. Assumeutxo, doğrulamadan önceki zamanla ilgilidir: yine de yapacağı kontrolleri erteler. İkisi bir arada kullanılır ve Core buna izin vermek için kendi kurallarından birini esnetir. -prune ayarının olağan alt sınırı 550 MiB'dir ve anlık görüntü yükleyen bir düğüm bu minimumu yok sayıp bunun yerine en az 1100 MiB kullanır. Alan tek kalem değildir: arka plan senkronizasyonu çalışırken geçici olarak her biri birkaç gigabayt olan ve indirdiğiniz anlık görüntüden büyük olması muhtemel iki zincir durumu dizini bulunur.
İkisinin en çok ayrıldığı yer indekslerdir. Bir indeks anlık görüntüden hiçbir şey kazanmaz, çünkü indeksler her zaman genesis bloğundan itibaren oluşturulmaya başlar ve blokları yalnızca sırayla uygulayabilir; bu yüzden bir indeks uca ancak arka plan doğrulaması düğümü anlık görüntü bloğunun ötesine taşıdığında ulaşır. Budama bunu keskinleştirir: budamayı destekleyen bir indeks, düğümün yalnızca zaten indekslediği blokları silmesine izin verir; böylece eski bir anlık görüntü, indeksleme yetişene kadar diskte indirilmiş, indekslenmemiş ve silinemeyen bloklardan oluşan bir yığın bırakır.