Сколько блоков предварительно может удерживать кеш размером 1 ГБ (1024)?

Если я использую команду geth --cache=1024, сколько блоков она будет хранить во время выполнения в кеше. И какой будет размер каждого блока. Есть ли расчет? И есть ли способ, с помощью которого мы можем принудительно записать данные, находящиеся в кеше, в файлы leveldb?

Ответы (1)

Я нашел это объяснение у пользователя Reddit и подумал, что оно будет вам полезно, чтобы понять некоторые вещи.

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

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

Чтобы выяснить, сколько транзакций может поместиться в блок, вам не нужно знать, какова цена газа. Вам просто нужно знать, сколько газа использует транзакция, и разделить лимит газа на это.

Если сеть получает множество спам-транзакций, которые начинают заполнять блоки, у майнеров есть 2 варианта. Они могут проголосовать за увеличение лимита газа, чтобы вместить больше транзакций, или они могут начать повышать цену на газ и отклонять транзакции, которые платят слишком низкую комиссию. Как и в случае с биткойнами, транзакция с низкой комиссией все еще может пройти, но ей придется подождать, пока майнер, который принимает более низкую комиссию (более низкую цену на газ), не захочет ее впустить.

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

Все, что говорит этот пользователь, правда, и это очень хорошо объяснено.

Как видите, она работает совсем не так, как схема Биткойн.

РЕДАКТИРОВАТЬ Я оставляю здесь полное обсуждение этого вопроса на Reddit

Надеюсь, поможет.

Это хорошее объяснение и совершенно верно, возможно, добавьте эту ссылку, чтобы мы могли получить дополнительную информацию, пожалуйста.
еще одна вещь, которую я хочу знать, когда блоки будут записываться на диск? потому что, когда я убил узел, используя блок с высотой 1000kill -9 <processId> , а затем снова запустил цепочку, но она не началась с высоты 1000. Итак, если моя цепочка будет уничтожена, как предотвратить потерю данных? И есть ли способ, с помощью которого я могу явно записать данные кеша на диск?
Потерю данных можно предотвратить, используя различные узлы. Это означает, что по крайней мере один из них может продолжать запись состояния блокчейна. И зная, что, например, на Эфириуме более 20000 узлов, довольно сложно, чтобы все они рухнули одновременно, а затем были потеряны данные. Добавьте, что если ответ был правильным для вас, отметьте его как таковой, чтобы помочь другим пользователям легко добраться до него.
Да. но всякий раз, когда кеш заполняется, блоки будут записываться на диск, и у нас снова будет пустой кеш. верно?
Кэши также могут непрерывно записывать и считывать данные, их цель состоит в том, чтобы никогда не заполняться, потому что, если они заполнены и поступает новый блок данных, он будет потерян, поскольку время обработки кеша не так быстро, как это должно быть.