0

I'm trying to replicate a script that I have already running in nodejs in php.

On PHP I'm using "web3p/web3.php": "dev-master", "web3p/ethereum-tx": "^0.4.3" libraries.

When I send the signed transaction I'm always getting a "invalid sender" response. The transaction data is generated using 1inch.exchange API which works perfectly on nodejs.

I'm on PHP7.4 with GMP installed.

Here's a short version of my script

use Web3\Providers\HttpProvider; use Web3\RequestManagers\HttpRequestManager; use Web3p\EthereumTx\Transaction; $web3 = new Web3(new HttpProvider(new HttpRequestManager($_ENV['API_MORALIS_BSC_URL'], 10))); $eth = $web3->eth; $params = [ "fromAddress" => $_ENV['ADDRESS_1'], "fromTokenAddress" => $_ENV['COIN_1'], "toTokenAddress" => $_ENV['COIN_2'], "slippage" => 1, "amount" => "10000000000000000", ]; $client = new \GuzzleHttp\Client(['http_errors' => false, 'timeout' => 10]); $response = $client->get($_ENV['API_1INCH_BSC_URL']."swap", [ "query" => $params ]); $transactionParams = json_decode($response->getBody()->getContents(),true)['tx']; // TRANSACTION PARAMS // Array // ( // [from] => 0x3f9E320Fc------0DBA74d43c539a63bf // [to] => 0x11111112------e05771c2dccff4faa26 // [data] => 0x7c025200000000000000000000000000baf90------0000000000000000000000000000000000000000000000000cfee7c08 // [value] => 0 // [gas] => 198325 // [gasPrice] => 15000000000 // [nonce] => 1d4 // [chainId] => 38 // ) $transaction = new Transaction($transactionParams); $signedTransaction = '0x'.$transaction->sign($_ENV['PRIVATE_KEY_1']); $eth->sendRawTransaction($signedTransaction, function ($err, $tx) { $err->getMessage(); }); 

I'd tried with and without including nonce, from and chainid on the transaction params.

I'm using a Moralis node, but the same happens with an Ankr node. Both nodes work fine when I run the nodejs version of the script.

I've been struggling whit this for a few days now, any help will be appreciated.

Thanks!

2 Answers 2

0

Check this issue on github. Check you chainId format. With bsc testnet i found this:

'chainId' => 97 //works 'chainId' => 0x61 //works 'chainId' => '97' //works 'chainId' => '0x61' //invalid sender 
1
  • This didn't work for me. Try all possible combinations and none of them worked. Commented May 6, 2022 at 13:54
0

I had the same problem with web3p. Ended making my own approach based on kornrunner tx signer:

https://github.com/drlecks/Simple-Web3-Php

I made a working "send eth" example (Example/example.send.php) tested on ethereum (mainnet), ropsten (etherum testnet) and mumbai (polygon testnet).

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.