Да блин. Чем старше становишься, тем меньше часов остается в сутках. ((
Судя по всему, Накомото либо школьник либо студент как Цукерберг или Дуров...
Скорее вышедший на пенсию по причине того, что внезапно скончался дядя
и оставил ему в наследство сто миллионов баксов и свою коллекцию паравозиков.
Между прочим, первые версии биткойна не были отягощены всяким говнокодом.
Это уже потом появились навороты.
Что бы я изменил в коде биткоина:
1. Сделал бы код коннектов асинхронным однопоточным. Ибо по моему глубокому
убеждению и печальному опыту - многопоточность зло, хотя для новичков кажется
проще и понятней асинхронности.
Тут проблема скорее не в коннектах, а в самой концепции. У меня бот работающий
в биткойн-сети, написанный на Qt безо всякой многопоточности, просто на сигналах
и слотах. Никакой проблемы с сетью нет вообще - сто, двести, триста подключений
к пирам держит на самом дохлом процессоре (меня жаба душит за VPS платить много)
и не морщится.
Многопоточность в код клиента попала в первую очередь ради майнинга на процессоре,
а во-вторую из-за того, что надо быстрее делать первичную синхронизацию, проверяя
все транзакции в блокчейне. С тех пор я как вижу локи в коде - так блевать охота.
Многопоточность не должна быть переплетена с бизнес-логикой программы.
2. Сделал бы нормальную SQL базу данных для хранения блокчейна.
Вот тут я бы поспорил, надо ли это? Условно говоря, всякие блок-эксплореры
к крипте не относятся. А для транзакционной системы возможности базы по поиску
вообще говоря лишние. Для крипты нужен только UtxO-база, а не весь блокчейн.
Блокчейн - только при проверке используется начиная от генезиса.
3. В криптографии не силен, но чисто ИМХО, обмен сообщениями между пирами лучше
бы сделать через ssl. Зашифрованные сообщения не так просто запретить если вдруг
начнутся массовые запреты.
Это (как и база в принципе) решается модульностью. То есть есть условно говоря DLL-ка
которая гоняет транзакции с пирами по открытому порту 8333 или по шифрованному каналу
на другом порту. Или вообще через тор. (Но тут уже я тоже не силен). Какую длл-ку подставит
юзер - это его дело.
4. Вместо ип4 лучше бы сразу сделать ип6. Ибо ип4 уже закончились и белых ип4 у
простых юзеров становится все меньше... А может вообще бы лучше отказаться от
привязки нод к ип, а привязывать к какому-то хэшу, как это реализовано в i2p...
Но это уже розовые мечты мои )))
Вот вы и скатываетесь на дурацкие хотелки, которые вообще решаются на последнем
этапе создания. Да хоть по блютусу или с помощью костров.