Можно ли удалить данные старого блока из блокчейна?

#hyperledger-fabric #blockchain

#hyperledger-fabric #блокчейн

Вопрос:

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

Ответ №1:

Я пока не знаю ни о какой технологии блокчейна, способной на это, но Hyperledger Fabric, в частности, планирует поддерживать архивирование данных (контрольные точки). Проще говоря, участникам необходимо согласовать высоту блока, чтобы старые блоки можно было отбросить. Затем этот новый блок становится источником доверия, подобно оригинальному блоку genesis. Кроме того, необходимо сделать снимок и дать согласие, который фиксирует текущее состояние.

С точки зрения удобства обслуживания это немного сложнее, т. Е. У вас могут быть узлы, которые не работают во время моментальной съемки и т.д.

Ответ №2:

Если вы просто хотите удалить данные через некоторое время, у Fabric Private Data есть опция, которая может удовлетворить ваше желание.

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

Вы можете прочитать больше здесь.

Лично я не думаю, что есть способ удалить блок из цепочки. Это может разрушить неизменяемое свойство блокчейна.

Ответ №3:

Есть 2 концепции, которые помогут вам достичь ваших целей.

Одна вещь уже упоминалась. Речь идет о личных данных. Личные данные дают вам возможность «помечать» данные временем жизни. Тогда в цепочке хранятся только хэши личных данных (чтобы иметь возможность проверить эту транзакцию), но сами данные хранятся в так называемых SideDBs и полностью удаляются (за исключением хэшей в цепочке, конечно). Это своего рода основа для использования Fabric без обходных путей и достижения GDPR.

Другая вещь, о которой еще не упоминалось и которая вроде как очень полезна для этого вопроса

Есть ли способ создать резервную копию и очистить блокчейн или удалить элементы старше определенного периода времени?

Каждый одноранговый узел хранит только «текущее состояние» книги в своем StateDB. Текущее состояние можно описать как данные, которые помечены как «активные» и, вероятно, скоро будут использоваться снова. Вы можете представить StateDB как кэш. Все данные поступают в этот кэш путем создания или обновления нового ключа (вызова). Чтобы удалить ключ из кэша, вы можете использовать ‘DelState’. Таким образом, он помечен как «удаленный» и больше не находится в кэше. НО они все еще находятся в бухгалтерской книге! и вы можете получить историю и данные по этому ключу.

Вывод: для «реального» удаления данных вы должны использовать концепцию личных данных, а для управления данными в вашем StateDB (вспомните аналогию с «кэшем») вы можете просто использовать встроенные функции.