MultiChain Akışlarına Giriş

Kaynak Düğüm: 1213525

Paylaşılan değişmez anahtar / değer çifti ve zaman serisi veritabanları için

Bugün MultiChain'in "akışlar" adı verilen çok önemli yeni bir işlevsellik setini uygulayan en son sürümünü yayınlamaktan gurur duyuyoruz. Akışlar, katılımcılar arasında varlıkların aktarımı yerine genel veri alma, zaman damgası ve arşivlemeye odaklanan blok zinciri kullanım durumları için doğal bir soyutlama sağlar. Akışlar, bir zincir üzerinde üç farklı veri tabanı türü uygulamak için kullanılabilir:

  1. NoSQL tarzında bir anahtar-değer veritabanı veya belge deposu.
  2. Girişlerin sıralanmasına odaklanan bir zaman serisi veritabanı.
  3. Girişlerin yazarlarına göre sınıflandırıldığı kimlik temelli bir veritabanı.

Bunlar, paylaşılan bir veritabanının 'ne', 'ne zaman' ve 'kim' olduğu olarak düşünülebilir.

Akışlarla ilgili temel bilgiler

Bir MultiChain blok zincirinde herhangi bir sayıda akış oluşturulabilir ve her akış bağımsız bir yalnızca ek öğe koleksiyonu olarak işlev görür. Bir akıştaki her öğe aşağıdaki özelliklere sahiptir:

  • Bir veya daha fazla Yayıncılar bu öğeyi dijital olarak imzalayanlar.
  • İsteğe bağlı anahtar daha sonra kolay erişim için.
  • Bizi veri, küçük bir metin parçasından birçok megabayt ham ikili dosyaya kadar değişebilir.
  • A zaman damgası, öğenin onaylandığı bloğun başlığından alınır.

Sahne arkasında, bir akıştaki her öğe bir blok zinciri işlemiyle temsil edilir, ancak geliştiriciler bu temel mekanizmanın farkında olmadan akışları okuyabilir ve yazabilir. (Daha ileri düzey kullanıcılar kullanabilir ham işlemler birden çok akışa yazmak, varlıkları yayınlamak veya aktarmak ve / veya tek bir atomik işlemde izinler atamak için.)

Akışlar, MultiChain'in izin sistemiyle çeşitli şekillerde entegre olur. İlk olarak, akışlar yalnızca izinleri olanlar tarafından oluşturulabilir, aynı şekilde varlıkların yalnızca belirli adresler tarafından verilebilmesi. Bir akış oluşturulduğunda açık veya kapalıdır. Açık akışlar, blok zinciri işlemi gönderme iznine sahip olan herkes tarafından yazılabilirken, kapalı akışlar, izin verilen adreslerin değişken bir listesiyle sınırlıdır. İkinci durumda, her akışın bu yazma izinlerini zaman içinde değiştirebilen bir veya daha fazla yöneticisi vardır.

Her blok zincirinin kendi içinde tanımlanan isteğe bağlı bir 'kök' akışı vardır. parametreler ve zincirin oluşturulduğu andan itibaren var olur. Bu, bir akışın açıkça oluşturulmasını beklemeden, verileri depolamak ve almak için bir blok zincirinin hemen kullanılmasını sağlar.

Olduğum gibi önceden tartışıldı, gizlilik çok sayıda blockchain kullanım durumunda en büyük zorluktur. Bunun nedeni, bir blok zincirindeki her düğümün tüm zincir içeriğinin tam bir kopyasını görmesidir. Akışlar, bir blok zincirinde şifrelenmiş verileri desteklemek için aşağıdaki gibi doğal bir yol sağlar:

  1. Bir akış, katılımcılar tarafından herhangi bir açık anahtar şifreleme şeması için genel anahtarlarını dağıtmak üzere kullanılır.
  2. Her veri parçasının benzersiz bir anahtarla simetrik kriptografi kullanılarak şifrelendiği verileri yayınlamak için ikinci bir akış kullanılır.
  3. Üçüncü bir akış, veri erişimi sağlar. Bir veri parçasını görmesi gereken her katılımcı için, söz konusu verinin gizli anahtarını içeren ve bu katılımcının genel anahtarı kullanılarak şifrelenen bir akış girişi oluşturulur.

Bu, bir blok zincirindeki verileri arşivlemek için verimli bir yol sağlarken, yalnızca belirli katılımcılar tarafından görülebilir hale getirir.

Akışlardan alınıyor

Akışların temel değeri, indeksleme ve geri getirmedir. Blok zinciri, belirli bir akışa abone olan tüm düğümlerin içinde aynı öğeleri göreceğini garanti ederek, her düğüm hangi akışlara abone olacağını seçebilir. (Bir düğüm, oluşturulan her yeni akışa otomatik olarak abone olacak şekilde de yapılandırılabilir.)

