Я думаю, что мы можем многому научиться из этого урока
1. Хорошая практика добычи SPV?
С горно означает добычу без полного подтверждения предыдущего блока (ов). Шахтеры сделать это, чтобы уменьшить потери мощности хеширования. Я не думаю, запрещающее добычу SPV возможно, как мы никогда не будем иметь 95% поддержки шахтер. Если все сделано правильно, SPV добыча не является особенно рискованным и может увеличить общую скорость хеширования сети. Вместо того, чтобы пытаться запретить добычу SPV, я думаю, что мы должны иметь хорошую практику рекомендаций для добычи SPV.
Miner должен всегда проверять заголовок, включая версии, биты, и метку времени. Там нет никакого оправдания, чтобы пропустить это. Лени стоит их 125BTC.
Построение вслепую на правильный заголовок нормально, пока блок не будет подтверждено. Первое подтверждение оригинального поддельного блока (363731) пришел через 13 минут. Это было более чем достаточно для полной проверки и не было никакого оправдания невежества.
Шахтеры никогда не должны направить "SPV цепь" до более чем 2 (или 3) при максимальных блоках, даже если это содержит свой собственный блок. Если SPV цепь слишком долго, они должны считать его недействительным до тех пор, пока не будет полностью подтверждена. Они должны вернуться к последнему известному хорошему блоку. Это позволяет защитить SPV бумажники.
2. 5 последовательных пустых кадров
В фиктивной вилке, F2Pool и AntPool имели цепь 5 последовательных пустых кадров. Хотя пустые блоки не являются редкостью, 5 в ряд с подозрением. Я предполагаю, что есть некоторые ошибки в их системе. Например, их система может настаивать на том, чтобы добывать на своих собственных блоках, даже если они являются недействительными (F2Pool и AntPool являются союзом). А так как система знала, что цепь была недействительной, она не смогла включить любую сделку.
3. Softfork голосование по версии битов
Предполагается, что softfork голосование должно быть указано битами в версии, и позволяет повторное использование битов после softfork принимается или отклоняется. ( https://gist.github.com/sipa/bf69659f43e763540550 ). Я думаю, что это правильный путь. Однако для того, чтобы быть совместимым с добычей SPV, версия бит должен быть всегда включен на 5000 блоков после исполнения. Это будет больше, чем через месяц, и должно быть достаточно, чтобы сжать любые отстающих вне. После этого, немного свободен для другого softfork предложения.
дизайн 4. Кошелек
Полные узлы должны сообщать о которых БИП они исполнение. SPV узлы должны соединяться с полными узлами с различным набором правил, и сравнить их цепь, чтобы идентифицировать любую вилку
SPV узлы должны следить за последний вилок. Они должны предупредить пользователь, если есть длинные конкурирующие вилки. Они должны рассматривать сделки неподтвержденные, если они не включены в обеих вилках.