La base de datos de Vector NFT Universal es una iniciativa para almacenar una versión vectorizada de cada Ethereum NFT basado en imágenes (ERC-721). Este proyecto aprovecha una variedad de tecnología para que esto sea posible, incluida la API de Alchemy, el Protocolo Graph y Pinecone. Nuestra infraestructura de software completa se puede encontrar a continuación:
A continuación, hemos esbozado las piezas/sistemas principales como parte de este proyecto y su caso de uso en nuestro sistema general.
| Sistema | Caso de uso |
|---|---|
| Tablero de análisis | Esta es la página principal de nuestra aplicación del lado del cliente, utilizada principalmente para mostrar estadísticas y otra información sobre los datos en nuestra base de datos y cola de tareas. |
| Página de búsqueda | La página de búsqueda es una página interactiva para que los usuarios consulten la base de datos y encuentren NFT similares al tiempo que visualizan sus NFT en relación con NFT similares en un gráfico bidimensional. |
| Integración de protocolo gráfico | El protocolo gráfico se utiliza como una capa de consulta para obtener toda la información de recopilación NFT en la cadena de bloques. |
| Integración de la API de alquimia | La API de Alchemy se utiliza para obtener toda la información NFT individual para cada colección NFT que luego se almacena en nuestro sistema. |
| Servidor de fondo | Nuestro servidor de backend nos permite interactuar con los datos y obtener información de nuestras bases de datos para mostrar en nuestro panel de análisis. |
| Integración de incrustación de imagen Regnety-080 | Las integridades de la imagen sirven como una forma de estandarizar la representación de las imágenes y almacenarlas en una base de datos vectorial. |
| API de búsqueda | La API de búsqueda permite a los usuarios consultar la base de datos Vector para NFT similares basadas en una imagen de origen. Utiliza la distancia coseno como la métrica para encontrar los NFT más cercanos. |
| API de visualización | La API de visualización permite a los usuarios visualizar su imagen fuente en relación con NFT similares: utiliza una descomposición de valor singular truncado para hacerlo. |
| Servidor de trabajadores de la cola de tareas | El servidor de trabajadores de la cola de tareas permite la escalabilidad horizontal para el sistema porque permite que cientos de miles de NFT se sienten en una cola a medida que finalmente se procesan. |
Siempre damos la bienvenida a las solicitudes de extracción a este repositorio para solucionar y mejorar aún más nuestra base de datos.
Hemos proporcionado un script de configuración disponible ( setup.sh ) para configurar el sistema localmente; esto solo se ha probado con WSL y Ubuntu, así que use bajo su propio riesgo. Antes de ejecutar el script de configuración, asegúrese de tener lo siguiente instalado:
También deberá agregar un archivo de entorno para este proyecto. Directorios con un archivo .env:
python_server/src/client/celery_queue/benchmarks/ Hemos proporcionado un .env.example para cada archivo .env. También proporcionamos un doppler.example para ver qué otras variables de entorno tenemos porque usamos Doppler como nuestro software de gestión secreta unificada.
Luego, para configurar este proyecto:
sudo chmod +x ./setup.sh
sudo ./setup.sh
Alternativamente, para configurar este proyecto manualmente:
client y a NPM instale todas las dependencias: cd client
npm install
python_server/src y cree una carpeta de entorno virtual de Python. Luego instale todas las dependencias: cd python_server/src
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
celery_queue/ Crea una carpeta de entorno virtual de Python. Luego instale todas las dependencias: cd celery_queue
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
sudo chmod +x ./run.sh
sudo ./run.sh
npm start --prefix client/
cd python_server/src
source venv/bin/activate
python app.py
cd celery_queue
source venv/bin/activate
celery -A tasks worker