Bir düğüm bir akışa abone ise, bilgiler bu akıştan çeşitli yollarla alınabilir:

  • Akıştan sırayla öğeler alınıyor.
  • Belirli bir anahtara sahip öğelerin alınması.
  • Belirli bir yayıncı tarafından imzalanmış öğeleri almak.
  • Akışta kullanılan anahtarları, her anahtar için öğe sayılarıyla birlikte listeleme.
  • Yayıncıları öğe sayılarıyla bir akışta listeleme.

Başlangıçta belirtildiği gibi, bu geri alma yöntemleri, akışların anahtar-değer veritabanları, zaman serisi veritabanları ve kimlik odaklı veritabanları. Tüm alma API'leri teklifi başlama ve saymak parametreler, uzun listelerin alt bölümlerinin verimli bir şekilde alınmasını sağlar (SQL'deki LIMIT deyimi gibi). İçin negatif değerler başlama en son öğelerin alınmasına izin verin.

Akışlar, aynı anahtara sahip birden fazla öğe içerebilir ve bu, blok zincirinin değişmezliği ile bir veritabanını güncelleme ihtiyacı arasındaki gerilimi doğal olarak çözer. Her etkili veritabanı 'girişine' uygulamanızda benzersiz bir anahtar atanmalıdır ve bu girişe yapılan her güncelleme, anahtarıyla birlikte yeni bir akış öğesi ile temsil edilir. MultiChain'in akış alma API'leri daha sonra şunlar için kullanılabilir: (a) belirli bir girişin ilk veya son sürümünü almak, (b) bir giriş için tam sürüm geçmişini almak, (c) ilk ve sonuncusu dahil olmak üzere birden çok giriş hakkında bilgi almak her birinin sürümleri.

Bir blok zincirinin eşler arası mimarisi nedeniyle, bir akıştaki öğelerin farklı siparişlerde farklı düğümlere ulaşabileceğini ve MultiChain öğelerin bir blokta 'onaylanmadan' önce alınmasına izin verdiğini unutmayın. Sonuç olarak, tüm alma API'leri genel (varsayılan) veya yerel sıralama arasında bir seçim sunar. Global sıralama, zincir uzlaşmaya vardığında tüm düğümlerin aynı API çağrılarından aynı yanıtları almasını garanti eder. Yerel sıralama, herhangi bir belirli düğüm için bir akışın öğelerinin sıralamasının API çağrıları arasında asla değişmeyeceğini garanti eder. Her uygulama kendi ihtiyaçlarına uygun seçimi yapabilir.

Akışlar ve MultiChain yol haritası

Akışların yayınlanmasıyla, MultiChain 1.0 için son büyük çalışmayı tamamladık ve şimdi kesin olarak beta yolundayız. Önümüzdeki birkaç ayı, dahili test paketimizi genişletmek (zaten oldukça büyük!), Windows ve Mac bağlantı noktalarını bitirmek, daha yararlı API'ler eklemek, kâşif akışlar için, fikir birliği mekanizmasının yönlerini değiştirmek, web demomuzu yayınlamak ve genel olarak kodu ve yardım mesajlarını düzenlemek. En önemlisi, hatalarımız çalışmanızı kesintiye uğratmasın diye, tespit edildikleri anda hataları gidermeye devam edeceğiz.

Uzun vadede, akışlar MultiChain yol haritasına nerede uyuyor? Geri adım atan MultiChain artık üç alanda üst düzey işlevsellik sunuyor:

  • İzinler kimin bağlanabileceğini, işlem yapabileceğini, varlıklar / akışlar oluşturabileceğini, madencilik yapabileceğini / doğrulayabileceğini ve yönetebileceğini kontrol etmek.
  • Varlıklar ihraç, reissuance, transfer, atomik değişim, emanet ve imha dahil.
  • Akışları akış oluşturma, yazma, abone olma, endeksleme ve alma için API'ler ile.

MultiChain 1.0'ın (ve premium sürümün) piyasaya sürülmesinden sonra, bu listede sırada ne var? Bakarsan API komutu akış oluşturmak için kullanılan, sabit bir değere sahip görünüşte gereksiz bir parametre göreceksiniz stream. Bu parametre, MultiChain'in gelecekte diğer yüksek seviyeli varlık türlerini desteklemesine izin verecektir.

Parametre için gelecekteki olası değerler şunları içerir: evm (bir ... için Ethereumuyumlu sanal makine), sql (SQL tarzı bir veritabanı için) veya hatta wiki (ortaklaşa düzenlenmiş metin için). Durumu sıralı bir dizi değişiklikle belirlenen herhangi bir paylaşılan varlık, potansiyel bir adaydır. Bu tür her bir varlığın şunlara ihtiyacı olacaktır: (a) durumunu güncellemek için doğru soyutlamayı sağlayan API'ler, (b) bu ​​durumu izlemek için abone olunan düğümler için uygun mekanizmalar ve (c) durumun bir kısmını veya tamamını verimli bir şekilde almak için API'ler. Bizim tarafımızdan veya üçüncü şahıslar tarafından bir eklenti mimarisi aracılığıyla uygulanacak olan diğer üst düzey varlıkların en yararlı olacağını öğrenmeyi bekliyoruz.

