#java #blockchain
Всем привет. Помогите найти ошибку. Создаю элементарную блокчейн из 5 элементов.
Остальной код работает, проверяла без цикла. Я новичек в джаве. Получается, что сохраняется
только два хеша первых элементов.
int numberOfBlocks = 5;
for(int i = 1; i <= numberOfBlocks; i++) {
String endOfNumber = "";
if (i == 1)
blockchain.add(new Block(i + "st block", "0"));
else {
switch(i) {
case 2:
endOfNumber = "nd";
break;
case 3:
endOfNumber = "rd";
break;
default:
endOfNumber = "th";
break;
}
}
blockchain.add(new Block(i + endOfNumber + " block", blockchain.get(blockchain.size()-1).hash));
System.out.println("Try to mine block " + i);
blockchain.get(i-1).mineBlock(difficulty);
System.out.println("Blockchain is Valid: " + isChainValid());
}
String blockchainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockchain);
System.out.println("The blockchain:\n" + blockchainJson);
Ответы
Ответ 1
Тебе нужно занести сохранение блока в ветку else после операции switch, вот код: int numberOfBlocks = 5; for(int i = 1; i <= numberOfBlocks; i++) { String endOfNumber = ""; if (i == 1) blockchain.add(new Block(i + "st block", "0")); else { switch(i) { case 2: endOfNumber = "nd"; break; case 3: endOfNumber = "rd"; break; default: endOfNumber = "th"; break; } blockchain.add(new Block(i + endOfNumber + " block", blockchain.get(blockchain.size()-1).hash)); } System.out.println("Try to mine block " + i); blockchain.get(i-1).mineBlock(difficulty); System.out.println("Blockchain is Valid: " + isChainValid()); } String blockchainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockchain); System.out.println("The blockchain:\n" + blockchainJson); В твоем примере, происходит следующее : ты создаешь 1 блок, потом завершается оператор if и ты исполняешь новое сохранение блока, из-за чего вся цепочка перестает быть валидной.
Комментариев нет:
Отправить комментарий