Как хранить блокчейн?

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


Ответы (1 шт):

Автор решения: cheetum

Использовал модуль "pickle":

Записал методы в класс блокчейна:

def __getstate__(self) -> dict:
    state = {}
    state['chain'] = self.chain
    state['current_transactions'] = self.current_transactions
    state['difficulty'] = self.difficulty
    state['blockTime'] = self.blockTime
    return state

def __setstate__(self, state: dict):
    self.chain = state['chain']
    self.current_transactions = state['current_transactions']
    self.difficulty = state['difficulty']
    self.blockTime = state['blockTime']

В тот же класс добавил метод сохранения в файл:

def save(self):
    with open("chain.pkl", "wb") as fp:
        pickle.dump(self, fp)

Восстанавливаю из файла так:

with open("chain.pkl", "rb") as fp:
    blockchain = load(fp)
→ Ссылка