Страницы

Поиск по вопросам

воскресенье, 1 марта 2020 г.

Easy Blockchain

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

Комментариев нет:

Отправить комментарий