Yeni MultiChain cüzdanı PlatoBlockchain Veri Zekasını duyuruyoruz. Dikey Arama. Ai.

Yeni MultiChain cüzdanını duyurmak

Performans ve ölçeklenebilirlik açısından ileriye doğru atılmış önemli bir adım

İki ay süren yoğun geliştirme ve testlerden sonra, tamamen yeniden yazılmış bir düğüm içi cüzdanla MultiChain'in en son alfa sürümünü yayınlamaktan gurur duyuyoruz. Bu yeni cüzdan, MultiChain'de işlem oluşturma, alma ve saklama performansını ve ölçeklenebilirliğini dönüştürüyor.

Ayrıntılara girmeden önce biraz bağlam sunayım. MultiChain'i geliştirmeye başladığımızda, MultiChain'i kullanmaya karar verdik. Bitcoin Çekirdeği, başlangıç ​​noktası olarak genel bitcoin ağının standart düğümü. Programlama açısından bu, MultiChain'in bitcoin yazılımının bir "çatalı" olduğu anlamına gelir. Temel düşüncemiz, Bitcoin'in bir bakıma en yüksek değere sahip ve en çok savaşta test edilmiş kripto para birimi ekosistemi olduğu (ve öyle olmaya da devam ettiği) idi.

Artı tarafta, bu karar, bir blockchain düğümünü sıfırdan kodlamakla karşılaştırıldığında, pazara daha hızlı ulaşmamıza yardımcı oldu. Kamu ve özel blok zincirleri arasındaki pek çok farklılığa rağmen, eşler arası protokol, işlem ve blok yapısı, dijital imza oluşturma ve doğrulama, fikir birliği kuralları, anahtar yönetimi ve ihtiyaçlar dahil olmak üzere büyük miktarda teknik ortak zemini paylaşıyorlar. bir düğüm API'si. Bitcoin Core'dan çatallanma, onun olgunluğundan yararlanmamıza ve MultiChain'in blok zincirlere neler kattığına (yapılandırılabilirlik, izin verme ve yerel varlık desteği) odaklanmamıza olanak sağladı. Sonuç olarak, ilk alfa sürümünü, geliştirmeye başladıktan sadece 2015 ay sonra, Haziran 6'te yayınlamayı başardık.

Ancak bu faydaların yanı sıra Bitcoin Core'un bazı yönlerinin kötü tasarlanmış olduğu gerçeğini de kabul etmek zorunda kaldık. Küçük ölçeklerde gayet iyi çalışsalar da, kullanım arttıkça performansları önemli ölçüde düşüyor. Halka açık bitcoin ağı hala saniyede birkaç işlemle sınırlı olduğundan, bu durum çoğu Bitcoin Core kullanıcısı için uzun süre bir sorun olmayacak. Ancak saniyede yüzlerce veya binlerce işlemi hedefleyen özel blok zincirleri nedeniyle, bu darboğazların er ya da geç ortadan kaldırılması gerektiğini biliyorduk.

Bitcoin Core'un cüzdanı

Bitcoin Core'daki "cüzdan" her zaman bu sıkıntılı noktaların en önemlisiydi. Görevi, düğümle özellikle ilgili olan işlemleri depolamaktır çünkü bunlar, sahip olduğu bir blockchain adresini veya "yalnızca izleme” aktivitesini takip ettiği adres. Örneğin, bir düğüme veya düğümden para gönderen her işlem, o düğümün cüzdanında saklanmalıdır. Ve bir düğüm her işlem oluşturduğunda, yeni işlemin harcayacağı önceki cüzdan işlemlerinin bir veya daha fazla "harcanmamış çıktısını" aramalıdır.

Peki Bitcoin Core'dan miras aldığımız cüzdanın nesi var? Aslında üç şey:

  • Tüm cüzdan işlemleri hafızada tutulur. Bu, yavaş başlatma sürelerine ve hızla artan bellek kullanımına neden olur.
  • Birçok işlem, ister eski ister yeni olsun, cüzdandaki her işlemin verimsiz bir "tam taramasını" gerçekleştirir.
  • M-cüzdandaki her işlem, düğümün bakış açısına göre hiçbir anlamı olmayan ve halihazırda diskteki blok zincirinde depolanan rastgele "meta veriler" de dahil olmak üzere tam olarak depolanır. Bu çok israftır.

