KASPA TÜRKİYE TELELGRAM KANALINA BURAYA TIKLAYARAK ULAŞABİLİRSİNİZ.
Bu, Kaspa'nın temellerini basit ve kısa bir dille açıklayan bir blog dizisidir. Mümkün olan en az ön bilgiyi kabul edeceğim, ancak blok zinciri teorisindeki bazı temel bilgiler, özellikle bitcoin okuyucuya fayda sağlayabilir.
Buna karşılık, blok-DAG paradigmasında, tüm bilgiler açığa çıkar. Biz buna “vahiy ilkesi” diyoruz. Madenci bildiği tüm ipuçlarına başvurur. Ardından, örneğin en uzun zincir kuralı da dahil olmak üzere, bu bilgi üzerinde seçimler yapmak için herhangi bir protokol çalıştırılabilir, ancak paylaşılan bilginin en üst düzeye çıkarılması çok daha fazla fırsat açar.
Temelde, bilinen tüm bloklar üzerinde madencilik yapan her bir madenci tarafından, maksimum miktarda zaman ilişkisi (örneğin bu blok, bu bloktan "sonra" çıkarılmıştır) ortaya çıkar ve paylaşılır.
Her madencinin birçok blok ipucu üzerinde madencilik yapması (başlığında tüm hash'lerine atıfta bulunularak), bir bloktan referans verilen blokların her birine işaret eden bir bağlantı ile yönlendirilmiş bir blok grafiği oluşturur. PoW işlevinin kriptografik tersinmezliği , bu yönlendirilmiş grafikte hiçbir döngünün yaratılamayacağı anlamına gelir, bu da onu Yönlendirilmiş A döngüsel bir Grafik yapar .
Her bloktan ( B ) ebeveynlerinden birine ( P ) eşlenen bir ebeveyn seçim fonksiyonu ( f eşleme) varsayalım . Yalnızca bu özel "seçilmiş" bağlantıları (her blok B'den seçilen ebeveynine kadar) içeren alt DAG aslında bir ağaçtır. Her zaman tüm DAG ipuçlarına/yapraklarına işaret eden “sanal” adlı, var olmayan özel bir bloğa isim verelim. Bu sanal blok, yerel düğümün gözünde bir sonraki mayınlı bloğu temsil eder.
Eşleme işlevi f , belirli bir DAG ipucunu seçmek için sanal olarak uygulanabilir . Daha sonra bu ipucundan başlayarak "seçilmiş ebeveyn" bağlantıları aracılığıyla oluşuma ulaşana kadar yürüyebiliriz. Böylece bir f eşlemesi, virtual'den başlayıp genesis'te biten bir blok zinciri C'nin seçilmesine dönüştürülebilir .
Bu zincir, tüm DAG yapısını deterministik olarak sıralamak için kullanılabilir.
Bu görevi başarmak için bir tanıma daha ihtiyacımız var. B'nin birleştirme kümesini , mergeset(B) ' yi, B'nin DAG ile birleştirdiği blok kümesi olarak tanımlayalım . Resmi olarak bu, geçmiş(B) ' de olan ancak f eşleme işlevi tarafından seçilen B'nin seçilmiş ebeveyninin geçmişinde olmayan bloklar kümesidir . Buna birleştirme-kümesi denir, çünkü bu, B'nin seçilen ana perspektifine göre kendi perspektifinden DAG ile birleştirdiği bloklar kümesidir .
Bir C zinciri ve bir birleştirme kümesinin tanımı verildiğinde, f'ye dayalı tam bir sıralama kuralını tanımlamaya hazırız . Buradaki fikir, oluşumdan başlamak ve bu zincirde yukarı yürümek, burada her zincir bloğunda onun birleştirme setini sıralamaya ekliyoruz. Sezgisel olarak buradaki zincir, birleştirme kümelerinin birbiri ardına eklenen katmanlar olduğu DAG'nin bir omurgası gibi davranır. Bunu daha açık bir şekilde görmek için, bir birleştirme kümesinin tanımından ve devam eden zincir bloğuyla olan ilişkisinden, tüm birleştirme kümelerinin ayrık kümeler olduğu ve bunların birleşiminin tüm DAG'ı kapsadığı sonucu çıkar.
Aşağıdaki basit sözde kod tam olarak bunu açıklar ve referans olması için buraya getirilir.
işlev Sırası-DAG( G ):
Bir işlem defterini temsil eden bir blok-DAG için, DAG'nin sıralamasının "sağlam" olmasını isteriz, çünkü DAG'nin uçlarına yakın küçük bir blok kümesi sırasını değiştirebilir. Başka bir deyişle, "yeterince" zaman önce çıkarılan herhangi bir blok için siparişin "dengelenmesini" istiyoruz, burada yeterli, gereken kesinlik miktarına bağlıdır.
Sıralama bir zincir tarafından yönetildiğinden, zincir “sağlam” ise, yani bir eke kadar değişmiyorsa, onun tarafından sıralanan DAG da sağlamdır. Bu nedenle, şimdi ihtiyacımız olan tek şey, sağlam bir zincir bulmanın güvenli bir yolu - güvenli bir ana eşleme işlevi f .
İlk önce zincir yapısını açıklamayı seçtim, çünkü Kaspa sistemini net bir şekilde anlamak için bu ayrıştırmayı anlamanın çok önemli olduğunu düşünüyorum. Kullanılan f ne olursa olsun , bu zincir yapısı UTXO cebir altyapımız tarafından kullanılır ve DAG erişilebilirlik sorgularını desteklemek için uyguladığımız çerçevede de rol oynar.
blok-DAG paradigması
Yazan: Michael Sutton, Çekirdek GeliştiriciBu, Kaspa'nın temellerini basit ve kısa bir dille açıklayan bir blog dizisidir. Mümkün olan en az ön bilgiyi kabul edeceğim, ancak blok zinciri teorisindeki bazı temel bilgiler, özellikle bitcoin okuyucuya fayda sağlayabilir.
Kaspa nedir?
Kaspa, bitcoin'in blockchain paradigmasını genelleştiren ve ölçeklendiren saf bir PoW motorudur.Block-DAG ve Blockchain
Kaspa'nın sunduğu ilk değişiklik, blok-DAG madenciliği paradigmasıdır. Bitcoin'de, madenciler önce en uzun (veya daha doğrusu en ağır) zinciri seçer ve en üstteki blok, yani seçilen uç üzerinde madencilik yapar. Bu nedenle, esas olarak madenciler sahip oldukları tüm bilgileri paylaşmazlar - bildikleri ve madencilik yapmamayı seçtikleri diğer seçilmemiş zincirlerin bilgilerini paylaşmazlar.Buna karşılık, blok-DAG paradigmasında, tüm bilgiler açığa çıkar. Biz buna “vahiy ilkesi” diyoruz. Madenci bildiği tüm ipuçlarına başvurur. Ardından, örneğin en uzun zincir kuralı da dahil olmak üzere, bu bilgi üzerinde seçimler yapmak için herhangi bir protokol çalıştırılabilir, ancak paylaşılan bilginin en üst düzeye çıkarılması çok daha fazla fırsat açar.
Temelde, bilinen tüm bloklar üzerinde madencilik yapan her bir madenci tarafından, maksimum miktarda zaman ilişkisi (örneğin bu blok, bu bloktan "sonra" çıkarılmıştır) ortaya çıkar ve paylaşılır.
Her madencinin birçok blok ipucu üzerinde madencilik yapması (başlığında tüm hash'lerine atıfta bulunularak), bir bloktan referans verilen blokların her birine işaret eden bir bağlantı ile yönlendirilmiş bir blok grafiği oluşturur. PoW işlevinin kriptografik tersinmezliği , bu yönlendirilmiş grafikte hiçbir döngünün yaratılamayacağı anlamına gelir, bu da onu Yönlendirilmiş A döngüsel bir Grafik yapar .
Bazı blok DAG terminolojisi
B bloğu tarafından referans verilen blok kümesi, parent (B) şeklindedir . geçmiş(B) kümesi , B bloğundan bir ana bağlantılar zinciri aracılığıyla erişilebilen bloklar kümesidir ("geçmiş" olarak türetilmiştir çünkü B'den önce var olduklarını biliyoruz ). DAG'ın başlangıcını tanımlayan ilk blok olan genesis'i her zaman içerdiğinden past(B) 'nin asla boş olmadığına dikkat edin. Aynı şekilde future(B) , B'ye ulaşılabilen bloklar kümesidir . Küme antikon(B) , B'ye "paralel" bloklar kümesidir , yani ne geçmişinde ne de geleceğinde. Esasen B arasında hiçbir zaman nedensellik bilgisi bilinmemektedir.ve antikon(B) 'deki bloklar . Buna "antikon" diyoruz çünkü hem geçmiş hem de gelecek B'nin bakış açısından "koniler" olarak görülebilir .blok-DAG sipariş etme
Kaspa tarafından kullanılan sıralama protokolü olan GHOSTDAG protokolünün ayrıntılarına girmeden önce, herhangi bir ana seçim kuralına dayalı bir blok-DAG sıralaması için genel bir yapıyı açıklayacağım.Her bloktan ( B ) ebeveynlerinden birine ( P ) eşlenen bir ebeveyn seçim fonksiyonu ( f eşleme) varsayalım . Yalnızca bu özel "seçilmiş" bağlantıları (her blok B'den seçilen ebeveynine kadar) içeren alt DAG aslında bir ağaçtır. Her zaman tüm DAG ipuçlarına/yapraklarına işaret eden “sanal” adlı, var olmayan özel bir bloğa isim verelim. Bu sanal blok, yerel düğümün gözünde bir sonraki mayınlı bloğu temsil eder.
Eşleme işlevi f , belirli bir DAG ipucunu seçmek için sanal olarak uygulanabilir . Daha sonra bu ipucundan başlayarak "seçilmiş ebeveyn" bağlantıları aracılığıyla oluşuma ulaşana kadar yürüyebiliriz. Böylece bir f eşlemesi, virtual'den başlayıp genesis'te biten bir blok zinciri C'nin seçilmesine dönüştürülebilir .
Bu zincir, tüm DAG yapısını deterministik olarak sıralamak için kullanılabilir.
Bu görevi başarmak için bir tanıma daha ihtiyacımız var. B'nin birleştirme kümesini , mergeset(B) ' yi, B'nin DAG ile birleştirdiği blok kümesi olarak tanımlayalım . Resmi olarak bu, geçmiş(B) ' de olan ancak f eşleme işlevi tarafından seçilen B'nin seçilmiş ebeveyninin geçmişinde olmayan bloklar kümesidir . Buna birleştirme-kümesi denir, çünkü bu, B'nin seçilen ana perspektifine göre kendi perspektifinden DAG ile birleştirdiği bloklar kümesidir .
Bir C zinciri ve bir birleştirme kümesinin tanımı verildiğinde, f'ye dayalı tam bir sıralama kuralını tanımlamaya hazırız . Buradaki fikir, oluşumdan başlamak ve bu zincirde yukarı yürümek, burada her zincir bloğunda onun birleştirme setini sıralamaya ekliyoruz. Sezgisel olarak buradaki zincir, birleştirme kümelerinin birbiri ardına eklenen katmanlar olduğu DAG'nin bir omurgası gibi davranır. Bunu daha açık bir şekilde görmek için, bir birleştirme kümesinin tanımından ve devam eden zincir bloğuyla olan ilişkisinden, tüm birleştirme kümelerinin ayrık kümeler olduğu ve bunların birleşiminin tüm DAG'ı kapsadığı sonucu çıkar.
Aşağıdaki basit sözde kod tam olarak bunu açıklar ve referans olması için buraya getirilir.
işlev Sırası-DAG( G ):
- C , açıklandığı gibi DAG G üzerinde f uygulanarak elde edilen zincir olsun .
- sıralama = []
- C'deki Bbloğu için genesis'ten sanal'a doğru yürüyüş
- sipariş.Add(mergeset(B))
- iade siparişi
Zincir güvenliği, sağlam DAG sıralaması anlamına gelir
Bir zincir ile DAG sıralaması arasındaki ilişkiyi anlamak, bir zincir seçim protokolü ile güvenli bir sıralama protokolünden istenen güvenlik özellikleri arasındaki ilişki hakkında akıl yürütmeye yardımcı olur.Bir işlem defterini temsil eden bir blok-DAG için, DAG'nin sıralamasının "sağlam" olmasını isteriz, çünkü DAG'nin uçlarına yakın küçük bir blok kümesi sırasını değiştirebilir. Başka bir deyişle, "yeterince" zaman önce çıkarılan herhangi bir blok için siparişin "dengelenmesini" istiyoruz, burada yeterli, gereken kesinlik miktarına bağlıdır.
Sıralama bir zincir tarafından yönetildiğinden, zincir “sağlam” ise, yani bir eke kadar değişmiyorsa, onun tarafından sıralanan DAG da sağlamdır. Bu nedenle, şimdi ihtiyacımız olan tek şey, sağlam bir zincir bulmanın güvenli bir yolu - güvenli bir ana eşleme işlevi f .
Bu serideki sonraki gönderi
Aşağıdaki yazıda, f = GHOSTDAG özel ebeveyn seçim fonksiyonu hakkında yazacağım ve Kaspa'da kullanılan "mavi puan", "mavi çalışma" gibi ilgili terimler için daha kesin tanımlar vereceğim.İlk önce zincir yapısını açıklamayı seçtim, çünkü Kaspa sistemini net bir şekilde anlamak için bu ayrıştırmayı anlamanın çok önemli olduğunu düşünüyorum. Kullanılan f ne olursa olsun , bu zincir yapısı UTXO cebir altyapımız tarafından kullanılır ve DAG erişilebilirlik sorgularını desteklemek için uyguladığımız çerçevede de rol oynar.