Здравствуйте,
Глядя на исходный код C / C ++ для Bitcoin, кажется, есть немного слабость в механизме загружающего блок, и есть также место для совершенствования.
1. Сначала слабость:
Слабость, вероятно, в том, как он загружает блок: Кажется, для подключения к клиентам в случайные моменты времени, чтобы предотвратить всегда подключение к тому же клиенту.
Однако, если есть злонамеренный клиент в группе, которая случается быть первым, чтобы быть подключен к, то этот вредоносный клиент может выполнить следующие действия:
Клиент Bitcoin 0,5 всегда выбирает первое соединение для загрузки блоков из, так что потенциал слабость:
Если выбран вредоносный клиент, то вредоносный клиент может сделать скачать в rrrrreeeaaallll slllloowwww ... поэтому подключающийся клиент никогда не будет загружать блоки по времени ...
Так что, возможно, это может быть использовано.
Например, вредоносный клиент может попытаться сделать так много клиентов, которые происходят для подключения к нему идти как можно медленнее
Также есть место для совершенствования:
2. Вместо загрузки только с первого, блоки также могут быть загружены из нескольких соединений, один блок для каждого соединения, раскинувшийся, то он повторяет. Однако это, вероятно, потребуется некоторое регулирование полосы пропускания в противном случае клиент, вероятно, в конечном итоге Døssing себя, например, это загрузить трубу перегружается / полным, который не обязательно должен быть проблема, а также TCP предназначена для компенсации, что и есть некоторые основные дросселирования для предотвращения переполнения всей сети, однако если клиент все еще хочет сделать что-то другое, что может быть все еще иметь под рукой удушения, однако дросселирование не является непосредственным требование поэтому эта идея, вероятно, может быть реализована сразу.
До свидания,
Skybuck.