Desearch es un sistema experimental hacia un motor de búsqueda descentralizado. Para lograr la escalabilidad y la tolerancia a las fallas, Desearch decelo el cálculo y el almacenamiento utilizando una red de confianza sin estado y una tienda en la nube con estado . La red es rastreada por testigos y la tienda está regulada por blockchain. La implementación actual de Desearch utiliza Intel SGX como hardware de confianza y Redis como la tienda.
ADVERTENCIA: Este repositorio alberga un prototipo académico de prueba de concepto y no ha recibido una revisión de código cuidadoso.
Consulte nuestro artículo OSDI'21 para obtener más detalles.
@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},
}
Requisito de hardware: escritorios con capacidad SGX o máquinas de nube con capacidad SGX. Para verificar si su máquina admite SGX, consulte Hardware Intel SGX.
Tenga en cuenta que si desea ejecutar varios nodos SGX en su máquina local sin soporte de SGX escalable, puede tardar más en arranque todo el sistema debido a la escasa memoria cifrada (generalmente 128MB/256MB en SGXV1).
Este repositorio proporciona una versión no SGX en la carpeta executor y una versión SGX en la carpeta sgx-executor . La versión no SGX te ayuda a depurar más fácilmente si quieres construir extensiones a Desearch; Utiliza la misma estructura de carpeta que la versión SGX. Tenga en cuenta que solo la versión SGX contiene Queriers basados en Oram.
Bajo Ubuntu 20.04, los ejecutores de construcción de Desearch requieren las siguientes depecencias instaladas:
Puede consultar la carpeta deps para ver las versiones correctas de Redis, Hiredis y 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 es un Redis no modificado que aprovecha el almacenamiento en la nube relativamente barato.
Simplemente inicie el servidor Redis:
cd Kanban
cd deps && make hdr_histogram linenoise jemalloc
cd - && make all
./src/redis-server ./redis.conf Para limpiar todos los estados de Kanban, puede emitir ./src/redis-cli FLUSHALL .
El gerente es un albacea especial que hace que Kanban sea resistente a la manipulación.
cd manager
make all
./manager El albacea consiste en toda la tubería de búsqueda. Esta versión consolida todos los roles de búsqueda dentro de un ejecutable. Usted es libre de modificar executor/start.sh para iniciar más ejecutores como desee.
cd executor
make all
bash ./start.shEl cliente es un servidor web que sirve como entrada para Desearch.
cd client
make all
./client Luego, haga doble clic en el client/index.html , o use una elegante entrada web client/WebUI/index.html .


Para extenderse a una configuración de WAN, debe modificar algunas configuraciones de red:
config.hpp : cambiar KANBAN_ADDR a una IP pública globalexecutor/start.sh : cambiar la dirección IP de consulta a una pública que los clientes puedan llegarVer ejecutor/readme.md
Mulanpsl-2.0 (ver aquí)