Sonuç olarak, depolanan yaklaşık 20,000 işlemle Bitcoin Core'un cüzdanı önemli ölçüde yavaşlıyor. 200,000 civarından sonra neredeyse durma noktasına gelir. Daha da kötüsü, MultiChain blok zinciri işlem başına 8 MB'a kadar meta veriye izin verdiğinden (bitcoin'in 80 baytı ile karşılaştırıldığında), cüzdanın bellek gereksinimleri az sayıda işlemde bile hızla artabilir.

Bu eksikliklerin yalnızca Bitcoin Core'lar için geçerli olduğunu açıklığa kavuşturmak önemlidir. cüzdangenel işlem işleme kapasitesinden ziyade. Başka bir deyişle, kendi adresleriyle ilgisi olmayan milyonlarca (hatta milyarlarca) işlemi, bellek yerine diskte tutulduğu için rahatlıkla işleyebilir ve saklayabilir. Örneğin, pek çok popüler Bitcoin borsası ve cüzdanı, Bitcoin Core'u olduğu gibi kullanıyor ancak kendi işlemlerini düğümün içinde değil, dışarıda saklıyor.

MultiChain'in yeni cüzdanı

MultiChain kullanıcılarından da aynı talebi, kendi işlemlerini düğüm dışında saklamalarını isteyebilirdik. Ancak bu doğru bir çözüm gibi gelmiyordu çünkü zincirin her bir katılımcısı için kurulum ve bakımı büyük ölçüde karmaşık hale getirecekti. Bunun yerine kurşunu ısırdık ve cüzdanı sıfırdan yeniden yazdık.

Yeni cüzdanın farkı nedir? Veritabanlarıyla ilgili deneyiminiz varsa yanıtlar açık olabilir:

  • M-cüzdan işlemlerini hafızada tutmak yerine, uygun bir formatta diskte depolanır ve gerektiğinde geri çağrılan işlemler bulunur.
  • Tam cüzdan taraması yapmak yerine, belirli kriterleri karşılayan işlemlerin hızlı bir şekilde bulunmasını sağlamak için işlemler çeşitli şekillerde "indekslenir".
  • 256 bayttan büyük herhangi bir işlem meta verisi cüzdanda saklanmaz. Bunun yerine cüzdan, bu meta verinin blockchain içindeki konumuna ilişkin bir işaretçi içerir.

Başka bir deyişle, düğüm içi cüzdanı düzgün bir şekilde veritabanına dayalı olacak şekilde yeniden oluşturduk (kullanarak SeviyeDB), verimli bir şekilde aranamayan saf bir bellek içi yapıya güvenmek yerine. Şaşırtıcı olmayan bir şekilde, fark (3.4 GHz Intel Core i7'de ölçüldüğü üzere) oldukça çarpıcı:

MultiChain cüzdan işlem hacmi

Bellek Kullanımı

Grafikler, eski cüzdanın 250,000 işlem içermesi durumunda gönderme hızının 3 tx/sn'ye düştüğünü ve düğümün bellek kullanımına 600 MB eklediğini gösteriyor. Buna karşılık, yeni cüzdan saniyede 100 tx'in üzerinde hız sağlıyor ve yalnızca 90 MB ekliyor. Bu noktada eski cüzdanı test etmeyi bıraktık, ancak 6-8 milyon kayıtlı işlemle bile, yeni cüzdan 100 tx/sn'nin üzerinde göndermeye devam ediyor ve kullanılan RAM miktarı (veritabanı önbelleğe alma nedeniyle) yaklaşık 250 MB'a ulaşıyor.

Bu testler, düğümün cüzdanında birden fazla adres ve varlık (ve dolayısıyla pek çok harcanmamış işlem çıktısı) ile gerçekçi koşullar altında gerçekleştirildi. İdealleştirilmiş bir senaryoda (tek adres, tek varlık, birkaç UTXO), sürekli gönderme hızı 400 tx/s'nin üzerindeydi. Her iki durumda da, bu yeniden yazmanın bir parçası olarak, cüzdanın tüm işlevlerini temiz bir dahili arayüzün arkasına uygun şekilde soyutladık. Bu, gelecekte daha fazla sağlamlık ve hız için diğer veritabanı motorlarının desteklenmesini kolaylaştıracaktır.

Tekrarlamak gerekirse, bu sayıların tümü, bir düğümün başkaları tarafından oluşturulan işlemleri işleme kapasitesinden ziyade, yerel cüzdanında işlem oluşturma, gönderme ve saklama hızını ifade eder. Genel ağ verimi için MultiChain, üzerinde çalıştığı donanıma bağlı olarak şu anda 200 ila 800 tx/sn işlem yapabiliyor. (Normal donanımda 100,000 tx/sn gibi rakamlar vaat eden herhangi bir blockchain yazılımına şüpheyle yaklaşın, çünkü darboğaz, gerçekleştirilmesi gerçek zaman alan dijital imza doğrulamasıdır. Düğümler bireysel işlem imzalarını doğrulamıyorsa, bir blockchain muhtemelen güven üzerinden kullanılamaz. sınırları vardır, bu da onu normal dağıtılmış bir veritabanından daha iyi yapmaz.)

Bitirmek için, bu cüzdanın yeniden yazılmasını gerektiren MultiChain'e gelecek bir sonraki önemli özellikten bahsetmek istiyorum. Akışlar olarak adlandırılan bu özellik, bir blockchain üzerinde genel amaçlı veri depolama için üst düzey bir soyutlama ve API sağlar. Bir akışı, merkezi olmayan yönetim, dijital imzalar, zaman damgası ve değişmezlik gibi blockchain ile ilgili ek avantajlara sahip bir zaman serisi veya anahtar-değer veritabanı olarak düşünebilirsiniz. Bu işlevselliği kullanabilecek birçok blockchain kullanım senaryosunu biliyoruz ve bunu oluşturmak için şimdiden yoğun bir şekilde çalışıyoruz. Bu alanı izle.

Lütfen herhangi bir yorum gönderin LinkedIn'de.

Teknik ek

MultiChain alpha 22'den başlayarak, şu anda cüzdanın hangi sürümünün çalıştığını inceleyerek doğrulayabilirsiniz. walletdbversion alanı getinfo or getwalletinfo API çağrıları. Bir değer 1 orijinal Bitcoin Core cüzdanı anlamına gelir ve 2 yeni MultiChain cüzdanı anlamına gelir.

MultiChain'in yeni sürümünü mevcut bir zincirde çalıştırırsanız, yeni cüzdana hemen geçiş yapılmayacaktır. Düğümü durdurup yeniden çalıştırarak cüzdanı yükseltebilirsiniz. multichaind parametrelerle -walletdbversion=2 –rescan. Benzer şekilde kullanarak sürüm düşürebilirsiniz –walletdbversion=1 –rescan.

Varsayılan olarak, yeni bir zincirde bir düğüm başlattığınızda otomatik olarak yeni cüzdanı kullanır. Bunu çalıştırarak değiştirebilirsiniz multichaind parametre ile ilk kez –walletdbversion=1.

Yeni cüzdanla, hepsi Çok Zincirli API'ler Eski işlem sorgulama API'leri dışında, eskisi gibi tamamen aynı şekilde çalışır getreceivedbyaddress, listreceivedbyaddress ve listtransactions (Kullanım listwallettransactions or listaddresstransactions yerine). Buna ek olarak yeni cüzdan, Bitcoin Core'un kötü uygulanmış ve yakında kullanımdan kaldırılacak olan ve MultiChain tarafından hiçbir zaman düzgün bir şekilde desteklenmeyen "hesaplar" mekanizmasıyla ilgili API çağrılarını ve parametrelerini desteklemiyor. Bu aramalar bir hata mesajıyla güvenli bir şekilde devre dışı bırakılır.

Kaynak: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

Zaman Damgası:

Den fazla Çoklu zincir