farbcode/laravel-evm
Simple, reliable Ethereum integration for Laravel with EIP-1559 fees, queued async transactions, nonce tracking, and events for every step from queued to mined. Requires PHP 8.4+ and ext-gmp.
All information on how to use this package can be found on our official documentation website. → Read the Docs
ext-gmp) installed and enabledInstall the package via composer:
composer require farbcode/laravel-evm
You can publish the config file with:
php artisan vendor:publish --tag="evm-config"
Then set your blockchain RPC URL, chain id and private key in .env:
EVM_CHAIN_ID=137
EVM_RPC_1=https://polygon-mainnet.g.alchemy.com/v2/KEY
EVM_PRIVATE_KEY=0xabc123...64hex
use Farbcode\LaravelEvm\Facades\Evm;
$abi = file_get_contents(storage_path('app/abi/MyContract.abi.json'));
$contract = Evm::at('0xYourContract', $abi);
// Read call - integers come back as decimal strings
$balance = $contract->call('balanceOf', ['0xUser'])->as('uint256');
// Write (async - enqueued on EVM_QUEUE default:evm-send, see https://laravel-evm.farbcode.net/basic-usage#writes-async-transactions for more information)
$jobId = $contract->sendAsync('transfer', ['0xRecipient', 100]);
Wait for a known tx hash. A receipt only proves inclusion, so check the status before treating it as a success:
use Farbcode\LaravelEvm\Support\Receipt;
$receipt = $contract->wait('0xTxHash');
if (Receipt::isSuccessful($receipt)) {
// mined and did not revert
}
use Farbcode\LaravelEvm\Facades\EvmLogs;
use Farbcode\LaravelEvm\Support\LogFilterBuilder;
$abi = file_get_contents(storage_path('app/abi/ERC20.abi.json'));
$logs = EvmLogs::query()
->fromBlock(18_000_000)
->toBlock('latest')
->address('0xToken')
->eventByAbi($abi, 'Transfer')
->topicAny(1, [LogFilterBuilder::padAddress($addrA), LogFilterBuilder::padAddress($addrB)])
->get();
$decoded = array_map(fn($l) => LogFilterBuilder::decodeEvent($abi, $l), $logs);
All information on how to use this package can be found on our official documentation website. → Read the Docs
Notable changes to this package are documented in our changelog for every new release.
We welcome contributions to this package.
→ Read our Contribution Guidelines
The MIT License (MIT). See License File for more information.
Made with ❤️ by //farbcode.
How can I help you explore Laravel packages today?