Сейчас попытался сопоставить WhitePaper спредкоина и описание протокола биткоина.
https://bravenewcoin.com/assets/Whitepapers/SpreadCoin-WhitePaper.pdfСразу скажу этот WP полная хрень в плане непонятности.
Описание биткоина (не из WP спредкоина)
Если вы посмотрите на структуру любого блока, то самой первой всегда идет так называемая coinbase транзакция — именно она отправляет вознаграждение на адрес майнера. В отличии от обычных транзакций, coinbase transaction не тратит в качестве входов выходы из UTXO pool. Вместо этого у нее указан только один вход, называемый coinbase, который "создает" монеты из ничего. Выход у такой транзакции тоже только один. Он отправляет
на адрес майнера награду за блок плюс сумму комиссий со всех транзакций в блоке.
Описание Спредкоина (WP)
В спредкоине майнинг организован так что майнер обязан знать следующие вещи:
1.Приватный ключ соответствующий транзакции коинбэйз (непонятно что это такое если коинбэйз из ничего создает бабло, я так понял что это приватный ключ от кошелька на который коинбейз транзакция посылает бабло)
2.Майнер должен иметь полный блок а не заголовок.
Чтобы обеспечить знание майнером этих двух вещей, в заголовке блока добавляется два новых поля - minersignature и hashwholeblock.
minersignature это цифровая подпись всех полей заголовка блока, за исключением hashwholeblock. В каждой итерации майнинга майнер должен подписать все содержимое полей блока за исключением хеша всего блока.
И вот дальше мне абсолютно нихрена непонятно было как наличие двух вышеуказанных полей обеспечивает знание майнером приватного ключа соответствующего коинбейз транзакции и что это вообще такое.
В комментариях к этому спредкоину я нашел вот такое объяснение 2014 года:
Смысл как раз в том, что хэш зависит от приватного ключа coinbase и чтобы правильно посчитать хэш майнеру необходимо его знать, причём полностью. А если майнер знает ключ, значит он может воспользоваться (забрать) награду за блок. Поскольку блок находит именно майнер на своём оборудовании, он сможет воспользоваться ключем раньше пула.
Как хэш блока или заголовка может зависеть от приватного ключа коинбейз транзакции?
И как, КАК КАРЛ? на уровне протокола можно вынудить пул или кого бы то ни было, раскрыть какой то приватный ключ, иначе протокол работать не будет.
Единственное что у меня в больной башке возникает (в качестве объяснения вышеизложенной хреноты) - это заставить владельца адреса получателя награды подписывать каждую итерацию перебора в майнинге приватным ключем от этого кошелька. То есть minersignature это тупо подпись хозяина кошелька на который платится награда за блок. У меня полчаса ушло для того, чтобы дойти до этой простой мысли, поскольку она была для меня равносильна разрыву шаблона.
То есть либо сам перебирай если хочешь бабла, либо ключ отдай от кошелька, а мы за тебя поперебираем.
Тупо подпись хозяина кошелька в заголовке блока.
И никаких выходов за пределы доказательства работы.
И никакого нарушения консенсуса.
Привожу Вам выдержку из WP на английском:
In SpreadCoin mining is organized in such way that miner must know the following things:
1. Private key corresponding to the coinbase transaction.
2. Whole block, not only its header.
This ensures that miner can broadcast mined block and spend coins generated in that block. It may seem that it is necessary to know only the private key to spend coinbase transaction. If two conflicting transactions will appear on the network then the one that was broadcasted first will have much higher probability to be included in a block because each peer remembers and retransmits only the first one of the conflicting transactions. If both miner and pool know private key but only pool knows the content of the block than pool can generate and broadcast spending transaction earlier than miner. If both miner and pool know content of the block than miner will be the first one who can broadcast block and spending transaction.
To prove knowledge of the private key and whole block there are two new fields in the block header: MinerSignature and hashWholeBlock.
MinerSignature is a digital signature of all fields of the block header except for the hashWholeBlock. Changing any information in the block requires regeneration of this signature which means that it is necessary to recalculate it during each iteration of the mining process. This implies that miner must be able to sign any arbitrary data.
It is important that block is hashed twice. If it was hashed only once then pool could hash the beginning of the block and send resulting hash state to the miners. Each miner would then modify some information in the end of the block and recalculate the hash based on the known state without actual knowledge about what is contained in the beginning of the block. Appending block data to itself make it necessary to know the whole block to recalculate hashWholeBlock.
Pool may detect and ban cheating miners. However, many miners may still prefer to cheat so that pool will be completely unusable for honest miners.
Miners that have low probability of finding a block will get more profit by stealing reward for accidentally found block even if pool will ban them thereafter.
Miners that have enough mining power to find blocks consistently can still connect to a pool and submit shares for some time but steal the first found block. This way they can get both reward for their shares and the actual mined block.
Given all this it is expected that no one will create a pool. But even if someone will than it can be countered by releasing stealing miner software which many miners will switch to.
Вот ребята умные объясните мне в чем наеб то?
В английской ветке 400 страниц, я рыл их поиском.
minersignature и hashwholeblock и privatekey и fraud
и не нашел там хоть одного разоблачения что это наеб.