private Address computeSender() {
    final SECPPublicKey publicKey =
        signatureAlgorithm
            .recoverPublicKeyFromSignature(getOrComputeSenderRecoveryHash(), signature)
            .orElseThrow(
                () ->
                    new IllegalStateException(
                        "Cannot recover public key from signature for " + this));
    final Address calculatedSender = Address.extract(Hash.hash(publicKey.getEncodedBytes()));
    senderCache.put(this.hash, calculatedSender);
    return calculatedSender;
  }
Returns the transaction sender.

@return the transaction sender
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/Transaction.java