Я работаю над моей собственной общей реализацией blockchain, и у меня есть вопрос о том, как Bitcoin гарантирует, что все не нужно помнить каждую вилку, что когда-либо происходило.
Самая длинная цепь всегда побеждает, в том смысле, что это цепь, что клиент смотрит на то, чтобы видеть, кто имеет сколько Bitcoins. Но если я начну получать блоки, вилы от моих нынешних самого длинной цепочки из нескольких блоков назад, мне нужно, чтобы держать эти блоки вокруг в случае, если они в конечном итоге образуя цепь длиннее, чем я на. И нет никакой гарантии, что я не буду получать половину блоков в этой новой длинной цепи сегодня и половину завтра, так что, когда я закрыл мой клиент, эти блоки в настоящий момент более короткие цепях должны быть сохранены на диск.
Что останавливает эти блоки от необходимости держать вокруг бесконечно?
Если блоки действительно должны быть примерно на неопределенное время в случае их вилка становится самой длинной цепью, что останавливает кто-то от решения большого количества блоков Разветвляющихся от некоторых ранних, с низким уровнем сложности точку в цепи, и занимая много места на диске с все эти вилки?