Можно ли удалить старые данные блока из цепочки блоков? - PullRequest
0 голосов
/ 08 апреля 2019

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

Ответы [ 3 ]

1 голос
/ 08 апреля 2019

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

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

0 голосов
/ 08 апреля 2019

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

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

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

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

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

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

0 голосов
/ 08 апреля 2019

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

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

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

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

...