Rock-n-Block

Python Django Django REST Framework PostgreSQL Nginx gunicorn docker

О проекте

Rock-n-Block - бэкенд-сервис, который взаимодействует с контрактом стандарта ERC-721 в блокчейне Ethereum.

Суть сервиса заключается в том, чтобы производить операции с NFT-токеном, используя REST API. В таком сервисе одна операция на получение информации из блокчейна и ее выдачу в API-ответе, и одна операция, результат которой будет изменять состояние смарт-контракта.

Стек реализации:

  • Язык: Python 3.9
  • Web framework: Django 3.2.12 & DRF 3.13.1
  • Database: PostgreSQL
  • Blockchain framework: Web3.py
  • Blockchain: Ethereum (Rinkeby Testnet)

Доступные эндпоинты:

/tokens/create

Метод запроса: POST

API создает новый уникальный токен в блокчейне и записывать параметры запроса в БД.

Запрос должен принимать:

  • media_url - урл с произвольным изображением
  • owner - Ethereum-адрес будущего владельца токена
/tokens/list

Метод запроса: GET

API выдает список всех обьектов модели Token

/tokens/total_supply

Метод запроса: GET

API обращается к контракту в блокчейне и выдает в ответе информацию о текущем Total supply токена - общем числе находящихся токенов в сети.

Что бы протестировать приложение необходимо:

  • клонировать репозиторий
  • создать файл .env и вставить в него переменные и добавить к ним необходимые значения
SECRET_KEY=
DB_ENGINE=
DB_NAME=
POSTGRES_USER=
POSTGRES_PASSWORD=
DB_HOST=
DB_PORT=
CONTRACT_ADDRESS=
INFURA_KEY=
PRIVATE_KEY=
METAMASK_KEY=
  • перейти в директорию с файлом docker-compose.yaml
  • ввести в терминале:
docker-compose up -d --build
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input 

Aвтор:

Алексей Останин