diff --git a/crypto/algorithms/src/main/java/org/hyperledger/besu/crypto/CodeDelegationSignature.java b/crypto/algorithms/src/main/java/org/hyperledger/besu/crypto/CodeDelegationSignature.java index a9c48633055..e68f30727ca 100644 --- a/crypto/algorithms/src/main/java/org/hyperledger/besu/crypto/CodeDelegationSignature.java +++ b/crypto/algorithms/src/main/java/org/hyperledger/besu/crypto/CodeDelegationSignature.java @@ -45,11 +45,6 @@ public static CodeDelegationSignature create( final BigInteger r, final BigInteger s, final byte yParity) { checkNotNull(r); checkNotNull(s); - final byte recId = yParity; - if (recId != 0 && recId != 1) { - throw new IllegalArgumentException( - "Invalid 'recId' value, should be 0 or 1 but got " + recId); - } if (r.compareTo(TWO_POW_256) >= 0) { throw new IllegalArgumentException( diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java index 929135ae596..db0e6771972 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java @@ -412,19 +412,30 @@ private void precomputeAuthorities(final Transaction transaction) { int index = 0; for (final var codeDelegation : codeDelegations) { final var constIndex = index++; - mergeCoordinator - .getEthScheduler() - .scheduleTxWorkerTask( - () -> { - final var authority = codeDelegation.authorizer(); - LOG.atTrace() - .setMessage( - "The code delegation authority at index {} for transaction {} is calculated : {}") - .addArgument(constIndex) - .addArgument(transaction::getHash) - .addArgument(authority) - .log(); - }); + final byte recId = codeDelegation.signature().getRecId(); + if (recId < 0 || recId > 3) { + LOG.atTrace() + .setMessage( + "The code delegation authority at index {} for transaction {} is skipped because recId : {}") + .addArgument(constIndex) + .addArgument(transaction::getHash) + .addArgument(recId) + .log(); + } else { + mergeCoordinator + .getEthScheduler() + .scheduleTxWorkerTask( + () -> { + final var authority = codeDelegation.authorizer(); + LOG.atTrace() + .setMessage( + "The code delegation authority at index {} for transaction {} is calculated : {}") + .addArgument(constIndex) + .addArgument(transaction::getHash) + .addArgument(authority) + .log(); + }); + } } }