Как хранить блокчейн?
Пишу тестовый проект по созданию блокчейна. Из-за отсутствия других узлов в сети появилась потребность сохранять созданную цепочку в отдельный файл или БД, чтобы при запуске программы восстанавливать его оттуда, а не каждый раз создавать новый. Каким более оптимальным способом это можно реализовать?
Ответы (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)