web3p / web3.php

A php interface for interacting with the Ethereum blockchain and ecosystem. Native ABI parsing and smart contract interactions.
MIT License
1.15k stars 540 forks source link

Get "unknown account" when testing the sendTransaction function #339

Open rhinogroup opened 7 months ago

rhinogroup commented 7 months ago

Testing the send transaction function on

/vendor/web3p/web3.php/examples/sendTransaction.php

require('./exampleBase.php');

$eth = $web3->eth;

echo 'Eth Send Transaction' . PHP_EOL;
$eth->accounts(function ($err, $accounts) use ($eth) {
    if ($err !== null) {
        echo 'Error: ' . $err->getMessage();
        return;
    }
    $fromAccount = $accounts[0];
    $toAccount = $accounts[1];

this works, this also proves that the addresses being used are definitely onchain and contain balances

    $eth->getBalance($fromAccount, function ($err, $balance) use($fromAccount) {
        if ($err !== null) {
            echo 'Error: ' . $err->getMessage();
            return;
        }
        echo $fromAccount . ' Balance: ' . $balance . PHP_EOL;
    });
    $eth->getBalance($toAccount, function ($err, $balance) use($toAccount) {
        if ($err !== null) {
            echo 'Error: ' . $err->getMessage();
            return;
        }
        echo $toAccount . ' Balance: ' . $balance . PHP_EOL;
    });

/end this works

// send transaction
$eth->sendTransaction([
    'from' => $fromAccount,
    'to' => $toAccount,
    'value' => '0x11'
], function ($err, $transaction) use ($eth, $fromAccount, $toAccount) {

the below triggers the error "unknown account", yet the above balance requests work as intended

    if ($err !== null) {
        echo 'Error: ' . $err->getMessage();
        return;
    }
    echo 'Tx hash: ' . $transaction . PHP_EOL;

/end error

        // get balance
        $eth->getBalance($fromAccount, function ($err, $balance) use($fromAccount) {
            if ($err !== null) {
                echo 'Error: ' . $err->getMessage();
                return;
            }
            echo $fromAccount . ' Balance: ' . $balance . PHP_EOL;
        });
        $eth->getBalance($toAccount, function ($err, $balance) use($toAccount) {
            if ($err !== null) {
                echo 'Error: ' . $err->getMessage();
                return;
            }
            echo $toAccount . ' Balance: ' . $balance . PHP_EOL;
        });
    });
});

Would appreciate any help