SAFE Network новини - 14.5.2020

SAFE Network новини - 14.5.2020

Накратко

Ето някои от основните неща тази седмица:

  • След някои подобрения пуснахме още един вътрешен тест-скрипт с Трезори от вкъщи и досега изглежда добре.
  • Пуснахме нова версия на пакета MaidSafe.SafeApp NuGet.
  • Продължихме работата по внедряването и тестването на поддръжката за празни директории, очаквайте PR.
  • Прехвърлихме API-то на FilesContainers и CLI командите да се съхраняват / синхронизират / четат, използвайки Sequence типа данни и всички основни ръчни тестове с локална Секция работят отлично

Трезори – Фаза 2

План на проекта

Работата по AT2 напредва следвайки точно теоретичната обосновка, както и корекции за специфични SAFE условия. Постигаме добър напредък с прилагането на това както на трезора, така и на клиента. Приближаваме се до етап, в който AT2 е проверен и можем да започнем да изготвяме тестове за него.

След последния вътрешен тест с Трезори от дома, направихме някои подобрения. Основната добавена функция беше премахването на необходимостта от --ip параметъра, който изискваше потребителите да предават локалния си IP адрес при стартиране на Трезор, с цел пренасочване на порт. Премахнахме необходимостта от това, като се свързваме към IGD шлюза и питаме за адреса на локалния сокет. Това в крайна сметка подобрява потребителското изживяване чрез опростяване на процеса на стартиране на трезора, минимизирайки необходимостта от технически подробности. Със завършването на това стартирахме още един тест и досега изглежда добре. Ще продължим да го наблюдаваме през следващите дни и е вероятно да направим допълнителни подобрения и повторения, преди да сме готови да го пуснем публично.

Успоредно с това започнахме да прилагаме и някои подобрения, за да поддържаме минималния брой копия на данни, в случай че трезорите излизат офлайн. При първоначалната им реализация се препращат редица съобщения, когато трезорът преминава офлайн. Всички Старейшини се опитват да извлекат данните и да съхранят допълнителни копия. Това е от което се нуждаем, но започнахме да мислим за начини да го оптимизираме допълнително. Прилагането, итерацията и подобряването е пътят напред!

SAFE API

План на проекта

Продължава работата по внедряване и тестване на поддръжката за празни директории. Това наложи малка промяна в начина на съхранение на данните във FileContainer.

Преди това всеки запис на FileItem във FileContainer представляваше файл с линк, съдържащ SAFE URL адрес, идентифициращ обект на неизменна информация. В предложения нов код, FileItem може да представлява файл, директория или Symlink, идентифициран от типа на атрибута от метаданните. Записите в Directory и Symlink не притежават линк, така че те съществуват само във FileContainer.

Допълнителни метаданни също се създават за всеки файл, ако са локално достъпни: original_create_time, original_modified_time и unix_mode_bits. Целта на тези метаданни е да се даде възможност за архивиране / възстановяване, което запазва метаданните на локалния файл.

Пуснахме малка поправка на files ls, което позволява на ls да връща подробности за единичен файл във FileContainer и също прави съвпадения по компонент на пътя, а не по индивидуален характер.

Първият проект на искането за тези промени ще бъде пуснат по-късно днес, за да може екипът да го прегледа.

По поддръжката на скрити файлове (тези, които започват с .) и относителни символни връзки (линкове в FileContainer) ще работим през следващата седмица.

SAFE Програма C#

План на проекта

Пуснахме нова версия на NuGet пакета MaidSafe.SafeApp. В тази най-нова версия преименувахме XorUrlEncoder на SafeUrl и преструктурирахме съответно API-тата. Добавихме и някои нови API-та, за да генерираме URL адресите за ключове, мутационни данни, приложения и неизменни данни. Поправихме няколко проблема във функциите за обвиване на FFI, които причиняваха сривове и опростихме използването на базовите типове кодиране за URL адресите. Можете да проверите файла с промените за пълния списък с промени.

