Skip to content

Instantly share code, notes, and snippets.

@ufocoder
Created February 14, 2018 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ufocoder/a1fb039332c75720324ba3b16f6986d0 to your computer and use it in GitHub Desktop.
Save ufocoder/a1fb039332c75720324ba3b16f6986d0 to your computer and use it in GitHub Desktop.
JS Coin. Первоначальный черновой план разработки

JS Coin

Данный документ копия AlexanderKochetkov/jsw-rnd-javascript-blockchain-cryptocurreny-task

Simple blockchain with cryptocurrency implemented in JS for learning purpose.

Всю логику максимально размещаем во frontend. В backend выделяем только обработку входящих поключений.

Составные части проекта

  • Создание единого интерфейса кошелька/майнера
    • Необходимые элементы
      • Отображение публичного и приватного ключа
      • Баланс кошелька
      • Форма отправки: адрес получателя, количество монет
      • Сетевой статус: cписок пиров, лог полученных и отправленных сообщений.
      • Chain explorer: список блоков, возможность развернуть блок и посмотреть информацию в блоке, поиск по блокам и транзакциям
      • Статус майнинга: информация о новом блоке, список транзакций в потенциальном блоке, номер попытки подбора хеша и время
  • Backend
    • сокет на nodejs для получения сообщений и передачи их во frontend
    • передача внутреннего ip в центральный трекер пиров
  • Сетевая часть frontend
    • Получение пиров из трекера
    • Подключенеи к пирам
    • Рассылка пирам сообщений и новых транзакциях, новых блоках и запрос получения копии блокчейна
  • Генерация пары RSA ключей, цифровая подпись транзаций.
    • Библиотеки node-rsa, js-sha256.
  • Проверка валидности блокчейна. Передача баланса и истории во фронт
  • Майнинг - система POW расчет контрольного числа для блока
    • Проверка валидности нового блока
    • Выделение в Webworker
    • Рассылка нового блока по сети
    • Для простоты блок будет содержать одну транзакцию. Майнинг начинается когда по сети от пиров приходит новая подписанная валидная транзакция
    • Хеширование SHA256, cложность фиксированная. Подберем там, чтобы средний ноутбук справлялся за 5-15 секунд.
  • Получение нового блока
    • Проверка на вилки, ситуацию когда два майнера сгенерировали новый блок одновременно (? можно ли упростить и обойтись без неё ?)
    • Валидация блока и обновление данных
  • Создание транзации
    • Проверка баланса, RSA подпись приватным ключом и рассылка по всем пирам.

Роли в команде

  • Frontend интерфейс - 1-2 человека
  • Backend сервер - 1 человек
  • Шифрование, майнинг и работа с блоками - 1 человек
  • Работа с сетью на frontend - 1 человек
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment