package qora.block;
import java.util.Arrays;
import qora.account.PublicKeyAccount;
public class BlockFactory {
private static BlockFactory instance;
public static BlockFactory getInstance()
{
if(instance == null)
{
instance = new BlockFactory();
}
return instance;
}
private BlockFactory()
{
}
public Block parse(byte[] data) throws Exception
{
//GET HASH
int position = Block.VERSION_LENGTH + Block.REFERENCE_LENGTH + Block.TIMESTAMP_LENGTH + Block.GENERATING_BALANCE_LENGTH + Block.GENERATOR_LENGTH;
byte[] signature = Arrays.copyOfRange(data, position, position + Block.GENERATOR_SIGNATURE_LENGTH);
//CHECK IF GENESISBLOCK
if(Arrays.equals(GenesisBlock.generateHash(), signature))
{
//PARSE GENESISBLOCK
return new GenesisBlock();
}
else
{
//PARSE NORMAL BLOCK
return Block.parse(data);
}
}
public Block create(int version, byte[] reference, long timestamp, long baseTarget, PublicKeyAccount generator, byte[] signature)
{
return new Block(version, reference, timestamp, baseTarget, generator, signature);
}
}