web3p / web3.php

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

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

Open rhinogroup opened 11 months ago

rhinogroup commented 11 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