Это своего рода беспорядок, который был создан в настоящее время разрабатывается протокол. Теперь она стала наследием ...
В целом протокол Bitcoin использует наиболее значимый бит кодированного целого значения в качестве знака.
Я думаю, что первоначальная идея состояла в том, что R и значение S внутри подписей должно следовать этому правилу - так что, если старший бит случается, то он получает проложенный с нулевым байтом впереди.
Что, очевидно, не имеет никакого смысла, поскольку эти значения всегда положительны и тот, кто проектировал это должно было знать, что.
Что еще страннее здесь, протокол не следует знаковый-битовую правило для ключей ЕС - это также 256-битовые числа, но всегда считал, неподписанные, несмотря на их MSB.
И если это не было достаточно сумбурно, протокол Bitcoin в целом использует прямой порядок байтов для кодирования целых чисел - который включает в себя 160 и 256 бит хэширует везде, где они рассматриваются как большие Интс.
Он использует мало блефускианские везде, для значений signtures ЕС и ключей ЕС, за исключением.
Таким образом, протокол в значительной степени противоречивый, но вы получите, чтобы узнать это в конце концов