Safe Network новини 🇧🇬 5.8.2021

Тази седмица разглеждаме промените в типовете данни в резултат на въвеждането на безконфликтни типове данни (CRDT).

За тези, които се нуждаят от бързо опресняване, CRDT са структури от данни с някои специални математически свойства. Когато съществуват множество версии на данни, като например копия на документ, който се редактира офлайн на различни компютри, в крайна сметка, когато компютрите се свържат отново, те винаги ще се обединят в една „истинска“ версия.

За Safe мрежата CRDT са един от ключовите начини за осигуряване на консенсус, без да се изисква тежкот, общосистемно подреждане на събитията, както при блокчейн технологията. Това е красиво елегантна концепция, въпреки че очевидната простота крие факта, че под капака се случват доста интересни неща. Дори Google не можа да се справи с проблемът с едновременното писане при създаването на Google Документи - трябваше да прибягнат до грозна бъркотия. Да изпреварим Google в играта за едновременност е възможност, която е твърде добра, за да пропуснем!

За да се възползваме от магьосничеството на CRDT, преконфигурираме нашите променливи типове данни - повече за това по долу.

Общ прогрес

Няма тестова мрежа тази седмица, но не би трябвало да е твърде далеч. :cross_fingers: Остават ни няколко неприятни проблема, които трябва първо да преодолеем.

@chriso работи на заден режим, добавяйки поддръжка за AArch64 или ARM64, ако предпочитате. В последните версии на sn_cli и safe_network ще видите, че са приложени изпълними файлове за ARM, ARMv7 и AArch64. Крис е тествал изпълнимите файлове за AArch64 и е успял да потвърди, че те работят, има тестов скрипт, който използвахме, за да проверим това тук за всеки, който се интересува. Не сме тествали основните изпълними файлове за ARM и ARMv7, нямаме хардуер, който да използваме за начало, така че използвайте ги на свой собствен риск! Имайте предвид също, че нашите контейнери в момента са в интензивно развитие, докато се придвижваме към следващата тестова мрежа, така че най-новите изпълними файлове са по-често несъвместими помежду си във всички архитектури. Бихме посъветвали всеки, който желае да тества, да се въздържи, докато не обявим съвместими версии навсякъде, т.е. при следващата тестова мрежа.

@qi_ma и @chriso се справиха с някои грешки в процеса на непрекъсната интеграция (CI). Гладко работещият CI е от съществено значение за бързото обединяване на заявки за изтегляне, което само по себе си е от жизненоважно значение за бърза итерация и тестване.

Отбелязваме голям напредък с актуализирането на qp2p библиотеката, където елементи като XorName се преместват от оптимизирания sn_routing към qp2p. Продължаваме с проучване за прекъснати връзки, запазване на връзките, повторни опити и стартиране. Твърде много неща са, за да навлизаме в подробности сега, но ако имате въпроси, ще направим всичко възможно да им отговорим в тази тема. Безопасно е да се каже, че това държи екипа доста зает!

@oetyng също е дълбоко в групирането на потоци от парчета и плащания. Груповото пакетиране позволява да се извършва едно плащане за произволен брой операции. В рамките на това е и възможността за разделяне на части и криптиране офлайн и предплащане.

Така че, след локално криптиране и постоянство, потребителят може:

  1. По всяко време може се свържете, за да получите вечно валидна „оферта“ за партидата.
  2. С тази оферта - отново, по всяко време - може да платите и извлечете „разписка“.
  3. И накрая (познахте, по всяко време) може да качите произволен брой от тези парчета/операции.

Всичко това е свързано с текущата работа за прехвърляне на повече работа върху Клиента. В края на краищата, ако Клиентът прави искането, то е справедливо, той също така да свърши работата; този подход има и предимства срещу спам.

Последователният тип данни вече е напълно премахнат от sn_api
благодарение на @anselme и ще бъде заменен с CRDT-съвместими типове данни. Повече за това по-долу.

Типове данни

Преди имахме тип данни Карта, който беше ключ за редактиране: хранилище за стойности, използвано за съхраняване на информация като подробности за акаунта; тип данни само за Последователно добавяне, подходящ за уеб страници и файлови контейнери, с възможност за връщане към предишни версии; и Blob - неизменни данни.

Всички нови и обновени типове данни се основават на - както може да предположите - CRDT, което носи някои ясни предимства.

Регистърът е общ тип CRDT данни, който съдържа стойност. За Safe искахме регистър, който също да ни позволи да се върнем назад във времето и да разгледаме предишните стойности, така че Дейвид Русу създаде нов тип регистър, базиран на Merkle DAG, наречен MerkleReg - регистър с история. Това беше внедрено преди известно време заедно със свой публичен API от страната на клиента.

Този нов Регистър прави типа данни Sequence ненужни, тъй като може да прави всичко, което Sequence би могъл да направи по отношение на съхраняването на предишни версии с добавения бонус, че може да обработва и паралелност. Ако клиент паралелни пише в регистъра, това води до разклонение, което след това може да бъде разрешено от клиента (това беше невъзможно при Sequence). В Safe използваме регистъра за съхраняване на указатели към текущата и предишните версии на данните, като текстов файл или уеб страница, които се съхраняват като пакет данни.

Толкова за Sequence :wave :, но какво да кажем за Map?

Е, картите бяха подобрени, за да се превърнат в мултикарти, като „мулти-“, се отнася до факта, че всеки ключ вече може да има множество стойности. И тук това позволява паралелност. Множество клиенти (напр. Приложения) могат да редактират мултикарта едновременно и резултатът ще бъде разклонения. Как ще се разрешат тези разклонения, в крайна сметка ще зависи от приложението, но след време те ще се сближат по същия начин, по който правят клоновете на Git. Мрежовата файлова система NFS и системата за разрешаване на имена NRS от тази седмица са напълно внедрени като Мултикарти, което ще бъде много важно след време за работата ни.

А пакетите данни? Те остават неизменими. В свят на постоянна промяна някои неща трябва да останат същите.

Преводи:

:uk: English :ru: Russian ; :de: German ; :es: Spanish ; :fr: French


  • Подробна информация може да намерите както винаги във форума на международната общност: Safe Network Forum
  • Ако имате въпроси може да ги зададете във Facebook групата на българската Safe общност: https://www.facebook.com/groups/SafeNetworkBulgaria/
  • Ако искате да следите последните новини заповядайте във Facebook страницата на Safe Network България: https://www.facebook.com/SafeNetworkBulgaria/