SAFE Network новини 🇧🇬 20.8.2020

Накратко

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

  • Вижте страхотния SAFE Network Wallet Bot, разработен от @DeusNexus тук - Телеграм вече е свързан към SAFE CLI! :clap:
  • Имаше огромни усилия за преструктуриране и опростяване на SAFE Клиентските библиотеки през последните няколко седмици, като около 18 000 реда код бяха премахнати и вече имаме по-опростена, по-ясна и чиста кодова база.
  • Работата по излагане на async API-то за маршрутизиране продължава безпроблемно със същите опростявания на кода, които наблюдавахме в други хранилища през последните месеци.

CRDT

safe-fs

Продължихме с работата по внедряването на crdt-tree. Беше направено известно преструктуриране, за да се премести всяка структура от данни в собствен файл. Също така бяха добавени някои допълнителни примери/тестове, които се справят с проблемите със записите в лог-а. Накрая бяха направени някои незначителни оптимизации и почистване. Кодът все още трябва да се коментира и да се добавят основни тестове за всяка структура, но е към завършването си.

В тази връзка получихме дисертация с автор кандидат докторант, написал разпределена файлова система, която се реализира чрез crdt-tree алгоритъма. Още по-добре е, че файловата система е реализирана в Rust като FUSE файлова система. Не бихме могли да желаем нещо по-добро съответстващо на нашите усилия.

Затова отделихме известно време тази седмица във внимателно проучване на документа, водихме си бележки и го оценихме спрямо собствените ни дизайнерски решения, като също така изпробвахме и прегледахме кода му. Открихме 2-3 идеи, които може би ще можем да включим в нашия дизайн.

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

SAFE Клиентски библиотеки и Трезор

SAFE Клиентски библиотеки план на проекта
SAFE VТрезор план на проекта

SAFE Клиентски библиотеки и Трезор - интеграция

Преструктуриране (с мачете)

През изминалата седмица в SCL работихме върху финализирането на някои по-големи преструктурирания и опростявания на кодовата ни база базирани върху последния quic-p2p async напредък.

Така от една страна quic-p2p ни позволи да опростим клиентския слой, премахвайки част от вътрешните събитията и външни структури, за да стигнем до много по-опростен и по-функционален клиент.

Също така преоценявахме ролята на SAFE Клиентските библиотеки по-общо. Известно време тя беше голяма библиотека с кода за основния клиент, приложенията, удостоверяванията и FFI интеграциите. Но тъй като все повече се съсредоточаваме над кода, някои неща изглеждаха сякаш се нуждаят от основен ремонт.

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

Това драстично опростява нещата. „Програмите“ просто стават „клиенти“ (повече за това как ще работи по-долу), използвайки секретни ключове по същия начин като всеки друг клиент. Вече не се нуждаем от слоя за „удостоверяване“ сега, когато нямаме програми. Което отново означава по-малко код както в SCL така и в трезорите (където разрешенията на програмите бяха проверявани преди).

Така че с тези (доста обстойни) промени успяхме да намалим SCL кодовата база с около 18 000 реда код през последните няколко седмици. Получихме кодова база, която е много по-проста, по-ясна и по-чиста. По-лесна за документиране и по-лесна за преглед.

Нови “програми” и “удостоверител”

Както беше отбелязано отпада разграничаването на „програмите“ в кодовата база, но не и по принцип. Това, към което гледаме, е следното: Вместо да разчитаме на друг слой от мрежов код за проверка на програмите (с цялата сложност и специфични мрежови заявки, които носи), в следващите седмици ще преработим Удостоверителя , да бъде точно това. Програма, която работи със стандартни мрежови API-та. И тази програма ще управлява всички „програми“ по почти същия начин като предишната. Основното различие е, че всяка програма ще има свои собствени ключове, които Удостоверителят ще знае и контролира.

Това отваря вратата за повече гъвкавост при контролирането на разходите и разрешенията за програмите и именно тези разрешения вече ще разчитат единствено на структурите на разрешение при данните. Което означава, че все още ще можем да контролираме напълно какво/къде може да пише програмата, както и да увеличим контрола върху разходите.

Това беше голямо преструктуриране. Но ползите вече са изобилно ясни. С изчезналите 18 000 реда код, сме свободни да се движим много по-бързо в SAFE Клиентските библиотеки. Сега продължаваме с финализирането на интеграцията с актуализираните Трезори и quic-p2p, за да се върнем към работа върху тест-мрежите.

Асинхронизация при Трезорите и тестове

Интеграцията на асинхронното маршрутизиране започна и в Трезорите, паралелно на усилията ни за маршрутизирането.

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

Наред с горното непрекъснато тестваме и коригираме всички проблеми, открити вследствие на последните преструктурирания на съобщения, както и новите трансфери и функции за фермерството.

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

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

Работата за премахване на гласуването за SendNeighbourInfo, както бе споменато в предишните новини, вече е обединена, като всички неуспешни тестове са поправени, заедно с PR за ( коригиране на неправилно присвоен ключ на секция към не-старейшини).

Междувременно, изпълнението на работата по преместване на преструктурирането за (Премахване на списъка за преместване и въвеждането на преместване независимо от реда на събитията за преместване) напредва добре. Също така започнахме да използваме тестовата рамка от Трезорите, за да проверим поведението на маршрутизацията при реално използване на мрежата.

Усилията, свързани с излагането на async API-то за маршрутизиране, продължават плавно и както в предишните преструктурирания, направени в другите контейнери, вече виждаме опростяване на кода, когато въвеждаме async функции в кодовата база. Досега успяхме да изложим поток от асинхронизация, който трезорът ще използва, за да получи всяко едно от събитията, които създава маршрутизиращият слой, и точно сега работим върху интегрирането на трезорите с тези промени и успешното свързване с други трезори използвайки новите API-та.

Стандартизация

Вече прокарваме процеса на стандартизация малко по-напред. Ще превключим bincode към MsgPack за сериализация (както @mav посочи преди време, bincode е само Rust). Ще стандартизираме на base32z за четимо от хора кодиране.

Това се основава на преминаването към QUIC от Crust, което ни даде стандартизиран защитен транспортен слой.

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

По-важното е, че това трябва да ни позволи да видим как всичко работи на едно ниво, т. е. Трезорът получава съобщение X, след това прави Y до X и изпраща съобщение Z до друг Трезор. Или клиентът изпраща съобщение от A до 7 трезора (неговите старейшини), които приемат A и се съгласяват с B, след това изпращат съобщение C до отдалечена секция, за да “направи D” и т.н.

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


  • Подробна информация може да намерите както винаги във форума на международната общност: SAFE Network Forum
  • Ако имате въпроси може да ги зададете във Facebook групата на българската SAFE общност: Redirecting...
  • Ако искате да следите последните новини заповядайте във Facebook страницата на SAFE Network България: Safe Network България