Программа для сбора и шифрования блокчейна¶
Репозитарий: https://github.com/AplaProject/apla-pgp
Программа периодически обращается к базе данных к таблице block_chain и смотрит наличие новых блоков. Если имеются новые блоки, то она шифрует их публичным PGP ключом и сохраняет в определенную директорию в виде отдельных файлов с именем {номерблока}.block.
Программа хранит хэши сохраненных блоков, если она видит, что последний хэш не совпадает, то она ищет последний блок с одинаковым хешем и начинает скачивать блоки с того момента. Если старые файлы еще находятся в директории, то они будут перезаписаны.
Предварительно необходимо сгенерировать PGP ключи командой
$ gpg –gen-key
В процессе необходимо будет указать парольную фразу для приватного ключа - её нужно будет запомнить.
Для работы программы необходим файл настроек. Вот пример
LogFile = "apla.log"
StoreFile = "./store/apla-pgp.store"
OutPath = "./backup"
[Settings]
Timeout = 2
Compression = 1
NodePrivateKey = "/home/ak/apla/apla-data/NodePrivateKey"
[PGP]
Path = "/home/ak/.gnupg"
Phrase = "1234"
[TCP]
Host = "127.0.0.1:7078"
- LogFile - имя (можно с путем) лог-файла.
- StoreFile - имя файла, где будут хранится хэши обработанных блоков.
- OutPath - директория куда будут складываться зашифрованные файлы.
- Timeout - периодичность опроса в секундах.
- Compression - 0 - не сжимать блоки, если указать 1, то данные блоков будут предварительно сжиматься по формату gzip, если они больше 1024 байт. В файле .block ставится соответствующая метка.
- NodePrivateKey - приватный ключ , с помощью которого подписываются зашифрованные данные.
- Path - директория с PGP ключом .pubring.gpg
Если в этой директории также находится файл secring.gpg, то программа будет работать в тестовом режиме. В этом случае должна быть указана секретная фраза для приватного ключа Phrase. В тестовом режиме программа после сохранения .block файла, читает его, расшифровывает приватным PGP ключом, в случае необходимости, распаковывает и затем сравнивает с оригинальным блоком.
В секции TCP необходимо указать ност для подключения по tcp.