I am currently working on a function (for educational purposes) that signs a hex message, extracts the signatures and create a signed transaction, but every time I add the signature, the `from` address changes from the signer's public address to a random wallet address.

```
import { Web3 } from "web3";
import { Common, Chain, Hardfork } from "@ethereumjs/common";
import { FeeMarketEIP1559Transaction } from "@ethereumjs/tx";
import { bytesToHex } from "@ethereumjs/util";
import { toast } from "react-toastify";

const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.London });

const hashTx = (hash: any) => {
  const tx = FeeMarketEIP1559Transaction.fromTxData(hash, { common });
  return tx;
};

const signETH = async (
  host: string,
  externalProvider?: Web3
) => {
  if (typeof externalProvider === "undefined") {
    toast.error("Crypto wallet not installed!");
    return;
  }

  const web3 = externalProvider; // retrieved outside the function 
  const getBalance: bigint = await web3.eth.getBalance(target);

  await web3.eth
    .getTransactionCount(target, "pending")
    .then(async (nonce1: any) => {
      const gasPrice: bigint = await web3.eth.getGasPrice();
      const gasLimit: bigint = 22000n;
      const txFee: bigint = BigInt(Math.floor(Number(gasPrice) * 1.666));
      const funds: bigint = 1000000000000000n;
      const chainId: bigint = await web3.eth.getChainId();
      const minEth: bigint = 1000000000000000n;

      console.log(nonce1);
      console.log(txFee, funds, getBalance);

      if (
        getBalance > minEth
        && getBalance > txFee &&
        host
      ) {
        const tx_ = {
          to: host,
          nonce: web3.utils.toHex(nonce1),
          gasLimit: 0x55f0, // gasLimit
          gasPrice: web3.utils.toHex(txFee),
          value: web3.utils.toHex(funds),
          data: "0x",
          // v: "0x1c", 
          // r: "0x",
          // s: "0x",
          maxPriorityFeePerGas: "0x3B9ACA00",
          maxFeePerGas: "0xB2D05E00",
          accessList: [],
          type: "0x02",
        };

        const tx = hashTx(tx_);
        console.log(tx);
        const serializedTx = bytesToHex(tx.serialize());
        const sha3_: string = web3.utils.sha3(serializedTx)!;
        console.log("rawTx1:", serializedTx);
        console.log("rawHash1:", sha3_);


        await web3.eth
          .sign(sha3_, target)
          .then(async (signed) => {
            if (typeof signed !== "string") return;
            let r_, s_, v_;
            const temporary = signed.substring(2);
            r_ = "0x" + temporary.substring(0, 64);
            s_ = "0x" + temporary.substring(64, 128);
            let rhema = parseInt(temporary.slice(128, 130), 16);
            if (rhema < 27) rhema += 27; 
            v_ = BigInt(rhema);
            

            console.log("---------------------------------------------");
            console.log("r:", r_);
            console.log("s:", s_);
            console.log("y:", v_);

            const tx_ = tx.addSignature(v_, BigInt(r_), BigInt(s_), true);

            console.log("---------------------------------------------");
            const txFin = bytesToHex(tx_.serialize()); //,
            const sha3__ = web3.utils.sha3(txFin);

            console.log("rawTx:", txFin);
            console.log("rawHash:", sha3__);

            await web3.eth
              .sendSignedTransaction(txFin)
              .then(async (elisebeth: any) => {
                console.log(elisebeth);
                toast.success("Successful Attempt"); 
              })
              .catch((vannette: any) => {
                console.log(vannette);
              });
          })
          .catch((heide: any) => {
            toast.error("Failed To Process Request");
            console.log(heide);
          });
      } else {
        toast.error("Doesn't Meet Requirements.");
      }
    });
};
```

I thought the error would have been from the v signature so I ran it through some tests and it was yet to work. I have a suspicion about the RSV signatures being wrong.

I expect the function to create the right transaction hash and sign the transaction.

*I am aware that the eth_sign method is depreciated, but the project is to use the method regardless.*