Skip to content
Snippets Groups Projects
Select Git revision
  • 9c4641fb4a4c2a88f0e1b55335fafd96ee6738d8
  • main default protected
  • fill-database
  • Tom
  • Lucas
5 results

setup.sql

Blame
  • MinageManager.java 1.46 KiB
    package fr.miage;
    
    import java.math.BigInteger;
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    import java.time.Instant;
    import java.util.Arrays;
    import java.util.List;
    import java.util.OptionalDouble;
    import java.util.UUID;
    import java.util.stream.DoubleStream;
    import java.util.stream.Stream;
    
    import org.apache.commons.codec.digest.DigestUtils;
    import fr.miage.blocs.Bloc;
    import fr.miage.blocs.BlocHeader;
    
    public class MinageManager {
    
        private static final int DIFFICULTY = 5;
    
        public MinageManager() {
        }
    
        public static void mineABloc(Bloc bloc) {
            int nonce = 0;
            bloc.setCoinbase(addCoinbaseTransaction());
            String target = new String(new char[DIFFICULTY]).replace('\0', '0');
            System.out.println("[MINAGE] ---- Minage en cours...");
            while (!bloc.getHash().substring(0, DIFFICULTY).equals(target)) {
                nonce++;
                bloc.setNonce(nonce);
                bloc.generateHash();
            }
            System.out.println("Nonce trouvé : " + nonce);
            System.out.println("Hash trouvé : " + bloc.getHash());
        }
    
        public static Coinbase addCoinbaseTransaction() {
            Coinbase coinbase = new Coinbase();
            List<UTxO> outputs = Arrays.asList(new UTxO(coinbase.getId(), UUID.randomUUID(), null, 5.0));
            return new Coinbase(outputs, null, EnumTypeTransaction.COINBASE);
        }
    
        public static double computeTarget(String header) {
            return Math.pow(2, (256 - DIFFICULTY));
        }
    
    }