O Banco de Dados do Vector NFT universal é uma iniciativa para armazenar uma versão vetorizada de todos os Ethereum NFT baseados em imagem (ERC-721). Este projeto aproveita uma variedade de tecnologia para tornar isso possível, incluindo API de alquimia, o protocolo do gráfico e o pinecone. Nossa infraestrutura completa de software pode ser encontrada abaixo:
Abaixo, descrevemos as principais peças/sistemas como parte deste projeto e seu caso de uso em nosso sistema geral.
| Sistema | Caso de uso |
|---|---|
| Painel de análise | Esta é a página frontal do aplicativo do lado do cliente, usado principalmente para exibir estatísticas e outras informações sobre os dados em nosso banco de dados e fila de tarefas. |
| Página de pesquisa | A página de pesquisa é uma página interativa para os usuários consultar o banco de dados e encontrar NFTs semelhantes, além de visualizar suas NFTs em relação a NFTs semelhantes em um gráfico bidimensional. |
| Integração do protocolo de gráfico | O protocolo do gráfico é usado como uma camada de consulta para obter todas as informações de coleta da NFT no blockchain. |
| Integração da API da alquimia | A API de alquimia é usada para obter todas as informações individuais da NFT para cada coleção de NFT, que é armazenada em nosso sistema. |
| Servidor de back -end | Nosso servidor de back -end nos permite interagir com os dados e obter informações de nossos bancos de dados para exibir em nosso painel de análise. |
| Regnety-080 Imagem incorporando integração | As incorporações de imagem servem como uma maneira de padronizar a representação das imagens e armazená -las em um banco de dados vetorial. |
| API de pesquisa | A API de pesquisa permite que os usuários consultem o banco de dados vetorial sobre NFTs semelhantes com base em uma imagem de origem. Ele usa distância cosseno como métrica para encontrar os NFTs mais próximos. |
| API de visualização | A API de visualização permite que os usuários visualizem sua imagem de origem em relação a NFTs semelhantes - ela usa a decomposição de valor singular truncado para fazer isso. |
| Servidor de trabalhador da fila de tarefas | O servidor dos trabalhadores da fila de tarefas permite que a escalabilidade horizontal para o sistema, porque permite que centenas de milhares de NFTs estejam sentadas em uma fila à medida que elas acabam sendo processadas. |
Sempre acolhemos solicitações de puxar a este repositório para fixar e melhorar ainda mais nosso banco de dados.
Fornecemos um script de configuração disponível ( setup.sh ) para configurar o sistema localmente - ele foi testado apenas com WSL e Ubuntu, então use por seu próprio risco. Antes de executar o script de configuração, certifique -se de ter o seguinte instalado:
Você também precisará adicionar um arquivo de ambiente para este projeto. Diretórios com um arquivo .env:
python_server/src/client/celery_queue/benchmarks/ Fornecemos um .env.example para cada arquivo .env. Também fornecemos um doppler.example para ver quais outras variáveis de ambiente temos, porque usamos o Doppler como nosso software unificado de gerenciamento secreto.
Então, para configurar este projeto:
sudo chmod +x ./setup.sh
sudo ./setup.sh
Como alternativa, para configurar este projeto manualmente:
client e instale todas as dependências: cd client
npm install
python_server/src e crie uma pasta de ambiente virtual do Python. Em seguida, instale todas as dependências: cd python_server/src
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
celery_queue/ Crie uma pasta de ambiente virtual do Python. Em seguida, instale todas as dependências: 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