Desearch est un système expérimental vers un moteur de recherche décentralisé. Pour atteindre l'évolutivité et la tolérance aux défauts, DeSearch Découpe le calcul et le stockage à l'aide d'un réseau de confiance sans état et d'un magasin cloud avec état . Le réseau est tracé par des témoins et le magasin est réglementé par la blockchain. L'implémentation actuelle de Desearch utilise Intel SGX comme matériel de confiance et Redis comme magasin.
AVERTISSEMENT: Ce référentiel héberge un prototype de preuve de concept académique et n'a pas reçu d'examen minutieux de code.
Veuillez vous référer à notre papier OSDI'21 pour plus de détails.
@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},
}
Exigence matérielle: Desktops compatibles SGX ou des machines cloud compatibles SGX. Pour vérifier si votre machine prend en charge SGX, veuillez vous référer au matériel Intel SGX.
Notez que si vous souhaitez exécuter plusieurs nœuds SGX sur votre machine locale sans prendre en charge du SGX évolutif, il pourrait prendre plus de temps pour bootstrap tout le système en raison de la mémoire cryptée rare (généralement 128 Mo / 256 Mo sur SGXV1).
Ce repo fournit une version non-SGX dans le dossier executor et une version SGX dans le dossier sgx-executor . La version non-SGX vous aide à déboguer plus facilement si vous souhaitez créer des extensions pour Desearch; Il utilise la même structure de dossier que la version SGX. Notez que seule la version SGX contient des questions basées sur Oram.
Sous Ubuntu 20.04, les exécuteurs de la recherche de construction nécessitent les dépréances suivantes installées:
Vous pouvez vous référer au dossier deps pour les versions correctes de Redis, Hiredis et Redis ++.
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 est un redis non modifié qui exploite un stockage cloud relativement bon marché.
Démarrez simplement le serveur Redis:
cd Kanban
cd deps && make hdr_histogram linenoise jemalloc
cd - && make all
./src/redis-server ./redis.conf Pour effacer tous les États de Kanban, vous pouvez émettre ./src/redis-cli FLUSHALL .
Le gestionnaire est un exécuteur spécial qui rend Kanban résistant à la falsification.
cd manager
make all
./manager L'exécuteur est composé de l'ensemble du pipeline de recherche. Cette version consolide tous les rôles de recherche dans un exécutable. Vous êtes libre de modifier executor/start.sh pour lancer plus d'exécuteurs comme vous le souhaitez.
cd executor
make all
bash ./start.shLe client est un serveur Web qui sert d'entrée de Desearch.
cd client
make all
./client Ensuite, double-cliquez sur le client/index.html , ou utilisez un client fantaisie client/WebUI/index.html .


Pour s'étendre à une configuration WAN, vous devez modifier quelques configurations de réseau:
config.hpp : changer KANBAN_ADDR en une adresse IP publique mondialeexecutor/start.sh : modifiez l'adresse IP de questionnVoir exécuteur / readme.md
Mulanpsl-2.0 (voir ici)