#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 и ты исполняешь новое сохранение блока, из-за чего вся цепочка перестает быть валидной.
Комментариев нет:
Отправить комментарий