La base de données Universal NFT Vector est une initiative pour stocker une version vectorisée de chaque Ethereum NFT basé sur l'image (ERC-721). Ce projet tire parti d'une variété de technologies pour rendre cela possible, y compris l'API d'alchimie, le protocole de graphique et le pinone. Notre infrastructure logicielle complète se trouve ci-dessous:
Ci-dessous, nous avons décrit les principales pièces / systèmes dans le cadre de ce projet et leur cas d'utilisation dans notre système global.
| Système | Cas d'utilisation |
|---|---|
| Tableau de bord analytique | Il s'agit de la page d'accès de notre application côté client, principalement utilisée pour afficher des statistiques et d'autres informations concernant les données de notre base de données et de notre file d'attente de tâches. |
| Page de recherche | La page de recherche est une page interactive pour les utilisateurs pour interroger la base de données et trouver des NFT similaires tout en visualisant leurs NFT par rapport à des NFT similaires sur un graphique bidimensionnel. |
| Intégration du protocole de graphique | Le protocole de graphique est utilisé comme couche de requête pour obtenir toutes les informations de collecte NFT sur la blockchain. |
| Intégration de l'API d'alchimie | L'API d'alchimie est utilisée pour obtenir toutes les informations individuelles NFT pour chaque collection NFT qui est ensuite stockée dans notre système. |
| Serveur backend | Notre serveur backend nous permet d'interagir avec les données et d'obtenir des informations de nos bases de données à afficher sur notre tableau de bord Analytics. |
| Regnety-080 Image Integration Integration | Les incorporations d'images servent de moyen de normaliser la représentation des images et de les stocker dans une base de données vectorielle. |
| API de recherche | L'API de recherche permet aux utilisateurs d'interroger la base de données vectorielle pour des NFT similaires en fonction d'une image source. Il utilise la distance de cosinus comme métrique pour trouver les NFT les plus proches. |
| API de visualisation | L'API de visualisation permet aux utilisateurs de visualiser leur image source par rapport aux NFT similaires - il utilise la décomposition de valeur singulière tronquée pour ce faire. |
| Serveur de travailleurs de file d'attente de tâche | Le serveur de travailleurs de file d'attente de tâche permet une évolutivité horizontale pour le système car il permet aux centaines de milliers de NFT de s'asseoir dans une file d'attente car ils finissent par être traités. |
Nous accueillons toujours les demandes de traction dans ce référentiel pour réparer et améliorer davantage notre base de données.
Nous avons fourni un script de configuration disponible ( setup.sh ) pour configurer le système localement - cela n'a été testé qu'avec WSL et Ubuntu, alors utilisez à vos propres risques. Avant d'exécuter le script de configuration, veuillez vous assurer que vous avez installé les suivants:
Vous devrez également ajouter un fichier d'environ pour ce projet. Répertoires avec un fichier .env:
python_server/src/client/celery_queue/benchmarks/ Nous avons fourni un .env.example pour chaque fichier .env. Nous fournissons également un doppler.example pour voir quelles autres variables d'environnement nous avons parce que nous utilisons Doppler comme logiciel de gestion secrète unifié.
Ensuite, pour configurer ce projet:
sudo chmod +x ./setup.sh
sudo ./setup.sh
Alternativement, pour configurer ce projet manuellement:
client et NPM Installez toutes les dépendances: cd client
npm install
python_server/src et créez un dossier d'environnement virtuel Python. Puis installez toutes les dépendances: cd python_server/src
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
celery_queue/ et créez un dossier d'environnement virtuel Python. Puis installez toutes les dépendances: 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