Както повечето тук несъмнено знаят, Възрастните са възли, които съхраняват данни и ги предоставят при поискване. Но какво ще стане, ако започнат да се държат злонамерено, да отказват да съхраняват или предоставят данни или поне да го правят по-бавно от очакваното? В името на функционирането на мрежата трябва да понижим или изхвърлим тези злонамерени възли, но преди да го направим, трябва да преразпределим данните, които те държат. Също така трябва да предоставим смислени съобщения за грешки на клиентите и другите възли, които се опитват да съхраняват данни, когато има такива проблеми. Върху това ще се съсредоточим тази седмица.
Общ напредък
@bochaco работи върху Safe потребителски интерфейс. Ако въведете safe
в конзолата (след като safe_network
е инсталиран, разбира се), влизате в потребителския интерфейс, което означава, че не е необходимо да пишете safe
всеки път след това. С всички скорошни CLI
актуализации този аспект беше малко изоставен, така че той го коригира. Също така се погрижи за малко подреждане и преструктуриране в кода на възела в подготовка за предстоящите промени в членството.
В DBC лабораториите @danda работи върху интегрирането на Ring CT в мрежата, включително да направи DBC по-удобни за използване с двата вида ключове: дълготраен ключ на собственика на базата за взаимодействие с трети страни, като например за дарения, и извлечен ключ за еднократна употреба за взаимодействие с монетни дворове и разходни книги. Той също така работи върху тестови функции, които могат да бъдат включени или изключени за отстраняване на грешки и оптимизация, и е намалил броя на заявките, необходими за повторение при разходната книга.
По отношение на задълженията за резервни копия на данни, @yogesh постигна напредък в модела на изтегляне, при който на Възрастните ще бъде казано какви данни трябва да държат и ще започне да изтегля данни от мрежата автоматично, за да гарантира, че точният брой копия се съхраняват за устойчивост. Повече за това по-долу.
@joshuef и @Qi_ma разглеждат проблемите с връзката между клиентите, показани в тестовата площадка и комнета. Ние може да сме смачкали един бъг с интензивно използване на процесора (поне вече не можем да го възпроизведем), така че ще търсим да проверим това в предстояща тестова площадка.
Превантивно създаване на копия на данни и грешки при Възрастни
Правилно функциониращите Възрастни са гръбнакът на мрежата и е наложително, ако възрастен започне да се държи лошо, той да бъде заменен и данните, които съхранява, да бъдат преместени плавно. Това се нарича превантивна репликация на данни и е подробно описано в PR #976.
Проверки на жизненост
Старейшините трябва да гарантират, че Възрастните работят правилно. Те извършват редовни проверки за жизненост, при които производителността на възел се сравнява с неговите 3 най-близки съседа. Ако броят на чакащите операции на възел е 5 пъти по-голям, отколкото в съседните му точки, той ще бъде понижен в длъжност и данните му ще бъдат преразпределени. За да се подготвим за тази евентуалност, след като броят на чакащите операции на възел е 2,5 пъти по-висок от неговите съседи (тези параметри ще бъдат оптимизирани по време на тестването), започва превантивна репликация, като понастоящем старейшините инициират тази репликация.
Когато има движение в секция (възли, които напускат или се присъединяват), трябва да се уверим, че данните се репликират и разпространяват към новоиздиграните в длъжност възли. Когато Възрастен е пълен, той също трябва да каже на Старейшините да съхраняват парчето данни при друг Възрастен.
Всичко това изисква известно самосъзнание от Възрастния възел за това колко е пълен. Проверката на налично пространство е доста ресурсоемка, така че го правим само на стъпки от приблизително 10% от наличното пространство.
Грешки при Възрастни
Трябва да генерираме грешки, за да съветваме клиентите – и системата като цяло – когато данните не се съхраняват както трябва. Това може да се случи поради различни причини. Тези грешки ще станат част от мрежовия протокол, с който всички възли трябва да се съобразяват, ако искат да останат в мрежата.
По-долу е даден списък с грешки, които могат да възникнат на Възрастен възел по време на PUT/GET операции (без да се броят AE и DKG грешки) и отговорите, върху които работим.
CouldNotStoreData
- Възрастният допусна грешка по време на съхранение, поради механизма за съхранение на Възрастния. Това е по вина на Възрастния. Възможните причини са неуспех при създаване на директории, проблеми с файловата система или базата данни, използвани за съхраняване на регистри, повредени регистри или грешни файлови пътеки.
DataError
- възелът не е съхранил данните поради грешка в тях. Това е по вина на клиента или вероятно, защото съобщението е повредено. Така или иначе (не можем да знаем) това трябва да бъде върнато на клиента.
NodeFull
- възелът е пълен! Съобщение за грешка се връща на Старейшината, който иска съхранението. Възможно е да накажем възрастни, които не са ни информирали предварително, че техните нива на съхранение намаляват.
Грешка при спам
Освен да информираме клиентите, ние също можем да използваме тези грешки като сигнал, че нещо се е объркало. В същото време трябва да избягваме да затрупваме Старейшините с твърде много съобщения към и от тях.
При боравенето с тези грешки трябва да гарантираме, че не отваряме нови вектори на атака, позволявайки на злонамерени потребители да извършват съзнателно зловредни операции тип DDoS атака, като генерират маси от съобщения за грешки. Като бъдеща мярка е възможно да можем да поставим в черен списък клиенти, за които се наблюдава, че се държат по този начин.
Преводи:
English Russian ; German ; Spanish ; French
- Официален сайт на Safe Network
- Обобщено представяне на Safe Network
- Safe Network Фундаменти
- Карта на проекта
- Подробна информация може да намерите както винаги във форума на международната общност: Safe Network Forum
- Ако имате въпроси може да ги зададете във Facebook групата на българската Safe общност: Redirecting...
- Ако искате да следите последните новини заповядайте във Facebook страницата на Safe Network България: Safe Network България