Попробуем сделать в 0.4.3.
Вопрос с приоритетами PoS/PoW при реорганизации цепи будет решен новой реализацией функции GetTrustScore.
Текущее поведение:
- Для всех PoW блоков возвращается 1;
- Для PoS блоков результат описывается функцией сложности.
Набросок нового поведения:
- Для PoS блока, являющегося потомком PoW блока результат описывается функцией сложности;
- Для PoS блока, являющегося потомком PoS блока результат описывается той же функцией сложности, деленной на 3;
- Для PoW блока, являющегося потомком PoS блока, результат описывается функцией сложности предыдущего блока;
- Для PoW блока, являющегося потомком PoW блока, результат равен 1/3 Trust score для предыдущего блока;
Итог реализации подобного алгоритма:
- «Чистая» цепочка PoS блоков будет в ~3 раза легче гибридной;
- Вес «чистой» цепочки PoW блоков будет расти намного медленнее, чем вес гибридной цепи.
Итого, double-spend атака только средствами PoS станет невозможной, равно как и атака только генерацией PoW блоков. У легитимной цепи всегда будет перевес над такими вариантами. Для успешной атаки потребуется сгенерировать гибридную цепь, то есть располагать как stake, так и достаточными мощностями.