Post
Topic
Board Кодеры
Некорректно генерируются PoS блоки. В чем при
by
gorus5
on 02/04/2018, 11:51:00 UTC
Я клонирую альткойн. Все работает отлично. За исключеним самого главного - не генерируются PoS блоки.
Есть несколько клиентов, они соеденены, значок Staking светится (хотя всегда пишет network weight - 0).
На обычном PoW майнинге все работает как надо, но моя цель в конечном итоге перевести валюту только на PoS, а он не работает.
Когда майнинг выключен, новые блоки не генерируются и соответсвенно транзации не проходят.

Пошарив код и дебаг логи, обнаружил что блоки генерируются. НО не принимаются, т.к. они имеют некорректную структуру.
А именно не проходит последнее условие в проверке isCoinStake
Code:
   bool IsCoinStake() const
    {
        // the coin stake transaction is marked with the first output empty
        return (vin.size() > 0 && (!vin[0].prevout.IsNull()) && vout.size() >= 2 && vout[0].IsEmpty());
    }
То есть, как видно из комментария и условия, для валидной транзакции нулевой vout должен быть пустым.
У меня же, по каким-то причинам, на этом месте стоит сама транзакция перевода монет.

Вот пример блока, который пытается сгенерироваться (проблема там, где 52 строчка кода - https://pastebin.com/M7xh9Bt0)
Code:
{
   "hash":"af19fb5ce7a8f8b5c1ff4a71e781f3815301065a7a01264e05dacf8bdd15ecc1",
   "confirmations":-1,
   "size":378,
   "version":1,
   "merkleroot":"0000000000000000000000000000000000000000000000000000000000000000",
   "time":1522419811,
   "nonce":0,
   "bits":"1e0fffff",
   "tx":[
      {
         "txid":"5e069b3266173804322a8cff18ddc9e199e9886948f5374ecb4d32387458dadf",
         "version":1,
         "time":1522419811,
         "locktime":0,
         "vin":[
            {
               "coinbase":"028200",
               "sequence":4294967295
            }
         ],
         "vout":[
            {
               "value":0.00000000,
               "n":0,
               "scriptPubKey":{
                  "asm":"",
                  "hex":"",
                  "type":"nonstandard"
               }
            }
         ]
      },
      {
         "txid":"9a070cac3b9cc72e9800c85cf171b38f758fb510af5e87f7481e2f30be85643b",
         "version":1,
         "time":1522419786,
         "locktime":76,
         "vin":[
            {
               "txid":"b32118915e6da3b8c15b03900b422b40f6f7a7b6e41ab5e62b1553aa7fe8e7a6",
               "vout":0,
               "scriptSig":{
                  "asm":"30440220334c507ef89db58cc9636be1aad6f83670fd1274b66f8266528791c53a000196022038869d9b4d825b6a27009e836a03dea0857afa02b156126fb01c4bcf3250167201 02115f9d6a68fa6811bb11dec153930b93b59e9f4304475d66358ca1a17150989f",
                  "hex":"4730440220334c507ef89db58cc9636be1aad6f83670fd1274b66f8266528791c53a000196022038869d9b4d825b6a27009e836a03dea0857afa02b156126fb01c4bcf32501672012102115f9d6a68fa6811bb11dec153930b93b59e9f4304475d66358ca1a17150989f"
               },
               "sequence":4294967294
            }
         ],
         "vout":[
            {
               "value":99996997.99950001,
               "n":0,
               "scriptPubKey":{
                  "asm":"OP_DUP OP_HASH160 5297cc5e2ef14653ec94f3b8496efd31dc2408b7 OP_EQUALVERIFY OP_CHECKSIG",
                  "hex":"76a9145297cc5e2ef14653ec94f3b8496efd31dc2408b788ac",
                  "reqSigs":1,
                  "type":"pubkeyhash",
                  "addresses":[
                     "BBynsaS3XdgJhhXwfy68r1rfnK18FHQuXZ"
                  ]
               }
            },
            {
               "value":1.00000000,
               "n":1,
               "scriptPubKey":{
                  "asm":"OP_DUP OP_HASH160 0aadf7a989f4a49e81c42a5111866a384b759b49 OP_EQUALVERIFY OP_CHECKSIG",
                  "hex":"76a9140aadf7a989f4a49e81c42a5111866a384b759b4988ac",
                  "reqSigs":1,
                  "type":"pubkeyhash",
                  "addresses":[
                     "B5RYn6v57b4rKkv9JNgUBEJj3aVhM2xnDX"
                  ]
               }
            }
         ]
      }
   ]
}
И там нету нулевого vout в первой транзации (именно в первой, т.е. по порядку - второй).
Никак не могу понять в чем причина. Я в коде ничего не менял что имело бы отношение к этому.