Giter Site home page Giter Site logo

solineun / exam-sheet-system Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 180 KB

implementation of code for a bachelor's diploma on the topic of electronic records management system based on blockchain technology

Makefile 0.25% Java 99.75%
blockchain peer-to-peer

exam-sheet-system's People

Watchers

 avatar

exam-sheet-system's Issues

где хранить данные?

нужно определиться как хранить блоки, транзакции, метаданные
большая часть блокчейнов использует noSql key-value базы данных

ответ с https://stackoverflow.com
so most of them use (key, value) pairs to store data. There is no restriction to the kind of data that can be stored. Generally the actual data is not directly stored in Blockchain but the computed hash values of it. Read about Merkle trees, it will clear a lot of things up!

ответ с https://bitcoin.stackexchange.com
bitcoin stores the data of blockchain not in a database "key-value", but in raw file data. However, Bitcoin uses the levelbd (and in the last update it could be supported also SQLite) to store the information about the mempool a.k.a chainstate directory.
The chain state contains only small information regarding the UTXO and nothings else. All the information is stored on the disk because it is impossible (in my knowledge) to store in a faster way the information in any type of database

итог БД используется только вне контура блокчейна

HashGenerator: get rid of String

Переписать медот генерации хэша без использования стринга, в идеале без обертки в любой объект, только с байт-массивом, так как, данные можно вытянуть или заменить из обжект-пулла.

Block: Constructor

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

Подпись пользователя

Подпсиь применяется при созднии нового блока на поле, содержащее хеш создаваемого блока

Как реализовать Р2Р?

пользователи внутри системы взаимодействуют согласно концепции Р2Р
Без реализации такой идеи система теряет принцип децентрализации, однако ее реализация становится проще и при этом не теряется возможность пользователям прийти к консенсусу

MerkleTree: calculateHead()

Метод подсчета хэша вершины дерева на основе списка с хэшем данных

какой спринг использовать?

spring boot? по идее я делаю рестфул сервис, нужно будет обмениваться жсонами, возможно простого спринга будет достаточно

Конфиг для генезис-блока

При генерации генезис-блока можно использовать данные из кофиг-файла для настройки работы системы

Как подключиться к запущенному блокчейну?

При подключении создаются:

  1. Объект AccountServie, далее с помощью него создается экземпляр Account
  2. Account подается на вход при создании экземпляра Peer
  3. Peer используется для создания Node, но для Node необходим TransactionService
    TransactionService работает на конкретном объекте BlockChain
    => В классе BlockChain необходимо добавить метод для создания экземпляра идентичного уже существвующему

Генерация паблик ключа

При создании аккаунта пользователь вводит сид-фразу, из которой генерируется пара приватных\публичных ключей и адресс аккаунта(послежние 160 бит публичного ключа)

MerkleTree

Написать реализацию дерева Меркла для подсчета хэша из нескольких массивов байтов за оптимальное время. В дальнейшем реализовать метод валидации данных.

Как запускается работа системы?

Первый майнер запускает у себя программу и генерирует генезис-блок, создаает ноду в п2п сети со своим адресом
Далее по ходу присоединения к сети новых майнеров, среди них распространяются актуальные копии блокчейна

Block: toString()

Hexadecimal не виден в классе модели. Нужно отображение хэша в шестнадцатиричном формате

TransactionService: getInput()

Метод возвращающий байт-массив для генерации конечного хеша транзакции

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.