Bu makalenin ana görseli HackerNoon'unAI Image Generator'ı tarafından "beyaz tahtadaki blockchain işlem karmaları" istemi aracılığıyla oluşturuldu
Bu yazımızda, blockchainlerden faydalı verileri ışık hızında sorgulamanıza olanak tanıyan, kimsenin bilmediği gizli açık kaynak araçtan bahsedeceğiz.
Blockchain'den faydalı veri elde etmek için yapılabilecek örnek sorguları vereceğiz ve aracın bu kadar yüksek hızlarda analiz yapmasına olanak sağlayan mimarisinden bahsedeceğiz.
Ancak bundan önce, neden blockchaindeki işlemleri analiz etmeniz gerektiğini konuşalım.
ama aynı zamanda
Yukarıdakilerden tahminde bulunabilir ve şu konularda bilgi alabilirsiniz:
ve 100'den fazla farklı analiz.
Gördüğünüz gibi Bitcoin piyasasına dair elde edebileceğimiz veriler eski piyasalara göre çok daha kapsamlı. Ve en önemlisi ortalama bir insan buna erişebilir. Buna karşılık, eski piyasalarda bu tür verilere yalnızca hedge fonları ve bankalar erişebilir.
Dolayısıyla, Bitcoin blok zincirindeki işlemleri analiz ederek Bitcoin pazarını daha iyi anlayabilir ve bu verilere dayanarak daha iyi yatırım kararları verebilirsiniz.
Peki bu araç nasıl çalışıyor?
BlockSci, mevcut blockchain analiz araçlarının üç sorunlu noktasını ele almayı hedefliyor:
Kötü performans, BlockSci'nin en iyi çözdüğü sorundur. Örneğin, Bitcoin işlemlerini analiz etmeye yönelik kaba kuvvet yaklaşımı da işe yarayacaktır. Bilgisayarınızda/sunucunuzda bir Bitcoin düğümü çalıştırabilir ve doğrudan kendi düğümünüzü sorgulayabilirsiniz. Ancak bu yaklaşım o kadar yavaştır ki 1 Milyar Bitcoin işleminin tamamının işlenmesi yıllar alabilir.
Diğer mevcut araçlar da, özellikle genel amaçlı grafik veritabanları kullanıldığında, düşük performanstan muzdariptir; bu da onları sıralı sorgular için yüzlerce kat daha yavaş hale getirir ve grafik geçiş sorguları dahil tüm sorgular için önemli ölçüde daha yavaş hale getirir.
BlockSci'nin tasarımı ağırlıklı olarak blok zincirlerde geçmişteki blokların değiştirilemeyeceği ve blok zincirinde görünen tüm yeni verilerin yalnızca ekleme amaçlı olduğu gerçeğine dayanmaktadır.
Bu, işlemsel veritabanlarının ACID özelliklerinin gereksiz olduğu ve bellek içi analitik veritabanını doğal seçim haline getirdiği anlamına gelir. Disk depolama yerine bellek kullanmak, tam olarak ihtiyacımız olan şey olan veri işlemeyi önemli ölçüde hızlandırır.
Aslında BlockSci, hesaplamaları gerçekleştirmek için tüm blok zincirini belleğe yükler ve dağıtılmış işleme yaklaşımından kaçınır. Bunun nedeni, blockchain verilerinin grafik yapılı olması ve dolayısıyla etkili bir şekilde bölümlenmesinin zor olmasıdır.
Tasarımcının varsayımı, blockchain analizi için geleneksel, dağıtılmış bir işlem veritabanının kullanımının, hiçbir paralellik düzeyinin optimize edilmiş tek iş parçacıklı bir uygulamadan daha iyi performans gösteremeyeceği anlamında sonsuz COST'a (Tek İş Parçacığından Daha İyi Performans Gösteren Yapılandırma) sahip olduğu yönündeydi.
Ayrıca, hızı daha da artırmak ve veri boyutunu azaltmak için karma işaretçilerini gerçek işaretçilere dönüştürmek ve adres verilerini tekilleştirmek gibi çeşitli teknikler de uygular.
Düğümden veri aktarmak için BlockSci, yerleşik JSON-RPC arayüzünden değil, doğrudan diskteki ham verileri okuyan kendi yüksek performanslı içe aktarıcısını kullanır. O zaman bile, düğümdeki tüm verilerin içe aktarılması ve dizine eklenmesi genellikle 24 saat sürer. Veriler ayrıştırıldıktan sonra gerçek analizler hızlıdır.
Blok zincirlerinin disklerde depolanma şeklini analiz etmek kolay değildir. Çek işlemleri ve büyük bir ağda veri bulmak gibi başka şeyler yapmak için yapılmıştır. Ayrıca blokları disk üzerinde temel bir formatta tutarak bellekte yer kazanmak için yapılmıştır. Ancak veriyi belleğe sığdırmak için değiştirmemiz gerekiyor, dolayısıyla BlockSci'nin bu adımı gerçekleştirebilecek bir ayrıştırıcısı var. Bu ayrıştırıcının iyi bir şekilde optimize edildiğinden emin olundu.
Aracın bu kadar yüksek hızlara ulaşmasının bir başka yolu da "bloom filtresi optimizasyonu"dur. Çiçeklenme filtresi, bir kümedeki üyeliğin test edilmesine olanak tanıyan olasılıksal bir veri yapısıdır. Blockchain bağlamında, görülen tüm adresleri saklar ve mevcut adresler için yapılan aramaların doğruluğunu sağlarken, var olmayan adresler için veritabanı sorgularının sayısını en aza indirir. Bu, girdilerin yaklaşık %88'inin son 4000 blokta oluşturulan çıktıları harcadığı ve Bitcoin adreslerinin yalnızca %8,6'sının birden fazla kullanıldığı gerçeğine dayanarak elde edilir.
BlockSci'nin yüksek analiz hızlarına ulaşmasını sağlayan son ve en önemli optimizasyon, hem yüksek analitik hızları sağlayan hem de belleğe çok fazla yük getirmeyen veri düzeni yapısıdır.
BlockSci'nin veri düzeni, mevcut verileri üç kategoriye böler ve bunları hibrit bir şemada birleştirir. Temel işlem grafiği çoğu analiz için gereklidir ve her zaman belleğe yüklenir ve satır tabanlı bir biçimde saklanır. Yalnızca bir analiz alt kümesi için gereken komut dosyaları ve ek veriler, hibrit (kısmen sütun tabanlı, kısmen satır tabanlı) bir formatta depolanır ve isteğe bağlı olarak yüklenir. Bireysel işlemleri veya adresleri karma değerine göre aramaya yönelik dizinler, diskteki ayrı bir veritabanında saklanır.
Ek olarak, mümkün olduğu durumlarda veri alanları için sabit boyutlu kodlamalar kullanır, referans konumu için bellek düzenini optimize eder, verimli geçiş için çıktıları girişlere bağlar ve bellek eşlemesini ve paralelliğini paylaşır.
Son olarak, ücreti 0,1 Bitcoin'in üzerinde olan tüm işlemleri bir dakikadan kısa sürede bulan sorgu var.
chain.blocks.txes.where(lambda tx: tx.fee > 10**7).to_list()
BlockSci, blockchainlerden faydalı verilerin ışık hızında sorgulanmasına olanak tanıyan bir blockchain analiz aracıdır. Bitcoin işlemlerini analiz ederek piyasayı daha iyi anlayabilir ve daha iyi yatırım kararları verebilirsiniz.
BlockSci'nin mimarisi, blockchain verilerinin grafik yapılı olduğu ve etkili bir şekilde bölümlenmesinin zor olduğu gerçeğine dayanmaktadır, bu nedenle hesaplamaları gerçekleştirmek için tüm blockchain'i belleğe yükler. Hızı artırmak için, karma işaretçilerini gerçek işaretçilere dönüştürmek, adres verilerini tekilleştirmek ve çiçek filtresi optimizasyonunu kullanmak dahil olmak üzere çeşitli teknikler uygular. Veri düzeni yapısı hem yüksek analiz hızları sağlar hem de belleğe çok fazla yük getirmez.