Giter Site home page Giter Site logo

decentralized-hse / ipfs-tables Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jellythefish/ipfs-tables

0.0 0.0 0.0 5.22 MB

Project withing the HSE Сourse "Decentralized Systems"

License: GNU General Public License v3.0

Python 94.60% Shell 5.40%

ipfs-tables's Introduction

IPFS4Students

Проект по курсу "Децентрализованные Системы" в НИУ ВШЭ

Краткое описание инфраструктуры

  • Хранилище - файлы загружаются в ipfs, он выдает хеши на загруженные в него объекты.
  • Высокодоступная отказоустойчивая база метаданных отвечает за хранение метаданных по загруженным в ipfs объектам. Эта база хранит хеши и вспомогательную инфу типа формат объекта (видео, аудио, пдф и т.д.), время загрузки, кто загрузил, размер объекта, ключевые слова, описание и т.д.
  • Локальное SQLite хранилище + IPFS PubSub, которые дают возможность узнавать участникам о новых метаданных в IPFS, даже в случае если удаленная база метаданных недоступна.
  • Клиент - программа, которая позволяет пользователю загрузить или найти какой-либо объект, загруженный в ipfs.

Реализованные компоненты:

  1. Компонент, который кладет в ipfs объект и записывает в базу данных метаинфу. У компонента должен быть интерфейс типа /put или соответствующий публичный метод на питоне.
  2. Компонент - демон, который работает в фоновом режиме, опрашивает pubsub на наличие новых метаданных, и добавляет их в локальную SQLite, если такие имеются.
  3. База метаданных с репликацией. У базы (PostgreSQL) SQL интерфейс типа SELECT/INSERT INTO запрос.
  4. Часть CLI клиента, которая отвечает за запрос на загрузку в ipfs объекта, то есть обрабатывает инпут от клиента и формирует соответствующий payload в 1ую компоненту.
  5. Часть CLI клиента, отвечающая за перевод поискового запроса пользователя в запрос в базу метаданных и выдачу ему результатов (ссылок, по которым, он может из ipfs это все скачать)

Использование:

# background daemon
python ./updater.py &
# upload
python ./main.py upload file_examples/sample.mp4 --format "notes" --tags "tag1,tag2,tag3"
# search
python ./main.py search --search "project" --type "notes"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.