Я клонирую альткойн. Все работает отлично. За исключеним самого главного - не генерируются PoS блоки.
Есть несколько клиентов, они соеденены, значок Staking светится (хотя всегда пишет network weight - 0).
На обычном PoW майнинге все работает как надо, но моя цель в конечном итоге перевести валюту только на PoS, а он не работает.
Когда майнинг выключен, новые блоки не генерируются и соответсвенно транзации не проходят.
Пошарив код и дебаг логи, обнаружил что блоки генерируются. НО не принимаются, т.к. они имеют некорректную структуру.
А именно не проходит последнее условие в проверке
isCoinStake 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)
{
"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 в первой транзации (именно в первой, т.е. по порядку - второй).
Никак не могу понять в чем причина. Я в коде ничего не менял что имело бы отношение к этому.