Akıllı sözleşmeler ne olacak?

Genel anlamda MultiChain, veri bir blok zincirine değişmez bir şekilde gömülüdür, ancak kod verilerin düğümde veya uygulama katmanında olduğunu yorumlamak için. Bu, kodun blok zincirine gömülü olduğu ve sanal bir makinede çalıştığı Ethereum'un örneklediği "akıllı sözleşmeler" paradigmasından kasıtlı olarak farklıdır. Teorik olarak, akıllı sözleşmeler Tur tamamlamaMultiChain veya diğer herhangi bir blockchain platformunun davranışını yeniden üretebilirler. Ancak pratikte, Ethereum tarzı akıllı sözleşmelerin birçok acı verici eksikliği vardır:

  • Her düğüm, ilgi çekici olsun ya da olmasın, her hesaplamayı yapmak zorundadır. Aksine, MultiChain'de her düğüm hangi akışlara abone olacağına karar verir ve diğerlerinin içerdiği verileri göz ardı edebilir.
  • Akıllı sözleşmeler için kullanılan sanal makine, belirli bir bilgisayar mimarisi için yerel olarak derlenen koddan çok daha kötü performansa sahiptir.
  • Akıllı sözleşme kodu, özelliklerin eklenmesini ve hataların düzeltilmesini önleyen bir zincire değişmez bir şekilde yerleştirilmiştir. Bu zorla gösterildi DAO'nun ölümü.
  • Akıllı sözleşmeye gönderilen işlemler güncellenemiyor Genel amaçlı hesaplamanın doğası gereği, son sıralaması bilinene kadar bir blok zincirinin durumu. Bu, gecikmelere (bir blokta bir işlem onaylanana kadar) ve olası geri dönüşlere (zincirde bir çatal olması durumunda) yol açar. Bunun aksine, MultiChain her bir onaylanmamış işlem türünü uygun şekilde ele alabilir: (a) gelen varlıklar bir düğümün onaylanmamış bakiyesini anında günceller, (b) gelen akış öğeleri anında kullanılabilir, daha sonra genel sıralamaları tamamlanır, (c) izin değişiklikleri hemen uygulanır ve ardından gelen bloklarda tekrar oynatılır.

Yine de benim gibi daha önce söylediGüçlü kullanım durumları gördüğümüzde, akıllı sözleşmeleri blockchain uygulamaları için faydalı bir paradigma olarak kesinlikle göz ardı etmiyoruz. Bununla birlikte, MultiChain'de akıllı sözleşmeler, en düşük işlem seviyesi yerine blok zincirinin üstünde akış benzeri bir katmanda uygulanacaktır. Bu, MultiChain'in varlıklar ve akışlar gibi daha basit blok zinciri varlıkları için üstün performansını korurken, gerçekten ihtiyaç duyulan yerlerde daha yavaş zincir üzerinde hesaplama sunacak. Ancak düşündüğünüzden daha az bu tür vaka var.

 

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

 

Teknik ek

Akışlarla ilgili tüm komutlar tam olarak MultiChain API sayfası, ancak işte kısa bir özet:

  • Kullanarak bir akış oluşturun create stream or createfrom ... stream
  • İle bir akışa öğe ekleyin publish or publishfrom
  • Kullanarak akışların bir listesini alın liststreams
  • İle bir akışı izlemeyi başlatın veya durdurun subscribe ve unsubscribe
  • Şunu kullanarak akış öğelerini alın liststreamitems, liststreamkeyitems ve liststreampublisheritems
  • Yayın anahtarlarını ve yayıncıları listeleyin liststreamkeys ve liststreampublishers
  • Büyük akış öğeleri için tüm verileri kullanarak alın gettxoutdata (görmek maxshowndata aşağıda)
  • Akış başına izinleri gibi çağrılarla kontrol edin grant [address] stream1.write
  • Şunu kullanarak bir akışın izinlerini görüntüleyin listpermissions stream1.*

Akışlarla ilgili diğer bazı geliştirici notları:

  • The create izni, bir adresin akışlar oluşturmasına izin verir.
  • İlgili yayın başına izinler write, admin ve activate
  • yeni blok zinciri parametreleri: root-stream-name (boş bırakın), root-stream-open, anyone-can-create, admin-consensus-create, max-std-op-returns-count
  • yeni çalışma zamanı parametreleri: autosubscribe oluşturulan yeni akışlara otomatik olarak abone olmak ve maxshowndata API yanıtlarındaki veri miktarını sınırlamak için (bkz. gettxoutdata ile elde edilmiş).
  • Bir akış öğesinin verilerinin maksimum boyutu, max-std-op-return-size blockchain parametresinin yanı sıra maximum-block-size ve max-std-tx-size değerler eksi birkaç yüz bayt.
  • Eski cüzdan formatını kullanan düğümler akışlara abone olamaz ve yükseltilmeli.

 

Zaman Damgası:

Den fazla Çoklu zincir