use of org.hyperledger.besu.ethereum.privacy.PrivateTransactionProcessor in project besu by hyperledger.
the class PrivacyPluginPrecompiledContractTest method mockPrivateTxProcessor.
private PrivateTransactionProcessor mockPrivateTxProcessor(final TransactionProcessingResult result) {
final PrivateTransactionProcessor mockPrivateTransactionProcessor = mock(PrivateTransactionProcessor.class);
when(mockPrivateTransactionProcessor.processTransaction(nullable(WorldUpdater.class), nullable(WorldUpdater.class), nullable(ProcessableBlockHeader.class), nullable((Hash.class)), nullable(PrivateTransaction.class), nullable(Address.class), nullable(OperationTracer.class), nullable(BlockHashLookup.class), nullable(Bytes.class))).thenReturn(result);
return mockPrivateTransactionProcessor;
}
use of org.hyperledger.besu.ethereum.privacy.PrivateTransactionProcessor in project besu by hyperledger.
the class PrivacyPrecompiledContractTest method mockPrivateTxProcessor.
private PrivateTransactionProcessor mockPrivateTxProcessor(final TransactionProcessingResult result) {
final PrivateTransactionProcessor mockPrivateTransactionProcessor = mock(PrivateTransactionProcessor.class);
when(mockPrivateTransactionProcessor.processTransaction(nullable(WorldUpdater.class), nullable(WorldUpdater.class), nullable(ProcessableBlockHeader.class), nullable((Hash.class)), nullable(PrivateTransaction.class), nullable(Address.class), nullable(OperationTracer.class), nullable(BlockHashLookup.class), nullable(Bytes.class))).thenReturn(result);
return mockPrivateTransactionProcessor;
}
use of org.hyperledger.besu.ethereum.privacy.PrivateTransactionProcessor in project besu by hyperledger.
the class PrivacyPrecompiledContractIntegrationTest method mockPrivateTxProcessor.
private PrivateTransactionProcessor mockPrivateTxProcessor() {
final PrivateTransactionProcessor mockPrivateTransactionProcessor = mock(PrivateTransactionProcessor.class);
final TransactionProcessingResult result = TransactionProcessingResult.successful(null, 0, 0, Bytes.fromHexString(DEFAULT_OUTPUT), null);
when(mockPrivateTransactionProcessor.processTransaction(nullable(WorldUpdater.class), nullable(WorldUpdater.class), nullable(ProcessableBlockHeader.class), nullable(Hash.class), nullable(PrivateTransaction.class), nullable(Address.class), nullable(OperationTracer.class), nullable(BlockHashLookup.class), nullable(Bytes.class))).thenReturn(result);
return mockPrivateTransactionProcessor;
}
use of org.hyperledger.besu.ethereum.privacy.PrivateTransactionProcessor in project besu by hyperledger.
the class MainnetProtocolSpecs method frontierDefinition.
public static ProtocolSpecBuilder frontierDefinition(final OptionalInt configContractSizeLimit, final OptionalInt configStackSizeLimit, final boolean goQuorumMode, final EvmConfiguration evmConfiguration) {
final int contractSizeLimit = configContractSizeLimit.orElse(FRONTIER_CONTRACT_SIZE_LIMIT);
final int stackSizeLimit = configStackSizeLimit.orElse(MessageFrame.DEFAULT_MAX_STACK_SIZE);
return new ProtocolSpecBuilder().gasCalculator(FrontierGasCalculator::new).gasLimitCalculator(new FrontierTargetingGasLimitCalculator()).evmBuilder(MainnetEVMs::frontier).precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::frontier).messageCallProcessorBuilder(MessageCallProcessor::new).contractCreationProcessorBuilder((gasCalculator, evm) -> new ContractCreationProcessor(gasCalculator, evm, false, Collections.singletonList(MaxCodeSizeRule.of(contractSizeLimit)), 0)).transactionValidatorBuilder(gasCalculator -> new MainnetTransactionValidator(gasCalculator, false, Optional.empty(), goQuorumMode)).transactionProcessorBuilder((gasCalculator, transactionValidator, contractCreationProcessor, messageCallProcessor) -> new MainnetTransactionProcessor(gasCalculator, transactionValidator, contractCreationProcessor, messageCallProcessor, false, stackSizeLimit, FeeMarket.legacy(), CoinbaseFeePriceCalculator.frontier())).privateTransactionProcessorBuilder((gasCalculator, transactionValidator, contractCreationProcessor, messageCallProcessor, privateTransactionValidator) -> new PrivateTransactionProcessor(gasCalculator, transactionValidator, contractCreationProcessor, messageCallProcessor, false, stackSizeLimit, new PrivateTransactionValidator(Optional.empty()))).difficultyCalculator(MainnetDifficultyCalculators.FRONTIER).blockHeaderValidatorBuilder(feeMarket -> MainnetBlockHeaderValidator.create()).ommerHeaderValidatorBuilder(feeMarket -> MainnetBlockHeaderValidator.createLegacyFeeMarketOmmerValidator()).blockBodyValidatorBuilder(MainnetBlockBodyValidator::new).transactionReceiptFactory(MainnetProtocolSpecs::frontierTransactionReceiptFactory).blockReward(FRONTIER_BLOCK_REWARD).skipZeroBlockRewards(false).blockProcessorBuilder(MainnetProtocolSpecs.blockProcessorBuilder(goQuorumMode)).blockValidatorBuilder(MainnetProtocolSpecs.blockValidatorBuilder(goQuorumMode)).blockImporterBuilder(MainnetBlockImporter::new).blockHeaderFunctions(new MainnetBlockHeaderFunctions()).miningBeneficiaryCalculator(BlockHeader::getCoinbase).evmConfiguration(evmConfiguration).name("Frontier");
}
use of org.hyperledger.besu.ethereum.privacy.PrivateTransactionProcessor in project besu by hyperledger.
the class ProtocolSpecBuilder method build.
public ProtocolSpec build(final ProtocolSchedule protocolSchedule) {
checkNotNull(gasCalculatorBuilder, "Missing gasCalculator");
checkNotNull(gasLimitCalculator, "Missing gasLimitCalculator");
checkNotNull(evmBuilder, "Missing operation registry");
checkNotNull(evmConfiguration, "Missing evm configuration");
checkNotNull(transactionValidatorBuilder, "Missing transaction validator");
checkNotNull(privateTransactionValidatorBuilder, "Missing private transaction validator");
checkNotNull(contractCreationProcessorBuilder, "Missing contract creation processor");
checkNotNull(precompileContractRegistryBuilder, "Missing precompile contract registry");
checkNotNull(messageCallProcessorBuilder, "Missing message call processor");
checkNotNull(transactionProcessorBuilder, "Missing transaction processor");
checkNotNull(privateTransactionProcessorBuilder, "Missing private transaction processor");
checkNotNull(blockHeaderValidatorBuilder, "Missing block header validator");
checkNotNull(blockBodyValidatorBuilder, "Missing block body validator");
checkNotNull(blockProcessorBuilder, "Missing block processor");
checkNotNull(blockImporterBuilder, "Missing block importer");
checkNotNull(blockValidatorBuilder, "Missing block validator");
checkNotNull(blockHeaderFunctions, "Missing block hash function");
checkNotNull(blockReward, "Missing block reward");
checkNotNull(difficultyCalculator, "Missing difficulty calculator");
checkNotNull(transactionReceiptFactory, "Missing transaction receipt factory");
checkNotNull(name, "Missing name");
checkNotNull(miningBeneficiaryCalculator, "Missing Mining Beneficiary Calculator");
checkNotNull(protocolSchedule, "Missing protocol schedule");
checkNotNull(privacyParameters, "Missing privacy parameters");
checkNotNull(feeMarket, "Missing fee market");
checkNotNull(badBlockManager, "Missing bad blocks manager");
final GasCalculator gasCalculator = gasCalculatorBuilder.get();
final EVM evm = evmBuilder.apply(gasCalculator, evmConfiguration);
final PrecompiledContractConfiguration precompiledContractConfiguration = new PrecompiledContractConfiguration(gasCalculator, privacyParameters);
final MainnetTransactionValidator transactionValidator = transactionValidatorBuilder.apply(gasCalculator);
final AbstractMessageProcessor contractCreationProcessor = contractCreationProcessorBuilder.apply(gasCalculator, evm);
final PrecompileContractRegistry precompileContractRegistry = precompileContractRegistryBuilder.apply(precompiledContractConfiguration);
final AbstractMessageProcessor messageCallProcessor = messageCallProcessorBuilder.apply(evm, precompileContractRegistry);
final MainnetTransactionProcessor transactionProcessor = transactionProcessorBuilder.apply(gasCalculator, transactionValidator, contractCreationProcessor, messageCallProcessor);
final BlockHeaderValidator blockHeaderValidator = blockHeaderValidatorBuilder.apply(feeMarket).difficultyCalculator(difficultyCalculator).build();
final BlockHeaderValidator ommerHeaderValidator = ommerHeaderValidatorBuilder.apply(feeMarket).difficultyCalculator(difficultyCalculator).build();
final BlockBodyValidator blockBodyValidator = blockBodyValidatorBuilder.apply(protocolSchedule);
BlockProcessor blockProcessor = blockProcessorBuilder.apply(transactionProcessor, transactionReceiptFactory, blockReward, miningBeneficiaryCalculator, skipZeroBlockRewards, privacyParameters.getGoQuorumPrivacyParameters());
// Set private Tx Processor
PrivateTransactionProcessor privateTransactionProcessor = null;
if (privacyParameters.isEnabled()) {
final PrivateTransactionValidator privateTransactionValidator = privateTransactionValidatorBuilder.apply();
privateTransactionProcessor = privateTransactionProcessorBuilder.apply(gasCalculator, transactionValidator, contractCreationProcessor, messageCallProcessor, privateTransactionValidator);
if (privacyParameters.isPrivacyPluginEnabled()) {
final PrivacyPluginPrecompiledContract privacyPluginPrecompiledContract = (PrivacyPluginPrecompiledContract) precompileContractRegistry.get(PLUGIN_PRIVACY);
privacyPluginPrecompiledContract.setPrivateTransactionProcessor(privateTransactionProcessor);
} else if (privacyParameters.isFlexiblePrivacyGroupsEnabled()) {
final FlexiblePrivacyPrecompiledContract flexiblePrivacyPrecompiledContract = (FlexiblePrivacyPrecompiledContract) precompileContractRegistry.get(FLEXIBLE_PRIVACY);
flexiblePrivacyPrecompiledContract.setPrivateTransactionProcessor(privateTransactionProcessor);
} else {
final PrivacyPrecompiledContract privacyPrecompiledContract = (PrivacyPrecompiledContract) precompileContractRegistry.get(DEFAULT_PRIVACY);
privacyPrecompiledContract.setPrivateTransactionProcessor(privateTransactionProcessor);
}
blockProcessor = new PrivacyBlockProcessor(blockProcessor, protocolSchedule, privacyParameters.getEnclave(), privacyParameters.getPrivateStateStorage(), privacyParameters.getPrivateWorldStateArchive(), privacyParameters.getPrivateStateRootResolver(), privacyParameters.getPrivateStateGenesisAllocator());
}
final BlockValidator blockValidator = blockValidatorBuilder.apply(blockHeaderValidator, blockBodyValidator, blockProcessor, badBlockManager, privacyParameters.getGoQuorumPrivacyParameters());
final BlockImporter blockImporter = blockImporterBuilder.apply(blockValidator);
return new ProtocolSpec(name, evm, transactionValidator, transactionProcessor, privateTransactionProcessor, blockHeaderValidator, ommerHeaderValidator, blockBodyValidator, blockProcessor, blockImporter, blockValidator, blockHeaderFunctions, transactionReceiptFactory, difficultyCalculator, blockReward, miningBeneficiaryCalculator, precompileContractRegistry, skipZeroBlockRewards, gasCalculator, gasLimitCalculator, feeMarket, badBlockManager, Optional.ofNullable(powHasher));
}
Aggregations