@Override public List<Pair<Long, BlockHeaderValidator>> headerValidators() { return parent.headerValidators(); }
@Override public ValidationResult validate(BlockHeader header) { List<Pair<Long, BlockHeaderValidator>> validators = blockchainConfig.getConfigForBlock(header.getNumber()).headerValidators(); for (Pair<Long, BlockHeaderValidator> pair : validators) { if (header.getNumber() == pair.getLeft()) { ValidationResult result = pair.getRight().validate(header); if (!result.success) { return fault("Block " + header.getNumber() + " header constraint violated. " + result.error); } } } return Success; } }
getConfigForBlock(blockNumber).headerValidators(); for (Pair<Long, BlockHeaderValidator> validator : validators) { if (validator.getLeft() <= getBestKnownBlock().getNumber()) {
for (GenesisConfig.HashValidator validator : genesisJson.getConfig().headerValidators) { BlockHeaderValidator headerValidator = new BlockHeaderValidator(new BlockCustomHashRule(ByteUtil.hexStringToBytes(validator.hash))); blockchainConfig.getConfigForBlock(validator.number).headerValidators().add( Pair.of(validator.number, headerValidator));