Git Product home page Git Product logo

ipfs_dapp's Introduction

ipfs-dapp

Описание проекта

Децентрализованное приложение, которое:

  • принимает от пользователя бинарный файл (например, PNG) и загружает его в IPFS (в свою ноду)
  • хеш загруженного файла отправляет на хранение в смарт-контракт, хранящий mapping (address => ipfs_hash)
  • по запросу, получает ipfs_hash из контракта (используя текущий адрес), достает его из IPFS, ложит содержимое в корневую папку
  • демонстрирует содержимое в браузере по умолчанию, а также в средстве просмотра изображений по умолчанию

Сборка

Собирать проект не надо, достаточно клонировать данный репозиторий. Однако перед запуском необходимо выполнить шаги, указанные ниже.

Установка ganache-cli (пропустите этот шаг, если уже установлено)

Удостоверьтесь, что вы имеете Node.js (>= v8) установленным.

Используя npm:

npm install -g ganache-cli

Установка brownie (пропустите этот шаг, если уже установлено)

Удостоверьтесь, что вы имеете python3 (>= 3.6) установленным.

Используя pipx:

python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install eth-brownie

Установка go-ipfs (пропустите этот шаг, если уже установлено)

https://dist.ipfs.io/#go-ipfs

Запуск ipfs-ноды

ipfs init
ipfs daemon

Запуск

Ниже описана последовательность действий, необходимая для выполнения функций приложения

Деплой контракта

Перед деплоем в файле deploy.py необходимо изменить параметр 666 в строке acct = accounts.load('666') на id аккаунта, с которого вы собираетесь деплоить данный контракт.

Выполните команду:

export WEB3_INFURA_PROJECT_ID=1a51541fdffc429596c1b616f9bf1048

После чего выполните команду:

brownie run deploy.py --network ropsten

При желании можно указать любую тествоую сеть вместо параметра --network ropsten

В случае успеха, на экране отобразится адрес задеплоенного контракта в тестовой сети, его необходимо запомнить.

Добавление в ipfs

Данная функция принимает от пользователя бинарный файл (например, PNG) и загружает его в IPFS (в свою ноду), а хеш загруженного файла отправляет на хранение в контракт Ipfs.sol

Для запуска функции наберите:

python3 main.py --add <путь к файлу> <адрес контракта> <id аккаунта>

Пример запуска:

python3 main.py --add slava_kpss.png 0x8dd10Bc8D92ef3485F0d1654293808b254B56672 666

Получение из ipfs

Данная функция получает ipfs_hash из контракта по адресу, достает его из IPFS и ложит содержимое файла в корневую папку

Для запуска функции наберите:

python3 main.py --get <адрес по которому был добавлен файл в контракт> <адрес контракта> <id аккаунта> 

Пример запуска:

python3 main.py --get 0xe23b9e48f7e229D6Cb4C361BefC90cC155b42654 0x8dd10Bc8D92ef3485F0d1654293808b254B56672 666

Пример работы программы в тестовой сети ropsten

ipfs_dapp's People

Contributors

catcatcat8 avatar

Watchers

 avatar

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.