CRDT

Тази седмица внедрихме, преструкторирахме и опростихме типа данни за последователността (Sequence) и поддържаните заявки в safe-nd, а след това адаптирахме SAFE Клиентските библиотеки и SAFE Трезорите съответно. Също така се опитахме да мигрираме командите на FilesContainers API-то и CLI-то, за да се съхраняват / синхронизират / четат, като се използва последователността като основен тип данни (за разлика от AppendOnlyData) - всички основни ръчни тестове с локална Секция работиха отлично!

По-голямата част от екипа е на ежедневни срещи с нашия изпълнител на CRDT през последните 2 седмици. Те доведоха до дълбоко потапяне в AT2, ORSWOT и обобщена византийска толерантност за всички CRDT в SAFE. Този процес е приет много добре и вероятно ще инвестираме малко повече там, за да имаме одит на нашите конкретни случаи на използване. Това ще помогне за гарантирането на надеждността и коректността на нашите типове данни, както и за обработката на членството в секциите (което ще бъде значително подобрено).

Функции в Rust

Миналата седмица преминахме през огромно количество от промени, необходими за safe_authenticator, макар да попаднахме на някои проблеми, когато се опитваме да актуализираме event_loop кода за safe_authenticator и за safe_core. Това от своя страна ни накара да разгледаме по-отблизо кода тук и се опитваме да решим най-добрия начин да продължим, като изглежда, че ще премахнем този вътрешен event_loop, за да запазим библиотеките ясни и прости, позволявайки библиотеките на по-високо ниво да използват Rust време на изпълнение, както изискват.

Маршрутизиране

План на проекта

Тази седмица реализирахме няколко малки подобрения на API-то, които бяха поискани от екипа работещ върху Трезора: Първо добавихме метод за извличане на текущите възрастни от секцията, подредени според XOR-разстоянието към дадено име и добавени събития, които се покачват, когато член се присъедини или напусне секцията. Тази функционалност е необходима за трезорите, за да могат да разпространяват и преразпределят копията на данните между членовете на секцията. След това добавихме getter за текущия дял на секретния ключ за споделяне, като по този начин позволихме на трезорите да участват в схеми за подписване и криптиране - нещо, което досега беше достъпно само за Маршрутизирането, за свои вътрешни нужди.

Все още работим върху модела за изтегляне, както писахме миналата седмица. По-голямата част от новия поток вече е налице, просто трябва да отстраним грешките в някои странни проби на теста и да полираме кода малко, преди да го повишим като PR.

BLS - Разпределено генериране на ключове

План на проекта

Миналата седмица тествахме по-дълбоко контейнера с реални мрежови симулации, които въведоха злонамерени сценарии в пакета за тестване. Това разкри няколко грешки, с които трябва да се справим, най-вече по отношение на начина, по който обработваме съобщенията на DKG сред участващите трезори. Те по същество ни показват различни начини за ефективно прилагане на слой със съобщения, за да отговарят на нуждите на мрежа, като например как се опитваме да принудим 100% участие на m от n участници, на практика премахвайки необходимостта от фаза на обосновка в механизма, като се уверим, че всички участващи трезори би трябвало да не са злонамерени, без да оставим място за оплаквания.

По следващи подобрения на самия механизъм също се работи. Например, подобряваме транспортния слой на контейнера, за да взима решения самостоятелно, използвайки вътрешни таймери, за да завърши успешно сесията на DKG сам, а не да чака потребителите (като трезори, клиенти и т.н.), които контролират и обработват тези специфики, което означава, че интеграция и използваемостта с други контейнери в бъдеще става много по-лесно. Също така започнахме дискусии в екипа за това как BLS-DKG биха били комбинирани и използвани заедно с другите модули, които се разработват паралелно (като например с клиентите, маршрутизацията, CRDT и т.н.), с крайната цел на контейнера да бъде използван в основата.

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