DeSearch ist ein experimentelles System für eine dezentrale Suchmaschine. Um Skalierbarkeit und Fehlertoleranz zu erzielen, entkoppelt die Deckung der Berechnung und des Speichers mithilfe eines zu vertrauenswürdigen Netzwerks und eines staatlichen Cloud -Speichers. Das Netzwerk wird von Zeugen verfolgt und das Geschäft wird durch Blockchain reguliert. Die aktuelle Implementierung von Desearch verwendet Intel SGX als vertrauenswürdige Hardware und Redis als Geschäft.
WARNUNG: Dieses Repo veranstaltet einen akademischen Proof-of-Concept-Prototyp und hat keine sorgfältige Code-Überprüfung erhalten.
Weitere Informationen finden Sie in unserem OSDI'21 -Artikel.
@inproceedings{li2021desearch,
author = {Mingyu Li and Jinhao Zhu and Tianxu Zhang and Cheng Tan and Yubin Xia and Sebastian Angel and Haibo Chen},
title = {Bringing Decentralized Search to Decentralized Services},
booktitle = {15th {USENIX} Symposium on Operating Systems Design and Implementation, {OSDI} 2021},
pages = {331--347},
publisher = {{USENIX} Association},
year = {2021},
}
Hardwareanforderung: SGX-fähige Desktops oder SGX-fähige Cloud-Maschinen. Um zu überprüfen, ob Ihr Computer SGX unterstützt, finden Sie in Intel SGX Hardware.
Beachten Sie, dass wenn Sie mehrere SGX -Knoten auf Ihrer lokalen Maschine ohne Unterstützung von skalierbarem SGX ausführen möchten, es möglicherweise länger dauert, das gesamte System aufgrund des knappen verschlüsselten Speichers zu starten (normalerweise 128 MB/256 MB auf SGXV1).
Dieses Repo bietet eine Nicht-SGX-Version im executor Ordner und eine SGX-Version im sgx-executor Ordner. Die Nicht-SGX-Version hilft Ihnen, leichter zu debuggen, wenn Sie Erweiterungen zur Deckung erstellen möchten. Es verwendet die gleiche Ordnerstruktur wie die SGX -Version. Beachten Sie, dass nur die SGX-Version oram-basierte Queriers enthält.
Nach Ubuntu 20.04 verlangen die Erstellung von Decearch Executors die folgenden Abhänge, die installiert sind:
Sie können sich auf den deps -Ordner für die richtigen Versionen von Redis, Hiredis und Redis ++ beziehen.
apt install -y libboost-all-dev
cd deps
tar zxf redis-6.2.6.tar.gz
tar zxf redis-plus-plus-1.2.3.tar.gz
pushd redis-6.2.6/deps/hiredis/
make -j $( nproc ) && make install
popd
pushd redis-plus-plus-1.2.3
mkdir build && cd build && cmake ..
make -j $( nproc ) && make install
popdKanban ist eine unmodifizierte Redis, die einen relativ billigen Cloud -Speicher nutzt.
Starten Sie einfach den Redis -Server:
cd Kanban
cd deps && make hdr_histogram linenoise jemalloc
cd - && make all
./src/redis-server ./redis.conf Um alle Staaten aus Kanban zu entfernen, können Sie ./src/redis-cli FLUSHALL ausgeben.
Manager ist ein spezieller Testamentsvollstrecker, der Kanban gegen Manipulationen resistent macht.
cd manager
make all
./manager Der Testamentsvollstrecker besteht aus der gesamten Suchpipeline. Diese Version konsolidiert alle Suchfunktionen innerhalb einer ausführbaren Datei. Sie können executor/start.sh ändern, um mehr Executoren wie Sie möchten.
cd executor
make all
bash ./start.shDer Client ist ein Webserver, der als Eintrag für die Deckung dient.
cd client
make all
./client Klicken Sie dann auf client/index.html oder verwenden Sie einen ausgefallenen Web -Eintrag client/WebUI/index.html .


Um sich auf ein WAN -Setup auszudehnen, müssen Sie einige Netzwerkkonfigurationen ändern:
config.hpp : ändern KANBAN_ADDR in eine globale öffentliche IPexecutor/start.sh : Ändern Sie die Querier -IP -Adresse in eine öffentliche, die Kunden erreichen könnenSiehe Executor/Readme.md
Mulanpsl-2.0 (siehe hier)